diff --git a/libavformat/electronicarts.c b/libavformat/electronicarts.c index 02099545f404058a2f8383b2c5af694afa54787d..fadf2fbaa418067dcc2c532376c967748c5e1bbf 100644 --- a/libavformat/electronicarts.c +++ b/libavformat/electronicarts.c @@ -304,10 +304,17 @@ static int ea_read_packet(AVFormatContext *s, pkt->pts *= ea->audio_frame_counter; pkt->pts /= ea->sample_rate; + switch (ea->audio_codec) { + case CODEC_ID_ADPCM_EA: /* 2 samples/byte, 1 or 2 samples per frame depending * on stereo; chunk also has 12-byte header */ ea->audio_frame_counter += ((chunk_size - 12) * 2) / ea->num_channels; + break; + default: + ea->audio_frame_counter += chunk_size / + (ea->bytes * ea->num_channels); + } } packet_read = 1;