Warning, /libraries/phonon/doc/Backend.dox is written in an unsupported language. File is not indexed.

0001 /** \mainpage Phonon Backend Interface
0002 
0003 
0004 \section phonon_backend_development Backend Development
0005 If you want to write a new backend for %Phonon this is for you:
0006 \li \ref phonon_backend_development_page "Phonon Backend Development"
0007 \li \ref Backend
0008 
0009 \authors
0010 Matthias Kretz \<kretz@kde.org\>
0011 
0012 \maintainers
0013 Matthias Kretz \<kretz@kde.org\>
0014 
0015 \licenses
0016 \lgpl
0017 
0018 
0019 
0020 
0021 
0022 
0023 
0024 
0025 \page phonon_tut1 Phonon Tutorial Part 1: a simple audio player
0026 
0027 <p><b>
0028 \ref index "Overview" |
0029 Application Example |
0030 \ref phonon_backend_development_page "Backend Development"
0031 </b></p>
0032 
0033 \includelineno tutorial2.cpp
0034 
0035 
0036 
0037 
0038 
0039 
0040 
0041 
0042 \page phonon_backend_development_page Phonon Backend Development
0043 
0044 <p><b>
0045 \ref index "Overview" |
0046 \ref phonon_tut1 "Application Example" |
0047 Backend Development
0048 </b></p>
0049 
0050 The backend is the most important part in %Phonon to provide functionality. This
0051 document will get you started how backends work, how to start development of a
0052 new backend and how to understand existing backend code.
0053 
0054 \section phonon_backend_introduction Introduction
0055 
0056 The first step is to understand how the %Phonon frontend calls the backend: In
0057 the frontend objects all backend objects are "only" QObjects. But QObject has
0058 powerful introspection capabilities that %Phonon uses to call methods in the
0059 backend. If you're interested look at \ref QMetaObject::invokeMethod. In order
0060 to make sure that a backend is fully operational (there are no abstract classes
0061 that tell the backend developer what method signatures are wrong or what
0062 methods are missing) there are two test programs compiled with kdelibs (if
0063 KDE4_BUILD_TESTS is set in cmake) that inspects the backend.
0064 
0065 In short that requires the backend classes to inherit from QObject and to make
0066 all methods that are to be called from the frontend slots or prefixed with
0067 Q_INVOKABLE (the latter doesn't work reliable with Qt 4.1.3 at least, so you
0068 should simply make those methods slots).
0069 
0070 \section phonon_backend_classes The Backend Classes
0071 
0072 The central class that needs to be implemented is the backend factory class,
0073 throughout this documentation simply called Backend:
0074 
0075 \li \ref phonon_Backend "Backend"
0076 
0077 \subsection phonon_mediaproducingclasses The classes producing media data (sources)
0078 
0079 \li \ref Phonon::MediaObjectInterface "common methods/signals for media producing classes"
0080 \li \ref phonon_MediaObject "MediaObject"
0081 
0082 \subsection phonon_pathclass The path class
0083 
0084 \li \ref phonon_Path "Path"
0085 
0086 \subsection phonon_outputclasses The output classes
0087 \li \ref phonon_AudioDataOutput "AudioDataOutput"
0088 \li \ref phonon_AudioOutput "AudioOutput"
0089 \li \ref phonon_VideoDataOutput "VideoDataOutput"
0090 \li \ref phonon_VideoWidget "VideoWidget"
0091 
0092 \subsection phonon_EffectClasses The effect classes
0093 
0094 \li \ref phonon_Effect "Effect"
0095 \li \ref phonon_Visualization "Visualization"
0096 \li \ref phonon_VolumeFaderEffect "VolumeFaderEffect"
0097 
0098 */
0099 // DOXYGEN_REFERENCES = phonon
0100 // DOXYGEN_SET_EXPAND_AS_DEFINED = PHONON_OBJECT PHONON_HEIR PHONON_INTERFACE_GETTER
0101 // DOXYGEN_SET_HIDE_SCOPE_NAMES = YES
0102 // DOXYGEN_SET_HIDE_FRIEND_COMPOUNDS = YES
0103 // DOXYGEN_SET_PROJECT_NAME = Backend
0104 // DOXYGEN_SET_EXTRACT_ALL = NO
0105 // DOXYGEN_SET_HIDE_UNDOC_MEMBERS = YES
0106 // DOXYGEN_SET_SOURCE_BROWSER = NO
0107 // DOXYGEN_SET_INPUT = @topdir@/phonon/
0108 // DOXYGEN_SET_FILE_PATTERNS = *interface.h */phonon/backend/Mainpage.dox */backend.dox
0109 // vim: tw=100 ts=4 sw=4 expandtab filetype=doxygen