Commit d7382328 authored by Oliver Fromme's avatar Oliver Fromme Committed by Michael Niedermayer

avcodec/dvdsubdec: fix alpha in debuging code

improve the debugging function for saving subtitles
to PPM files: Actually use the alpha channel.
Signed-off-by: 's avatarMichael Niedermayer <michaelni@gmx.at>
parent 3f0a3e9e
...@@ -462,10 +462,13 @@ static int find_smallest_bounding_rectangle(AVSubtitle *s) ...@@ -462,10 +462,13 @@ static int find_smallest_bounding_rectangle(AVSubtitle *s)
} }
#ifdef DEBUG #ifdef DEBUG
#define ALPHA_MIX(A,BACK,FORE) (((255-(A)) * (BACK) + (A) * (FORE)) / 255)
static void ppm_save(const char *filename, uint8_t *bitmap, int w, int h, static void ppm_save(const char *filename, uint8_t *bitmap, int w, int h,
uint32_t *rgba_palette) uint32_t *rgba_palette)
{ {
int x, y, v; int x, y, alpha;
uint32_t v;
int back[3] = {0, 255, 0}; /* green background */
FILE *f; FILE *f;
f = fopen(filename, "w"); f = fopen(filename, "w");
...@@ -480,9 +483,10 @@ static void ppm_save(const char *filename, uint8_t *bitmap, int w, int h, ...@@ -480,9 +483,10 @@ static void ppm_save(const char *filename, uint8_t *bitmap, int w, int h,
for(y = 0; y < h; y++) { for(y = 0; y < h; y++) {
for(x = 0; x < w; x++) { for(x = 0; x < w; x++) {
v = rgba_palette[bitmap[y * w + x]]; v = rgba_palette[bitmap[y * w + x]];
putc((v >> 16) & 0xff, f); alpha = v >> 24;
putc((v >> 8) & 0xff, f); putc(ALPHA_MIX(alpha, back[0], (v >> 16) & 0xff), f);
putc((v >> 0) & 0xff, f); putc(ALPHA_MIX(alpha, back[1], (v >> 8) & 0xff), f);
putc(ALPHA_MIX(alpha, back[2], (v >> 0) & 0xff), f);
} }
} }
fclose(f); fclose(f);
...@@ -552,7 +556,7 @@ static int dvdsub_decode(AVCodecContext *avctx, ...@@ -552,7 +556,7 @@ static int dvdsub_decode(AVCodecContext *avctx,
sub->start_display_time, sub->start_display_time,
sub->end_display_time); sub->end_display_time);
ppm_save(ppm_name, sub->rects[0]->pict.data[0], ppm_save(ppm_name, sub->rects[0]->pict.data[0],
sub->rects[0]->w, sub->rects[0]->h, sub->rects[0]->pict.data[1]); sub->rects[0]->w, sub->rects[0]->h, (uint32_t*) sub->rects[0]->pict.data[1]);
} }
#endif #endif
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment