From 9e0a62d0feb6b6f45806bc4604ebc796b5952d0d Mon Sep 17 00:00:00 2001 From: jolan Date: Sun, 16 Aug 2009 20:04:39 +0000 Subject: [PATCH] ffmpeg-php-0.6.0, PHP support for ffmpeg --- multimedia/ffmpeg-php/Makefile | 50 +++++ multimedia/ffmpeg-php/distinfo | 5 + multimedia/ffmpeg-php/patches/patch-config_m4 | 11 + .../ffmpeg-php/patches/patch-ffmpeg-php_c | 55 +++++ .../patches/patch-ffmpeg_errorhandler_c | 20 ++ .../patches/patch-ffmpeg_errorhandler_h | 42 ++++ .../ffmpeg-php/patches/patch-ffmpeg_frame_c | 206 ++++++++++++++++++ .../ffmpeg-php/patches/patch-ffmpeg_frame_h | 39 ++++ .../ffmpeg-php/patches/patch-ffmpeg_movie_c | 37 ++++ .../ffmpeg-php/patches/patch-ffmpeg_movie_h | 12 + .../ffmpeg-php/patches/patch-php_ffmpeg_h | 24 ++ multimedia/ffmpeg-php/pkg/DESCR | 12 + multimedia/ffmpeg-php/pkg/MESSAGE | 10 + multimedia/ffmpeg-php/pkg/PLIST | 9 + multimedia/ffmpeg-php/pkg/UNMESSAGE | 9 + 15 files changed, 541 insertions(+) create mode 100644 multimedia/ffmpeg-php/Makefile create mode 100644 multimedia/ffmpeg-php/distinfo create mode 100644 multimedia/ffmpeg-php/patches/patch-config_m4 create mode 100644 multimedia/ffmpeg-php/patches/patch-ffmpeg-php_c create mode 100644 multimedia/ffmpeg-php/patches/patch-ffmpeg_errorhandler_c create mode 100644 multimedia/ffmpeg-php/patches/patch-ffmpeg_errorhandler_h create mode 100644 multimedia/ffmpeg-php/patches/patch-ffmpeg_frame_c create mode 100644 multimedia/ffmpeg-php/patches/patch-ffmpeg_frame_h create mode 100644 multimedia/ffmpeg-php/patches/patch-ffmpeg_movie_c create mode 100644 multimedia/ffmpeg-php/patches/patch-ffmpeg_movie_h create mode 100644 multimedia/ffmpeg-php/patches/patch-php_ffmpeg_h create mode 100644 multimedia/ffmpeg-php/pkg/DESCR create mode 100644 multimedia/ffmpeg-php/pkg/MESSAGE create mode 100644 multimedia/ffmpeg-php/pkg/PLIST create mode 100644 multimedia/ffmpeg-php/pkg/UNMESSAGE diff --git a/multimedia/ffmpeg-php/Makefile b/multimedia/ffmpeg-php/Makefile new file mode 100644 index 00000000000..1cca09a5173 --- /dev/null +++ b/multimedia/ffmpeg-php/Makefile @@ -0,0 +1,50 @@ +# $OpenBSD: Makefile,v 1.1.1.1 2009/08/16 20:04:39 jolan Exp $ + +SHARED_ONLY= Yes + +COMMENT= PHP support for ffmpeg +DISTNAME= ffmpeg-php-0.6.0 +EXTRACT_SUFX= .tbz2 +CATEGORIES= multimedia www +MASTER_SITES= ${MASTER_SITE_SOURCEFORGE:=ffmpeg-php/} + +HOMEPAGE= http://ffmpeg-php.sourceforge.net/ + +MAINTAINER= Jolan Luff + +# GPL +PERMIT_DISTFILES_CDROM= Yes +PERMIT_DISTFILES_FTP= Yes +PERMIT_PACKAGE_CDROM= Yes +PERMIT_PACKAGE_FTP= Yes + +AUTOCONF_VERSION=2.62 +AUTOMAKE_VERSION=1.9 +FAKE_FLAGS= INSTALL_ROOT=${WRKINST} +PREFIX= /var/www +NO_REGRESS= Yes +USE_LIBTOOL= Yes +LIBTOOL_FLAGS= --tag=disable-static + +BUILD_DEPENDS= :pear-*:www/pear \ + ${MODGNU_AUTOCONF_DEPENDS} \ + ${MODGNU_AUTOMAKE_DEPENDS} +LIB_DEPENDS= avcodec,avformat,swscale::graphics/ffmpeg \ + gd::graphics/gd +RUN_DEPENDS= :php5-core-*:www/php5/core \ + :php5-mbstring-*:www/php5/extensions,-gd +WANTLIB= expat fontconfig freetype iconv jpeg m png z + +CONFIGURE_ARGS+=--enable-skip-gd-check +# force link to gd so $frame->toGDImage() works properly +CONFIGURE_ENV+= LDFLAGS="-L${LOCALBASE}/lib -L${X11BASE}/lib -lgd -lfreetype" \ + CPPFLAGS="-I${LOCALBASE}/include -I${LOCALBASE}/include/libavcodec -I${LOCALBASE}/include/libavformat" \ + FFMPEG_LIBDIR="-L${LOCALBASE}/lib" \ + AUTOMAKE_VERSION=${AUTOMAKE_VERSION} \ + AUTOCONF_VERSION=${AUTOCONF_VERSION} +CONFIGURE_STYLE=gnu + +pre-configure: + @cd ${WRKSRC} && ${SETENV} ${CONFIGURE_ENV} ${LOCALBASE}/bin/phpize + +.include diff --git a/multimedia/ffmpeg-php/distinfo b/multimedia/ffmpeg-php/distinfo new file mode 100644 index 00000000000..1f8e0b18d59 --- /dev/null +++ b/multimedia/ffmpeg-php/distinfo @@ -0,0 +1,5 @@ +MD5 (ffmpeg-php-0.6.0.tbz2) = 93nA2//anaxUcp1gwOBMBQ== +RMD160 (ffmpeg-php-0.6.0.tbz2) = p3mwbwn84/88gya7ENtKuKrfQl4= +SHA1 (ffmpeg-php-0.6.0.tbz2) = KXi1r1GvPtoGOYQGNCl+tYSzlME= +SHA256 (ffmpeg-php-0.6.0.tbz2) = 7IqYR+D01RAaWv7bfawxjpoT8JmGUhWumdCNVq3ZsUE= +SIZE (ffmpeg-php-0.6.0.tbz2) = 275557 diff --git a/multimedia/ffmpeg-php/patches/patch-config_m4 b/multimedia/ffmpeg-php/patches/patch-config_m4 new file mode 100644 index 00000000000..a318b495a75 --- /dev/null +++ b/multimedia/ffmpeg-php/patches/patch-config_m4 @@ -0,0 +1,11 @@ +$OpenBSD: patch-config_m4,v 1.1.1.1 2009/08/16 20:04:39 jolan Exp $ +--- config.m4.orig Mon Oct 13 21:47:18 2008 ++++ config.m4 Fri Nov 21 14:54:32 2008 +@@ -33,6 +33,7 @@ if test "$PHP_FFMPEG" != "no"; then + elif test -f $i/include/libavcodec/avcodec.h; then + dnl ffmpeg svn revision 12194 and newer put each header in its own dir + dnl so we have to include them all. ++ PHP_ADD_INCLUDE($i/include/) + PHP_ADD_INCLUDE($i/include/libavcodec/) + PHP_ADD_INCLUDE($i/include/libavformat/) + PHP_ADD_INCLUDE($i/include/libavutil/) diff --git a/multimedia/ffmpeg-php/patches/patch-ffmpeg-php_c b/multimedia/ffmpeg-php/patches/patch-ffmpeg-php_c new file mode 100644 index 00000000000..a1d0f074f3c --- /dev/null +++ b/multimedia/ffmpeg-php/patches/patch-ffmpeg-php_c @@ -0,0 +1,55 @@ +$OpenBSD: patch-ffmpeg-php_c,v 1.1.1.1 2009/08/16 20:04:39 jolan Exp $ +--- ffmpeg-php.c.orig Mon Oct 13 14:00:08 2008 ++++ ffmpeg-php.c Sun Aug 16 05:33:41 2009 +@@ -51,8 +51,9 @@ + #include "ext/standard/info.h" + + #include "php_ffmpeg.h" ++#include "ffmpeg_errorhandler.h" + +-#define FFMPEG_PHP_VERSION "0.6.0-svn" ++#define FFMPEG_PHP_VERSION "0.6.0+patches" + + zend_module_entry ffmpeg_module_entry = { + #if ZEND_MODULE_API_NO >= 20010901 +@@ -78,7 +79,6 @@ ZEND_GET_MODULE(ffmpeg); + + extern void register_ffmpeg_movie_class(int); + extern void register_ffmpeg_frame_class(int); +-extern void ffmpeg_errorhandler(void *ptr, int level, const char *msg, va_list args); + + PHP_INI_BEGIN() + PHP_INI_ENTRY("ffmpeg.allow_persistent", "0", PHP_INI_ALL, NULL) +@@ -100,7 +100,9 @@ PHP_MINIT_FUNCTION(ffmpeg) + + if (INI_BOOL("ffmpeg.show_warnings")) { + av_log_set_callback(ffmpeg_errorhandler); +- } ++ } else { ++ av_log_set_callback(ffmpeg_hide_errors); ++ } + + register_ffmpeg_movie_class(module_number); + register_ffmpeg_frame_class(module_number); +@@ -119,6 +121,12 @@ PHP_MINIT_FUNCTION(ffmpeg) + avcodec_build(), CONST_CS | CONST_PERSISTENT); + #endif + ++#if HAVE_LIBGD20 ++ REGISTER_LONG_CONSTANT("FFMPEG_PHP_GD_ENABLED", 1, CONST_CS | CONST_PERSISTENT); ++#else ++ REGISTER_LONG_CONSTANT("FFMPEG_PHP_GD_ENABLED", 0, CONST_CS | CONST_PERSISTENT); ++#endif // HAVE_LIBGD20 ++ + return SUCCESS; + } + /* }}} */ +@@ -138,7 +146,7 @@ PHP_MSHUTDOWN_FUNCTION(ffmpeg) + + + /* {{{ php info function +- Add an entry for ffmpeg support in phpinfo() */ ++ Add an entry for ffmpeg-php support in phpinfo() */ + PHP_MINFO_FUNCTION(ffmpeg) + { + php_info_print_table_start(); diff --git a/multimedia/ffmpeg-php/patches/patch-ffmpeg_errorhandler_c b/multimedia/ffmpeg-php/patches/patch-ffmpeg_errorhandler_c new file mode 100644 index 00000000000..88197089999 --- /dev/null +++ b/multimedia/ffmpeg-php/patches/patch-ffmpeg_errorhandler_c @@ -0,0 +1,20 @@ +$OpenBSD: patch-ffmpeg_errorhandler_c,v 1.1.1.1 2009/08/16 20:04:39 jolan Exp $ +--- ffmpeg_errorhandler.c.orig Wed Oct 8 12:22:39 2008 ++++ ffmpeg_errorhandler.c Fri Nov 21 14:54:38 2008 +@@ -59,6 +59,16 @@ void ffmpeg_errorhandler(void *ptr, int level, const c + } + /* }}} */ + ++ ++/* {{{ ffmpeg_hide_errors() ++ */ ++void ffmpeg_hide_errors(void *ptr, int level, const char *msg, va_list args) ++{ ++ // NO OP ++} ++/* }}} */ ++ ++ + /* + * Local variables: + * tab-width: 4 diff --git a/multimedia/ffmpeg-php/patches/patch-ffmpeg_errorhandler_h b/multimedia/ffmpeg-php/patches/patch-ffmpeg_errorhandler_h new file mode 100644 index 00000000000..f4193568c61 --- /dev/null +++ b/multimedia/ffmpeg-php/patches/patch-ffmpeg_errorhandler_h @@ -0,0 +1,42 @@ +$OpenBSD: patch-ffmpeg_errorhandler_h,v 1.1.1.1 2009/08/16 20:04:39 jolan Exp $ +--- ffmpeg_errorhandler.h.orig Fri Nov 21 14:57:21 2008 ++++ ffmpeg_errorhandler.h Fri Nov 21 14:57:40 2008 +@@ -0,0 +1,38 @@ ++/* ++ This file is part of ffmpeg-php ++ ++ Copyright (C) 2004-2008 Alexey Zakhlestin ++ ++ This program is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 2 of the License, or ++ (at your option) any later version. ++ ++ This program is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with this program; if not, write to the Free Software ++ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ++ ++ In addition, as a special exception, the copyright holders of ffmpeg-php ++ give you permission to combine ffmpeg-php with code included in the ++ standard release of PHP under the PHP license (or modified versions of ++ such code, with unchanged license). You may copy and distribute such a ++ system following the terms of the GNU GPL for ffmpeg-php and the licenses ++ of the other code concerned, provided that you include the source code of ++ that other code when and as the GNU GPL requires distribution of source code. ++ ++ You must obey the GNU General Public License in all respects for all of the ++ code used other than standard release of PHP. If you modify this file, you ++ may extend this exception to your version of the file, but you are not ++ obligated to do so. If you do not wish to do so, delete this exception ++ statement from your version. ++ ++ */ ++ ++ ++void ffmpeg_errorhandler(void *ptr, int level, const char *msg, va_list args); ++void ffmpeg_hide_errors(void *ptr, int level, const char *msg, va_list args); diff --git a/multimedia/ffmpeg-php/patches/patch-ffmpeg_frame_c b/multimedia/ffmpeg-php/patches/patch-ffmpeg_frame_c new file mode 100644 index 00000000000..aeca67cec45 --- /dev/null +++ b/multimedia/ffmpeg-php/patches/patch-ffmpeg_frame_c @@ -0,0 +1,206 @@ +$OpenBSD: patch-ffmpeg_frame_c,v 1.1.1.1 2009/08/16 20:04:39 jolan Exp $ +--- ffmpeg_frame.c.orig Mon Oct 13 18:02:01 2008 ++++ ffmpeg_frame.c Fri Nov 21 15:05:16 2008 +@@ -47,11 +47,6 @@ + #include "ffmpeg_frame.h" + #include "ffmpeg_tools.h" + +-/* +- include gd header from local include dir. This is a copy of gd.h that is +- distributed with php-5.2.5. It is distributed along with ffmpeg-php to +- allow ffmpeg-php to be built without access to the php sources +- */ + #if HAVE_LIBGD20 + #include "gd.h" + +@@ -60,14 +55,23 @@ + ZEND_FETCH_RESOURCE(gd_img, gdImagePtr, ret, -1, "Image", le_gd); \ + } + +-// Borrowed from gd.c +-#define gdImageBoundsSafeMacro(im, x, y) (!((((y) < (im)->cy1) || ((y) > (im)->cy2)) || (((x) < (im)->cx1) || ((x) > (im)->cx2)))) +- + static int le_gd; // this is only valid after calling +- // FFMPEG_PHP_FETCH_IMAGE_RESOURCE() ++ // FFMPEG_PHP_FETCH_IMAGE_RESOURCE() macro + + #endif // HAVE_LIBGD20 + ++#define GET_FRAME_RESOURCE(ffmpeg_frame_object, ffmpeg_frame) {\ ++ zval **_tmp_zval;\ ++ if (zend_hash_find(Z_OBJPROP_P(ffmpeg_frame_object), "ffmpeg_frame",\ ++ sizeof("ffmpeg_frame"), (void **)&_tmp_zval) == FAILURE) {\ ++ zend_error(E_ERROR, "Unable to locate ffmpeg_frame resource in this object.");\ ++ RETURN_FALSE;\ ++ }\ ++\ ++ ZEND_FETCH_RESOURCE(ffmpeg_frame, ff_frame_context*, _tmp_zval, -1,\ ++ "ffmpeg_frame", le_ffmpeg_frame);\ ++}\ ++ + int le_ffmpeg_frame; // not static since it is used in ffmpeg_output_movie + + static zend_class_entry *ffmpeg_frame_class_entry_ptr; +@@ -83,16 +87,16 @@ zend_function_entry ffmpeg_frame_class_methods[] = { + + #if HAVE_LIBGD20 + /* gd methods */ +- PHP_MALIAS(ffmpeg_frame, togdimage, toGDImage, NULL, 0) ++ FFMPEG_PHP_MALIAS(ffmpeg_frame, togdimage, toGDImage, NULL, 0) + #endif // HAVE_LIBGD20 + + /* methods */ +- PHP_MALIAS(ffmpeg_frame, getwidth, getWidth, NULL, 0) +- PHP_MALIAS(ffmpeg_frame, getheight, getHeight, NULL, 0) +- PHP_MALIAS(ffmpeg_frame, iskeyframe, isKeyFrame, NULL, 0) +- PHP_MALIAS(ffmpeg_frame, getpresentationtimestamp, getPresentationTimestamp, NULL, 0) +- PHP_MALIAS(ffmpeg_frame, getpts, getPresentationTimestamp, NULL, 0) +- {NULL, NULL, NULL} ++ FFMPEG_PHP_MALIAS(ffmpeg_frame, getwidth, getWidth, NULL, 0) ++ FFMPEG_PHP_MALIAS(ffmpeg_frame, getheight, getHeight, NULL, 0) ++ FFMPEG_PHP_MALIAS(ffmpeg_frame, iskeyframe, isKeyFrame, NULL, 0) ++ FFMPEG_PHP_MALIAS(ffmpeg_frame, getpresentationtimestamp, getPresentationTimestamp, NULL, 0) ++ FFMPEG_PHP_MALIAS(ffmpeg_frame, getpts, getPresentationTimestamp, NULL, 0) ++ FFMPEG_PHP_END_METHODS + }; + /* }}} */ + +@@ -286,13 +290,7 @@ static int _php_avframe_to_gd_image(AVFrame *frame, gd + + for (y = 0; y < height; y++) { + for (x = 0; x < width; x++) { +- +- if (gdImageBoundsSafeMacro(dest, x, y)) { +- /* copy pixel to gdimage buffer zeroing the alpha channel */ +- dest->tpixels[y][x] = src[x] & 0x00ffffff; +- } else { +- return -1; +- } ++ gdImageSetPixel(dest, x, y, src[x]); + } + src += width; + } +@@ -301,29 +299,6 @@ static int _php_avframe_to_gd_image(AVFrame *frame, gd + /* }}} */ + + +-/* {{{ _php_gd_image_to_avframe() +- */ +-static int _php_gd_image_to_avframe(gdImage *src, AVFrame *frame, int width, +- int height) +-{ +- int x, y; +- int *dest = (int*)frame->data[0]; +- +- for (y = 0; y < height; y++) { +- for (x = 0; x < width; x++) { +- if (gdImageBoundsSafeMacro(src, x, y)) { +- dest[x] = src->tpixels[y][x]; +- } else { +- return -1; +- } +- } +- dest += width; +- } +- return 0; +-} +-/* }}} */ +- +- + /* {{{ proto resource toGDImage() + */ + FFMPEG_PHP_METHOD(ffmpeg_frame, toGDImage) +@@ -349,93 +324,6 @@ FFMPEG_PHP_METHOD(ffmpeg_frame, toGDImage) + } + /* }}} */ + +- +-/* {{{ proto object _php_read_frame_from_file(mixed) +- */ +-/*_php_read_frame_from_file(ff_frame_context *ff_frame, char* filename) +-{ +- AVFrame *frame = NULL; +- AVFormatContext *ic; +- AVFormatParameters *ap; +- int err; +- +- // open the input file with generic libav function +- err = av_open_input_file(&ic, filename, NULL, 0, ap); +- if (err < 0) { +- zend_error(E_ERROR, "Can't open image file %d, %d", err, +- AVERROR_NOFMT); +- } +- +- +-}*/ +-/* }}} */ +- +- +-/* {{{ proto object ffmpeg_frame(mixed) +- */ +-FFMPEG_PHP_METHOD(ffmpeg_frame, ffmpeg_frame) +-{ +- zval **argv[1]; +- AVFrame *frame; +- gdImage *gd_img; +- ff_frame_context *ff_frame; +- int width, height, ret; +- +- if (ZEND_NUM_ARGS() != 1) { +- WRONG_PARAM_COUNT; +- } +- +- /* retrieve argument */ +- if (zend_get_parameters_array_ex(ZEND_NUM_ARGS(), argv) != SUCCESS) { +- php_error_docref(NULL TSRMLS_CC, E_ERROR, +- "Error parsing arguments"); +- } +- +- ff_frame = _php_alloc_ff_frame(); +- +- ret = ZEND_REGISTER_RESOURCE(NULL, ff_frame, le_ffmpeg_frame); +- +- object_init_ex(getThis(), ffmpeg_frame_class_entry_ptr); +- add_property_resource(getThis(), "ffmpeg_frame", ret); +- +- switch (Z_TYPE_PP(argv[0])) { +- case IS_STRING: +- convert_to_string_ex(argv[0]); +- zend_error(E_ERROR, +- "Creating an ffmpeg_frame from a file is not implemented\n"); +- //_php_read_frame_from_file(ff_frame, Z_STRVAL_PP(argv[0])); +- break; +- case IS_RESOURCE: +- FFMPEG_PHP_FETCH_IMAGE_RESOURCE(gd_img, argv[0]); +- +- if (!gd_img->trueColor) { +- php_error_docref(NULL TSRMLS_CC, E_ERROR, +- "First parameter must be a truecolor gd image."); +- } +- +- width = gdImageSX(gd_img); +- height = gdImageSY(gd_img); +- +- /* create a an av_frame and allocate space for it */ +- frame = avcodec_alloc_frame(); +- avpicture_alloc((AVPicture*)frame, PIX_FMT_RGBA32, width, height); +- +- /* copy the gd image to the av_frame */ +- _php_gd_image_to_avframe(gd_img, frame, width, height); +- +- /* set the ffmepg_frame to point to this av_frame */ +- ff_frame->av_frame = frame; +- +- /* set the ffpmeg_frame's properties */ +- ff_frame->width = width; +- ff_frame->height = height; +- ff_frame->pixel_format = PIX_FMT_RGBA32; +- break; +- default: +- zend_error(E_ERROR, "Invalid argument\n"); +- } +-} +-/* }}} */ + + #endif /* HAVE_LIBGD20 */ + diff --git a/multimedia/ffmpeg-php/patches/patch-ffmpeg_frame_h b/multimedia/ffmpeg-php/patches/patch-ffmpeg_frame_h new file mode 100644 index 00000000000..e0e84527deb --- /dev/null +++ b/multimedia/ffmpeg-php/patches/patch-ffmpeg_frame_h @@ -0,0 +1,39 @@ +$OpenBSD: patch-ffmpeg_frame_h,v 1.1.1.1 2009/08/16 20:04:39 jolan Exp $ +--- ffmpeg_frame.h.orig Mon Oct 13 18:02:40 2008 ++++ ffmpeg_frame.h Fri Nov 21 14:54:36 2008 +@@ -38,6 +38,8 @@ + + #include "php_version.h" + ++#include "php_ffmpeg.h" ++ + #include + #include + +@@ -45,7 +47,7 @@ + #include "config.h" + #endif + +-/* object can't be created from user space so no PHP constructor */ ++/* ffmpeg_frame can't be instantiated from user space so no PHP constructor */ + //FFMPEG_PHP_METHOD(ffmpeg_frame, __construct); + + /* frame methods */ +@@ -71,17 +73,6 @@ ff_frame_context* _php_create_ffmpeg_frame(INTERNAL_FU + + int _php_convert_frame(ff_frame_context *ff_frame, int new_fmt); + +-#define GET_FRAME_RESOURCE(ffmpeg_frame_object, ffmpeg_frame) {\ +- zval **_tmp_zval;\ +- if (zend_hash_find(Z_OBJPROP_P(ffmpeg_frame_object), "ffmpeg_frame",\ +- sizeof("ffmpeg_frame"), (void **)&_tmp_zval) == FAILURE) {\ +- zend_error(E_ERROR, "Unable to locate ffmpeg_frame resource in this object.");\ +- RETURN_FALSE;\ +- }\ +-\ +- ZEND_FETCH_RESOURCE(ffmpeg_frame, ff_frame_context*, _tmp_zval, -1,\ +- "ffmpeg_frame", le_ffmpeg_frame);\ +-}\ + + #endif // FFMPEG_FRAME_H + diff --git a/multimedia/ffmpeg-php/patches/patch-ffmpeg_movie_c b/multimedia/ffmpeg-php/patches/patch-ffmpeg_movie_c new file mode 100644 index 00000000000..b1c1c8cd219 --- /dev/null +++ b/multimedia/ffmpeg-php/patches/patch-ffmpeg_movie_c @@ -0,0 +1,37 @@ +$OpenBSD: patch-ffmpeg_movie_c,v 1.1.1.1 2009/08/16 20:04:39 jolan Exp $ +--- ffmpeg_movie.c.orig Mon Oct 13 17:46:53 2008 ++++ ffmpeg_movie.c Fri Nov 21 14:54:38 2008 +@@ -122,7 +122,7 @@ zend_function_entry ffmpeg_movie_class_methods[] = { + FFMPEG_PHP_MALIAS(ffmpeg_movie, getaudiobitrate, getAudioBitRate, NULL, 0) + FFMPEG_PHP_MALIAS(ffmpeg_movie, getvideobitrate, getVideoBitRate, NULL, 0) + FFMPEG_PHP_MALIAS(ffmpeg_movie, getpixelaspectratio, getPixelAspectRatio, NULL, 0) +- {NULL, NULL, NULL, 0, 0} ++ FFMPEG_PHP_END_METHODS + }; + /* }}} */ + +@@ -501,7 +501,7 @@ static AVCodecContext* _php_get_decoder_context(ff_mov + codec_id)); + + if (!decoder) { +- zend_error(E_ERROR, "Could not find decoder for %s", ++ zend_error(E_WARNING, "Could not find decoder for %s", + _php_get_filename(ffmovie_ctx)); + return NULL; + } +@@ -592,6 +592,7 @@ FFMPEG_PHP_METHOD(ffmpeg_movie, getAlbum) + } + /* }}} */ + ++ + /* {{{ proto string getGenre() + * Return ID3 genre field from an mp3 file + */ +@@ -619,6 +620,7 @@ FFMPEG_PHP_METHOD(ffmpeg_movie, getTrackNumber) + RETURN_LONG(ffmovie_ctx->fmt_ctx->track); + } + /* }}} */ ++ + + /* {{{ proto int getYear() + * Return ID3 year field from an mp3 file diff --git a/multimedia/ffmpeg-php/patches/patch-ffmpeg_movie_h b/multimedia/ffmpeg-php/patches/patch-ffmpeg_movie_h new file mode 100644 index 00000000000..c2d81a16942 --- /dev/null +++ b/multimedia/ffmpeg-php/patches/patch-ffmpeg_movie_h @@ -0,0 +1,12 @@ +$OpenBSD: patch-ffmpeg_movie_h,v 1.1.1.1 2009/08/16 20:04:39 jolan Exp $ +--- ffmpeg_movie.h.orig Mon Oct 13 14:41:03 2008 ++++ ffmpeg_movie.h Fri Nov 21 14:54:36 2008 +@@ -32,6 +32,8 @@ + #ifndef FFMPEG_MOVIE_H + #define FFMPEG_MOVIE_H + ++#include "php_ffmpeg.h" ++ + /* movie constructor */ + FFMPEG_PHP_METHOD(ffmpeg_movie, __construct); + diff --git a/multimedia/ffmpeg-php/patches/patch-php_ffmpeg_h b/multimedia/ffmpeg-php/patches/patch-php_ffmpeg_h new file mode 100644 index 00000000000..dd5eec7889b --- /dev/null +++ b/multimedia/ffmpeg-php/patches/patch-php_ffmpeg_h @@ -0,0 +1,24 @@ +$OpenBSD: patch-php_ffmpeg_h,v 1.1.1.1 2009/08/16 20:04:39 jolan Exp $ +--- php_ffmpeg.h.orig Tue Oct 14 10:45:41 2008 ++++ php_ffmpeg.h Fri Nov 21 14:54:36 2008 +@@ -43,14 +43,16 @@ + * PHP-4 doesn't have the METHOD, ME and MALIAS macros so map them back + * to the function macros for PHP-4 + */ +-#if PHP_MAJOR_VERSION <= 4 +-#define FFMPEG_PHP_METHOD(a,b) PHP_FUNCTION(b) ++#if PHP_MAJOR_VERSION <= 4 // PHP4; use FUNCTION macros ++#define FFMPEG_PHP_METHOD(a,b) PHP_FUNCTION(a) + #define FFMPEG_PHP_ME(a,b,c,d) PHP_FE(a,c) +-#define FFMPEG_PHP_MALIAS(a,b,c,d,e) PHP_FALIAS(b,c) +-#else /* Use METHOD macros for PHP-5 */ ++#define FFMPEG_PHP_MALIAS(a,b,c,d,e) PHP_FALIAS(b,c,d) ++#define FFMPEG_PHP_END_METHODS {NULL, NULL, NULL} ++#else /* PHP5; Use METHOD macros */ + #define FFMPEG_PHP_METHOD(a,b) PHP_METHOD(a,b) + #define FFMPEG_PHP_ME(a,b,c,d) PHP_ME(a,b,c,d) + #define FFMPEG_PHP_MALIAS(a,b,c,d,e) PHP_MALIAS(a,b,c,d,e) ++#define FFMPEG_PHP_END_METHODS {NULL, NULL, NULL, 0, 0} + #endif + + #define SAFE_STRING(s) ((s)?(s):"") diff --git a/multimedia/ffmpeg-php/pkg/DESCR b/multimedia/ffmpeg-php/pkg/DESCR new file mode 100644 index 00000000000..6826d758015 --- /dev/null +++ b/multimedia/ffmpeg-php/pkg/DESCR @@ -0,0 +1,12 @@ +ffmpeg-php is an extension for PHP that adds an easy to use, +object-oriented API for accessing and retrieving information from video +and audio files. It has methods for returning frames from movie files +as images that can be manipulated using PHP's image functions. This +works well for automatically creating thumbnail images from movies. +ffmpeg-php is also useful for reporting the duration and bitrate of +audio files (mp3, wma, etc). ffmpeg-php can access many of the video +formats supported by ffmpeg (mov, avi, mpg, wmv, etc). + +API documentation is available at: + +http://ffmpeg-php.sourceforge.net/doc/api/ diff --git a/multimedia/ffmpeg-php/pkg/MESSAGE b/multimedia/ffmpeg-php/pkg/MESSAGE new file mode 100644 index 00000000000..276def211ba --- /dev/null +++ b/multimedia/ffmpeg-php/pkg/MESSAGE @@ -0,0 +1,10 @@ +You can enable this module by creating a symbolic +link from ${PREFIX}/conf/php5.sample/ffmpeg.ini to +${PREFIX}/conf/php5/ffmpeg.ini. + +ln -fs ${PREFIX}/conf/php5.sample/ffmpeg.ini \ + ${PREFIX}/conf/php5/ffmpeg.ini + +If you already have Apache running on your machine, +you should not use "apachectl restart" - instead, +you should fully stop and then restart the server. diff --git a/multimedia/ffmpeg-php/pkg/PLIST b/multimedia/ffmpeg-php/pkg/PLIST new file mode 100644 index 00000000000..98d91c2d8dc --- /dev/null +++ b/multimedia/ffmpeg-php/pkg/PLIST @@ -0,0 +1,9 @@ +@comment $OpenBSD: PLIST,v 1.1.1.1 2009/08/16 20:04:39 jolan Exp $ +@comment lib/ +@comment lib/php/ +@comment lib/php/modules/ +@owner root +@group bin +lib/php/modules/ffmpeg.so +@owner +@group daemon diff --git a/multimedia/ffmpeg-php/pkg/UNMESSAGE b/multimedia/ffmpeg-php/pkg/UNMESSAGE new file mode 100644 index 00000000000..175b3477132 --- /dev/null +++ b/multimedia/ffmpeg-php/pkg/UNMESSAGE @@ -0,0 +1,9 @@ +You can disable this module by removing the +${PREFIX}/conf/php5/ffmpeg.ini symbolic link by +issuing the following command: + +rm -f ${PREFIX}/conf/php5/ffmpeg.ini + +If you already have Apache running on your machine, +you should not use "apachectl restart" - instead, +you should fully stop and then restart the server.