forked from Lainports/freebsd-ports
New file: files/patch-configure.in files/patch-ffmpeg.c PR: ports/169006 Submitted by: KATO Tsuguru <tkato432@yahoo.com>
157 lines
No EOL
5.5 KiB
C
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; |