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