소스 검색

obs-ffmpeg: Fix for FFmpeg 6 deprecating a flag

Also modifies libobs & deps/media-playback.
AV_CODEC_CAP_TRUNCATED was removed in avcodec 60 [1].
We ifdef the code depending on it to allow compilation.

[1] avcodec: remove FF_API_FLAG_TRUNCATED
https://github.com/FFmpeg/FFmpeg/commit/3ceffe783965767e62d59e8e68ecd265c98460ec

Signed-off-by: pkv <[email protected]>
pkv 2 년 전
부모
커밋
2e79d4c902

+ 2 - 0
deps/media-playback/media-playback/decode.c

@@ -230,8 +230,10 @@ bool mp_decode_init(mp_media_t *m, enum AVMediaType type, bool hw)
 		d->in_frame = d->sw_frame;
 	}
 
+#if LIBAVCODEC_VERSION_MAJOR < 60
 	if (d->codec->capabilities & CODEC_CAP_TRUNC)
 		d->decoder->flags |= CODEC_FLAG_TRUNC;
+#endif
 
 	d->orig_pkt = av_packet_alloc();
 	d->pkt = av_packet_alloc();

+ 2 - 0
deps/media-playback/media-playback/decode.h

@@ -37,8 +37,10 @@ extern "C" {
 #endif
 
 #if LIBAVCODEC_VERSION_MAJOR >= 58
+#if LIBAVCODEC_VERSION_MAJOR < 60
 #define CODEC_CAP_TRUNC AV_CODEC_CAP_TRUNCATED
 #define CODEC_FLAG_TRUNC AV_CODEC_FLAG_TRUNCATED
+#endif
 #else
 #define CODEC_CAP_TRUNC CODEC_CAP_TRUNCATED
 #define CODEC_FLAG_TRUNC CODEC_FLAG_TRUNCATED

+ 2 - 0
libobs/obs-ffmpeg-compat.h

@@ -23,8 +23,10 @@
 #endif
 
 #if LIBAVCODEC_VERSION_MAJOR >= 58
+#if LIBAVCODEC_VERSION_MAJOR < 60
 #define CODEC_CAP_TRUNC AV_CODEC_CAP_TRUNCATED
 #define CODEC_FLAG_TRUNC AV_CODEC_FLAG_TRUNCATED
+#endif
 #define INPUT_BUFFER_PADDING_SIZE AV_INPUT_BUFFER_PADDING_SIZE
 #else
 #define CODEC_CAP_TRUNC CODEC_CAP_TRUNCATED

+ 2 - 0
plugins/obs-ffmpeg/obs-ffmpeg-compat.h

@@ -27,8 +27,10 @@
 #endif
 
 #if LIBAVCODEC_VERSION_MAJOR >= 58
+#if LIBAVCODEC_VERSION_MAJOR < 60
 #define CODEC_CAP_TRUNC AV_CODEC_CAP_TRUNCATED
 #define CODEC_FLAG_TRUNC AV_CODEC_FLAG_TRUNCATED
+#endif
 #define CODEC_FLAG_GLOBAL_H AV_CODEC_FLAG_GLOBAL_HEADER
 #else
 #define CODEC_CAP_TRUNC CODEC_CAP_TRUNCATED

+ 2 - 0
plugins/win-dshow/ffmpeg-decode.c

@@ -105,8 +105,10 @@ int ffmpeg_decode_init(struct ffmpeg_decode *decode, enum AVCodecID id,
 		return ret;
 	}
 
+#if LIBAVCODEC_VERSION_MAJOR < 60
 	if (decode->codec->capabilities & CODEC_CAP_TRUNC)
 		decode->decoder->flags |= CODEC_FLAG_TRUNC;
+#endif
 
 	return 0;
 }