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
Slávek Banko cf805bdafd
Fix FTBFS with GCC6
8 years ago
..
decoder Fix unintended renaming 11 years ago
frame Fix inadvertent "TQ" changes. 13 years ago
input Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features. 15 years ago
mpegplay Fix unintended renaming 11 years ago
mpgplayer Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features. 15 years ago
oggvorbis Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features. 15 years ago
output rename the following methods: 13 years ago
splay Fix FTBFS with GCC6 8 years ago
tplay Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features. 15 years ago
util Fix link flags in mpeglib/lib 10 years ago
yuv Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features. 15 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)