|
|
|
@ -34,69 +34,6 @@ |
|
|
|
|
|
|
|
|
|
#define cm (ff_crop_tab + MAX_NEG_CROP) |
|
|
|
|
|
|
|
|
|
#ifdef DEBUG |
|
|
|
|
static void png_save(const char *filename, uint32_t *bitmap, int w, int h) |
|
|
|
|
{ |
|
|
|
|
int x, y, v; |
|
|
|
|
FILE *f; |
|
|
|
|
char fname[40], fname2[40]; |
|
|
|
|
char command[1024]; |
|
|
|
|
|
|
|
|
|
snprintf(fname, sizeof(fname), "%s.ppm", filename); |
|
|
|
|
|
|
|
|
|
f = fopen(fname, "w"); |
|
|
|
|
if (!f) { |
|
|
|
|
perror(fname); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
fprintf(f, "P6\n" |
|
|
|
|
"%d %d\n" |
|
|
|
|
"%d\n", |
|
|
|
|
w, h, 255); |
|
|
|
|
for(y = 0; y < h; y++) { |
|
|
|
|
for(x = 0; x < w; x++) { |
|
|
|
|
v = bitmap[y * w + x]; |
|
|
|
|
putc((v >> 16) & 0xff, f); |
|
|
|
|
putc((v >> 8) & 0xff, f); |
|
|
|
|
putc((v >> 0) & 0xff, f); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
fclose(f); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
snprintf(fname2, sizeof(fname2), "%s-a.pgm", filename); |
|
|
|
|
|
|
|
|
|
f = fopen(fname2, "w"); |
|
|
|
|
if (!f) { |
|
|
|
|
perror(fname2); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
fprintf(f, "P5\n" |
|
|
|
|
"%d %d\n" |
|
|
|
|
"%d\n", |
|
|
|
|
w, h, 255); |
|
|
|
|
for(y = 0; y < h; y++) { |
|
|
|
|
for(x = 0; x < w; x++) { |
|
|
|
|
v = bitmap[y * w + x]; |
|
|
|
|
putc((v >> 24) & 0xff, f); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
fclose(f); |
|
|
|
|
|
|
|
|
|
snprintf(command, sizeof(command), "pnmtopng -alpha %s %s > %s.png 2> /dev/null", fname2, fname, filename); |
|
|
|
|
if (system(command) != 0) { |
|
|
|
|
printf("Error running pnmtopng\n"); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
snprintf(command, sizeof(command), "rm %s %s", fname, fname2); |
|
|
|
|
if (system(command) != 0) { |
|
|
|
|
printf("Error removing %s and %s\n", fname, fname2); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
#define RGBA(r,g,b,a) (((unsigned)(a) << 24) | ((r) << 16) | ((g) << 8) | (b)) |
|
|
|
|
|
|
|
|
|
typedef struct DVBSubCLUT { |
|
|
|
@ -1123,6 +1060,67 @@ static int dvbsub_parse_page_segment(AVCodecContext *avctx, |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef DEBUG |
|
|
|
|
static void png_save(const char *filename, uint32_t *bitmap, int w, int h) |
|
|
|
|
{ |
|
|
|
|
int x, y, v; |
|
|
|
|
FILE *f; |
|
|
|
|
char fname[40], fname2[40]; |
|
|
|
|
char command[1024]; |
|
|
|
|
|
|
|
|
|
snprintf(fname, sizeof(fname), "%s.ppm", filename); |
|
|
|
|
|
|
|
|
|
f = fopen(fname, "w"); |
|
|
|
|
if (!f) { |
|
|
|
|
perror(fname); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
fprintf(f, "P6\n" |
|
|
|
|
"%d %d\n" |
|
|
|
|
"%d\n", |
|
|
|
|
w, h, 255); |
|
|
|
|
for(y = 0; y < h; y++) { |
|
|
|
|
for(x = 0; x < w; x++) { |
|
|
|
|
v = bitmap[y * w + x]; |
|
|
|
|
putc((v >> 16) & 0xff, f); |
|
|
|
|
putc((v >> 8) & 0xff, f); |
|
|
|
|
putc((v >> 0) & 0xff, f); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
fclose(f); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
snprintf(fname2, sizeof(fname2), "%s-a.pgm", filename); |
|
|
|
|
|
|
|
|
|
f = fopen(fname2, "w"); |
|
|
|
|
if (!f) { |
|
|
|
|
perror(fname2); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
fprintf(f, "P5\n" |
|
|
|
|
"%d %d\n" |
|
|
|
|
"%d\n", |
|
|
|
|
w, h, 255); |
|
|
|
|
for(y = 0; y < h; y++) { |
|
|
|
|
for(x = 0; x < w; x++) { |
|
|
|
|
v = bitmap[y * w + x]; |
|
|
|
|
putc((v >> 24) & 0xff, f); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
fclose(f); |
|
|
|
|
|
|
|
|
|
snprintf(command, sizeof(command), "pnmtopng -alpha %s %s > %s.png 2> /dev/null", fname2, fname, filename); |
|
|
|
|
if (system(command) != 0) { |
|
|
|
|
printf("Error running pnmtopng\n"); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
snprintf(command, sizeof(command), "rm %s %s", fname, fname2); |
|
|
|
|
if (system(command) != 0) { |
|
|
|
|
printf("Error removing %s and %s\n", fname, fname2); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static int save_display_set(DVBSubContext *ctx) |
|
|
|
|
{ |
|
|
|
|
DVBSubRegion *region; |
|
|
|
@ -1218,7 +1216,7 @@ static int save_display_set(DVBSubContext *ctx) |
|
|
|
|
fileno_index++; |
|
|
|
|
return 0; |
|
|
|
|
} |
|
|
|
|
#endif |
|
|
|
|
#endif /* DEBUG */ |
|
|
|
|
|
|
|
|
|
static int dvbsub_parse_display_definition_segment(AVCodecContext *avctx, |
|
|
|
|
const uint8_t *buf, |
|
|
|
|