From da9bddc70ff8544f3294b880d719c4605e87ad97 Mon Sep 17 00:00:00 2001 From: Andrew Opalach Date: Fri, 10 Jul 2026 15:17:41 -0400 Subject: Handle rotation from codec Signed-off-by: Andrew Opalach --- src/codec/ffmpeg/common.c | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) (limited to 'src/codec/ffmpeg/common.c') diff --git a/src/codec/ffmpeg/common.c b/src/codec/ffmpeg/common.c index 59f59b7..5e10bcb 100644 --- a/src/codec/ffmpeg/common.c +++ b/src/codec/ffmpeg/common.c @@ -7,7 +7,7 @@ #include "common.h" -s64 camu_ff_frame_duration(AVFrame *frame) +s64 camu_ff_get_frame_duration(AVFrame *frame) { #if LIBAVUTIL_VERSION_INT >= AV_VERSION_INT(57, 30, 100) return frame->duration; @@ -16,6 +16,25 @@ s64 camu_ff_frame_duration(AVFrame *frame) #endif } +// https://code.videolan.org/videolan/libplacebo/-/blob/a7a18af88ff0a17c04840dcb3246047bb6b46df3/src/include/libplacebo/utils/libav_internal.h#L854 +const u8 *camu_ff_get_stream_side_data(const AVStream *stream, enum AVPacketSideDataType type) +{ +#if LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT(60, 15, 100) + AVCodecParameters *codecpar = stream->codecpar; + const AVPacketSideData *side_data = av_packet_side_data_get(codecpar->coded_side_data, + codecpar->nb_coded_side_data, type); + return side_data ? side_data->data : NULL; +#else + return av_stream_get_side_data(stream, type, NULL); +#endif +} + +const u8 *camu_ff_get_frame_side_data(AVFrame *frame, enum AVFrameSideDataType type) +{ + AVFrameSideData *side_data = av_frame_get_side_data(frame, type); + return side_data ? side_data->data : NULL; +} + static __thread struct { char buf[AL_LOG_MESSAGE_SIZE]; size_t pos; -- cgit v1.2.3-101-g0448