[FFmpeg-devel] [PATCH] libtheoraenc: Set encoding speed level from compression_level

bernat.arlandis at gmail.com bernat.arlandis at gmail.com
Tue Jul 15 20:42:16 EEST 2025


From: Bernat Arlandis <berarma at hotmail.com>

---
 libavcodec/libtheoraenc.c | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/libavcodec/libtheoraenc.c b/libavcodec/libtheoraenc.c
index eb94458639..ac6653fac8 100644
--- a/libavcodec/libtheoraenc.c
+++ b/libavcodec/libtheoraenc.c
@@ -244,6 +244,17 @@ static av_cold int encode_init(AVCodecContext* avc_context)
         return AVERROR_EXTERNAL;
     }
 
+    // Set encoding speed
+    if (avc_context->compression_level != FF_COMPRESSION_DEFAULT) {
+        int max_speed_level;
+        int speed_level = avc_context->compression_level;
+        th_encode_ctl(h->t_state, TH_ENCCTL_GET_SPLEVEL_MAX, &max_speed_level, sizeof(max_speed_level));
+        if (speed_level > max_speed_level) {
+            speed_level = max_speed_level;
+        }
+        th_encode_ctl(h->t_state, TH_ENCCTL_SET_SPLEVEL, &speed_level, sizeof(speed_level));
+    }
+
     // need to enable 2 pass (via TH_ENCCTL_2PASS_) before encoding headers
     if (avc_context->flags & AV_CODEC_FLAG_PASS1) {
         if ((ret = get_stats(avc_context, 0)) < 0)

base-commit: bedfb6eca402037f5cbb115fa767d106b8c14f1c
-- 
2.39.5



More information about the ffmpeg-devel mailing list