mirror of
https://gitee.com/openharmony/third_party_ffmpeg
synced 2024-11-26 20:50:34 +00:00
lavc/amrwbdec: Do not ignore NO_DATA frames.
Fixes the actual output duration of the sample in ticket #7113.
This commit is contained in:
parent
56f5924629
commit
bef3c14dd1
@ -1884,7 +1884,7 @@ static const float lpf_7_coef[31] = { // low pass, 7kHz cutoff
|
||||
/** Core frame sizes in each mode */
|
||||
static const uint16_t cf_sizes_wb[] = {
|
||||
132, 177, 253, 285, 317, 365, 397, 461, 477,
|
||||
40 /// SID/comfort noise frame
|
||||
40, 0, 0, 0, 0, 0, 0
|
||||
};
|
||||
|
||||
#endif /* AVCODEC_AMRWBDATA_H */
|
||||
|
@ -1119,12 +1119,19 @@ static int amrwb_decode_frame(AVCodecContext *avctx, void *data,
|
||||
buf_out = (float *)frame->data[0];
|
||||
|
||||
header_size = decode_mime_header(ctx, buf);
|
||||
expected_fr_size = ((cf_sizes_wb[ctx->fr_cur_mode] + 7) >> 3) + 1;
|
||||
|
||||
if (ctx->fr_cur_mode == NO_DATA) {
|
||||
for (i = 0; i < frame->nb_samples; i++)
|
||||
buf_out[i] = 0.f;
|
||||
*got_frame_ptr = 1;
|
||||
return expected_fr_size;
|
||||
}
|
||||
if (ctx->fr_cur_mode > MODE_SID) {
|
||||
av_log(avctx, AV_LOG_ERROR,
|
||||
"Invalid mode %d\n", ctx->fr_cur_mode);
|
||||
return AVERROR_INVALIDDATA;
|
||||
}
|
||||
expected_fr_size = ((cf_sizes_wb[ctx->fr_cur_mode] + 7) >> 3) + 1;
|
||||
|
||||
if (buf_size < expected_fr_size) {
|
||||
av_log(avctx, AV_LOG_ERROR,
|
||||
|
Loading…
Reference in New Issue
Block a user