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.
gentoo-overlay/media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.4.5-lib...

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