[FFmpeg-devel] [PATCH] lavc/videotoolboxenc: set DataRateLimits for hevc

"zhilizhao(赵志立)" quinkblack at foxmail.com
Mon Apr 26 10:24:25 EEST 2021



> On Apr 25, 2021, at 11:31 PM, Rick Kern <kernrj at gmail.com> wrote:
> 
> On Sun, Apr 25, 2021 at 4:06 AM Zhao Zhili <quinkblack at foxmail.com> wrote:
> 
>> From the comment it's not available on old version. It works now
>> by testing on macOS 11.2.1. There is no document about since when.
>> So trying to set the configuration and ignore the error for hevc.
>> ---
>> libavcodec/videotoolboxenc.c | 10 +++++++---
>> 1 file changed, 7 insertions(+), 3 deletions(-)
>> 
>> diff --git a/libavcodec/videotoolboxenc.c b/libavcodec/videotoolboxenc.c
>> index 9b7ee6720c..cefd70fa88 100644
>> --- a/libavcodec/videotoolboxenc.c
>> +++ b/libavcodec/videotoolboxenc.c
>> @@ -1113,8 +1113,8 @@ static int vtenc_create_encoder(AVCodecContext
>> *avctx,
>>         return AVERROR_EXTERNAL;
>>     }
>> 
>> -    if (vtctx->codec_id == AV_CODEC_ID_H264 && max_rate > 0) {
>> -        // kVTCompressionPropertyKey_DataRateLimits is not available for
>> HEVC
>> +    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;
>>         bytes_per_second = CFNumberCreate(kCFAllocatorDefault,
>>                                           kCFNumberSInt64Type,
>> @@ -1152,7 +1152,11 @@ static int vtenc_create_encoder(AVCodecContext
>> *avctx,
>> 
>>         if (status) {
>>             av_log(avctx, AV_LOG_ERROR, "Error setting max bitrate
>> property: %d\n", status);
>> -            return AVERROR_EXTERNAL;
>> +            // kVTCompressionPropertyKey_DataRateLimits is available for
>> HEVC
>> +            // now but not on old release. There is no document about
>> since
>> +            // when. So ignore the error if it failed for hevc.
>> +            if (vtctx->codec_id != AV_CODEC_ID_HEVC)
>> +                return AVERROR_EXTERNAL;
>> 
> The failure should be logged. Looks good otherwise.

Yes and the failure is already logged just above the comments after `if (status)`.

> 
>         }
>>     }
>> 
>> --
>> 2.31.1
>> 
>> 
>> _______________________________________________
>> ffmpeg-devel mailing list
>> ffmpeg-devel at ffmpeg.org
>> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>> 
>> To unsubscribe, visit link above, or email
>> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".
>> 
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> 
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".
> 



More information about the ffmpeg-devel mailing list