On Sun, Oct 09, 2011 at 06:24:22PM -0400, Brad wrote: > An updated diff killing off the symlink crap.
First of all, I'd really prefer if someone who actually uses this (and/or multimedia/dvdstyler and multimedia/gstreamer-0.10/plugins-bad) could take over. I'm not using this stuff, I'm not doing much video at all, and I still don't have much time. Next, on top of your diff, here's the addition of devel/sdl-gfx to LIB_DEPENDS and some WANTLIB changes: --- Makefile.brad Wed Oct 12 20:30:17 2011 +++ Makefile Wed Oct 12 20:31:04 2011 @@ -26,9 +26,12 @@ WANTLIB+= dv expat fontconfig freetype gdk-x11-2.0 gdk_pixbuf-2.0 WANTLIB+= gtk-x11-2.0 jpeg m pcre pixman-1 png pthread pthread-stubs WANTLIB+= sndio stdc++ usbhid xcb xcb-render xcb-shm z +WANTLIB+= SDL_gfx atk-1.0 ffi gio-2.0 glib-2.0 gmodule-2.0 gobject-2.0 +WANTLIB+= gthread-2.0 pango-1.0 pangocairo-1.0 pangoft2-1.0 MODULES= devel/gettext LIB_DEPENDS= sdl-*-!no_x11:devel/sdl \ + devel/sdl-gfx \ graphics/jpeg \ graphics/png \ multimedia/libdv \ And finally, multimedia/gstreamer-0.10/plugins-bad still needs some love because it doesn't find interact.hpp: configure: *** checking feature: mplex *** configure: *** for plug-ins: mplex *** checking for MPLEX... yes checking interact.hpp usability... no checking interact.hpp presence... no checking for interact.hpp... no configure: *** These plugins will not be built: mplex Ciao, Kili > Index: Makefile > =================================================================== > RCS file: /home/cvs/ports/multimedia/mjpegtools/Makefile,v > retrieving revision 1.29 > diff -u -p -r1.29 Makefile > --- Makefile 16 Sep 2011 10:31:23 -0000 1.29 > +++ Makefile 9 Oct 2011 21:33:29 -0000 > @@ -2,21 +2,16 @@ > > COMMENT= tools to edit/modify/encode video streams > > -DISTNAME= mjpegtools-1.9.0rc3 > -REVISION= 7 > +DISTNAME= mjpegtools-2.0.0 > CATEGORIES= multimedia > -SHARED_LIBS= lavfile 4.0 \ > - lavfile-1.9 4.0 \ > - lavjpeg 4.0 \ > - lavjpeg-1.9 4.0 \ > - lavplay 4.0 \ > - lavplay-1.9 4.0 \ > - mjpegutils 4.0 \ > - mjpegutils-1.9 4.0 \ > - mpeg2encpp 5.0 \ > - mpeg2encpp-1.9 5.0 \ > - mplex2 5.0 \ > - mplex2-1.9 5.0 > +MASTER_SITES= ${MASTER_SITE_SOURCEFORGE:=mjpeg/} > + > +SHARED_LIBS= lavfile 5.0 \ > + lavjpeg 5.0 \ > + lavplay 5.0 \ > + mjpegutils 5.0 \ > + mpeg2encpp 6.0 \ > + mplex2 6.0 \ > > HOMEPAGE= http://mjpeg.sourceforge.net/ > > @@ -26,49 +21,39 @@ PERMIT_PACKAGE_FTP= Yes > PERMIT_DISTFILES_CDROM= Yes > PERMIT_DISTFILES_FTP= Yes > > -MASTER_SITES= ${MASTER_SITE_SOURCEFORGE:=mjpeg/} > - > -WANTLIB= X11 Xau Xcomposite Xcursor Xdamage Xdmcp Xext \ > - Xfixes Xi Xinerama Xrandr Xrender atk-1.0 c cairo \ > - expat fontconfig freetype gio-2.0 glib-2.0 \ > - gmodule-2.0 gobject-2.0 m pango-1.0 pangocairo-1.0 \ > - pangoft2-1.0 pcre pthread pthread-stubs pixman-1 \ > - sndio stdc++ usbhid xcb z gthread-2.0 xcb-render \ > - xcb-render-util SDL dv jpeg png gdk-x11-2.0 \ > - gdk_pixbuf-2.0 gtk-x11-2.0 > +WANTLIB+= GL SDL X11 Xau Xcomposite Xcursor Xdamage Xdmcp Xext > +WANTLIB+= Xfixes Xi Xinerama Xrandr Xrender Xxf86vm c cairo drm > +WANTLIB+= dv expat fontconfig freetype gdk-x11-2.0 gdk_pixbuf-2.0 > +WANTLIB+= gtk-x11-2.0 jpeg m pcre pixman-1 png pthread > pthread-stubs > +WANTLIB+= sndio stdc++ usbhid xcb xcb-render xcb-shm z > > -MODULES+= devel/gettext > +MODULES= devel/gettext > LIB_DEPENDS= sdl-*-!no_x11:devel/sdl \ > - multimedia/libdv \ > graphics/jpeg \ > graphics/png \ > + multimedia/libdv \ > x11/gtk+2 \ > > USE_LIBTOOL= Yes > -USE_GROFF = Yes > -CONFIGURE_STYLE= gnu > +USE_GROFF= Yes > +CONFIGURE_STYLE= autoconf > +AUTOCONF_VERSION= 2.68 > CONFIGURE_ARGS+= ${CONFIGURE_SHARED} \ > --with-x \ > - --with-libpng \ > - --with-libdv > - > -CONFIGURE_ENV= CPPFLAGS="-I${LOCALBASE}/include > -I${LOCALBASE}/include/libpng" \ > - LDFLAGS="-L${LOCALBASE}/lib" \ > - PKG_CONFIG="/usr/bin/pkg-config" > + --without-v4l > +CONFIGURE_ENV= CPPFLAGS="-I${LOCALBASE}/include" \ > + LDFLAGS="-L${LOCALBASE}/lib" > > FLAVORS= quicktime optimized > FLAVOR?= > > -.if ${FLAVOR:L:Moptimized} > -CONFIGURE_ARGS+= --enable-simd-accel > -.else > +.if !${FLAVOR:L:Moptimized} > CONFIGURE_ARGS+= --disable-simd-accel > .endif > > .if ${FLAVOR:L:Mquicktime} > LIB_DEPENDS += multimedia/libquicktime > -WANTLIB += quicktime>=2 GL > -CONFIGURE_ARGS += --with-libquicktime > +WANTLIB+= quicktime>=2 > .else > CONFIGURE_ARGS += --without-libquicktime > .endif > Index: distinfo > =================================================================== > RCS file: /home/cvs/ports/multimedia/mjpegtools/distinfo,v > retrieving revision 1.5 > diff -u -p -r1.5 distinfo > --- distinfo 26 Jan 2008 02:10:26 -0000 1.5 > +++ distinfo 5 Oct 2011 04:20:02 -0000 > @@ -1,5 +1,5 @@ > -MD5 (mjpegtools-1.9.0rc3.tar.gz) = 042tRDM+MjbMwNwe/bJ5EA== > -RMD160 (mjpegtools-1.9.0rc3.tar.gz) = 9HxxzXYoH7bgL9o9CLChQuE85ec= > -SHA1 (mjpegtools-1.9.0rc3.tar.gz) = QXgW5UjZ+7bDNt9kuI8xsC1v87E= > -SHA256 (mjpegtools-1.9.0rc3.tar.gz) = > ix4+hSicudWKe5jQMs8lh+qVf4ZkFqM1kYZnsdrHb/c= > -SIZE (mjpegtools-1.9.0rc3.tar.gz) = 2537088 > +MD5 (mjpegtools-2.0.0.tar.gz) = kD4eO5Z+68xf5WJtdRfcRg== > +RMD160 (mjpegtools-2.0.0.tar.gz) = RU4jvtsr1ZKRKlRtBiG1w2YsO7I= > +SHA1 (mjpegtools-2.0.0.tar.gz) = 9BHoVz1EZxHb6EVaauklfhr+HnA= > +SHA256 (mjpegtools-2.0.0.tar.gz) = > vzVBWT5xYC97RAwufYG0M/U9BRHnRkLzW+qbP+3tepc= > +SIZE (mjpegtools-2.0.0.tar.gz) = 1749671 > Index: patches/patch-configure > =================================================================== > RCS file: patches/patch-configure > diff -N patches/patch-configure > --- patches/patch-configure 26 Jan 2008 02:10:26 -0000 1.5 > +++ /dev/null 1 Jan 1970 00:00:00 -0000 > @@ -1,20 +0,0 @@ > -$OpenBSD: patch-configure,v 1.5 2008/01/26 02:10:26 jakemsr Exp $ > ---- configure.orig Sat Jan 19 22:18:42 2008 > -+++ configure Sat Jan 19 22:20:38 2008 > -@@ -26853,7 +26853,7 @@ echo "${ECHO_T}no" >&6 > - fi > - fi > - > -- > -+if test x"opts" = x"yes"; then > - if test x$have_x86cpu = xtrue -o x$have_ppccpu = xtrue; then > - if test x$host_alias != x; then > - echo "$as_me:$LINENO: checking sub-architecture settings" >&5 > -@@ -26879,6 +26879,7 @@ echo $ECHO_N "checking sub-architecture settings... > $E > - fi > - echo "$as_me:$LINENO: result: $ARCHFLAGS" >&5 > - echo "${ECHO_T}$ARCHFLAGS" >&6 > -+fi > - fi > - > - if test "x$enable_force_static" = "xyes" ; then > Index: patches/patch-configure_ac > =================================================================== > RCS file: patches/patch-configure_ac > diff -N patches/patch-configure_ac > --- /dev/null 1 Jan 1970 00:00:00 -0000 > +++ patches/patch-configure_ac 5 Oct 2011 04:36:09 -0000 > @@ -0,0 +1,39 @@ > +$OpenBSD$ > +--- configure.ac.orig Wed Oct 5 00:34:39 2011 > ++++ configure.ac Wed Oct 5 00:35:53 2011 > +@@ -445,35 +445,6 @@ EOF > + fi > + fi > + > +-dnl ********************************************************************* > +-dnl For x86 and ppc machines check which code model we should use. This is > +-dnl done with the helper script cpuinfo.sh because the logic to do the job > +-dnl correctly is complex and lengthy (about as long as the entire > configure.ac > +-dnl file). > +- > +-if test x$have_x86cpu = xtrue -o x$have_ppccpu = xtrue; then > +- if test x$host_alias != x; then > +- dnl This is to allow cross compiling > +- AC_MSG_CHECKING(sub-architecture settings) > +- if test x$have_x86cpu = xtrue; then > +- host_mod_cpu=`echo $host_cpu | tr _ -` > +- ARCHFLAGS="-march=$host_mod_cpu -mcpu=$host_mod_cpu" > +- fi > +- else > +- if test ! -r $srcdir/cpuinfo.sh; then > +- AC_MSG_ERROR([cpuinfo.sh script not found - do a cvs update]) > +- fi > +- AC_MSG_CHECKING(sub-architecture settings) > +- chmod +x $srcdir/cpuinfo.sh > +- if test x$have_x86cpu = xtrue; then > +- ARCHFLAGS=`$srcdir/cpuinfo.sh x86` > +- elif test x$have_ppccpu = xtrue; then > +- ARCHFLAGS=`$srcdir/cpuinfo.sh ppc` > +- fi > +- fi > +- AC_MSG_RESULT($ARCHFLAGS) > +-fi > +- > + dnl ********************************************************************** > + dnl Handle forcing static linkage in key places > + if test "x$enable_static_build" = "xyes" ; then > Index: patches/patch-lavtools_Makefile_in > =================================================================== > RCS file: patches/patch-lavtools_Makefile_in > diff -N patches/patch-lavtools_Makefile_in > --- /dev/null 1 Jan 1970 00:00:00 -0000 > +++ patches/patch-lavtools_Makefile_in 9 Oct 2011 21:33:21 -0000 > @@ -0,0 +1,12 @@ > +$OpenBSD$ > +--- lavtools/Makefile.in.orig Sun Oct 9 17:31:35 2011 > ++++ lavtools/Makefile.in Sun Oct 9 17:31:52 2011 > +@@ -445,7 +445,7 @@ liblavinclude_HEADERS = \ > + LAV_ALL_LIB_OPTS = \ > + $(LT_STATIC) \ > + -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) \ > +- -release $(LT_RELEASE) $(EXTRA_LDFLAGS) > ++ $(EXTRA_LDFLAGS) > + > + liblavfile_la_SOURCES = editlist.c lav_io.c avilib.c > + liblavfile_la_CPPFLAGS = $(AM_CPPFLAGS) $(LIBDV_CFLAGS) $(JPEG_CFLAGS) > Index: patches/patch-lavtools_png2yuv_c > =================================================================== > RCS file: patches/patch-lavtools_png2yuv_c > diff -N patches/patch-lavtools_png2yuv_c > --- patches/patch-lavtools_png2yuv_c 8 Jul 2011 20:36:09 -0000 1.1 > +++ /dev/null 1 Jan 1970 00:00:00 -0000 > @@ -1,525 +0,0 @@ > -$OpenBSD: patch-lavtools_png2yuv_c,v 1.1 2011/07/08 20:36:09 naddy Exp $ > - > -Fix build with png-1.5. > - > ---- lavtools/png2yuv.c.orig Thu Nov 8 10:31:50 2007 > -+++ lavtools/png2yuv.c Mon Jul 4 17:49:05 2011 > -@@ -49,12 +49,9 @@ png2yuv > - > - #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 +67,10 @@ typedef struct _parameters > - 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 +145,6 @@ static void parse_commandline(int argc, char ** argv, > - 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,94 +231,44 @@ static void parse_commandline(int argc, char ** argv, > - } > - } > - > --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; > -- } > -+ /* 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); > - > -- //fread(hdptr, 1, 8, pngfile); > -- > --#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 +277,101 @@ int decode_png(const char *pngname, int process, param > - 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, ¶m->width, ¶m->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, ¶m->width, ¶m->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); > -+ /* 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); > - } > -- 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; > -- } > - > -+ /* Successful exit: */ > -+ png_destroy_read_struct(&png_ptr, &info_ptr, 0); > - fclose(pngfile); > -- > - return 1; > - } > - > -@@ -419,13 +382,17 @@ int decode_png(const char *pngname, int process, param > - */ > - 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 +422,7 @@ static int init_parse_files(parameters_t *param) > - > - 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 +434,29 @@ static int init_parse_files(parameters_t *param) > - 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 +464,13 @@ static int generate_YUV4MPEG(parameters_t *param) > - (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 +485,18 @@ static int generate_YUV4MPEG(parameters_t *param) > - } > - 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 +515,6 @@ static int generate_YUV4MPEG(parameters_t *param) > - int main(int argc, char ** argv) > - { > - parameters_t param; > -- sh_param = ¶m; > - > - y4m_accept_extensions(1); > - > -@@ -632,13 +532,3 @@ int main(int argc, char ** argv) > - > - return 0; > - } > -- > -- > -- > -- > -- > -- > -- > -- > -- > -- > Index: patches/patch-mpeg2enc_Makefile_in > =================================================================== > RCS file: patches/patch-mpeg2enc_Makefile_in > diff -N patches/patch-mpeg2enc_Makefile_in > --- /dev/null 1 Jan 1970 00:00:00 -0000 > +++ patches/patch-mpeg2enc_Makefile_in 9 Oct 2011 21:33:09 -0000 > @@ -0,0 +1,12 @@ > +$OpenBSD$ > +--- mpeg2enc/Makefile.in.orig Sun Oct 9 17:32:51 2011 > ++++ mpeg2enc/Makefile.in Sun Oct 9 17:33:02 2011 > +@@ -356,7 +356,7 @@ libmpeg2encpp_include_HEADERS = elemstrmwriter.hh enco > + libmpeg2encpp_la_LDFLAGS = \ > + ${LT_STATIC} \ > + -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) \ > +- -release $(LT_RELEASE) ${EXTRA_LDFLAGS} > ++ ${EXTRA_LDFLAGS} > + > + libmpeg2encpp_la_DEPENDENCIES = $(LIBMJPEGUTILS) > + libmpeg2encpp_la_LIBADD = $(LIBMJPEGUTILS) @PTHREAD_LIBS@ > Index: patches/patch-mplex_Makefile_in > =================================================================== > RCS file: patches/patch-mplex_Makefile_in > diff -N patches/patch-mplex_Makefile_in > --- /dev/null 1 Jan 1970 00:00:00 -0000 > +++ patches/patch-mplex_Makefile_in 9 Oct 2011 21:33:09 -0000 > @@ -0,0 +1,12 @@ > +$OpenBSD$ > +--- mplex/Makefile.in.orig Sun Oct 9 17:32:35 2011 > ++++ mplex/Makefile.in Sun Oct 9 17:32:46 2011 > +@@ -335,7 +335,7 @@ libmplex_include_HEADERS = \ > + libmplex2_la_LDFLAGS = \ > + $(LT_STATIC) \ > + -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) \ > +- -release $(LT_RELEASE) $(EXTRA_LDFLAGS) > ++ $(EXTRA_LDFLAGS) > + > + libmplex2_la_LIBADD = $(top_builddir)/utils/libmjpegutils.la \ > + $(am__append_1) > Index: patches/patch-utils_Makefile_in > =================================================================== > RCS file: patches/patch-utils_Makefile_in > diff -N patches/patch-utils_Makefile_in > --- /dev/null 1 Jan 1970 00:00:00 -0000 > +++ patches/patch-utils_Makefile_in 9 Oct 2011 21:33:09 -0000 > @@ -0,0 +1,12 @@ > +$OpenBSD$ > +--- utils/Makefile.in.orig Sun Oct 9 17:31:58 2011 > ++++ utils/Makefile.in Sun Oct 9 17:32:28 2011 > +@@ -304,7 +304,7 @@ libmjpegutils_la_LIBADD = $(mmxsse_lib) $(altivec_lib) > + libmjpegutils_la_LDFLAGS = \ > + $(LT_STATIC) \ > + -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) \ > +- -release $(LT_RELEASE) $(EXTRA_LDFLAGS) > ++ $(EXTRA_LDFLAGS) > + > + libmjpegutils_la_SOURCES = \ > + mjpeg_logging.c \ > Index: pkg/DESCR > =================================================================== > RCS file: /home/cvs/ports/multimedia/mjpegtools/pkg/DESCR,v > retrieving revision 1.3 > diff -u -p -r1.3 DESCR > --- pkg/DESCR 4 Mar 2009 20:21:57 -0000 1.3 > +++ pkg/DESCR 5 Oct 2011 04:41:54 -0000 > @@ -1,11 +1,11 @@ > The MJPEG-tools are a basic set of utilities for editing, playing back, > filtering and encoding video under UNIX-like operating systems. > > -There are two FLAVORS for this port: > +Flavors: > > - quicktime - builds the package with support for reading and writing > - quicktime ".mov" files > + quicktime - Builds the package with support for reading and writing > + QuickTime ".MOV" files. > > - optimized - builds the package with SSE instructions. Packages built > + optimized - Builds the package with SSE instructions. Packages built > with this FLAVOR might not run on systems that are not SSE > capable. > Index: pkg/PFRAG.shared > =================================================================== > RCS file: /home/cvs/ports/multimedia/mjpegtools/pkg/PFRAG.shared,v > retrieving revision 1.5 > diff -u -p -r1.5 PFRAG.shared > --- pkg/PFRAG.shared 26 Jan 2008 02:10:26 -0000 1.5 > +++ pkg/PFRAG.shared 9 Oct 2011 21:33:43 -0000 > @@ -1,13 +1,7 @@ > @comment $OpenBSD: PFRAG.shared,v 1.5 2008/01/26 02:10:26 jakemsr Exp $ > -@lib lib/liblavfile-1.9.so.${LIBlavfile-1.9_VERSION} > @lib lib/liblavfile.so.${LIBlavfile_VERSION} > -@lib lib/liblavjpeg-1.9.so.${LIBlavjpeg-1.9_VERSION} > @lib lib/liblavjpeg.so.${LIBlavjpeg_VERSION} > -@lib lib/liblavplay-1.9.so.${LIBlavplay-1.9_VERSION} > @lib lib/liblavplay.so.${LIBlavplay_VERSION} > -@lib lib/libmjpegutils-1.9.so.${LIBmjpegutils-1.9_VERSION} > @lib lib/libmjpegutils.so.${LIBmjpegutils_VERSION} > -@lib lib/libmpeg2encpp-1.9.so.${LIBmpeg2encpp-1.9_VERSION} > @lib lib/libmpeg2encpp.so.${LIBmpeg2encpp_VERSION} > -@lib lib/libmplex2-1.9.so.${LIBmplex2-1.9_VERSION} > @lib lib/libmplex2.so.${LIBmplex2_VERSION} > Index: pkg/PLIST > =================================================================== > RCS file: /home/cvs/ports/multimedia/mjpegtools/pkg/PLIST,v > retrieving revision 1.7 > diff -u -p -r1.7 PLIST > --- pkg/PLIST 30 Jan 2009 00:41:24 -0000 1.7 > +++ pkg/PLIST 9 Oct 2011 21:34:08 -0000 > @@ -1,5 +1,6 @@ > @comment $OpenBSD: PLIST,v 1.7 2009/01/30 00:41:24 sthen Exp $ > @conflict mplex-* > +%%SHARED%% > %%quicktime%% > bin/anytovcd.sh > @bin bin/glav > @@ -78,9 +79,8 @@ include/mjpegtools/mpeg2enc/mpeg2encoder > include/mjpegtools/mpeg2enc/mpeg2encoptions.hh > include/mjpegtools/mpeg2enc/mpeg2encparams.h > include/mjpegtools/mpeg2enc/mpeg2syntaxcodes.h > -include/mjpegtools/mpeg2enc/ontheflyratectl.hh > -include/mjpegtools/mpeg2enc/pass1ratectl.hh > -include/mjpegtools/mpeg2enc/pass2ratectl.hh > +include/mjpegtools/mpeg2enc/ontheflyratectlpass1.hh > +include/mjpegtools/mpeg2enc/ontheflyratectlpass2.hh > include/mjpegtools/mpeg2enc/picture.hh > include/mjpegtools/mpeg2enc/picturereader.hh > include/mjpegtools/mpeg2enc/predict_ref.h > @@ -156,4 +156,3 @@ lib/pkgconfig/mjpegtools.pc > @man man/man1/yuvscaler.1 > @man man/man1/yuvycsnoise.1 > @man man/man5/yuv4mpeg.5 > -%%SHARED%% > > -- > This message has been scanned for viruses and > dangerous content by MailScanner, and is > believed to be clean. -- f u cn rd ths, u mst hv bn sng nx