diff options
author | wiz <wiz> | 2011-02-07 10:20:09 +0000 |
---|---|---|
committer | wiz <wiz> | 2011-02-07 10:20:09 +0000 |
commit | 5491f5a28131531aff77c93aad563fda9c2f4d14 (patch) | |
tree | 1b2c791a74058713e71dcbc499f215222be23979 /multimedia | |
parent | 5fc45d6fcd77e20756ea036eea0886095e509aec (diff) | |
download | pkgsrc-5491f5a28131531aff77c93aad563fda9c2f4d14.tar.gz |
Fix interlaced png handling (lots of (unnecessary) warnings when running,
but works).
Diffstat (limited to 'multimedia')
-rw-r--r-- | multimedia/mjpegtools/distinfo | 4 | ||||
-rw-r--r-- | multimedia/mjpegtools/patches/patch-ac | 72 |
2 files changed, 25 insertions, 51 deletions
diff --git a/multimedia/mjpegtools/distinfo b/multimedia/mjpegtools/distinfo index ee3cf069677..4ddfec349bc 100644 --- a/multimedia/mjpegtools/distinfo +++ b/multimedia/mjpegtools/distinfo @@ -1,11 +1,11 @@ -$NetBSD: distinfo,v 1.20 2011/02/06 15:37:21 wiz Exp $ +$NetBSD: distinfo,v 1.21 2011/02/07 10:20:09 wiz Exp $ SHA1 (mjpegtools-1.9.0.tar.gz) = 1701233354c7ea86b5b7808c4dd5d03a71118e48 RMD160 (mjpegtools-1.9.0.tar.gz) = 79e0eb4bce468bb8f12da336e29abe8fab390a5f Size (mjpegtools-1.9.0.tar.gz) = 1718063 bytes SHA1 (patch-aa) = 64c2bd92b206060fbaa95a932f0ea18aec17b127 SHA1 (patch-ab) = 5fc460db1593afb1f99422003db86e6b7cfc8eb9 -SHA1 (patch-ac) = f1e935b9a514e29ac18c6a76d19a9f2a685aad3d +SHA1 (patch-ac) = 663460a330821d0ee30d053d5927240d16824e0a SHA1 (patch-ad) = 2a6f33fdc9c240d1c5c1172710db7ed95b1fc5a8 SHA1 (patch-ae) = 98bfbaccd8dc79582a32ffbc8dba7b6c039c0373 SHA1 (patch-af) = db90227d0732220123e5900049cf5f3e961432a2 diff --git a/multimedia/mjpegtools/patches/patch-ac b/multimedia/mjpegtools/patches/patch-ac index 16c18556ba4..849b6c2c286 100644 --- a/multimedia/mjpegtools/patches/patch-ac +++ b/multimedia/mjpegtools/patches/patch-ac @@ -1,86 +1,60 @@ -$NetBSD: patch-ac,v 1.8 2011/02/06 15:37:21 wiz Exp $ +$NetBSD: patch-ac,v 1.9 2011/02/07 10:20:10 wiz Exp $ Fix build with png-1.5. --- lavtools/png2yuv.c.orig 2007-11-08 17:31:50.000000000 +0000 +++ lavtools/png2yuv.c -@@ -78,6 +78,8 @@ png_structp png_ptr; - png_infop info_ptr, end_info; - uint8_t *raw0, *raw1, *raw2; /* buffer for RGB first, and then Y/Cb/Cr planes of decoded PNG */ - -+static int png_row_number = 0; -+ - /* - * The User Interface parts - */ -@@ -240,9 +242,13 @@ static void parse_commandline(int argc, +@@ -240,11 +240,18 @@ static void parse_commandline(int argc, } } +void read_row_callback(png_structp ptr, png_uint_32 row, int pass) +{ -+ png_row_number++; ++ png_uint_32 *prownumber = png_get_user_transform_ptr(png_ptr); ++ *prownumber = row; +} + void png_separation(png_structp png_ptr, png_row_infop row_info, png_bytep data) { - int row_nr = png_ptr->row_number; // internal variable ? ++ int row_nr; int i, width = row_info->width; int new_width = sh_param->new_width; ++ png_uint_32 *prow_number; -@@ -256,28 +262,28 @@ void png_separation(png_structp png_ptr, + /* contents of row_info: + * png_uint_32 width width of row +@@ -255,6 +262,8 @@ void png_separation(png_structp png_ptr, + * png_byte pixel_depth bits per pixel (depth*channels) */ ++ *prow_number = png_get_user_transform_ptr(png_ptr); ++ row_nr = (*prow_number+1)%png_get_image_height(png_ptr, info_ptr); //mjpeg_debug("PNG YUV transformation callback; color_type is %d row_number %d\n", -- // row_info->color_type, row_nr); -+ // row_info->color_type, png_row_number); + // row_info->color_type, row_nr); - if(row_info->color_type == PNG_COLOR_TYPE_GRAY) // only Z available - { -- //mjpeg_debug("Grayscale to YUV, row %d", row_nr); -+ //mjpeg_debug("Grayscale to YUV, row %d", png_row_number); - for (i = 0; i < width; i++) - { -- raw0[i + row_nr * new_width] = data[i]; -- raw1[i + row_nr * new_width] = data[i]; -- raw2[i + row_nr * new_width] = data[i]; -+ raw0[i + png_row_number * new_width] = data[i]; -+ raw1[i + png_row_number * new_width] = data[i]; -+ raw2[i + png_row_number * new_width] = data[i]; - } - return; - } +@@ -300,6 +309,7 @@ int decode_png(const char *pngname, int + int bit_depth, color_type; + FILE *pngfile; + //png_byte hdptr[8]; ++ auto png_uint_32 row_number = 0; - if(row_info->color_type == PNG_COLOR_TYPE_RGB) // Z and Alpha available - { -- //mjpeg_info("RGB to YUV, row %d", row_nr); -+ //mjpeg_info("RGB to YUV, row %d", png_row_number); - for (i = 0; i < width; i++) - { -- raw0[i + row_nr * new_width] = data[i*3]; -- raw1[i + row_nr * new_width] = data[i*3 + 1]; -- raw2[i + row_nr * new_width] = data[i*3 + 2]; -+ raw0[i + png_row_number * new_width] = data[i*3]; -+ raw1[i + png_row_number * new_width] = data[i*3 + 1]; -+ raw2[i + png_row_number * new_width] = data[i*3 + 2]; - } - return; - } -@@ -352,8 +358,12 @@ int decode_png(const char *pngname, int + /* Now open this PNG file, and examine its header to retrieve the + YUV4MPEG info that shall be written */ +@@ -352,8 +362,11 @@ int decode_png(const char *pngname, int return -1; } - if (process) + if (process) { -+ png_row_number = 0; + png_set_read_status_fn(png_ptr, read_row_callback); ++ png_set_user_transform_info(png_ptr, &row_number, 0, 0); png_set_read_user_transform_fn(png_ptr, png_separation); + } -+ png_set_interlace_handling(png_ptr); png_read_png(png_ptr, info_ptr, PNG_TRANSFORM_STRIP_16 | PNG_TRANSFORM_STRIP_ALPHA, NULL); if (png_get_IHDR(png_ptr, info_ptr, ¶m->width, ¶m->height, &bit_depth, -@@ -402,7 +412,7 @@ int decode_png(const char *pngname, int +@@ -402,7 +415,7 @@ int decode_png(const char *pngname, int } png_read_end(png_ptr, info_ptr); #endif |