Now we just use one ADTS raw frame to calculate the bit rate, it's
lead to a larger error when get the duration from bit rate, the
improvement cumulate Nth ADTS frames to get the average bit rate.
e,g used the command get the duration like:
ffprobe -show_entries format=duration -i fate-suite/aac/foo.aac
before this improvement dump the duration=2.173935
after this improvement dump the duration=1.979267
in fact, the real duration can be get by command like:
ffmpeg -i fate-suite/aac/foo.aac -f null /dev/null with time=00:00:01.97
Also update the fate-adtstoasc_ticket3715.
Signed-off-by: Jun Zhao <barryjzhao@tencent.com>
avctx->audio_service_type = s->service_type;
}
- if (avctx->codec_id != AV_CODEC_ID_EAC3)
- avctx->bit_rate = s->bit_rate;
+ /* Calculate the average bit rate */
+ s->frame_number++;
+ if (avctx->codec_id != AV_CODEC_ID_EAC3) {
+ avctx->bit_rate =
+ (s->last_bit_rate * (s->frame_number -1) + s->bit_rate)/s->frame_number;
+ s->last_bit_rate = avctx->bit_rate;
+ }
}
return i;
uint64_t state;
int need_next_header;
+ int frame_number;
+ int last_bit_rate;
enum AVCodecID codec_id;
} AACAC3ParseContext;
-4110be924e21846d0e174fac679b062e *tests/data/fate/adtstoasc_ticket3715.mov
+3e63cbb6bb6ec756d79fab2632fef305 *tests/data/fate/adtstoasc_ticket3715.mov
33324 tests/data/fate/adtstoasc_ticket3715.mov
#extradata 0: 2, 0x00340022
#tb 0: 1/44100