Hi,

Am 14.04.22 um 08:48 schrieb Simone Karin Lehmann:
Somehow it seems, that this patch never got onto the mailing list. So may I 
kindly ask you to review it.

--
Stay hungry, stay foolish

Am 26.01.2022 um 17:31 schrieb Simone Karin Lehmann <sim...@lisanet.de>:


The patch adds an option to the hevc_videotoolbox encoder to prioritize speed 
for Macs with Apple Silicon CPU.

This speeds up encodings up to 50% - 70%. In conjunction with the qcale option 
-q, visible quality will be unchanged. The increase in file size is very 
moderate, although still depending on the source material.


Signed-off-by: Simone Karin Lehmann <sim...@lisanet.de>
---
libavcodec/videotoolboxenc.c | 13 +++++++++++++
1 file changed, 13 insertions(+)

diff --git a/libavcodec/videotoolboxenc.c b/libavcodec/videotoolboxenc.c
index 418ff00b8d..ab0dad6cbc 100644
--- a/libavcodec/videotoolboxenc.c
+++ b/libavcodec/videotoolboxenc.c
@@ -236,6 +236,7 @@ typedef struct VTEncContext {
     int allow_sw;
     int require_sw;
     double alpha_quality;
+    int64_t prio_speed;

int64_t is definitely overkill.


     bool flushing;
     int has_b_frames;
@@ -1145,6 +1146,17 @@ static int vtenc_create_encoder(AVCodecContext   *avctx,
         return AVERROR_EXTERNAL;
     }

+    // prioritize speed over quality
+    if (vtctx->prio_speed) {
+        status = VTSessionSetProperty(vtctx->session,
+                                      
kVTCompressionPropertyKey_PrioritizeEncodingSpeedOverQuality,
+                                      kCFBooleanTrue);
+        if (status) {
+            av_log(avctx, AV_LOG_ERROR, "Error setting 
PrioritizeEncodingSpeedOverQuality property: %d\n", status);
+            return AVERROR_EXTERNAL;
+        }

If its called to priotize speed over qual, why not just print a warning and 
continue without this option?

+    }
+
     if ((vtctx->codec_id == AV_CODEC_ID_H264 || vtctx->codec_id == 
AV_CODEC_ID_HEVC)
             && max_rate > 0) {
         bytes_per_second_value = max_rate >> 3;
@@ -2744,6 +2756,7 @@ static const AVOption hevc_options[] = {
     { "main10",   "Main10 Profile",   0, AV_OPT_TYPE_CONST, { .i64 = HEVC_PROF_MAIN10 }, 
INT_MIN, INT_MAX, VE, "profile" },

     { "alpha_quality", "Compression quality for the alpha channel", 
OFFSET(alpha_quality), AV_OPT_TYPE_DOUBLE, { .dbl = 0.0 }, 0.0, 1.0, VE },
+    { "prio_speed", "prioritize encoding speed", OFFSET(prio_speed), 
AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, VE },

Just use an int.

Thanks,
Thilo
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to