[FFmpeg-devel] [PATCH v1 1/1] libavformat/amr.c: remove mode range check

Sun Zhenliang hisunzhenliang at outlook.com
Sat Sep 4 14:51:50 EEST 2021


> 
> On Sep 4, 2021, at 16:01, Hendrik Leppkes <h.leppkes at gmail.com> wrote:
> 
> On Sat, Sep 4, 2021 at 9:10 AM sunzhenliang <hisunzhenliang at outlook.com> wrote:
>> 
>> Those comfort noise frames and empty frames should be
>> considered the correct frame. And amr.c/amr_read_packet()
>> also takes them as correct frames too.
>> 
>> Signed-off-by: sunzhenliang <hisunzhenliang at outlook.com>
>> ---
>> libavformat/amr.c | 4 ++--
>> 1 file changed, 2 insertions(+), 2 deletions(-)
>> 
>> diff --git a/libavformat/amr.c b/libavformat/amr.c
>> index 836b276fd5..540d8033d8 100644
>> --- a/libavformat/amr.c
>> +++ b/libavformat/amr.c
>> @@ -178,7 +178,7 @@ static int amrnb_probe(const AVProbeData *p)
>> 
>>     while (i < p->buf_size) {
>>         mode = b[i] >> 3 & 0x0F;
>> -        if (mode < 9 && (b[i] & 0x4) == 0x4) {
>> +        if ((b[i] & 0x4) == 0x4) {
>>             int last = b[i];
>>             int size = amrnb_packed_size[mode];
>>             while (size--) {
>> @@ -234,7 +234,7 @@ static int amrwb_probe(const AVProbeData *p)
>> 
>>     while (i < p->buf_size) {
>>         mode = b[i] >> 3 & 0x0F;
>> -        if (mode < 10 && (b[i] & 0x4) == 0x4) {
>> +        if ((b[i] & 0x4) == 0x4) {
>>             int last = b[i];
>>             int size = amrwb_packed_size[mode];
>>             while (size--) {
> 
> This is just probing, and expecting to find a significant amount of
> non-empty/non-noise frames seems like something you would want in
> probing.
> Does this actually fix detection of any samples?
> 
> It seems like this has the potential of quite substantially reducing
> the number of checked bits and thus invalid detections.
> 
> - Hendrik
> ____________________________________________

Thanks for reviewing.

Probing is expecting to find “correct” frames, which includes those kinds of comfort noise and NO_DATA frames mentioned in 3GPP Specifications.  

Besides, those frames are considered as normal frames while reading  packets. It seems better to take the same standard of frames in both reading and probing. 

- sunzhenliang





More information about the ffmpeg-devel mailing list