ports/184406: [PATCH] multimedia/motion fix bktr capture
Ildar Hizbulin
hizel at vyborg.ru
Sun Dec 1 08:50:01 UTC 2013
>Number: 184406
>Category: ports
>Synopsis: [PATCH] multimedia/motion fix bktr capture
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-ports-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Sun Dec 01 08:50:00 UTC 2013
>Closed-Date:
>Last-Modified:
>Originator: Ildar Hizbulin
>Release: 8.4-RELEASE-p4
>Organization:
Ariadna-Link, JSC
>Environment:
FreeBSD gg.vyborg.ru 8.4-RELEASE-p4 FreeBSD 8.4-RELEASE-p4 #0 r255811: Wed Sep 25 12:07:01 MSK 2013 root at gg.vyborg.ru:/usr/obj/usr/src/sys/GENERIC i386
>Description:
multimedia/motion broken bktr after ports/169006 see ports/172552 . In ports/173750 bktr does not fix because -DWITHOUT_V4L set for bktr.
in this patch
- fix bktr capture
- fix build for bktr with installed multimedia/v4l_compat
- fix build with ffmpeg, change to multimedia/ffmpeg0 build depend
>How-To-Repeat:
for bktr see ports/172552
>Fix:
Patch attached with submission follows:
diff -ruN multimedia/motion.orig/Makefile multimedia/motion/Makefile
--- multimedia/motion.orig/Makefile 2013-12-01 09:54:21.000000000 +0400
+++ multimedia/motion/Makefile 2013-12-01 12:31:08.000000000 +0400
@@ -3,7 +3,7 @@
PORTNAME= motion
PORTVERSION= 3.2.12
-PORTREVISION= 1
+PORTREVISION= 2
CATEGORIES= multimedia
MASTER_SITES= SF/${PORTNAME}/${PORTNAME}%20-%20${PORTVERSION:R}/${PORTVERSION}
@@ -39,7 +39,6 @@
.if ${PORT_OPTIONS:MBKTR}
CONFIGURE_ARGS+=--with-bktr
-CFLAGS+= -DWITHOUT_V4L
.else
CONFIGURE_ARGS+=--without-bktr
.endif
@@ -56,7 +55,7 @@
CONFIGURE_ARGS+=--without-linuxthreads
.if ${PORT_OPTIONS:MFFMPEG}
-LIB_DEPENDS+= avformat:${PORTSDIR}/multimedia/ffmpeg
+LIB_DEPENDS+= avformat0:${PORTSDIR}/multimedia/ffmpeg0
CONFIGURE_ARGS+=--with-ffmpeg=${LOCALBASE}
.else
CONFIGURE_ARGS+=--without-ffmpeg
diff -ruN multimedia/motion.orig/files/patch-configure.in multimedia/motion/files/patch-configure.in
--- multimedia/motion.orig/files/patch-configure.in 2013-12-01 09:54:21.000000000 +0400
+++ multimedia/motion/files/patch-configure.in 2013-12-01 12:23:41.000000000 +0400
@@ -1,5 +1,5 @@
---- configure.in.orig 2010-06-01 15:48:23.000000000 +0900
-+++ configure.in 2012-06-08 23:21:55.000000000 +0900
+--- configure.in.orig 2010-06-01 10:48:23.000000000 +0400
++++ configure.in 2013-12-01 12:23:10.000000000 +0400
@@ -316,7 +316,7 @@
#
else if test "${FFMPEG_DIR}" = "yes"; then
@@ -9,62 +9,71 @@
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 @@
+@@ -347,11 +347,11 @@
echo ""
fi
else
- AC_MSG_CHECKING(for ffmpeg 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_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
++ if test -f ${FFMPEG_DIR}/lib/ffmpeg0/libavcodec0.a -o -f ${FFMPEG_DIR}/lib/ffmpeg0/libavcodec0.so && test -f ${FFMPEG_DIR}/lib/ffmpeg0/libavformat0.a -o -f ${FFMPEG_DIR}/lib/ffmpeg0/libavformat0.so ; then
AC_MSG_RESULT(found)
FFMPEG_OK="found"
-@@ -392,9 +392,11 @@
+- FFMPEG_LIB="${FFMPEG_DIR}/lib"
++ FFMPEG_LIB="${FFMPEG_DIR}/lib/ffmpeg0"
+ elif test -f ${FFMPEG_DIR}/libavcodec.a -o -f ${FFMPEG_DIR}/libavcodec.so && test -f ${FFMPEG_DIR}/libavformat.a -o -f ${FFMPEG_DIR}/libavformat.so ; then
+ AC_MSG_RESULT(found)
+ FFMPEG_LIB="${FFMPEG_DIR}"
+@@ -392,9 +392,10 @@
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"
+- 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"
++ elif test -f ${FFMPEG_DIR}/include/ffmpeg0/libavformat/avformat.h; then
++ AC_MSG_RESULT(found ${FFMPEG_DIR}/include/ffmpeg0/libavformat/avformat.h)
++ FFMPEG_CFLAGS="-I${FFMPEG_DIR}/include/ffmpeg0 -DFFMPEG_NEW_INCLUDES"
++ AVFORMAT="-I${FFMPEG_DIR}/include/ffmpeg0/libavformat"
else
AC_MSG_RESULT(not found)
FFMPEG_OK="no_found"
-@@ -423,9 +425,11 @@
+@@ -413,7 +414,7 @@
+ #
+
+ if test "${FFMPEG_OK}" = "found"; then
+- TEMP_LIBS="$TEMP_LIBS -L${FFMPEG_LIB} -lavformat -lavcodec -lavutil -lm -lz"
++ TEMP_LIBS="$TEMP_LIBS -L${FFMPEG_LIB} -lavformat0 -lavcodec0 -lavutil0 -lm -lz"
+ TEMP_LDFLAGS="${TEMP_LDFLAGS} -L${FFMPEG_LIB}"
+ TEMP_CFLAGS="${TEMP_CFLAGS} -DHAVE_FFMPEG ${FFMPEG_CFLAGS}"
+
+@@ -423,7 +424,7 @@
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 <avformat.h>
-@@ -442,7 +446,8 @@
- ]
- )
- CFLAGS=$saved_CFLAGS
-- LIBS=$saved_LIBS
-+ LIBS=$saved_LIBS
-+
- fi
- fi
- fi
-@@ -1067,6 +1072,13 @@
+@@ -751,7 +752,7 @@
+ if test "${V4L}" = "no"; then
+ AC_MSG_CHECKING(for V42L support)
+ AC_MSG_RESULT(skipping)
+-else
++elif test "${BKTR}" = "no"; then
+ AC_CHECK_TYPE([struct v4l2_buffer],
+ [SUPPORTED_V4L2=true],
+ [SUPPORTED_V4L2=false],
+@@ -1067,6 +1068,11 @@
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]))
+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
#
diff -ruN multimedia/motion.orig/files/patch-ffmpeg.c multimedia/motion/files/patch-ffmpeg.c
--- multimedia/motion.orig/files/patch-ffmpeg.c 2013-12-01 09:54:21.000000000 +0400
+++ multimedia/motion/files/patch-ffmpeg.c 1970-01-01 03:00:00.000000000 +0300
@@ -1,157 +0,0 @@
---- ffmpeg.c.orig 2010-06-01 15:48:23.000000000 +0900
-+++ ffmpeg.c 2012-06-08 23:21:55.000000000 +0900
-@@ -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.
-@@ -227,11 +232,13 @@
- 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_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
-- register_protocol(&mpeg1_file_protocol);
-+# warning av_register_protocolXXX missing
- #endif
- }
-
-@@ -258,7 +265,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 +281,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 +326,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;
-@@ -340,7 +375,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");
-@@ -377,7 +418,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)
-@@ -646,7 +691,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);
-@@ -667,7 +716,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;
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-ports-bugs
mailing list