diff options
Diffstat (limited to 'media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.4.5-libav9.patch')
-rw-r--r-- | media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.4.5-libav9.patch | 180 |
1 files changed, 180 insertions, 0 deletions
diff --git a/media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.4.5-libav9.patch b/media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.4.5-libav9.patch new file mode 100644 index 000000000000..a1a4f90db0cd --- /dev/null +++ b/media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.4.5-libav9.patch @@ -0,0 +1,180 @@ +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); + } + |