You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
181 lines
5.8 KiB
181 lines
5.8 KiB
Add compatibility for libav-9 not to require still hardmasked libav-10.
|
|
aballier@gentoo.org
|
|
|
|
|
|
Index: work/gst-libav-1.4.5/ext/libav/gstavauddec.c
|
|
===================================================================
|
|
--- work.orig/gst-libav-1.4.5/ext/libav/gstavauddec.c
|
|
+++ work/gst-libav-1.4.5/ext/libav/gstavauddec.c
|
|
@@ -582,9 +582,11 @@ gst_ffmpegauddec_audio_frame (GstFFMpegA
|
|
ffmpegdec->info.position);
|
|
}
|
|
|
|
+#if LIBAVUTIL_VERSION_INT >= AV_VERSION_INT(52,17,0)
|
|
/* Mark corrupted frames as corrupted */
|
|
if (frame.flags & AV_FRAME_FLAG_CORRUPT)
|
|
GST_BUFFER_FLAG_SET (*outbuf, GST_BUFFER_FLAG_CORRUPTED);
|
|
+#endif
|
|
} else {
|
|
*outbuf = NULL;
|
|
}
|
|
Index: work/gst-libav-1.4.5/ext/libav/gstavcodecmap.c
|
|
===================================================================
|
|
--- work.orig/gst-libav-1.4.5/ext/libav/gstavcodecmap.c
|
|
+++ work/gst-libav-1.4.5/ext/libav/gstavcodecmap.c
|
|
@@ -1206,6 +1206,7 @@ gst_ffmpeg_codecid_to_caps (enum AVCodec
|
|
}
|
|
break;
|
|
|
|
+#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,41,0)
|
|
case AV_CODEC_ID_HEVC:
|
|
caps =
|
|
gst_ff_vid_caps_new (context, NULL, codec_id, encode, "video/x-h265",
|
|
@@ -1226,6 +1227,7 @@ gst_ffmpeg_codecid_to_caps (enum AVCodec
|
|
g_value_unset (&arr);
|
|
}
|
|
break;
|
|
+#endif
|
|
|
|
case AV_CODEC_ID_INDEO5:
|
|
caps =
|
|
@@ -1706,11 +1708,13 @@ gst_ffmpeg_codecid_to_caps (enum AVCodec
|
|
}
|
|
break;
|
|
|
|
+#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,5,0)
|
|
case AV_CODEC_ID_AIC:
|
|
caps =
|
|
gst_ff_vid_caps_new (context, NULL, codec_id, encode,
|
|
"video/x-apple-intermediate-codec", NULL);
|
|
break;
|
|
+#endif
|
|
|
|
case AV_CODEC_ID_WS_VQA:
|
|
case AV_CODEC_ID_IDCIN:
|
|
@@ -3760,9 +3764,11 @@ gst_ffmpeg_caps_to_codecid (const GstCap
|
|
id = AV_CODEC_ID_FFV1;
|
|
video = TRUE;
|
|
}
|
|
+#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,5,0)
|
|
} else if (!strcmp (mimetype, "video/x-apple-intermediate-codec")) {
|
|
id = AV_CODEC_ID_AIC;
|
|
video = TRUE;
|
|
+#endif
|
|
} else if (!strcmp (mimetype, "audio/x-adpcm")) {
|
|
const gchar *layout;
|
|
|
|
@@ -3924,9 +3930,11 @@ gst_ffmpeg_caps_to_codecid (const GstCap
|
|
} else if (!strcmp (mimetype, "video/x-h264")) {
|
|
id = AV_CODEC_ID_H264;
|
|
video = TRUE;
|
|
+#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,41,0)
|
|
} else if (!strcmp (mimetype, "video/x-h265")) {
|
|
id = AV_CODEC_ID_HEVC;
|
|
video = TRUE;
|
|
+#endif
|
|
} else if (!strcmp (mimetype, "video/x-flash-video")) {
|
|
gint flvversion = 0;
|
|
|
|
Index: work/gst-libav-1.4.5/ext/libav/gstavviddec.c
|
|
===================================================================
|
|
--- work.orig/gst-libav-1.4.5/ext/libav/gstavviddec.c
|
|
+++ work/gst-libav-1.4.5/ext/libav/gstavviddec.c
|
|
@@ -368,8 +368,10 @@ gst_ffmpegviddec_open (GstFFMpegVidDec *
|
|
break;
|
|
}
|
|
|
|
+#if LIBAVUTIL_VERSION_INT >= AV_VERSION_INT(52,17,0)
|
|
gst_ffmpegviddec_context_set_flags (ffmpegdec->context,
|
|
CODEC_FLAG_OUTPUT_CORRUPT, ffmpegdec->output_corrupt);
|
|
+#endif
|
|
|
|
return TRUE;
|
|
|
|
@@ -733,17 +735,21 @@ invalid_frame:
|
|
fallback:
|
|
{
|
|
int c;
|
|
+#if LIBAVUTIL_VERSION_MAJOR >= 53
|
|
gboolean first = TRUE;
|
|
+#endif
|
|
int ret = avcodec_default_get_buffer (context, picture);
|
|
|
|
for (c = 0; c < AV_NUM_DATA_POINTERS; c++) {
|
|
ffmpegdec->stride[c] = picture->linesize[c];
|
|
|
|
+#if LIBAVUTIL_VERSION_MAJOR >= 53
|
|
if (picture->buf[c] == NULL && first) {
|
|
picture->buf[c] =
|
|
av_buffer_create (NULL, 0, dummy_free_buffer, dframe, 0);
|
|
first = FALSE;
|
|
}
|
|
+#endif
|
|
}
|
|
|
|
return ret;
|
|
@@ -1280,8 +1286,10 @@ gst_ffmpegviddec_video_frame (GstFFMpegV
|
|
ffmpegdec->picture->repeat_pict);
|
|
GST_DEBUG_OBJECT (ffmpegdec, "interlaced_frame:%d (current:%d)",
|
|
ffmpegdec->picture->interlaced_frame, ffmpegdec->ctx_interlaced);
|
|
+#if LIBAVUTIL_VERSION_INT >= AV_VERSION_INT(52,17,0)
|
|
GST_DEBUG_OBJECT (ffmpegdec, "corrupted frame: %d",
|
|
! !(ffmpegdec->picture->flags & AV_FRAME_FLAG_CORRUPT));
|
|
+#endif
|
|
|
|
if (G_UNLIKELY (ffmpegdec->picture->interlaced_frame !=
|
|
ffmpegdec->ctx_interlaced)) {
|
|
@@ -1298,9 +1306,11 @@ gst_ffmpegviddec_video_frame (GstFFMpegV
|
|
if (G_UNLIKELY (*ret != GST_FLOW_OK))
|
|
goto no_output;
|
|
|
|
+#if LIBAVUTIL_VERSION_INT >= AV_VERSION_INT(52,17,0)
|
|
/* Mark corrupted frames as corrupted */
|
|
if (ffmpegdec->picture->flags & AV_FRAME_FLAG_CORRUPT)
|
|
GST_BUFFER_FLAG_SET (out_frame->output_buffer, GST_BUFFER_FLAG_CORRUPTED);
|
|
+#endif
|
|
|
|
if (ffmpegdec->ctx_interlaced) {
|
|
/* set interlaced flags */
|
|
@@ -1980,7 +1990,9 @@ gst_ffmpegviddec_register (GstPlugin * p
|
|
case AV_CODEC_ID_MPEG4:
|
|
case AV_CODEC_ID_MSMPEG4V3:
|
|
case AV_CODEC_ID_H264:
|
|
+#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,41,0)
|
|
case AV_CODEC_ID_HEVC:
|
|
+#endif
|
|
case AV_CODEC_ID_RV10:
|
|
case AV_CODEC_ID_RV20:
|
|
case AV_CODEC_ID_RV30:
|
|
Index: work/gst-libav-1.4.5/ext/libav/gstavaudenc.c
|
|
===================================================================
|
|
--- work.orig/gst-libav-1.4.5/ext/libav/gstavaudenc.c
|
|
+++ work/gst-libav-1.4.5/ext/libav/gstavaudenc.c
|
|
@@ -409,7 +409,11 @@ gst_ffmpegaudenc_set_format (GstAudioEnc
|
|
static void
|
|
gst_ffmpegaudenc_free_avpacket (gpointer pkt)
|
|
{
|
|
+#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,16,0)
|
|
av_packet_unref ((AVPacket *) pkt);
|
|
+#else
|
|
+ av_destruct_packet ((AVPacket *) pkt);
|
|
+#endif
|
|
g_slice_free (AVPacket, pkt);
|
|
}
|
|
|
|
Index: work/gst-libav-1.4.5/ext/libav/gstavvidenc.c
|
|
===================================================================
|
|
--- work.orig/gst-libav-1.4.5/ext/libav/gstavvidenc.c
|
|
+++ work/gst-libav-1.4.5/ext/libav/gstavvidenc.c
|
|
@@ -576,7 +576,11 @@ gst_ffmpegvidenc_propose_allocation (Gst
|
|
static void
|
|
gst_ffmpegvidenc_free_avpacket (gpointer pkt)
|
|
{
|
|
+#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,16,0)
|
|
av_packet_unref ((AVPacket *) pkt);
|
|
+#else
|
|
+ av_destruct_packet ((AVPacket *) pkt);
|
|
+#endif
|
|
g_slice_free (AVPacket, pkt);
|
|
}
|
|
|