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;