summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Pielmeier <billie@gentoo.org>2011-05-12 18:31:45 +0000
committerDaniel Pielmeier <billie@gentoo.org>2011-05-12 18:31:45 +0000
commit11e0b6590db739de9cb5110fc1bde9d0938c6816 (patch)
tree2b86397e18bef8c9fb64d6c90bb3f5fee95f48ca /media-video/mjpegtools
parentfix typo (diff)
downloadhistorical-11e0b6590db739de9cb5110fc1bde9d0938c6816.tar.gz
historical-11e0b6590db739de9cb5110fc1bde9d0938c6816.tar.bz2
historical-11e0b6590db739de9cb5110fc1bde9d0938c6816.zip
Version bump. Take over package. Fixes bug #259461, #259207, #355043, #359491 and #361799.
Package-Manager: portage-2.1.9.42/cvs/Linux i686
Diffstat (limited to 'media-video/mjpegtools')
-rw-r--r--media-video/mjpegtools/ChangeLog13
-rw-r--r--media-video/mjpegtools/Manifest19
-rw-r--r--media-video/mjpegtools/files/mjpegtools-2.0.0_rc1-X11.patch25
-rw-r--r--media-video/mjpegtools/files/mjpegtools-2.0.0_rc1-amd-k8.patch13
-rw-r--r--media-video/mjpegtools/files/mjpegtools-2.0.0_rc1-dga-gtk-sdl-automagic.patch72
-rw-r--r--media-video/mjpegtools/files/mjpegtools-2.0.0_rc1-libpng-1.5.patch530
-rw-r--r--media-video/mjpegtools/files/mjpegtools-2.0.0_rc1-v4l-automagic.patch27
-rw-r--r--media-video/mjpegtools/metadata.xml20
-rw-r--r--media-video/mjpegtools/mjpegtools-2.0.0_rc1.ebuild85
9 files changed, 786 insertions, 18 deletions
diff --git a/media-video/mjpegtools/ChangeLog b/media-video/mjpegtools/ChangeLog
index 61b571fd9887..2fc8411a9c30 100644
--- a/media-video/mjpegtools/ChangeLog
+++ b/media-video/mjpegtools/ChangeLog
@@ -1,6 +1,17 @@
# ChangeLog for media-video/mjpegtools
# Copyright 1999-2011 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/media-video/mjpegtools/ChangeLog,v 1.152 2011/04/01 09:48:15 ssuominen Exp $
+# $Header: /var/cvsroot/gentoo-x86/media-video/mjpegtools/ChangeLog,v 1.153 2011/05/12 18:31:45 billie Exp $
+
+*mjpegtools-2.0.0_rc1 (12 May 2011)
+
+ 12 May 2011; Daniel Pielmeier <billie@gentoo.org>
+ +mjpegtools-2.0.0_rc1.ebuild, +files/mjpegtools-2.0.0_rc1-X11.patch,
+ +files/mjpegtools-2.0.0_rc1-amd-k8.patch,
+ +files/mjpegtools-2.0.0_rc1-dga-gtk-sdl-automagic.patch,
+ +files/mjpegtools-2.0.0_rc1-libpng-1.5.patch,
+ +files/mjpegtools-2.0.0_rc1-v4l-automagic.patch, metadata.xml:
+ Version bump. Take over package. Fixes bug #259461, #259207, #355043, #359491
+ and #361799.
01 Apr 2011; Samuli Suominen <ssuominen@gentoo.org>
mjpegtools-1.9.0-r1.ebuild:
diff --git a/media-video/mjpegtools/Manifest b/media-video/mjpegtools/Manifest
index 76ab106dda00..322f050faba2 100644
--- a/media-video/mjpegtools/Manifest
+++ b/media-video/mjpegtools/Manifest
@@ -1,16 +1,23 @@
-----BEGIN PGP SIGNED MESSAGE-----
-Hash: SHA256
+Hash: SHA1
AUX mjpegtools-1.9.0-glibc-2.10.patch 429 RMD160 ef7f706aeda7ebfa04dbd43b70a5e3e6faf24610 SHA1 3029f0e835e693b144298ed9f8143c9566be26f3 SHA256 0a76b418df4daa1603c827001ede6a1b3da4457b5d3aefeda0a656cd88ad446b
AUX mjpegtools-1.9.0-jpeg-7.patch 774 RMD160 22c50dd28617159eaa89aefb4647e21d4d9972e7 SHA1 2bdb1b3b8591cede11d4a133a758e8ead35db4dd SHA256 2c9b90a283e8e6d95bd9573cd16310107c654d0d701a7dff7e47ee1a773da7cf
+AUX mjpegtools-2.0.0_rc1-X11.patch 867 RMD160 453443cdcd2a2a1a657401a9719240e3ec5b948e SHA1 affdc0643d80ba7ba192e58e572b55e058d37aea SHA256 ec7ada2cbde2a2ef4ad401e8e8cf57b8bc547b0fd4d40f90a2cec4cb52e154a0
+AUX mjpegtools-2.0.0_rc1-amd-k8.patch 444 RMD160 d63d41180ef1f3920bcb8185e9f64e43dc225eb0 SHA1 d307fc06b092ed534c3a09fd6f1c12d7b022239d SHA256 b48bf19e8d94a3e82c571298c43384791aabc9e482129ae4f23e2755e1ff04e9
+AUX mjpegtools-2.0.0_rc1-dga-gtk-sdl-automagic.patch 2774 RMD160 bbf1ccb2505090bbab07b5f815435c4957af8250 SHA1 1b0f2fe6a1b6f7147244fc951af9ad2a42083a82 SHA256 75ad8055a7769f9e9b643481a21a2dbb4517b0a16521aaa0a8084efc6fc4a1a9
+AUX mjpegtools-2.0.0_rc1-libpng-1.5.patch 17209 RMD160 3a373ae1134cfc609a4a981dfec2e84ebd1f12cb SHA1 c7b3ac68d4171b7331f9feeac31e351cf8a9121a SHA256 4173cf6701f542dd00ef362916a46f3bfa656478d246484eb6da63e158210801
+AUX mjpegtools-2.0.0_rc1-v4l-automagic.patch 1116 RMD160 545b449956840edb487399eca31e02627681b81d SHA1 ce5005328b4b14f083757fc0c837ddd58690eeed SHA256 cee64c74ff2ffd27325843fc8660b0c28e1d7d4d4cffba1112fd31450529aefe
DIST mjpegtools-1.9.0.tar.gz 1718063 RMD160 79e0eb4bce468bb8f12da336e29abe8fab390a5f SHA1 1701233354c7ea86b5b7808c4dd5d03a71118e48 SHA256 a9322aaab1e0835fbaa00fc10e58e885833454fa0ad6f57c60c89a78f7ed1711
+DIST mjpegtools-2.0.0rc1.tar.gz 3110286 RMD160 42d14ec10cb14453d471ababea598eade5033d40 SHA1 5d6a82baa166f12e89ea6dd82e31d62dde6c95c9 SHA256 fe2d59fd56631f077859c6b38c5027e38fc641b40ada3ddf39d85b924887b1ff
EBUILD mjpegtools-1.9.0-r1.ebuild 2078 RMD160 d288a60f43f79ea5298fd860bd4e0e988c48478f SHA1 07fbcca44b05d371e7619f40b59a2ea8705e31f6 SHA256 7d303fea4b4eb8c278e07c0e1662dd9860e4b9ef5836322d5bc8d76112b947f7
-MISC ChangeLog 27091 RMD160 f6ae3de42807e4f3be9beab90e23d31092f93990 SHA1 5aa735164d29e982fe1f5f05d61cf84e243eb250 SHA256 cc663ac6651287f96a2616d4dfb3fe2c938fb79ed2de05085d44d20faba65b24
-MISC metadata.xml 415 RMD160 cdbf5de3ece63e3df10d1a4e69ed5e471abb84fa SHA1 5ae767eb57a50fff79f938a01332e67f88306aff SHA256 75cf2c90452ef1a74f46812e6ffee8c2f25a979f3a0b8e366032ee60bdb8663b
+EBUILD mjpegtools-2.0.0_rc1.ebuild 2150 RMD160 df81e253a69c232bdabed2eae16a3ee258003db9 SHA1 04767fe54b587791c03a995eb84de9e701119f94 SHA256 825d20a0a45e698e15638204e56858c77fd2f6b1d537a006acc22b136c642283
+MISC ChangeLog 27560 RMD160 74877186b83bb176efd6168330c51fd42a9ef44a SHA1 f998ff2bdc9acc1364bd0e9d4a9b3c4bb5c6bdab SHA256 7687de61947ca13bc6d4c51867cd6277b13589ca81b5479b9f22fc2b4133fd71
+MISC metadata.xml 363 RMD160 10615c49fe0655333db0f939b2e38c6efd1f887d SHA1 496986a1272e3b16da7360f18327621bd2e532d5 SHA256 51be248768e67ad5fe862f97bfa1b3010ceb85d8ddc08c434ebacc21ee4156a0
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.17 (GNU/Linux)
-iF4EAREIAAYFAk2Vn5gACgkQXkR9YqOcLPHX+wD/bOQUeB332Sbf+t82ooq130j3
-lOfk2ewlQC78qBzbK5kA/2Zyf9YF7we5rkn7apqQgy5WGMBLrwj0BZ+vZmZplbxR
-=HnBe
+iEYEARECAAYFAk3MJ6EACgkQlcuUeyFa0U0S+gCg797YaCxBDNLkPsLDLuUz38nE
+PfoAn1l0ZGBG4x42EblKZTwbmaRLauoG
+=WwzY
-----END PGP SIGNATURE-----
diff --git a/media-video/mjpegtools/files/mjpegtools-2.0.0_rc1-X11.patch b/media-video/mjpegtools/files/mjpegtools-2.0.0_rc1-X11.patch
new file mode 100644
index 000000000000..b8f87fd87635
--- /dev/null
+++ b/media-video/mjpegtools/files/mjpegtools-2.0.0_rc1-X11.patch
@@ -0,0 +1,25 @@
+--- configure.ac 2011/04/30 16:00:36 1.67
++++ configure.ac 2011/05/03 17:43:06 1.68
+@@ -277,7 +277,7 @@
+ have_dga="true"
+ AC_DEFINE(HAVE_LIBXXF86DGA,1, [libxf86dga is present]),
+ have_dga="false",
+- $X_LIBS $X_PRE_LIBS -lXext -lX11 $X_EXTRA_LIBS)
++ $X_LIBS $X_PRE_LIBS -lXext $X_EXTRA_LIBS)
+ fi
+ AM_CONDITIONAL(HAVE_LIBXXF86DGA, test x$have_dga = xtrue)
+
+--- lavtools/Makefile.am 2010/03/07 11:42:13 1.122
++++ lavtools/Makefile.am 2011/05/03 17:50:28 1.123
+@@ -59,7 +59,10 @@
+ liblavplay_la_LDFLAGS = $(LAV_ALL_LIB_OPTS)
+ liblavplay_la_LIBADD = liblavfile.la $(SDL_LIBS) liblavjpeg.la $(LIBDV_LIBS) $(LIBMJPEGUTILS)
+ if HAVE_V4L
+- liblavplay_la_LIBADD += ${X_LIBS} -lX11
++ liblavplay_la_LIBADD += ${X_LIBS}
++endif
++if HAVE_SDL
++ liblavplay_la_LIBADD += -lX11
+ endif
+ liblavplay_la_DEPENDENCIES = liblavfile.la liblavjpeg.la
+
diff --git a/media-video/mjpegtools/files/mjpegtools-2.0.0_rc1-amd-k8.patch b/media-video/mjpegtools/files/mjpegtools-2.0.0_rc1-amd-k8.patch
new file mode 100644
index 000000000000..a1a0702ab39b
--- /dev/null
+++ b/media-video/mjpegtools/files/mjpegtools-2.0.0_rc1-amd-k8.patch
@@ -0,0 +1,13 @@
+--- yuvdenoise/main.c 2010/10/16 05:28:30 1.72
++++ yuvdenoise/main.c 2011/02/13 10:46:02 1.73
+@@ -810,8 +810,8 @@
+ /* 4 to 5 times faster */
+ void filter_plane_median_sse2(uint8_t *plane, int w, int h, int level) {
+ int i;
+- /* int avg; should not be needed any more */
+- /* int cnt; should not be needed any more */
++ int avg; /*should not be needed any more */
++ int cnt; /* should not be needed any more */
+ uint8_t * p;
+ uint8_t * d;
+
diff --git a/media-video/mjpegtools/files/mjpegtools-2.0.0_rc1-dga-gtk-sdl-automagic.patch b/media-video/mjpegtools/files/mjpegtools-2.0.0_rc1-dga-gtk-sdl-automagic.patch
new file mode 100644
index 000000000000..0bf7d621b862
--- /dev/null
+++ b/media-video/mjpegtools/files/mjpegtools-2.0.0_rc1-dga-gtk-sdl-automagic.patch
@@ -0,0 +1,72 @@
+--- configure.ac 2011/04/30 15:39:10 1.66
++++ configure.ac 2011/04/30 16:00:36 1.67
+@@ -55,6 +55,15 @@
+ AC_ARG_WITH(libpng,
+ AC_HELP_STRING([--without-libpng], [Do not use libpng.]),
+ [], [with_libpng=yes])
++AC_ARG_WITH(dga,
++ AC_HELP_STRING([--without-dga], [Do not use dga.]),
++ [], [with_dga=yes])
++AC_ARG_WITH(gtk,
++ AC_HELP_STRING([--without-gtk], [Do not use gtk.]),
++ [], [with_gtk=yes])
++AC_ARG_WITH(libsdl,
++ AC_HELP_STRING([--without-libsdl], [Do not use libsdl.]),
++ [], [with_libsdl=yes])
+ AC_GNU_SOURCE
+
+ dnl Initialize libtool
+@@ -260,29 +269,42 @@
+ dnl ********************************************************************
+ dnl Check for DGA (for v4l-conf)
+ dnl ********************************************************************
+-AC_SUBST(V4LCONF_LIBS)
+-AC_CHECK_LIB(Xxf86dga, XF86DGAQueryExtension,
+- V4LCONF_LIBS="$X_LIBS -lXxf86dga"
+- AC_DEFINE(HAVE_LIBXXF86DGA,1, [libxf86dga is present]),,
+- $X_LIBS $X_PRE_LIBS -lXext -lX11 $X_EXTRA_LIBS)
++have_dga=false
++if test x$with_dga != xno ; then
++ AC_SUBST(V4LCONF_LIBS)
++ AC_CHECK_LIB(Xxf86dga, XF86DGAQueryExtension,
++ V4LCONF_LIBS="$X_LIBS -lXxf86dga"
++ have_dga="true"
++ AC_DEFINE(HAVE_LIBXXF86DGA,1, [libxf86dga is present]),
++ have_dga="false",
++ $X_LIBS $X_PRE_LIBS -lXext -lX11 $X_EXTRA_LIBS)
++fi
++AM_CONDITIONAL(HAVE_LIBXXF86DGA, test x$have_dga = xtrue)
+
+ dnl ********************************************************************
+ dnl Check for Gtk+/glib (for glav). 2.4.0 or greater required (should
+ dnl not be a problem on recent distributions).
+ dnl (defines GTK_CFLAGS and GTK_LIBS)
+ dnl ********************************************************************
+-PKG_CHECK_MODULES(GTK, [gtk+-2.0 >= 2.4.0], have_gtk="true", have_gtk="false")
++have_gtk=false
++if test x$with_gtk != xno ; then
++ PKG_CHECK_MODULES(GTK, [gtk+-2.0 >= 2.4.0],
++ have_gtk="true", have_gtk="false")
++fi
+ AM_CONDITIONAL(HAVE_GTK, test x$have_gtk = xtrue)
+
+ dnl ********************************************************************
+ dnl Check for the SDL library (for software playback)
+ dnl (defines SDL_CFLAGS and SDL_LIBS)
+ dnl ********************************************************************
+-AM_PATH_SDL(1.1.3,
+- [have_sdl=true
+- AC_DEFINE(HAVE_SDL, 1, [SDL library present]) ],
+- [have_sdl=false])
+-AM_CONDITIONAL(HAVE_SDL, test x$have_sdl = xtrue)
++have_sdl=false
++if test x$with_libsdl != xno ; then
++ PKG_CHECK_MODULES(SDL, [sdl > 1.1.3],
++ [have_sdl=true
++ AC_DEFINE(HAVE_SDL, 1, [libsdl > 1.1.3 present])],
++ [have_sdl=false])
++fi
++AM_CONDITIONAL(HAVE_SDL, test x$have_sdl = xtrue)
+
+ dnl ***
+ dnl Check for SDL_gfx which is used by y4mhist to display a graphical
diff --git a/media-video/mjpegtools/files/mjpegtools-2.0.0_rc1-libpng-1.5.patch b/media-video/mjpegtools/files/mjpegtools-2.0.0_rc1-libpng-1.5.patch
new file mode 100644
index 000000000000..b2902ecc5d14
--- /dev/null
+++ b/media-video/mjpegtools/files/mjpegtools-2.0.0_rc1-libpng-1.5.patch
@@ -0,0 +1,530 @@
+--- lavtools/png2yuv.c 2009/05/16 04:06:47 1.10
++++ lavtools/png2yuv.c 2011/02/12 09:20:29 1.11
+@@ -33,6 +33,7 @@
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <unistd.h>
++#include <limits.h>
+
+ #include <string.h>
+ #include <errno.h>
+@@ -49,12 +50,9 @@
+
+ #include "subsample.h"
+ #include "colorspace.h"
+-//#include "mplexconsts.hh"
+
+ #define DEFAULT_CHROMA_MODE Y4M_CHROMA_420JPEG
+
+-#define MAXPIXELS (2800*1152) /**< Maximum size of final image */
+-
+ typedef struct _parameters
+ {
+ char *pngformatstr;
+@@ -70,14 +68,10 @@
+ int ss_mode; /**< subsampling mode (based on ssm_id from subsample.h) */
+
+ int new_width; /// new MPEG2 width, in case the original one is uneven
++ int new_height; /// new MPEG2 width, in case the original one is uneven
+ } parameters_t;
+
+
+-struct _parameters *sh_param;
+-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 */
+-
+ /*
+ * The User Interface parts
+ */
+@@ -152,8 +146,6 @@
+ param->interleave = -1;
+ param->verbose = 1;
+ param->ss_mode = DEFAULT_CHROMA_MODE;
+- //param->mza_filename = NULL;
+- //param->make_z_alpha = 0;
+
+ /* parse options */
+ for (;;) {
+@@ -240,93 +232,43 @@
+ }
+ }
+
+-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 i, width = row_info->width;
+- int new_width = sh_param->new_width;
+-
+- /* contents of row_info:
+- * png_uint_32 width width of row
+- * png_uint_32 rowbytes number of bytes in row
+- * png_byte color_type color type of pixels
+- * png_byte bit_depth bit depth of samples
+- * png_byte channels number of channels (1-4)
+- * png_byte pixel_depth bits per pixel (depth*channels)
+- */
+-
+- //mjpeg_debug("PNG YUV transformation callback; color_type is %d row_number %d\n",
+- // 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);
+- 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];
+- }
+- return;
+- }
+-
+- if(row_info->color_type == PNG_COLOR_TYPE_RGB) // Z and Alpha available
+- {
+- //mjpeg_info("RGB to YUV, row %d", row_nr);
+- 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];
+- }
+- return;
+- }
+-
+- mjpeg_error_exit1("mpegz: UNKNOWN COLOR FORMAT %d in PNG transformation !\n", row_info->color_type);
+-}
+-
+
+ /*
+ * The file handling parts
+ */
+ /**
+ Reads one PNG file.
+-@param process Process the image data (0 for initial parameter determination)
++@param process Process the image data (NULL for initial parameter determination)
+ @returns -1 on failure, 1 on sucess
++@on success returns RGB data in the second, yuv, parameter
+ */
+-int decode_png(const char *pngname, int process, parameters_t *param)
++int decode_png(const char *pngname, uint8_t *yuv[], parameters_t *param)
+ {
+- int num_pass = 1;
+- int bit_depth, color_type;
++ png_structp png_ptr;
++ png_infop info_ptr;
+ FILE *pngfile;
+- //png_byte hdptr[8];
+-
+- /* Now open this PNG file, and examine its header to retrieve the
+- YUV4MPEG info that shall be written */
+- pngfile = fopen(pngname, "rb");
+- if (!pngfile)
+- {
+- perror("PNG file open failed:");
+- return -1;
+- }
+
+- //fread(hdptr, 1, 8, pngfile);
++ /* libpng needs two structs - a png_struct and a png_info, there is no
++ * need to make the third, another png_info, because that is only used
++ * to store data (such as textual information) that can come after the
++ * PNG image. This code only cares about the image.
++ */
++ info_ptr = NULL;
++ pngfile = NULL;
++ png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
++ if (!png_ptr)
++ mjpeg_error_exit1("%s: Could not allocate PNG read struct !", pngname);
+
+-#if 0
+- bool is_png = !png_sig_cmp(hdptr, 0, 8);
+- if (!is_png)
++ /* This needs to be done immediately after creation of the png_struct
++ * because storage allocation failures will longjmp back to here:
++ */
++ if (setjmp(png_jmpbuf(png_ptr)))
+ {
+- mjpeg_error("%s is _no_ PNG file !\n");
++ png_destroy_read_struct(&png_ptr, &info_ptr, 0);
++ if (pngfile) (void)fclose(pngfile);
++ mjpeg_error("%s: Corrupted PNG file !", pngname);
+ return -1;
+ }
+-#endif
+-
+- png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
+- if (!png_ptr)
+- mjpeg_error_exit1("%s: Could not allocate PNG read struct !", pngname);
+-
+- png_init_io(png_ptr, pngfile);
+- //png_set_sig_bytes(png_ptr, 8);
+
+ info_ptr = png_create_info_struct(png_ptr);
+ if (!info_ptr)
+@@ -336,79 +278,104 @@
+ mjpeg_error_exit1("%s: Could not allocate PNG info struct !", pngname);
+ }
+
+- end_info = png_create_info_struct(png_ptr);
+- if (!end_info)
++/* Now open this PNG file, and examine its header to retrieve the
++ * YUV4MPEG info that shall be written */
++ pngfile = fopen(pngname, "rb");
++ if (!pngfile)
+ {
+- png_destroy_read_struct(&png_ptr, &info_ptr,
+- (png_infopp)NULL);
+- mjpeg_error_exit1("%s: Could not allocate PNG end info struct !", pngname);
++ perror(pngname);
++ png_error(png_ptr, "PNG file open failed");
+ }
+-
+- if (setjmp(png_jmpbuf(png_ptr)))
++
++ png_init_io(png_ptr, pngfile);
++
++ if (yuv)
+ {
+- png_destroy_read_struct(&png_ptr, &info_ptr,
+- &end_info);
+- mjpeg_error("%s: Corrupted PNG file !", pngname);
+- return -1;
++ png_uint_32 nr, input_height, input_width, output_height, output_width;
++ uint8_t *r, *g, *b;
++ png_bytepp rows;
++
++ /* The code uses png_read_png to obtain a complete buffered copy of the
++ * PNG file reduced (or expanded) to 8 bit RGB. This is a little wasteful
++ * in the case of a non-interlaced image - the code could work row by
++ * row without buffering the whole image - but the interlaced case is
++ * almost impossible to handle this way so it is better to be simple and
++ * correct.
++ */
++# if PNG_LIBPNG_VER >= 10500 && PNG_LIBPNG_VER < 10502
++ /* There is a bug in 1.5 before 1.5.2 which causes png_read_png to
++ * whine most terribly on interlaced images, this stops it:
++ */
++ (void)png_set_interlace_handling(png_ptr);
++# endif
++ png_read_png(png_ptr, info_ptr, PNG_TRANSFORM_STRIP_16 |
++ PNG_TRANSFORM_STRIP_ALPHA | PNG_TRANSFORM_EXPAND |
++ PNG_TRANSFORM_GRAY_TO_RGB /* requires libpng 1.4 or later */, 0);
++
++ /* And return the separated data to the parameters. */
++ rows = png_get_rows(png_ptr, info_ptr);
++
++ /* Since the PNG files for the frames are separate the actual PNG file
++ * that was read could be unrelated - a random width and height. Because
++ * the output may be interleaved the output height may be twice the input
++ * PNG height. Because the MPEG code requires an even width the output
++ * width may be one more than the original frame width.
++ *
++ * For the interleaving the PNG data is smashed into the lower half of
++ * the yuv rows. For the other cases the input data is cropped or
++ * top-lefted as appropriate.
++ */
++ output_height = param->new_height;
++
++ input_height = png_get_image_height(png_ptr, info_ptr);
++ if (input_height > output_height)
++ input_height = output_height;
++
++ output_width = param->new_width;
++
++ input_width = png_get_image_width(png_ptr, info_ptr);
++ if (input_width > output_width)
++ input_width = output_width;
++
++ /* Breaking up the RGB data is not hard to do, the separated channels are
++ * simply packed into the three raw yuv arrays with new_width values per
++ * row.
++ */
++ r = yuv[0];
++ g = yuv[1];
++ b = yuv[2];
++ for (nr=0; nr<input_height; ++nr)
++ {
++ png_uint_32 nc;
++ png_bytep row = *rows++;
++
++ for (nc=0; nc<input_width; ++nc)
++ {
++ *r++ = *row++;
++ *g++ = *row++;
++ *b++ = *row++;
++ }
++
++ /* Pad the output: */
++ for (; nc<output_width; ++nc)
++ *r++ = *g++ = *b++ = 0;
++ }
+ }
+
+- if (process)
+- png_set_read_user_transform_fn(png_ptr, png_separation);
+- 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,
+- // &color_type, &interlace_type, &compression_type, &filter_type))
+- &color_type, NULL, NULL, NULL))
+- num_pass = png_set_interlace_handling(png_ptr);
+- else
+- mjpeg_error_exit1("PNG header reading failed !!\n");
+-#if 0
+- mjpeg_info("Reading info struct...\n");
+- png_read_info(png_ptr, info_ptr);
+- mjpeg_info("Done...\n");
+-
+- if (png_get_IHDR(png_ptr, info_ptr, &param->width, &param->height, &bit_depth,
+- // &color_type, &interlace_type, &compression_type, &filter_type))
+- &color_type, NULL, NULL, NULL))
+- num_pass = png_set_interlace_handling(png_ptr);
+ else
+- mjpeg_error_exit1("PNG header reading failed !!\n");
+-
+- if (process)
+ {
+- printf("%d passes needed\n\n", num_pass);
+-
+- if (bit_depth != 8 && bit_depth != 16)
+- {
+- mjpeg_error_exit1("Invalid bit_depth %d, only 8 and 16 bit allowed !!\n", bit_depth);
+- }
+-
+- png_set_strip_16(png_ptr); // always has to strip the 16bit input, MPEG can't handle it
+- png_set_strip_alpha(png_ptr); // Alpha can't be processed until Z/Alpha is integrated
+-
+- printf("\nAllocating row buffer...");
+- png_set_read_user_transform_fn(png_ptr, png_separation);
+- png_bytep row_buf = (png_bytep)png_malloc(png_ptr,
+- png_get_rowbytes(png_ptr, info_ptr));
+-
+- for (int n=0; n < num_pass; n++)
+- for (int y=0; y < sh_param->height; y++)
+- {
+- printf("Writing row data for pass %d\n", n);
+- png_read_rows(png_ptr, (png_bytepp)&row_buf, NULL, 1);
+- }
+-
+- png_free(png_ptr, row_buf);
+- }
+- png_read_end(png_ptr, info_ptr);
+-#endif
+- if (setjmp(png_ptr->jmpbuf)) {
+- png_destroy_read_struct(&png_ptr, &info_ptr, &end_info);
+- return 2;
++ /* Just return the image width and height in *param */
++ png_read_info(png_ptr, info_ptr);
++
++ param->width = png_get_image_width(png_ptr, info_ptr);
++ param->height = png_get_image_height(png_ptr, info_ptr);
++
+ }
+
++/* Successful exit: */
++ png_destroy_read_struct(&png_ptr, &info_ptr, 0);
++
+ fclose(pngfile);
+- png_destroy_read_struct(&png_ptr, &info_ptr, &end_info);
+ return 1;
+ }
+
+@@ -419,13 +386,17 @@
+ */
+ static int init_parse_files(parameters_t *param)
+ {
+- char pngname[255];
++ char pngname[PATH_MAX+1]; /* See POSIX 1003.1 section 2.9.5 */
+
+ snprintf(pngname, sizeof(pngname),
+ param->pngformatstr, param->begin);
+ mjpeg_debug("Analyzing %s to get the right pic params", pngname);
+
+- if (decode_png(pngname, 0, param) == -1)
++ /* The first frame (the param->begin frame) determines the height and
++ * width of the output. Passing NULL instead of yuv (see below) causes
++ * decode_png to fill in param with the image dimensions.
++ */
++ if (decode_png(pngname, NULL, param) == -1)
+ mjpeg_error_exit1("Reading of %s failed.\n", pngname);
+
+ mjpeg_info("Image dimensions are %ux%u",
+@@ -455,6 +426,7 @@
+
+ if (!(param->interleave) && (param->interlace != Y4M_ILACE_NONE))
+ {
++ /* So the height in 'param' might be twice the PNG input height:*/
+ param->height *= 2;
+ mjpeg_info("Non-interleaved fields (image height doubled)");
+ }
+@@ -466,33 +438,29 @@
+ static int generate_YUV4MPEG(parameters_t *param)
+ {
+ uint32_t frame;
+- //size_t pngsize;
+- char pngname[FILENAME_MAX];
+- uint8_t *yuv[3]; /* buffer for Y/U/V planes of decoded PNG */
++ uint8_t *yuv[3]; /* Buffers, initially for R,G,B then Y,Cb,Cr */
+ y4m_stream_info_t streaminfo;
+ y4m_frame_info_t frameinfo;
+
+- if ((param->width % 2) == 0)
+- param->new_width = param->width;
+- else
+- {
+- param->new_width = ((param->width >> 1) + 1) << 1;
+- printf("Setting new, even image width %d", param->new_width);
+- }
++ /* Make the output even, so the output may be one larger than the
++ * original PNG image width.
++ */
++ param->new_width = param->width + (param->width & 1);
++ param->new_height = param->height + (param->height & 1);
+
+ mjpeg_info("Now generating YUV4MPEG stream.");
+ y4m_init_stream_info(&streaminfo);
+ y4m_init_frame_info(&frameinfo);
+
+ y4m_si_set_width(&streaminfo, param->new_width);
+- y4m_si_set_height(&streaminfo, param->height);
++ y4m_si_set_height(&streaminfo, param->new_height);
+ y4m_si_set_interlace(&streaminfo, param->interlace);
+ y4m_si_set_framerate(&streaminfo, param->framerate);
+ y4m_si_set_chroma(&streaminfo, param->ss_mode);
+
+- yuv[0] = (uint8_t *)malloc(param->new_width * param->height * sizeof(yuv[0][0]));
+- yuv[1] = (uint8_t *)malloc(param->new_width * param->height * sizeof(yuv[1][0]));
+- yuv[2] = (uint8_t *)malloc(param->new_width * param->height * sizeof(yuv[2][0]));
++ yuv[0] = (uint8_t *)malloc(param->new_width * param->new_height * sizeof(yuv[0][0]));
++ yuv[1] = (uint8_t *)malloc(param->new_width * param->new_height * sizeof(yuv[1][0]));
++ yuv[2] = (uint8_t *)malloc(param->new_width * param->new_height * sizeof(yuv[2][0]));
+
+ y4m_write_stream_header(STDOUT_FILENO, &streaminfo);
+
+@@ -500,15 +468,13 @@
+ (frame < param->numframes + param->begin) || (param->numframes == -1);
+ frame++)
+ {
+- // if (frame < 25)
+- // else
+- //snprintf(pngname, sizeof(pngname), param->pngformatstr, frame - 25);
++ char pngname[PATH_MAX+1];
+ snprintf(pngname, sizeof(pngname), param->pngformatstr, frame);
+
+- raw0 = yuv[0];
+- raw1 = yuv[1];
+- raw2 = yuv[2];
+- if (decode_png(pngname, 1, param) == -1)
++ /* decode_png reads the PNG into the yuv buffers as r,g,b [0..255]
++ * values.
++ */
++ if (decode_png(pngname, yuv, param) == -1)
+ {
+ mjpeg_info("Read from '%s' failed: %s", pngname, strerror(errno));
+ if (param->numframes == -1)
+@@ -523,79 +489,18 @@
+ }
+ else
+ {
+-#if 0
+- mjpeg_debug("Preparing frame");
+-
+- /* Now open this PNG file, and examine its header to retrieve the
+- YUV4MPEG info that shall be written */
+-
+- if ((param->interlace == Y4M_ILACE_NONE) || (param->interleave == 1))
+- {
+- mjpeg_info("Processing non-interlaced/interleaved %s.",
+- pngname, pngsize);
+-
+- decode_png(imagedata, 0, 420, yuv[0], yuv[1], yuv[2],
+- param->width, param->height, param->new_width);
+-
+-#if 0
+- if (param->make_z_alpha)
+- {
+- mjpeg_info("Writing Z/Alpha data.\n");
+- za_write(real_z_imagemap, param->width, param->height,z_alpha_fp,frame);
+- }
+-#endif
+- }
+- else
+- {
+- mjpeg_error_exit1("Can't handle interlaced PNG information (yet) since there is no standard for it.\n"
+- "Use interleaved mode (-L option) to create interlaced material.");
+-
+- switch (param->interlace)
+- {
+- case Y4M_ILACE_TOP_FIRST:
+- mjpeg_info("Processing interlaced, top-first %s", pngname);
+-#if 0
+- decode_jpeg_raw(jpegdata, jpegsize,
+- Y4M_ILACE_TOP_FIRST,
+- 420, param->width, param->height,
+- yuv[0], yuv[1], yuv[2]);
+-#endif
+- break;
+- case Y4M_ILACE_BOTTOM_FIRST:
+- mjpeg_info("Processing interlaced, bottom-first %s", pngname);
+-#if 0
+- decode_jpeg_raw(jpegdata, jpegsize,
+- Y4M_ILACE_BOTTOM_FIRST,
+- 420, param->width, param->height,
+- yuv[0], yuv[1], yuv[2]);
+-#endif
+- break;
+- default:
+- mjpeg_error_exit1("FATAL logic error?!?");
+- break;
+- }
+- }
+-#endif
+ mjpeg_debug("Converting frame to YUV format.");
+ /* Transform colorspace, then subsample (in place) */
+- convert_RGB_to_YCbCr(yuv, param->height * param->new_width);
+- chroma_subsample(param->ss_mode, yuv, param->new_width, param->height);
++ convert_RGB_to_YCbCr(yuv, param->new_height * param->new_width);
++ chroma_subsample(param->ss_mode, yuv, param->new_width, param->new_height);
+
+ mjpeg_debug("Frame decoded, now writing to output stream.");
+ }
+-
++
+ mjpeg_debug("Frame decoded, now writing to output stream.");
+ y4m_write_frame(STDOUT_FILENO, &streaminfo, &frameinfo, yuv);
+ }
+
+-#if 0
+- if (param->make_z_alpha)
+- {
+- za_write_end(z_alpha_fp);
+- fclose(z_alpha_fp);
+- }
+-#endif
+-
+ y4m_fini_stream_info(&streaminfo);
+ y4m_fini_frame_info(&frameinfo);
+ free(yuv[0]);
+@@ -614,7 +519,6 @@
+ int main(int argc, char ** argv)
+ {
+ parameters_t param;
+- sh_param = &param;
+
+ y4m_accept_extensions(1);
+
+@@ -632,13 +536,3 @@
+
+ return 0;
+ }
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
diff --git a/media-video/mjpegtools/files/mjpegtools-2.0.0_rc1-v4l-automagic.patch b/media-video/mjpegtools/files/mjpegtools-2.0.0_rc1-v4l-automagic.patch
new file mode 100644
index 000000000000..1dd8a2f5a598
--- /dev/null
+++ b/media-video/mjpegtools/files/mjpegtools-2.0.0_rc1-v4l-automagic.patch
@@ -0,0 +1,27 @@
+--- configure.ac 2011-04-30 17:59:31.703059001 +0200
++++ configure.ac 2011-04-30 18:01:37.189725667 +0200
+@@ -151,15 +151,20 @@
+ dnl video4linux/hardware dependent tools. Else, undefine HAVE_V4L
+
+ have_video4linux=false
++AC_ARG_WITH([v4l], AC_HELP_STRING([--without-v4l], [Disable v4l1 API]))
++AS_IF([test "x$with_v4l" != "xno"], [
+ case $host in
+ *-*-linux*)
+ AC_CHECK_HEADER(linux/videodev.h,
+ [have_video4linux=true
+ AC_DEFINE(HAVE_V4L, 1,
+- [Building for Linux - using the video4linux API])],
+- [AC_MSG_ERROR([videodev.h not found - please install the linux kernel headers])])
+- ;;
+-esac
++ [Building for Linux - using the video4linux API])], [])
++ ;;
++esac])
++
++AS_IF([test "x$have_video4linux" != "xtrue" && test "x$with_v4l" != "xno"],
++ [have_video4linux=false
++ AC_MSG_WARN([videodev.h not found - please install the linux kernel headers programms needing v4l disabled])])
+ AM_CONDITIONAL(HAVE_V4L, test x$have_video4linux = xtrue)
+
+ dnl *********************************************************************
diff --git a/media-video/mjpegtools/metadata.xml b/media-video/mjpegtools/metadata.xml
index 5acf5410f251..507c26e304a9 100644
--- a/media-video/mjpegtools/metadata.xml
+++ b/media-video/mjpegtools/metadata.xml
@@ -1,15 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
- <herd>video</herd>
- <herd>media-tv</herd>
- <maintainer>
- <email>media-video@gentoo.org</email>
- </maintainer>
- <maintainer>
- <email>media-tv@gentoo.org</email>
- </maintainer>
- <use>
- <flag name="yv12">Enables support for the YV12 pixel format</flag>
- </use>
+ <herd>video</herd>
+ <herd>media-tv</herd>
+ <maintainer>
+ <email>billie@gentoo.org</email>
+ <name>Daniel Pielmeier</name>
+ </maintainer>
+ <use>
+ <flag name="yv12">Enables support for the YV12 pixel format</flag>
+ </use>
</pkgmetadata>
diff --git a/media-video/mjpegtools/mjpegtools-2.0.0_rc1.ebuild b/media-video/mjpegtools/mjpegtools-2.0.0_rc1.ebuild
new file mode 100644
index 000000000000..599d70837ef5
--- /dev/null
+++ b/media-video/mjpegtools/mjpegtools-2.0.0_rc1.ebuild
@@ -0,0 +1,85 @@
+# Copyright 1999-2011 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/media-video/mjpegtools/mjpegtools-2.0.0_rc1.ebuild,v 1.1 2011/05/12 18:31:45 billie Exp $
+
+EAPI=4
+
+inherit autotools eutils flag-o-matic linux-info toolchain-funcs
+
+MY_P=${P/_/}
+
+DESCRIPTION="Tools for MJPEG video"
+HOMEPAGE="http://mjpeg.sourceforge.net/"
+SRC_URI="mirror://sourceforge/mjpeg/${MY_P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="1"
+KEYWORDS="~alpha ~amd64 ~ppc ~ppc64 ~sparc ~x86"
+IUSE="dga dv gtk mmx png quicktime sdl static-libs v4l X"
+REQUIRED_USE="!X? ( !gtk !sdl )
+ X? ( sdl )"
+
+RDEPEND="virtual/jpeg
+ quicktime? ( media-libs/libquicktime )
+ dv? ( >=media-libs/libdv-0.99 )
+ png? ( media-libs/libpng )
+ dga? ( x11-libs/libXxf86dga )
+ X? ( x11-libs/libX11
+ x11-libs/libXt
+ gtk? ( x11-libs/gtk+:2 )
+ sdl? ( >=media-libs/libsdl-1.2.7-r3 )
+ )"
+
+DEPEND="${RDEPEND}
+ mmx? ( dev-lang/nasm )
+ >=sys-apps/sed-4
+ sys-apps/gawk
+ dev-util/pkgconfig"
+
+S="${WORKDIR}/${P/_rc*}"
+
+pkg_pretend() {
+ if kernel_is ge 2 6 38 && use v4l; then
+ ewarn "Current versions of mjpegtools only support V4L1 which is not available"
+ ewarn "for kernels versions 2.6.38 and above. V4L1 will be disabled."
+ fi
+}
+
+# Avoid execution of linux-info_pkg_setup()
+pkg_setup() { : ; }
+
+src_prepare() {
+ sed -i -e '/ARCHFLAGS=/s:=.*:=:' configure.ac
+ epatch "${FILESDIR}"/${P}-libpng-1.5.patch \
+ "${FILESDIR}"/${P}-amd-k8.patch \
+ "${FILESDIR}"/${P}-v4l-automagic.patch \
+ "${FILESDIR}"/${P}-dga-gtk-sdl-automagic.patch \
+ "${FILESDIR}"/${P}-X11.patch
+ eautoreconf
+}
+
+src_configure() {
+ [[ $(gcc-major-version) -eq 3 ]] && append-flags -mno-sse2
+
+ econf \
+ --enable-compile-warnings \
+ $(use_enable mmx simd-accel) \
+ $(use_enable static-libs static) \
+ --enable-largefile \
+ $(use_with quicktime libquicktime) \
+ $(use_with dv libdv) \
+ $(use_with png libpng) \
+ $(use_with dga) \
+ $(use_with gtk) \
+ $(use_with sdl libsdl) \
+ $(use_with v4l) \
+ $(use_with X x)
+}
+
+src_install() {
+ default
+
+ dodoc mjpeg_howto.txt PLANS HINTS docs/FAQ.txt
+
+ find "${D}" -name '*.la' -exec rm -rf '{}' '+' || die "la removal failed"
+}