diff --git a/libavformat/mov.c b/libavformat/mov.c
index 63a9e75194073874ad0ff87f362992280fe1d86c..f41c53e314ba1b7b13cce5732b026191d429ae35 100644
--- a/libavformat/mov.c
+++ b/libavformat/mov.c
@@ -1502,6 +1502,7 @@ static int mov_read_header(AVFormatContext *s, AVFormatParameters *ap)
 
     for(i=0; i<mov->total_streams; i++) {
         MOVStreamContext *sc = mov->streams[i];
+        AVStream *st = s->streams[i];
         /* sanity checks */
         if(!sc->stts_count || !sc->chunk_count || !sc->sample_to_chunk_sz ||
            (!sc->sample_size && !sc->sample_count)){
@@ -1514,6 +1515,9 @@ static int mov_read_header(AVFormatContext *s, AVFormatParameters *ap)
             sc->time_scale= mov->time_scale;
         av_set_pts_info(s->streams[i], 64, sc->time_rate, sc->time_scale);
 
+        if (st->codec->codec_type == CODEC_TYPE_AUDIO && sc->stts_count == 1)
+            st->codec->frame_size = sc->stts_data[0].duration;
+
         if(s->streams[i]->duration != AV_NOPTS_VALUE){
             assert(s->streams[i]->duration % sc->time_rate == 0);
             s->streams[i]->duration /= sc->time_rate;