On Sat, Nov 25, 2023 at 12:06 PM Zhao Zhili <quinkbl...@foxmail.com> wrote: > > From: Zhao Zhili <zhiliz...@tencent.com> > > --- > libavcodec/videotoolboxenc.c | 65 +++++++++++++++++++++--------------- > 1 file changed, 38 insertions(+), 27 deletions(-) > > diff --git a/libavcodec/videotoolboxenc.c b/libavcodec/videotoolboxenc.c > index b8a07e4e44..fbd33fd3f9 100644 > --- a/libavcodec/videotoolboxenc.c > +++ b/libavcodec/videotoolboxenc.c > @@ -280,6 +280,41 @@ typedef struct VTEncContext { > int max_ref_frames; > } VTEncContext; > > +static int vt_dump_encoder(AVCodecContext *avctx) > +{ > + VTEncContext *vtctx = avctx->priv_data; > + CFStringRef encoder_id = NULL; > + int status; > + CFIndex length, max_size; > + char *name; > + > + status = VTSessionCopyProperty(vtctx->session, > + > compat_keys.kVTCompressionPropertyKey_EncoderID, > + kCFAllocatorDefault, > + &encoder_id); > + // OK if not supported > + if (status != noErr) > + return 0; > + > + length = CFStringGetLength(encoder_id); > + max_size = CFStringGetMaximumSizeForEncoding(length, > kCFStringEncodingUTF8); > + name = av_malloc(max_size); > + if (!name) { > + CFRelease(encoder_id); > + return AVERROR(ENOMEM); > + } > + > + CFStringGetCString(encoder_id, > + name, > + max_size, > + kCFStringEncodingUTF8); > + av_log(avctx, AV_LOG_DEBUG, "Init the encoder: %s\n", name); > + av_freep(&name); > + CFRelease(encoder_id); > + > + return 0; > +} > + > static int vtenc_populate_extradata(AVCodecContext *avctx, > CMVideoCodecType codec_type, > CFStringRef profile_level, > @@ -1176,33 +1211,9 @@ static int vtenc_create_encoder(AVCodecContext > *avctx, > } > #endif > > - // Dump the init encoder > - { > - CFStringRef encoderID = NULL; > - status = VTSessionCopyProperty(vtctx->session, > - > compat_keys.kVTCompressionPropertyKey_EncoderID, > - kCFAllocatorDefault, > - &encoderID); > - if (status == noErr) { > - CFIndex length = CFStringGetLength(encoderID); > - CFIndex max_size = CFStringGetMaximumSizeForEncoding(length, > kCFStringEncodingUTF8); > - char *name = av_malloc(max_size); > - if (!name) { > - CFRelease(encoderID); > - return AVERROR(ENOMEM); > - } > - > - CFStringGetCString(encoderID, > - name, > - max_size, > - kCFStringEncodingUTF8); > - av_log(avctx, AV_LOG_DEBUG, "Init the encoder: %s\n", name); > - > - av_freep(&name); > - } > - if (encoderID != NULL) > - CFRelease(encoderID); > - } > + status = vt_dump_encoder(avctx); > + if (status < 0) > + return status; > > if (avctx->flags & AV_CODEC_FLAG_QSCALE && !vtenc_qscale_enabled()) { > av_log(avctx, AV_LOG_ERROR, "Error: -q:v qscale not available for > encoder. Use -b:v bitrate instead.\n"); > -- > 2.42.0 > Patchset looks good for if pass the build _______________________________________________ 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".