[FFmpeg-devel] Patch to libavc/opus to create extradata if missing

James Almer jamrial at gmail.com
Mon Jan 4 01:33:33 EET 2021


On 1/3/2021 8:05 PM, Lynne wrote:
> Jan 3, 2021, 23:48 by jon at jonb.org:
> 
>>
>>
>> On Sun, Jan 3, 2021, at 2:25 PM, Lynne wrote:
>>
>>>> +    /* Input sample rate (0 = unspecified) */> +    bytestream_put_le32  (&bs, 0);
>>> Put in 48000 here. Stream copy will preserve extradata, and we don't want to
>>> generate weird streams, even if our decoder ignores this.
>>>
>>>> +    /* Channel count */> +    bytestream_put_byte  (&bs, codecpar->channels);> +    /* Mapping family */> +    bytestream_put_byte  (&bs, 0x0);
>>> This will only work for mono and stereo. The decoder will error out if more than
>>> 2 channels are present. For now maybe error out if the number of channels is greater than 2?
>>>
>>
>> Ok! Sample rate changed to 48000. If codecpar->channels is greater than 2, AVERROR_INVALIDDATA will be returned. Please advise if there is a better error code.
>>
>> Thanks Lynne!
>>
> 
>> +static int opus_write_extradata(AVCodecParameters *codecpar) {
> Function opening brackets must be put by themselves on a new line.
> 
>> +    if (codecpar->channels > 2) {
>> +        return AVERROR_INVALIDDATA;
>> +    }
>> +
>> +    ret = ff_alloc_extradata(codecpar, 19);
>> +    if (ret < 0) {
>> +        return ret;
>> +    }
> We don't wrap 1-line conditions in brackets, so just remove them.
> 
>> +                av_log(s1, AV_LOG_ERROR,
>> +                        "Error creating opus extradata: %s\n",
>> +                        av_err2str(ret));
> Weird indentation. There's an extra space in the 2 lines.
> 
> Apart from that LGTM.

Made those changes and pushed it.


More information about the ffmpeg-devel mailing list