| @@ -1,14 +1,14 @@ | | | @@ -1,14 +1,14 @@ |
1 | $NetBSD: patch-ac,v 1.7 2011/01/24 10:04:21 wiz Exp $ | | 1 | $NetBSD: patch-ac,v 1.8 2011/02/06 15:37:21 wiz Exp $ |
2 | | | 2 | |
3 | Fix build with png-1.5. | | 3 | Fix build with png-1.5. |
4 | | | 4 | |
5 | --- lavtools/png2yuv.c.orig 2007-11-08 17:31:50.000000000 +0000 | | 5 | --- lavtools/png2yuv.c.orig 2007-11-08 17:31:50.000000000 +0000 |
6 | +++ lavtools/png2yuv.c | | 6 | +++ lavtools/png2yuv.c |
7 | @@ -78,6 +78,8 @@ png_structp png_ptr; | | 7 | @@ -78,6 +78,8 @@ png_structp png_ptr; |
8 | png_infop info_ptr, end_info; | | 8 | png_infop info_ptr, end_info; |
9 | uint8_t *raw0, *raw1, *raw2; /* buffer for RGB first, and then Y/Cb/Cr planes of decoded PNG */ | | 9 | uint8_t *raw0, *raw1, *raw2; /* buffer for RGB first, and then Y/Cb/Cr planes of decoded PNG */ |
10 | | | 10 | |
11 | +static int png_row_number = 0; | | 11 | +static int png_row_number = 0; |
12 | + | | 12 | + |
13 | /* | | 13 | /* |
14 | * The User Interface parts | | 14 | * The User Interface parts |
| @@ -56,34 +56,36 @@ Fix build with png-1.5. | | | @@ -56,34 +56,36 @@ Fix build with png-1.5. |
56 | - //mjpeg_info("RGB to YUV, row %d", row_nr); | | 56 | - //mjpeg_info("RGB to YUV, row %d", row_nr); |
57 | + //mjpeg_info("RGB to YUV, row %d", png_row_number); | | 57 | + //mjpeg_info("RGB to YUV, row %d", png_row_number); |
58 | for (i = 0; i < width; i++) | | 58 | for (i = 0; i < width; i++) |
59 | { | | 59 | { |
60 | - raw0[i + row_nr * new_width] = data[i*3]; | | 60 | - raw0[i + row_nr * new_width] = data[i*3]; |
61 | - raw1[i + row_nr * new_width] = data[i*3 + 1]; | | 61 | - raw1[i + row_nr * new_width] = data[i*3 + 1]; |
62 | - raw2[i + row_nr * new_width] = data[i*3 + 2]; | | 62 | - raw2[i + row_nr * new_width] = data[i*3 + 2]; |
63 | + raw0[i + png_row_number * new_width] = data[i*3]; | | 63 | + raw0[i + png_row_number * new_width] = data[i*3]; |
64 | + raw1[i + png_row_number * new_width] = data[i*3 + 1]; | | 64 | + raw1[i + png_row_number * new_width] = data[i*3 + 1]; |
65 | + raw2[i + png_row_number * new_width] = data[i*3 + 2]; | | 65 | + raw2[i + png_row_number * new_width] = data[i*3 + 2]; |
66 | } | | 66 | } |
67 | return; | | 67 | return; |
68 | } | | 68 | } |
69 | @@ -352,8 +358,10 @@ int decode_png(const char *pngname, int | | 69 | @@ -352,8 +358,12 @@ int decode_png(const char *pngname, int |
70 | return -1; | | 70 | return -1; |
71 | } | | 71 | } |
72 | | | 72 | |
73 | - if (process) | | 73 | - if (process) |
74 | + if (process) { | | 74 | + if (process) { |
| | | 75 | + png_row_number = 0; |
75 | + png_set_read_status_fn(png_ptr, read_row_callback); | | 76 | + png_set_read_status_fn(png_ptr, read_row_callback); |
76 | png_set_read_user_transform_fn(png_ptr, png_separation); | | 77 | png_set_read_user_transform_fn(png_ptr, png_separation); |
77 | + } | | 78 | + } |
| | | 79 | + png_set_interlace_handling(png_ptr); |
78 | png_read_png(png_ptr, info_ptr, PNG_TRANSFORM_STRIP_16 | PNG_TRANSFORM_STRIP_ALPHA, NULL); | | 80 | png_read_png(png_ptr, info_ptr, PNG_TRANSFORM_STRIP_16 | PNG_TRANSFORM_STRIP_ALPHA, NULL); |
79 | | | 81 | |
80 | if (png_get_IHDR(png_ptr, info_ptr, ¶m->width, ¶m->height, &bit_depth, | | 82 | if (png_get_IHDR(png_ptr, info_ptr, ¶m->width, ¶m->height, &bit_depth, |
81 | @@ -402,7 +410,7 @@ int decode_png(const char *pngname, int | | 83 | @@ -402,7 +412,7 @@ int decode_png(const char *pngname, int |
82 | } | | 84 | } |
83 | png_read_end(png_ptr, info_ptr); | | 85 | png_read_end(png_ptr, info_ptr); |
84 | #endif | | 86 | #endif |
85 | - if (setjmp(png_ptr->jmpbuf)) { | | 87 | - if (setjmp(png_ptr->jmpbuf)) { |
86 | + if (setjmp(png_jmpbuf(png_ptr))) { | | 88 | + if (setjmp(png_jmpbuf(png_ptr))) { |
87 | png_destroy_read_struct(&png_ptr, &info_ptr, &end_info); | | 89 | png_destroy_read_struct(&png_ptr, &info_ptr, &end_info); |
88 | return 2; | | 90 | return 2; |
89 | } | | 91 | } |