From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) by finch.gentoo.org (Postfix) with ESMTP id DA2321381F3 for ; Mon, 17 Jun 2013 18:41:57 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 9C924E09A5; Mon, 17 Jun 2013 18:41:54 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) (using TLSv1 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id 1176EE0954 for ; Mon, 17 Jun 2013 18:41:53 +0000 (UTC) Received: from flycatcher.gentoo.org (flycatcher.gentoo.org [81.93.255.6]) (using TLSv1 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 0743533BE52 for ; Mon, 17 Jun 2013 18:41:53 +0000 (UTC) Received: by flycatcher.gentoo.org (Postfix, from userid 2230) id C01352171C; Mon, 17 Jun 2013 18:41:51 +0000 (UTC) From: "Tomas Chvatal (scarabeus)" To: gentoo-commits@lists.gentoo.org Reply-To: gentoo-dev@lists.gentoo.org, scarabeus@gentoo.org Subject: [gentoo-commits] gentoo-x86 commit in media-video/motion/files: libav-9.patch ffmpeg-4.patch ffmpeg-2.patch ffmpeg-1.patch ffmpeg-5.patch ffmpeg-3.patch ffmpeg1.patch ffmpeg08.patch X-VCS-Repository: gentoo-x86 X-VCS-Files: libav-9.patch ffmpeg-4.patch ffmpeg-2.patch ffmpeg-1.patch ffmpeg-5.patch ffmpeg-3.patch ffmpeg1.patch ffmpeg08.patch X-VCS-Directories: media-video/motion/files X-VCS-Committer: scarabeus X-VCS-Committer-Name: Tomas Chvatal Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Message-Id: <20130617184151.C01352171C@flycatcher.gentoo.org> Date: Mon, 17 Jun 2013 18:41:51 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Archives-Salt: 7dd22e9e-6a01-438c-8a6e-41b26c534451 X-Archives-Hash: fd87fb4c0a8797bd2e876d792563e395 scarabeus 13/06/17 18:41:51 Added: libav-9.patch ffmpeg-4.patch ffmpeg-2.patch ffmpeg-1.patch ffmpeg-5.patch ffmpeg-3.patch Removed: ffmpeg1.patch ffmpeg08.patch Log: Update ffmpeg patches to match upstream commits, add one more change to build with libav9. Wrt bug#443194. (Portage version: 2.2.0_alpha180/cvs/Linux x86_64, signed Manifest commit with key 8EEE3BE8) Revision Changes Path 1.1 media-video/motion/files/libav-9.patch file : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/media-video/motion/files/libav-9.patch?rev=1.1&view=markup plain: http://sources.gentoo.org/viewvc.cgi/gentoo-x86/media-video/motion/files/libav-9.patch?rev=1.1&content-type=text/plain Index: libav-9.patch =================================================================== diff -urN motion-3.2.12.old/ffmpeg.c motion-3.2.12/ffmpeg.c --- motion-3.2.12.old/ffmpeg.c 2013-06-17 20:36:45.355529743 +0200 +++ motion-3.2.12/ffmpeg.c 2013-06-17 20:35:41.868532001 +0200 @@ -409,7 +409,7 @@ ffmpeg->video_st = NULL; if (ffmpeg->oc->oformat->video_codec != CODEC_ID_NONE) { - ffmpeg->video_st = av_new_stream(ffmpeg->oc, 0); + ffmpeg->video_st = avformat_new_stream(ffmpeg->oc, 0); if (!ffmpeg->video_st) { motion_log(LOG_ERR, 1, "av_new_stream - could not alloc stream"); ffmpeg_cleanups(ffmpeg); @@ -487,7 +487,7 @@ pthread_mutex_lock(&global_lock); /* open the codec */ - if (avcodec_open(c, codec) < 0) { + if (avcodec_open2(c, codec, NULL) < 0) { /* Release the lock. */ pthread_mutex_unlock(&global_lock); motion_log(LOG_ERR, 1, "avcodec_open - could not open codec"); 1.1 media-video/motion/files/ffmpeg-4.patch file : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/media-video/motion/files/ffmpeg-4.patch?rev=1.1&view=markup plain: http://sources.gentoo.org/viewvc.cgi/gentoo-x86/media-video/motion/files/ffmpeg-4.patch?rev=1.1&content-type=text/plain Index: ffmpeg-4.patch =================================================================== Description: Improve av_register_protocol2()/av_register_protocol() detection Author: Angel Carpintero Origin: Upstream, https://github.com/sackmotion/motion/commit/5dd9ed#svn540#svn540 Last-Update: 2012-02-12 --- a/configure.in +++ b/configure.in @@ -448,33 +448,6 @@ CFLAGS=$saved_CFLAGS LIBS=$saved_LIBS - AC_MSG_CHECKING([av_register_protocol is defined in ffmpeg ?]) - saved_CFLAGS=$CFLAGS - saved_LIBS=$LIBS - CFLAGS="${FFMPEG_CFLAGS} ${AVFORMAT}" - LIBS="$TEMP_LIBS" - - AC_COMPILE_IFELSE( - [ - #include - URLProtocol test_file_protocol; - int main(void){ - av_register_protocol(&test_file_protocol); - return 0; - } - ], - [ - AC_MSG_RESULT(yes) - TEMP_CFLAGS="${TEMP_CFLAGS} -DHAVE_FFMPEG_AV_REGISTER_PROTOCOL" - ], - [ - AC_MSG_RESULT(no) - ] - ) - - CFLAGS=$saved_CFLAGS - LIBS=$saved_LIBS - fi fi fi @@ -1102,6 +1075,9 @@ AC_CHECK_FUNC(avformat_alloc_context, AC_DEFINE([have_avformat_alloc_context],1,[Define to 1 if you have avformat_alloc_context support])) AC_CHECK_FUNC(av_avformat_alloc_context, AC_DEFINE([have_av_avformat_alloc_context],1,[Define to 1 if you have av_avformat_alloc_context support])) +AC_CHECK_FUNC(av_register_protocol2, AC_DEFINE([have_av_register_protocol2],1,[Define to 1 if you have av_register_protocol2 support])) +AC_CHECK_FUNC(av_register_protocol, AC_DEFINE([have_av_register_protocol],1,[Define to 1 if you have av_register_protocol support])) + # # Add the right exec path for rc scripts --- a/ffmpeg.c +++ b/ffmpeg.c @@ -233,10 +233,12 @@ mpeg1_file_protocol.url_close = file_protocol.url_close; /* Register the append file protocol. */ -#ifdef HAVE_FFMPEG_AV_REGISTER_PROTOCOL +#ifdef have_av_register_protocol2 + av_register_protocol2(&mpeg1_file_protocol, sizeof(mpeg1_file_protocol)); +#elif defined have_av_register_protocol av_register_protocol(&mpeg1_file_protocol); #else - av_register_protocol2(&mpeg1_file_protocol, sizeof(mpeg1_file_protocol)); +# warning av_register_protocolXXX missing #endif } 1.1 media-video/motion/files/ffmpeg-2.patch file : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/media-video/motion/files/ffmpeg-2.patch?rev=1.1&view=markup plain: http://sources.gentoo.org/viewvc.cgi/gentoo-x86/media-video/motion/files/ffmpeg-2.patch?rev=1.1&content-type=text/plain Index: ffmpeg-2.patch =================================================================== Description: Improve detection of av_register_protocol() for ffmpeg. Author: Angel Carpintero Origin: Upstream, https://github.com/sackmotion/motion/commit/7aec4b#svn538 Last-Update: 2012-02-12 --- a/configure.in +++ b/configure.in @@ -316,7 +316,7 @@ # else if test "${FFMPEG_DIR}" = "yes"; then # AUTODETECT STATIC/SHARED LIB - AC_MSG_CHECKING(for ffmpeg autodetecting) + AC_MSG_CHECKING(for ffmpeg autodetecting libraries) if test -f /usr/lib64/libavcodec.a -o -f /usr/lib64/libavcodec.so && test -f /usr/lib64/libavformat.a -o -f /usr/lib64/libavformat.so ; then AC_MSG_RESULT(found in /usr/lib64) @@ -347,7 +347,7 @@ echo "" fi else - AC_MSG_CHECKING(for ffmpeg in -> [${FFMPEG_DIR}] <-) + AC_MSG_CHECKING(for ffmpeg libraries in -> [${FFMPEG_DIR}] <-) if test -f ${FFMPEG_DIR}/lib/libavcodec.a -o -f ${FFMPEG_DIR}/lib/libavcodec.so && test -f ${FFMPEG_DIR}/lib/libavformat.a -o -f ${FFMPEG_DIR}/lib/libavformat.so ; then AC_MSG_RESULT(found) FFMPEG_OK="found" @@ -392,9 +392,11 @@ elif test -f ${FFMPEG_DIR}/include/libavformat/avformat.h; then AC_MSG_RESULT(found ${FFMPEG_DIR}/include/libavformat/avformat.h) FFMPEG_CFLAGS="-I${FFMPEG_DIR}/include -DFFMPEG_NEW_INCLUDES" + AVFORMAT="-I${FFMPEG_DIR}/include/libavformat" elif test -f ${FFMPEG_DIR}/include/ffmpeg/libavformat/avformat.h; then AC_MSG_RESULT(found ${FFMPEG_DIR}/include/ffmpeg/libavformat/avformat.h) FFMPEG_CFLAGS="-I${FFMPEG_DIR}/include/ffmpeg -DFFMPEG_NEW_INCLUDES" + AVFORMAT="-I${FFMPEG_DIR}/include/ffmpeg/libavformat" else AC_MSG_RESULT(not found) FFMPEG_OK="no_found" @@ -423,9 +425,11 @@ AC_MSG_CHECKING([file_protocol is defined in ffmpeg ?]) saved_CFLAGS=$CFLAGS saved_LIBS=$LIBS - CFLAGS="${FFMPEG_CFLAGS}" + + + CFLAGS="${FFMPEG_CFLAGS} ${AVFORMAT}" LIBS="$TEMP_LIBS" - + AC_COMPILE_IFELSE( [ #include @@ -442,7 +446,35 @@ ] ) CFLAGS=$saved_CFLAGS - LIBS=$saved_LIBS + LIBS=$saved_LIBS + + AC_MSG_CHECKING([av_register_protocol is defined in ffmpeg ?]) + saved_CFLAGS=$CFLAGS + saved_LIBS=$LIBS + CFLAGS="${FFMPEG_CFLAGS} ${AVFORMAT}" + LIBS="$TEMP_LIBS" + + AC_COMPILE_IFELSE( + [ + #include + URLProtocol test_file_protocol; + int main(void){ + av_register_protocol(&test_file_protocol); + return 0; + } + ], + [ + AC_MSG_RESULT(yes) + TEMP_CFLAGS="${TEMP_CFLAGS} -DHAVE_FFMPEG_AV_REGISTER_PROTOCOL" + ], + [ + AC_MSG_RESULT(no) + ] + ) + + CFLAGS=$saved_CFLAGS + LIBS=$saved_LIBS + fi fi fi --- a/ffmpeg.c +++ b/ffmpeg.c @@ -232,11 +232,11 @@ mpeg1_file_protocol.url_seek = file_protocol.url_seek; mpeg1_file_protocol.url_close = file_protocol.url_close; - /* Register the append file protocol. */ -#if LIBAVFORMAT_BUILD >= (52<<16 | 31<<8) +/* Register the append file protocol. */ +#ifdef HAVE_FFMPEG_AV_REGISTER_PROTOCOL av_register_protocol(&mpeg1_file_protocol); #else - register_protocol(&mpeg1_file_protocol); + av_register_protocol2(&mpeg1_file_protocol, sizeof(mpeg1_file_protocol)); #endif } @@ -410,7 +410,11 @@ ffmpeg->c = c = AVSTREAM_CODEC_PTR(ffmpeg->video_st); c->codec_id = ffmpeg->oc->oformat->video_codec; +#if LIBAVCODEC_VERSION_MAJOR < 53 c->codec_type = CODEC_TYPE_VIDEO; +#else + c->codec_type = AVMEDIA_TYPE_VIDEO; +#endif is_mpeg1 = c->codec_id == CODEC_ID_MPEG1VIDEO; if (strcmp(ffmpeg_video_codec, "ffv1") == 0) @@ -679,7 +683,11 @@ if (ffmpeg->oc->oformat->flags & AVFMT_RAWPICTURE) { /* raw video case. The API will change slightly in the near future for that */ #ifdef FFMPEG_AVWRITEFRAME_NEWAPI +#if LIBAVCODEC_VERSION_MAJOR < 53 pkt.flags |= PKT_FLAG_KEY; +#else + pkt.flags |= AV_PKT_FLAG_KEY; +#endif pkt.data = (uint8_t *)pic; pkt.size = sizeof(AVPicture); ret = av_write_frame(ffmpeg->oc, &pkt); @@ -700,7 +708,11 @@ #ifdef FFMPEG_AVWRITEFRAME_NEWAPI pkt.pts = AVSTREAM_CODEC_PTR(ffmpeg->video_st)->coded_frame->pts; if (AVSTREAM_CODEC_PTR(ffmpeg->video_st)->coded_frame->key_frame) { +#if LIBAVCODEC_VERSION_MAJOR < 53 pkt.flags |= PKT_FLAG_KEY; +#else + pkt.flags |= AV_PKT_FLAG_KEY; +#endif } pkt.data = ffmpeg->video_outbuf; pkt.size = out_size; 1.1 media-video/motion/files/ffmpeg-1.patch file : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/media-video/motion/files/ffmpeg-1.patch?rev=1.1&view=markup plain: http://sources.gentoo.org/viewvc.cgi/gentoo-x86/media-video/motion/files/ffmpeg-1.patch?rev=1.1&content-type=text/plain Index: ffmpeg-1.patch =================================================================== Description: Fix FFmpeg guess_format() deprecation warning Author: Angel Carpintero Origin: Upstream, https://github.com/sackmotion/motion/commit/527377#svn517 Last-Update: 2012-02-12 --- a/ffmpeg.c +++ b/ffmpeg.c @@ -36,6 +36,11 @@ # endif /* __GNUC__ */ #endif /* LIBAVCODEC_BUILD > 4680 */ +#if defined LIBAVFORMAT_VERSION_MAJOR && defined LIBAVFORMAT_VERSION_MINOR +#if LIBAVFORMAT_VERSION_MAJOR < 53 && LIBAVFORMAT_VERSION_MINOR < 45 + #define GUESS_NO_DEPRECATED +#endif +#endif #if LIBAVFORMAT_BUILD >= 4616 /* The API for av_write_frame changed with FFmpeg version 0.4.9pre1. @@ -258,7 +263,11 @@ /* We use "mpeg1video" for raw mpeg1 format. Using "mpeg" would * result in a muxed output file, which isn't appropriate here. */ - of = guess_format("mpeg1video", NULL, NULL); +#ifdef GUESS_NO_DEPRECATED + of = guess_format("mpeg1video", NULL, NULL); +#else + of = av_guess_format("mpeg1video", NULL, NULL); +#endif if (of) { /* But we want the trailer to be correctly written. */ of->write_trailer = mpeg1_write_trailer; @@ -270,24 +279,44 @@ #endif } else if (strcmp(codec, "mpeg4") == 0) { ext = ".avi"; - of = guess_format("avi", NULL, NULL); +#ifdef GUESS_NO_DEPRECATED + of = guess_format("mpeg1video", NULL, NULL); +#else + of = av_guess_format("avi", NULL, NULL); +#endif } else if (strcmp(codec, "msmpeg4") == 0) { ext = ".avi"; - of = guess_format("avi", NULL, NULL); +#ifdef GUESS_NO_DEPRECATED + of = guess_format("mpeg1video", NULL, NULL); +#else + of = av_guess_format("avi", NULL, NULL); +#endif if (of) { /* Manually override the codec id. */ of->video_codec = CODEC_ID_MSMPEG4V2; } } else if (strcmp(codec, "swf") == 0) { ext = ".swf"; - of = guess_format("swf", NULL, NULL); +#ifdef GUESS_NO_DEPRECATED + of = guess_format("mpeg1video", NULL, NULL); +#else + of = av_guess_format("swf", NULL, NULL); +#endif } else if (strcmp(codec, "flv") == 0) { ext = ".flv"; - of = guess_format("flv", NULL, NULL); +#ifdef GUESS_NO_DEPRECATED + of = guess_format("mpeg1video", NULL, NULL); +#else + of = av_guess_format("flv", NULL, NULL); +#endif of->video_codec = CODEC_ID_FLV1; } else if (strcmp(codec, "ffv1") == 0) { ext = ".avi"; - of = guess_format("avi", NULL, NULL); +#ifdef GUESS_NO_DEPRECATED + of = guess_format("mpeg1video", NULL, NULL); +#else + of = av_guess_format("avi", NULL, NULL); +#endif if (of) { /* Use the FFMPEG Lossless Video codec (experimental!). Requires strict_std_compliance to be <= -2 */ @@ -295,7 +324,11 @@ } } else if (strcmp(codec, "mov") == 0) { ext = ".mov"; - of = guess_format("mov", NULL, NULL); +#ifdef GUESS_NO_DEPRECATED + of = guess_format("mpeg1video", NULL, NULL); +#else + of = av_guess_format("mov", NULL, NULL); +#endif } else { motion_log(LOG_ERR, 0, "ffmpeg_video_codec option value %s is not supported", codec); return NULL; 1.1 media-video/motion/files/ffmpeg-5.patch file : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/media-video/motion/files/ffmpeg-5.patch?rev=1.1&view=markup plain: http://sources.gentoo.org/viewvc.cgi/gentoo-x86/media-video/motion/files/ffmpeg-5.patch?rev=1.1&content-type=text/plain Index: ffmpeg-5.patch =================================================================== Convert to avio API. Disable mpeg1 append code based or the ffurl API as mpeg1 is blacklisted with new ffmpeg versions in this code anyway. Fix build with ffmpeg-1 Index: motion-3.2.12/ffmpeg.c =================================================================== --- motion-3.2.12.orig/ffmpeg.c +++ motion-3.2.12/ffmpeg.c @@ -73,6 +73,7 @@ AVFrame *ffmpeg_prepare_frame(struct ffm /* This is the trailer used to end mpeg1 videos. */ static unsigned char mpeg1_trailer[] = {0x00, 0x00, 0x01, 0xb7}; +#ifndef FFMPEG_NO_NONSTD_MPEG1 /* Append version of the file open function used in libavformat when opening * an ordinary file. The original file open function truncates an existing * file, but this version appends to it instead. @@ -118,6 +119,7 @@ URLProtocol mpeg1_file_protocol = { .url_open = file_open_append }; +#endif #ifdef HAVE_FFMPEG_NEW @@ -132,6 +134,7 @@ URLProtocol mpeg1_file_protocol = { #include "avstring.h" #endif +#ifndef FFMPEG_NO_NONSTD_MPEG1 static int file_open(URLContext *h, const char *filename, int flags) { int access_flags, fd; @@ -195,6 +198,7 @@ URLProtocol file_protocol = { }; #endif +#endif /* We set AVOutputFormat->write_trailer to this function for mpeg1. That way, @@ -203,8 +207,8 @@ URLProtocol file_protocol = { static int mpeg1_write_trailer(AVFormatContext *s) { #if LIBAVFORMAT_BUILD >= (52<<16) - put_buffer(s->pb, mpeg1_trailer, 4); - put_flush_packet(s->pb); + avio_write(s->pb, mpeg1_trailer, 4); + avio_flush(s->pb); #else put_buffer(&s->pb, mpeg1_trailer, 4); put_flush_packet(&s->pb); @@ -226,6 +230,7 @@ void ffmpeg_init() /* Copy the functions to use for the append file protocol from the standard * file protocol. */ +#ifndef FFMPEG_NO_NONSTD_MPEG1 mpeg1_file_protocol.url_read = file_protocol.url_read; mpeg1_file_protocol.url_write = file_protocol.url_write; mpeg1_file_protocol.url_seek = file_protocol.url_seek; @@ -239,6 +244,7 @@ void ffmpeg_init() #else register_protocol(&mpeg1_file_protocol); #endif +#endif } /* Obtains the output format used for the specified codec. For mpeg4 codecs, @@ -422,13 +428,6 @@ struct ffmpeg *ffmpeg_open(char *ffmpeg_ c->flags |= CODEC_FLAG_GLOBAL_HEADER; } - /* set the output parameters (must be done even if no parameters). */ - if (av_set_parameters(ffmpeg->oc, NULL) < 0) { - motion_log(LOG_ERR, 0, "ffmpeg av_set_parameters error: Invalid output format parameters"); - ffmpeg_cleanups(ffmpeg); - return NULL; - } - /* Dump the format settings. This shows how the various streams relate to each other */ //dump_format(ffmpeg->oc, 0, filename, 1); @@ -504,7 +503,7 @@ struct ffmpeg *ffmpeg_open(char *ffmpeg_ snprintf(file_proto, sizeof(file_proto), "%s", filename); - if (url_fopen(&ffmpeg->oc->pb, file_proto, URL_WRONLY) < 0) { + if (avio_open(&ffmpeg->oc->pb, file_proto, AVIO_FLAG_WRITE) < 0) { /* path did not exist? */ if (errno == ENOENT) { /* create path for file (don't use file_proto)... */ @@ -514,7 +513,7 @@ struct ffmpeg *ffmpeg_open(char *ffmpeg_ } /* and retry opening the file (use file_proto) */ - if (url_fopen(&ffmpeg->oc->pb, file_proto, URL_WRONLY) < 0) { + if (avio_open(&ffmpeg->oc->pb, file_proto, AVIO_FLAG_WRITE) < 0) { motion_log(LOG_ERR, 1, "url_fopen - error opening file %s",filename); ffmpeg_cleanups(ffmpeg); return NULL; @@ -535,7 +534,11 @@ struct ffmpeg *ffmpeg_open(char *ffmpeg_ } /* write the stream header, if any */ - av_write_header(ffmpeg->oc); + if(avformat_write_header(ffmpeg->oc, NULL) < 0) { + motion_log(LOG_ERR, 1, "Error while writing header for %s", filename); + ffmpeg_cleanups(ffmpeg); + return NULL; + } return ffmpeg; } @@ -602,7 +605,7 @@ void ffmpeg_close(struct ffmpeg *ffmpeg) if (!(ffmpeg->oc->oformat->flags & AVFMT_NOFILE)) { /* close the output file */ #if LIBAVFORMAT_BUILD >= (52<<16) - url_fclose(ffmpeg->oc->pb); + avio_close(ffmpeg->oc->pb); #else url_fclose(&ffmpeg->oc->pb); #endif /* LIBAVFORMAT_BUILD >= (52<<16) */ 1.1 media-video/motion/files/ffmpeg-3.patch file : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/media-video/motion/files/ffmpeg-3.patch?rev=1.1&view=markup plain: http://sources.gentoo.org/viewvc.cgi/gentoo-x86/media-video/motion/files/ffmpeg-3.patch?rev=1.1&content-type=text/plain Index: ffmpeg-3.patch =================================================================== Description: Fix avoid crash producing MPEG4 with newer FFmpeg. Author: Angel Carpintero Origin: Upstream, https://github.com/sackmotion/motion/commit/734155#svn539 Bug: http://www.lavrsen.dk/foswiki/bin/view/Motion/BugReport2011x10x05x071936 Last-Update: 2012-02-12 --- a/configure.in +++ b/configure.in @@ -1099,6 +1099,10 @@ LIBS="${TEMP_LIBS}" LDFLAGS="${TEMP_LDFLAGS}" + +AC_CHECK_FUNC(avformat_alloc_context, AC_DEFINE([have_avformat_alloc_context],1,[Define to 1 if you have avformat_alloc_context support])) +AC_CHECK_FUNC(av_avformat_alloc_context, AC_DEFINE([have_av_avformat_alloc_context],1,[Define to 1 if you have av_avformat_alloc_context support])) + # # Add the right exec path for rc scripts # --- a/ffmpeg.c +++ b/ffmpeg.c @@ -373,7 +373,13 @@ snprintf(ffmpeg->codec, sizeof(ffmpeg->codec), "%s", ffmpeg_video_codec); /* allocation the output media context */ +#ifdef have_avformat_alloc_context + ffmpeg->oc = avformat_alloc_context(); +#elif defined have_av_avformat_alloc_context + ffmpeg->oc = av_alloc_format_context(); +#else ffmpeg->oc = av_mallocz(sizeof(AVFormatContext)); +#endif if (!ffmpeg->oc) { motion_log(LOG_ERR, 1, "Memory error while allocating output media context");