[MPlayer-dev-eng] [BUG][PATCH] Decoding of WMV3 files fail, shows only black screen

Shachar Raindel shacharr at gmail.com
Sat Jul 2 01:56:21 CEST 2005


Hi,
 I have been having a problem with decoding WMV3 files, getting the
following (interesting) messages (sorry, long post to show what is
going on):
<snip loads of not so interesting startup messages>
Playing ******.wmv.
ASF file format detected.
VIDEO:  [WMV3]  320x240  24bpp  1000.000 fps    0.0 kbps ( 0.0 kbyte/s)
Clip info:
 name:
 author:
 copyright:
 comments:
==========================================================================
Opening audio decoder: [ffmpeg] FFmpeg/libavcodec audio decoders
AUDIO: 44100 Hz, 2 ch, s16le, 48.0 kbit/3.40% (ratio: 6003->176400)
Selected audio codec: [ffwmav2] afm:ffmpeg (DivX audio v2 (FFmpeg))
==========================================================================
vo: X11 running at 1024x768 with depth 24 and 32 bpp (":0.0" => local display)
==========================================================================
Opening video decoder: [dmo] DMO video codecs
DMO dll supports VO Optimizations 0 1
DMO dll might use previous sample when requested
GetOutput r=0x0   size:230400  align:1
StreamCount r=0x0  1  1
Decoder supports the following formats: YV12 YUY2 UYVY YVYU RGB8
RGB555 RGB565 RGB24 RGB32
Decoder is capable of YUV output (flags 0x1b)
VDec: vo config request - 320 x 240 (preferred csp: Packed YUY2)
VDec: using Planar YV12 as output csp (no 0)
Movie-Aspect is undefined - no prescaling applied.
VO: [xv] 320x240 => 320x240 Planar YV12
Selected video codec: [wmv9dmo] vfm:dmo (Windows Media Video 9 DMO)
==========================================================================
Building audio filter chain for 44100Hz/2ch/s16le -> 0Hz/0ch/??...
[libaf] setting tempo 1.000000
alsa-init: 1 soundcard found, using: default
alsa: 44100 Hz/2 channels/4 bpf/32768 bytes buffer/Signed 16 bit Little Endian
AO: [alsa] 44100Hz 2ch s16le (2 bps)
Building audio filter chain for 44100Hz/2ch/s16le -> 44100Hz/2ch/s16le...
[libaf] setting tempo 1.000000
Starting playback...
ProcessInputError  FALSE ?? (keyframe: 0)
ProcessInputError  FALSE ?? (keyframe: 0)  1/  1 ??% ??% ??,?% 1 0 98%
ProcessInputError  r:0x80004005=-2147467259 (keyframe: 1)??,?% 2 0 98%
ProcessInputError  r:0x80004005=-2147467259 (keyframe: 0)??,?% 2 0 98%
ProcessInputError  r:0x80004005=-2147467259 (keyframe: 1)??,?% 3 0 98%
ProcessInputError  r:0x80004005=-2147467259 (keyframe: 1)??,?% 3 0 98%
ProcessInputError  r:0x80004005=-2147467259 (keyframe: 1)??,?% 3 0 98%
ProcessInputError  r:0x80004005=-2147467259 (keyframe: 1)??,?% 3 0 98%
ProcessInputError  r:0x80004005=-2147467259 (keyframe: 1)??,?% 3 0 98%
<snip tons and tons of these messages>

Audio was playing-back great, video remained a black screen.
What is more interesting was that seeking to the beginning of the file
after few seconds of playback revived the video stream. After some
messing around with DMO_VideoDecoder.c, I found out the reason: The
first 2 calls to DMO_VideoDecoder_DecodeInternal (and therefore to the
ProcessInput method of the DMO itself) are done with is_keyframe = 0
(which should actually be called should_drop, and is actually rather
redundant), since mplayer wants to drop the first frame as it is
lagging behind the audio (it gets more audio in the beginning), and
confuses the codec internal state, as it misses the first sync
signals.

Removing the dependency in the phony flag of is_keyframe solved the
problem, and now my WMV files play great.

Note that this is just a work-around, not a correct fix as the DMO now
thinks that any bit we feed it with is a sync point (which is of
course wrong and buggy). Someone who knows what is going on in the
rest of this mess should fix it to provide useful information to the
codec (probably extracted from the carrying ASF container).

   Shachar
-------------- next part --------------
A non-text attachment was scrubbed...
Name: dmo_patch.diff
Type: text/x-patch
Size: 772 bytes
Desc: not available
URL: <http://lists.mplayerhq.hu/pipermail/mplayer-dev-eng/attachments/20050702/edc16f46/attachment.bin>


More information about the MPlayer-dev-eng mailing list