[FFmpeg-devel] [PATCH] libx265: Use x265_param_parse to set the SAR

James Almer jamrial at gmail.com
Tue Apr 8 21:08:40 CEST 2014


On 08/04/14 3:37 PM, James Almer wrote:
> On 08/04/14 2:47 PM, Derek Buitenhuis wrote:
>> Signed-off-by: Derek Buitenhuis <derek.buitenhuis at gmail.com>
>> ---
>> This doesn't require an API requirement bump, and should be future proof.
>> ---
>>  libavcodec/libx265.c | 11 ++++++-----
>>  1 file changed, 6 insertions(+), 5 deletions(-)
>>
>> diff --git a/libavcodec/libx265.c b/libavcodec/libx265.c
>> index 1788f65..48065f6 100644
>> --- a/libavcodec/libx265.c
>> +++ b/libavcodec/libx265.c
>> @@ -77,6 +77,7 @@ static av_cold int libx265_encode_init(AVCodecContext *avctx)
>>  {
>>      libx265Context *ctx = avctx->priv_data;
>>      x265_nal *nal;
>> +    char sar[10];
>>      int sar_num, sar_den;
>>      int nnal;
>>  
>> @@ -115,11 +116,11 @@ static av_cold int libx265_encode_init(AVCodecContext *avctx)
>>      av_reduce(&sar_num, &sar_den,
>>                avctx->sample_aspect_ratio.num,
>>                avctx->sample_aspect_ratio.den, 4096);
>> -    ctx->params->vui.bEnableVuiParametersPresentFlag = 1;
>> -    ctx->params->vui.bEnableAspectRatioIdc           = 1;
>> -    ctx->params->vui.aspectRatioIdc                  = 255;
>> -    ctx->params->vui.sarWidth                        = sar_num;
>> -    ctx->params->vui.sarHeight                       = sar_den;
>> +    snprintf(sar, 10, "%d:%d", sar_num, sar_den);
>> +    if (x265_param_parse(ctx->params, "sar", sar) == X265_PARAM_BAD_VALUE) {
>> +        av_log(avctx, AV_LOG_ERROR, "Invalid SAR: %d:%d.\n", sar_num, sar_den);
>> +        return AVERROR_INVALIDDATA;
>> +    }
>>  
>>      if (x265_max_bit_depth == 8)
>>          ctx->params->internalBitDepth = 8;
>>
> 
> Can this be backported to ffmpeg 2.2? This changes the same code that forced the API 
> bump from 7 to 9 after the 2.2 branch was cut from master.
> If x265_param_parse() is available in API 7 (libx265 0.8), It will allow ffmpeg 2.2 
> to work with the current stable version (libx265 0.9) in addition to the old stable 
> it currently supports.
> 

Just tested and it works, so this should be backported for ffmpeg 2.2.1.
Especially considering that API 13 (libx265 0.9) fixed x265_encode_headers().


More information about the ffmpeg-devel mailing list