changeset 37166:3721d8f98dfe

Support -ni option for all formats. Can work around playback issues with badly interleaved files.
author reimar
date Sun, 31 Aug 2014 09:39:13 +0000
parents 681c7f805a23
children 30a8897dd22d
files DOCS/man/en/mplayer.1 cfg-common.h libmpdemux/demuxer.c
diffstat 3 files changed, 7 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/DOCS/man/en/mplayer.1	Sun Aug 31 09:33:38 2014 +0000
+++ b/DOCS/man/en/mplayer.1	Sun Aug 31 09:39:13 2014 +0000
@@ -1843,9 +1843,12 @@
 .PD 1
 .
 .TP
-.B \-ni (AVI only)
-Force usage of non-interleaved AVI parser (fixes playback
+.B \-ni
+Force treating files as non-interleaved.
+In particular forces usage of non-interleaved AVI parser (fixes playback
 of some bad AVI files).
+Can also help playing files that otherwise play audio
+and video alternating instead of at the same time.
 .
 .TP
 .B \-nobps (AVI only)
--- a/cfg-common.h	Sun Aug 31 09:33:38 2014 +0000
+++ b/cfg-common.h	Sun Aug 31 09:39:13 2014 +0000
@@ -406,7 +406,7 @@
 
     {"edl", &edl_filename,  CONF_TYPE_STRING, 0, 0, 0, NULL},
 
-    // AVI specific: force non-interleaved mode
+    // force non-interleaved mode
     {"ni", &force_ni, CONF_TYPE_FLAG, 0, 0, 1, NULL},
     {"noni", &force_ni, CONF_TYPE_FLAG, 0, 1, 0, NULL},
 
--- a/libmpdemux/demuxer.c	Sun Aug 31 09:33:38 2014 +0000
+++ b/libmpdemux/demuxer.c	Sun Aug 31 09:39:13 2014 +0000
@@ -722,7 +722,7 @@
         // This needs to be enough for at least 1 second of packets
         // since libavformat mov demuxer does not try to interleave
         // with more than 1s precision.
-        if (ds->fill_count > 80)
+        if (!force_ni && ds->fill_count > 80)
             break;
         // avoid printing the "too many ..." message over and over
         if (ds->eof)