[FFmpeg-devel] Patch to libavc/opus to create extradata if missing
Andreas Rheinhardt
andreas.rheinhardt at gmail.com
Mon Jan 4 01:34:56 EET 2021
Lynne:
> 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.
+1 if the case of more than two channels has been properly tested.
- Andreas
More information about the ffmpeg-devel
mailing list