Opened 14 years ago

Closed 13 years ago

Last modified 13 years ago

#369 closed enhancement (wontfix)

allow the use of libvc1 (WMV9 support)

Reported by: stranche@… Owned by: moritz@…
Priority: if idle Component: vd
Version: HEAD Severity: minor
Keywords: Cc:
Blocked By: Blocking:
Reproduced by developer: Analyzed by developer:



here we are, the libvc1 that allows the native support of WMV9 (in)famous format
hits the road.

the instructions to do so for VideoLAN are out, MPlayer should of course also do
something about it, isn't it ? :)

$ cd ~/videolan ; wget ; tar
-zxvf libvc1-1.0.tar.gz
$ wget
$ unzip
$ cp VC1_reference_decoder_release6/decoder/*.[ch] libvc1-1.0/src/.
$ cp VC1_reference_decoder_release6/shared/*.[ch] libvc1-1.0/src/.
$ cd libvc1-1.0 ; ./bootstrap ; ./configure --prefix=/usr ; make

Change History (3)

comment:1 Changed 14 years ago by compn

  • Component changed from demuxer to vd
  • Priority changed from normal to if idle
  • Resolution set to fixed
  • Severity changed from normal to enhancement
  • Status changed from new to closed
  • Version changed from unspecified to CVS

use mike melanson's howto to get libvc1 into ffmpeg/libavcodec
then build mplayer with libavcode+libvc1

Some people have asked me for my code to make the SMPTE VC-1 reference decoder
work with FFmpeg, slow though it may be. I suppose I could make a patch. But the
official version of FFmpeg is whatever happens to be in CVS at the current
moment. So any patch I could produce would work for maybe a day. So get ready to
do a little editing on your local FFmpeg CVS tree. The steps:

procure the file from the main site and unzip
the tree somewhere
have a copy of FFmpeg’s CVS tree handy; the rest of these instructions will
assume that you are sitting in the root of the FFmpeg tree
create a directory called libavcodec/libvc1
copy all of the *.c and *.h files from VC1_reference_decoder_release6/decoder/
into libavcodec/libvc1/
copy all of the *.c and *.h files from VC1_reference_decoder_release6/shared/
into libavcodec/libvc1/
place the libvc1-makefile.txt into libavcodec/libvc1/Makefile
change directory into libavcodec/libvc1 and type ‘make’
change directory back to the FFmpeg root
place the smpte-vc1.c file into libavcodec/
edit libavcodec/vc9.c, go the very end of the file, and add #if 0/#endif around
the wmv3_decoder AVCodec structure; this will keep it from conflicting with the
new SMPTE WMV3 decoder
edit libavcodec/Makefile and add smpte-vc1.o to the end of the OBJS list
edit the top-level Makefile and add “-L./libavcodec/libvc1 -lvc1″ (without the
quotes) to FFLIBS
run ‘./configure’ at the top level if you have not already done so for this tree
run ‘make’ at the top level

That should be all there is to it. If FFmpeg declines to acknowledge the ability
to decode WMV3 data run ‘./ffmpeg -formats | grep wmv3′ and make sure you see
(after the versioning info): ” D V wmv3″.

Remember, the performance of the SMPTE VC-1 decoder is, as they say, “nothing to
write home about”. It’s dog slow. It’s not meant to be fast. And it will not be
optimized. Ever. Eventually, we will create our own decoder that leverages
optimized VLC decoding functions, transforms, filters, etc. But in the meantime,
if you want to experiment with the reference decoder, this should work for you.

comment:2 Changed 13 years ago by stranche@…

  • Resolution fixed deleted
  • Status changed from closed to reopened

(In reply to comment #1)
Here is an entry in a blog mostly interesting

and more recently

I have tested it on my Opteron system (meaning a 64bit MPlayer binary) and I am
very happy with it.
Some files still have trouble but it reads mostly without trouble, this calls
for an integration and free us all of the

comment:3 Changed 13 years ago by reimar

  • Resolution set to wontfix
  • Status changed from reopened to closed

Thanks for informing, but integrating this is not possible for licensing
reasons. Also a VC-1 decoder is a "Google Summer of Code" project, so there will
be (actually already is) some progress anyway.

Note: See TracTickets for help on using tickets.