freebsd-ports/multimedia/motion/files/patch-ffmpeg.c
Sylvio Cesar Teixeira 51eb180072 - Updatet to version 3.2.12
New file:
files/patch-configure.in
files/patch-ffmpeg.c

PR:		ports/169006
Submitted by:	KATO Tsuguru <tkato432@yahoo.com>
2012-06-17 20:14:17 +00:00

157 lines
No EOL
5.5 KiB
C

--- 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;