Commit c356b686 authored by Rick Kern's avatar Rick Kern Committed by wm4

lavc/videotoolboxenc: Support pixel aspect ratio

Signed-off-by: 's avatarRick Kern <kernrj@gmail.com>
parent 9d8a38d2
...@@ -748,6 +748,69 @@ static av_cold int vtenc_init(AVCodecContext *avctx) ...@@ -748,6 +748,69 @@ static av_cold int vtenc_init(AVCodecContext *avctx)
} }
} }
if (avctx->sample_aspect_ratio.num != 0) {
CFNumberRef num;
CFNumberRef den;
CFMutableDictionaryRef par;
AVRational *avpar = &avctx->sample_aspect_ratio;
av_reduce(&avpar->num, &avpar->den,
avpar->num, avpar->den,
0xFFFFFFFF);
num = CFNumberCreate(kCFAllocatorDefault,
kCFNumberIntType,
&avpar->num);
den = CFNumberCreate(kCFAllocatorDefault,
kCFNumberIntType,
&avpar->den);
par = CFDictionaryCreateMutable(kCFAllocatorDefault,
2,
&kCFCopyStringDictionaryKeyCallBacks,
&kCFTypeDictionaryValueCallBacks);
if (!par || !num || !den) {
if (par) CFRelease(par);
if (num) CFRelease(num);
if (den) CFRelease(den);
return AVERROR(ENOMEM);
}
CFDictionarySetValue(
par,
kCMFormatDescriptionKey_PixelAspectRatioHorizontalSpacing,
num);
CFDictionarySetValue(
par,
kCMFormatDescriptionKey_PixelAspectRatioVerticalSpacing,
den);
status = VTSessionSetProperty(vtctx->session,
kVTCompressionPropertyKey_PixelAspectRatio,
par);
CFRelease(par);
CFRelease(num);
CFRelease(den);
if (status) {
av_log(avctx,
AV_LOG_ERROR,
"Error setting pixel aspect ratio to %d:%d: %d.\n",
avctx->sample_aspect_ratio.num,
avctx->sample_aspect_ratio.den,
status);
return AVERROR_EXTERNAL;
}
}
if (!vtctx->has_b_frames) { if (!vtctx->has_b_frames) {
status = VTSessionSetProperty(vtctx->session, status = VTSessionSetProperty(vtctx->session,
kVTCompressionPropertyKey_AllowFrameReordering, kVTCompressionPropertyKey_AllowFrameReordering,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment