diff --git a/libavformat/mpeg.c b/libavformat/mpeg.c
index e3dd404677d4c4824a3fb6989ae13705debf49cd..0c507e9f01f46e64cac8eaa64e0f82e7b36b838d 100644
--- a/libavformat/mpeg.c
+++ b/libavformat/mpeg.c
@@ -450,13 +450,14 @@ redo:
             return ret;
 
         startcode = avio_r8(s->pb);
-        if (startcode == 0x0b && avio_r8(s->pb) == 0x77) {
-            startcode = 0x80;
-            m->raw_ac3 = 1;
-            avio_skip(s->pb, -2);
+        m->raw_ac3 = 0;
+        if (startcode == 0x0b) {
+            if (avio_r8(s->pb) == 0x77) {
+                startcode = 0x80;
+                m->raw_ac3 = 1;
+                avio_skip(s->pb, -2);
+            }
         } else {
-            m->raw_ac3 = 0;
-            avio_skip(s->pb, -1);
             len--;
         }
     }