mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-01-03 05:10:03 +02:00
avcodec/videotoolboxenc: refactor dump encoder name
Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>
This commit is contained in:
parent
cb049d377f
commit
d526a34c20
@ -280,6 +280,41 @@ typedef struct VTEncContext {
|
|||||||
int max_ref_frames;
|
int max_ref_frames;
|
||||||
} VTEncContext;
|
} 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,
|
static int vtenc_populate_extradata(AVCodecContext *avctx,
|
||||||
CMVideoCodecType codec_type,
|
CMVideoCodecType codec_type,
|
||||||
CFStringRef profile_level,
|
CFStringRef profile_level,
|
||||||
@ -1176,33 +1211,9 @@ static int vtenc_create_encoder(AVCodecContext *avctx,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Dump the init encoder
|
status = vt_dump_encoder(avctx);
|
||||||
{
|
if (status < 0)
|
||||||
CFStringRef encoderID = NULL;
|
return status;
|
||||||
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);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (avctx->flags & AV_CODEC_FLAG_QSCALE && !vtenc_qscale_enabled()) {
|
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");
|
av_log(avctx, AV_LOG_ERROR, "Error: -q:v qscale not available for encoder. Use -b:v bitrate instead.\n");
|
||||||
|
Loading…
Reference in New Issue
Block a user