| @@ -34,69 +34,6 @@ | |||||
| #define cm (ff_crop_tab + MAX_NEG_CROP) | #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)) | #define RGBA(r,g,b,a) (((unsigned)(a) << 24) | ((r) << 16) | ((g) << 8) | (b)) | ||||
| typedef struct DVBSubCLUT { | typedef struct DVBSubCLUT { | ||||
| @@ -1123,6 +1060,67 @@ static int dvbsub_parse_page_segment(AVCodecContext *avctx, | |||||
| #ifdef DEBUG | #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) | static int save_display_set(DVBSubContext *ctx) | ||||
| { | { | ||||
| DVBSubRegion *region; | DVBSubRegion *region; | ||||
| @@ -1218,7 +1216,7 @@ static int save_display_set(DVBSubContext *ctx) | |||||
| fileno_index++; | fileno_index++; | ||||
| return 0; | return 0; | ||||
| } | } | ||||
| #endif | |||||
| #endif /* DEBUG */ | |||||
| static int dvbsub_parse_display_definition_segment(AVCodecContext *avctx, | static int dvbsub_parse_display_definition_segment(AVCodecContext *avctx, | ||||
| const uint8_t *buf, | const uint8_t *buf, | ||||