VideoPlayer
This page or section may require cleanup, updating, spellchecking, reformatting and/or updated images. Please improve this page if you can. The discussion page may contain suggestions. |
DVDPlayer is XBMC's video player, capable of playing DVD video and many other video formats. DVDPlayer supports DVD video with menus, from CD/DVD-media, harddrive, network, ISO/IMG-images and RAR/ZIP archives (and even RARed ISO/IMG-images as long as they are in 'stored/archive' mode and not compressed).
Currently Supported Codecs
- FFmpeg - all audio and video decoders supported by FFmpeg (avcodec/avformat) open source codec-suit
- MPEG-1/MPEG-2 video decoder based on libmpeg2
- MPEG-1/MPEG-2 (Layer I, Layer II, and Layer III, inc. MP3) audio decoder based on libmad
- DTS (Digital Theater System) audio decoder based on libdca (formaly known as "libdts")
- Dolby Digital AC3 audio decoder based on liba52
- AAC (Advanced Audio Coding) MPEG-4 audio decoder based on AudioCoding.com's libfaad2
Development
See the DVDPlayer core/library topic thread in the XBMC development forum for now.
- Help is always wanted, so if you can program C/C++, please feel free to code and submit a patch.
Technical Details
See the DVDPlayer core/library topic thread in the XBMC development forum for now.
Classes
- InputStreams
- FactoryInputStream, creates an inputstream based on the filename
- File, general file access (hd, cdrom, samba)
- Http
- Navigator, for accessing dvd
- Demuxers
- FactoryDemuxer, creates a demuxer based on inputstream information
- FFmpeg, ffmpeg demuxer wrapper (supports all ffmpeg demuxers)
- Shoutcast, for demuxing shoutcast streams
- Codecs
- FactoryCodec, creates audio and video codecs based upon demuxer information
- Audio
- FFmpeg, ffmpeg audio decoder wrapper
- Liba52, liba52 wrapper
- LibDts, libdca wrapper
- LibFaad, libfaad wrapper
- LibMad, libmad wrapper (for mp1, mp2, mp3 decoding)
- LPcm, lpcm decoding
- Passthrough, for digital passthrough
- Video
- LibMpeg2
- FFmpeg, ffmpeg video decoder wrapper
- Subtitles
Modules
The player is divided up into a few modules
Main Module
Runs in a separate thread Reads data from one of the input streams and sends it over to one of the other modules listed below Handle DVD events (such as audio / subtitle / video stream changes) Handle events from xbmc (such as audio / subtitle changes)
Audio Module
Runs in a separate thread. Decodes audio data
Video Module
Runs in a separate thread. Decodes raw video data into video frames
Subtitle Module
Process subtitles
Building Libraries (Audio / Video Codecs)
The dvdplayer depends on other libraries to function. These libraries are included in SVN by default as dll's under the "XBMC/system/players/dvdplayer" subfolder. The full source code of these libraries can be found under the "/docs/sources/dvdplayer/" subfolder in the SVN. To build these dll's yourself you need to have the following installed, (the .dll's must be then be placed under the "[XBMCFOLDER]/system/players/dvdplayer" subfolder).
- MinGW and MSYS
- see http://ml20rc.msnfanatic.com/ffmpeg/1.html for installation for ffmpeg
- use binutils version 2.16.91 (20060119) 1
- unrar