You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdemultimedia/mpeglib/lib
OBATA Akio 6842f434b6
mpeglib: change to use SunOS API audioIO backend for NetBSD
5 years ago
..
decoder Removed explicit usage of the 'register' keyword. 5 years ago
frame Initial cmake conversion 8 years ago
input cmake: Fix detection on cdda include files 7 years ago
mpegplay Removed explicit usage of the 'register' keyword. 5 years ago
mpgplayer cmake: Fix detection on cdda include files 7 years ago
oggvorbis Initial cmake conversion 8 years ago
output Initial cmake conversion 8 years ago
splay Removed explicit usage of the 'register' keyword. 5 years ago
tplay Initial cmake conversion 8 years ago
util mpeglib: change to use SunOS API audioIO backend for NetBSD 5 years ago
yuv cmake: Fix detection on cdda include files 7 years ago
CMakeLists.txt cmake: Fix build of ogg plugin in mpeglib 7 years ago
Makefile.am TQt4 port kdemultimedia 14 years ago
README Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features. 15 years ago
dummy.cpp Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features. 15 years ago

README

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.


HOW TO WRITE A PLUGIN
=====================

we need a audio cd player and a grabber and <insert your cool plugin here>
The Plugin approach is minimalistic.

The plugin interface only supports one thing:

* open a stream play it and then close it.

nothing more.


For this you have a class "decoderPlugin.cpp" derive your decoder
from this class and then overwrite the decoder_loop method.
Thats it.

The typical structure in decoder loop look like this:

void decoder_loop() {

1. make instance of decoder and connect it to the input/output
2. go in loop and check sometime a few mutex variables
3. leave loop and destroy your decoder

}

For this your have 3 examples how it can be done.
I think splayPlugin.cpp and mpegPlugin.cpp are clean/good
examples for "education".


If your decoder supports "seek" you are a bit on your own.
You can look in splayPlugin.cpp how it is handled there.
If your decoder supports seek you must overwrite the seek method.

Ok, now you have your raw plugin.
If you want to make it a real KDE compliant player with arts integration
you need to write an arts plugin.



further readings
======================

* This interface doesn´t offer a gui based config dialog 

  To my mind a configuration dialog does not belong into a decoder plugin.
  And that´s the main reason why other solutions are not portable:
  The plugin interface depend on a widget lib. 


* This version has a completely reworked plugin interface.
  I removed the C bindings. And now the interface is C++.
  This made it much more readable. 
  This should make it a bit easier to inlcude new decoders.
  For example look in the directories for mainXYZ.cpp

inputPlugin:
             inputInterfaces like file,http,buffered(loopback) ,cdi
outPlugin  :
             output for audio/video 
playerPlugin:
            this is the base class fo new decoders
splay       : 
            mpeg I Layer 1,2,3 audio decoder
mpegplay    :
            mpeg I video decoder
mpgplayer   :
            mpeg I audio/video decoder
tplay       :
            wav decoder
vorbisPlugin:
            vorbis decoder.(GPLed mp3 replacement, better compression,
                            better sound ->www.xiph.org)