From e2de64d6f1beb9e492daf5b886e19933c1fa41dd Mon Sep 17 00:00:00 2001 From: toma Date: Wed, 25 Nov 2009 17:56:58 +0000 Subject: Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features. BUG:215923 git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdemultimedia@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da --- mpeglib/lib/README | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 mpeglib/lib/README (limited to 'mpeglib/lib/README') diff --git a/mpeglib/lib/README b/mpeglib/lib/README new file mode 100644 index 00000000..91a3b071 --- /dev/null +++ b/mpeglib/lib/README @@ -0,0 +1,80 @@ + + +HOW TO WRITE A PLUGIN +===================== + +we need a audio cd player and a grabber and +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) + + + \ No newline at end of file -- cgit v1.2.1