summaryrefslogtreecommitdiff
path: root/multimedia
diff options
context:
space:
mode:
authorwiz <wiz>2011-02-07 10:20:09 +0000
committerwiz <wiz>2011-02-07 10:20:09 +0000
commit5491f5a28131531aff77c93aad563fda9c2f4d14 (patch)
tree1b2c791a74058713e71dcbc499f215222be23979 /multimedia
parent5fc45d6fcd77e20756ea036eea0886095e509aec (diff)
downloadpkgsrc-5491f5a28131531aff77c93aad563fda9c2f4d14.tar.gz
Fix interlaced png handling (lots of (unnecessary) warnings when running,
but works).
Diffstat (limited to 'multimedia')
-rw-r--r--multimedia/mjpegtools/distinfo4
-rw-r--r--multimedia/mjpegtools/patches/patch-ac72
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, &param->width, &param->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