[FFmpeg-cvslog] avcodec/libtheora: fix setting keyframe_mask
James Almer
git at videolan.org
Fri May 16 20:59:21 EEST 2025
ffmpeg | branch: release/4.2 | James Almer <jamrial at gmail.com> | Fri Feb 7 00:04:25 2025 -0300| [eb88a2318ef24be53b12e1d2eb225f80806b9b75] | committer: Michael Niedermayer
avcodec/libtheora: fix setting keyframe_mask
t_info.keyframe_granule_shift is set to the library default of 6, which is ok
for gop sizes up to 63. Since there's apparently no way to query the updated
value after having forced a gop value with TH_ENCCTL_SET_KEYFRAME_FREQUENCY_FORCE,
calculate it manually instead.
Fixes ticket #11454.
Signed-off-by: James Almer <jamrial at gmail.com>
(cherry picked from commit 22aa71d4da37a4ad2b0d28deeace64b57aa2ef50)
Signed-off-by: Michael Niedermayer <michael at niedermayer.cc>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=eb88a2318ef24be53b12e1d2eb225f80806b9b75
---
libavcodec/libtheoraenc.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/libavcodec/libtheoraenc.c b/libavcodec/libtheoraenc.c
index 16966ed433..a16211c403 100644
--- a/libavcodec/libtheoraenc.c
+++ b/libavcodec/libtheoraenc.c
@@ -232,7 +232,7 @@ static av_cold int encode_init(AVCodecContext* avc_context)
return AVERROR_EXTERNAL;
}
- h->keyframe_mask = (1 << t_info.keyframe_granule_shift) - 1;
+ h->keyframe_mask = (1 << av_ceil_log2(avc_context->gop_size)) - 1;
/* Clear up theora_info struct */
th_info_clear(&t_info);
More information about the ffmpeg-cvslog
mailing list