[MPlayer-users] Switches for playing interlaced h264 ?

Håkon Alstadheim hakon at alstadheim.priv.no
Tue Aug 19 14:19:43 CEST 2008

Hi, I'm receiving dvb-t broadcasts in interlaced h264 format. I seem to 
be totally unable to get the mplayer switches right for this format, 
video always lags. See log below from an (unpatched mplayer ) for how 
mplayer describes the input. With the switches "-mc 2 -framedrop 
-autosync 30" I get a couple of  image frames in 1 second, a 3 second 
pause and then a couple more frames. Running with -speed 2.0 I get good 
pictures but bad/no sound. Trying to monkey with -fps does not work 
either. Trying  -lavdopts bug=4 on a hunch has no effect. Do I need to 
specify a different codec with -lavdopts , or am I seeing a different bug?

Now, I have a couple of patches, and with those applied I get pretty 
consistently successful (downright beautiful) decoding of the stream. 
These patches are not going to be put into the official code it seems, 
so I wonder what switches I should use to emulate the effect. I have two 
patches installed (see below), the operative one i suspect is the 
framerate patch.

--framerate patch--
Index: libmpcodecs/vd_ffmpeg.c
--- libmpcodecs/vd_ffmpeg.c    (revision 27410)
+++ libmpcodecs/vd_ffmpeg.c    (working copy)
@@ -737,6 +737,8 @@
     mp_image_t* mpi=NULL;
     int dr1= ctx->do_dr1;
+    sh->frametime=1.0/sh->fps;
     if(len<=0) return NULL; // skipped frame
 //ffmpeg interlace (mpeg2) bug have been fixed. no need of -noslices
@@ -781,6 +783,8 @@
     ret = avcodec_decode_video(avctx, pic,
          &got_picture, data, len);
+    if(!got_picture)sh->frametime=1.0/1000.0;
     dr1= ctx->do_dr1;
     if(ret<0) mp_msg(MSGT_DECVIDEO,MSGL_WARN, "Error while decoding 
 //printf("repeat: %d\n", pic->repeat_pict);
-------------patch ends--
I also have this installed, don't know if it has any effect:
-------hdr buf patch---
Index: stream/asf_mmst_streaming.c
--- stream/asf_mmst_streaming.c    (revision 27410)
+++ stream/asf_mmst_streaming.c    (working copy)
@@ -68,7 +68,7 @@
 extern int video_id;
 #define BUF_SIZE 102400
-#define HDR_BUF_SIZE 8192
+#define HDR_BUF_SIZE 16384
 #define MAX_STREAMS 20
 typedef struct

------------ log -----------
MPlayer dev-SVN-r27471-4.1.2 (C) 2000-2008 MPlayer Team
CPU: Intel(R) Pentium(R) 4 CPU 2.00GHz (Family: 15, Model: 2, Stepping: 4)
CPUflags:  MMX: 1 MMX2: 1 3DNow: 0 3DNow2: 0 SSE: 1 SSE2: 1
Compiled for x86 CPU with extensions: MMX MMX2 SSE SSE2

Playing dvb://NRK1.
dvb_tune Freq: 658000000
 Cache fill:  0.00% (0 bytes)    Cache fill:  2.20% (90112 bytes)    
Cache fill:  4.80% (196608 bytes)    Cache fill:  7.60% (311296 
bytes)    Cache fill: 10.20% (417792 bytes)    Cache fill: 12.80% 
(524288 bytes)    Cache fill: 15.40% (630784 bytes)    Cache fill: 
18.00% (737280 bytes)  
TS file format detected.
VIDEO H264(pid=512) AUDIO AAC(pid=640) NO SUBS (yet)!  PROGRAM N. 1009
FPS seems to be: 25.000000
Opening video filter: [pp=fa/fd]
Opening video filter: [crop w=550 h=576]
Crop: 550 x 576, -1 ; -1
Opening video decoder: [ffmpeg] FFmpeg's libavcodec codec family
Selected video codec: [ffh264] vfm: ffmpeg (FFmpeg H.264)
Opening audio decoder: [faad] AAC (MPEG2/4 Advanced Audio Coding)
FAAD: compressed input bitrate missing, assuming 128kbit/s!
AUDIO: 48000 Hz, 2 ch, s16le, 128.0 kbit/8.33% (ratio: 16000->192000)
Selected audio codec: [faad] afm: faad (FAAD AAC (MPEG-2/MPEG-4 Audio) 
AO: [alsa] 48000Hz 2ch s16le (2 bytes per sample)
Starting playback...
[h264 @ 0x86dbd90]number of reference frames exceeds max (probably 
corrupt input), discarding one
.. snip ..

.. snip ..
mmco: unref short failure

VDec: vo config request - 720 x 576 (preferred colorspace: Planar YV12)
[PP] Using external postprocessing filter, max q = 6.
VDec: using Planar YV12 as output csp (no 0)
Movie-Aspect is 1.82:1 - prescaling to correct movie aspect.
VO: [xv] 550x576 => 800x576 Planar YV12  [fs] [vm]
XF86VM: Selected video mode 800x600 for image size 800x576.

Exiting... (Quit)

More information about the MPlayer-users mailing list