mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-01-29 22:00:58 +02:00
libopenh264enc: Handle sample_aspect_ratio
This commit is contained in:
parent
e9d2e3fdaa
commit
be827e1d38
@ -164,6 +164,47 @@ FF_ENABLE_DEPRECATION_WARNINGS
|
||||
param.sSpatialLayers[0].iSpatialBitrate = param.iTargetBitrate;
|
||||
param.sSpatialLayers[0].iMaxSpatialBitrate = param.iMaxBitrate;
|
||||
|
||||
#if OPENH264_VER_AT_LEAST(1, 7)
|
||||
if (avctx->sample_aspect_ratio.num && avctx->sample_aspect_ratio.den) {
|
||||
// Table E-1.
|
||||
static const AVRational sar_idc[] = {
|
||||
{ 0, 0 }, // Unspecified (never written here).
|
||||
{ 1, 1 }, { 12, 11 }, { 10, 11 }, { 16, 11 },
|
||||
{ 40, 33 }, { 24, 11 }, { 20, 11 }, { 32, 11 },
|
||||
{ 80, 33 }, { 18, 11 }, { 15, 11 }, { 64, 33 },
|
||||
{ 160, 99 }, // Last 3 are unknown to openh264: { 4, 3 }, { 3, 2 }, { 2, 1 },
|
||||
};
|
||||
static const ESampleAspectRatio asp_idc[] = {
|
||||
ASP_UNSPECIFIED,
|
||||
ASP_1x1, ASP_12x11, ASP_10x11, ASP_16x11,
|
||||
ASP_40x33, ASP_24x11, ASP_20x11, ASP_32x11,
|
||||
ASP_80x33, ASP_18x11, ASP_15x11, ASP_64x33,
|
||||
ASP_160x99,
|
||||
};
|
||||
int num, den, i;
|
||||
|
||||
av_reduce(&num, &den, avctx->sample_aspect_ratio.num,
|
||||
avctx->sample_aspect_ratio.den, 65535);
|
||||
|
||||
for (i = 1; i < FF_ARRAY_ELEMS(sar_idc); i++) {
|
||||
if (num == sar_idc[i].num &&
|
||||
den == sar_idc[i].den)
|
||||
break;
|
||||
}
|
||||
if (i == FF_ARRAY_ELEMS(sar_idc)) {
|
||||
param.sSpatialLayers[0].eAspectRatio = ASP_EXT_SAR;
|
||||
param.sSpatialLayers[0].sAspectRatioExtWidth = num;
|
||||
param.sSpatialLayers[0].sAspectRatioExtHeight = den;
|
||||
} else {
|
||||
param.sSpatialLayers[0].eAspectRatio = asp_idc[i];
|
||||
}
|
||||
param.sSpatialLayers[0].bAspectRatioPresent = true;
|
||||
}
|
||||
else {
|
||||
param.sSpatialLayers[0].bAspectRatioPresent = false;
|
||||
}
|
||||
#endif
|
||||
|
||||
if ((avctx->slices > 1) && (s->max_nal_size)) {
|
||||
av_log(avctx, AV_LOG_ERROR,
|
||||
"Invalid combination -slices %d and -max_nal_size %d.\n",
|
||||
|
Loading…
x
Reference in New Issue
Block a user