diff --git a/libavformat/mov.c b/libavformat/mov.c
index ad51701caee4b46619192725b453a3cbb91abb10..6bba5ba08e4abd8b71e0fb3b9ee75371dfc7ae13 100644
--- a/libavformat/mov.c
+++ b/libavformat/mov.c
@@ -1817,10 +1817,11 @@ static int mov_read_packet(AVFormatContext *s, AVPacket *pkt)
 #ifdef DEBUG
         fprintf(stderr, "sc[ffid %d]->sample_size = %d\n", sc->ffindex, sc->sample_size);
 #endif
-        // sample_size is not always correct for audio. Quicktime ignores this value and
-        // computes it differently.
-        if(s->streams[sc->ffindex]->codec.codec_type == CODEC_TYPE_VIDEO)
-            size = sc->sample_size?sc->sample_size:sc->sample_sizes[sc->current_sample];
+        //size = sc->sample_sizes[sc->current_sample];
+        // that ain't working...
+        //size = (sc->sample_size)?sc->sample_size:sc->sample_sizes[sc->current_sample];
+        size = (sc->sample_size > 1)?sc->sample_size:sc->sample_sizes[sc->current_sample];
+
         sc->current_sample++;
         sc->left_in_chunk--;
 
@@ -1906,8 +1907,7 @@ again:
 
 #ifdef MOV_SPLIT_CHUNKS
     /* split chunks into samples */
-    if (s->streams[sc->ffindex]->codec.codec_type == CODEC_TYPE_VIDEO) {
-        // This does not support split audio, as the sample_size is often not correct
+    if (sc->sample_size == 0) {
         idx = sc->sample_to_chunk_index;
         if ((idx + 1 < sc->sample_to_chunk_sz)
                 && (sc->next_chunk >= sc->sample_to_chunk[idx + 1].first))
@@ -1917,7 +1917,7 @@ again:
 	    mov->partial = sc;
             /* we'll have to get those samples before next chunk */
             sc->left_in_chunk = sc->sample_to_chunk[idx].count - 1;
-            size = sc->sample_size?sc->sample_size:sc->sample_sizes[sc->current_sample];
+            size = (sc->sample_size > 1)?sc->sample_size:sc->sample_sizes[sc->current_sample];
         }
 
         sc->current_sample++;