Changeset 445 for trunk/libffado/doc
- Timestamp:
- 04/02/07 12:35:17 (17 years ago)
- Files:
-
- trunk/libffado/doc/adding_devices.dox (modified) (10 diffs)
- trunk/libffado/doc/amdtpstreamprocessor.dox (modified) (1 diff)
- trunk/libffado/doc/mainpage.dox (modified) (2 diffs)
- trunk/libffado/doc/reference.doxygen.in (modified) (2 diffs)
- trunk/libffado/doc/streaming.xmi (modified) (15 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/libffado/doc/adding_devices.dox
r249 r445 1 /*2 * This is the main page of the FreeBoB reference manual, built using3 * doxygen.4 */5 6 1 /** 7 @page adding_devices Adding support for new devices to LibFreeBoB2 @page adding_devices Adding support for new devices to libffado 8 3 9 4 @author Pieter Palmers <pieterpalmers@users.sourceforge.net> … … 21 16 Layer 2 is implemented by subclassing the StreamProcessor class in src/libstreaming/ 22 17 23 Basic operation of libf reebobis:18 Basic operation of libffado is: 24 19 - Create a DeviceManager that iterates over all nodes connected to the 1394 bus. 25 20 For every node present, it tries the probeFunctions (probeBeBoB, probeMotu, ...). … … 54 49 the start/stop mechanism differ. 55 50 56 In order to add support for a device to freebob, two things should be implemented:51 In order to add support for a device to libffado, two things should be implemented: 57 52 - an IAvDevice descendant that takes care of the device discovery & configuration 58 53 - a StreamProcessor descendant that takes care of the device specific stream translation … … 65 60 @section streamingbaseclasses Streaming base class hierarchy and operation 66 61 67 This section explains the implementation details of the streaming part of LibFreeBoB.62 This section explains the implementation details of the streaming part of libffado. 68 63 69 64 The following figure shows the base class diagram, and the derrived classed that implement … … 89 84 - an IsoHandlerManager instance 90 85 91 Related classes: FreebobStreaming::StreamProcessorManager86 Related classes: Streaming::StreamProcessorManager 92 87 93 88 @subsection isoside The ISO side: 1394 isochronous traffic management … … 103 98 \note This abstraction is completely device independent, it only provides a mechanism to transmit or receive a certain isochronous stream. It could as well be used for video streams... 104 99 105 Related classes: FreebobStreaming::IsoStream, FreebobStreaming::IsoHandlerManager, FreebobStreaming::IsoHandler100 Related classes: Streaming::IsoStream, Streaming::IsoHandlerManager, Streaming::IsoHandler 106 101 107 102 @subsection audioapiside The Audio API side: port management … … 137 132 The idea is that we present a collection of ports to the Audio API side which from which it can read or to which it can write. 138 133 139 Related classes: FreebobStreaming::Port, FreebobStreaming::PortManager134 Related classes: Streaming::Port, Streaming::PortManager 140 135 141 136 @subsection connectingisoandaudio Connecting the ISO side with the Audio API side … … 161 156 A StreamProcessor also has the init(), prepare() and reset() calls, which are still to be documented (see later). 162 157 163 Related classes: FreebobStreaming::StreamProcessor, FreebobStreaming::ReceiveStreamProcessor, FreebobStreaming::TransmitStreamProcessor, FreebobStreaming::PortManager158 Related classes: Streaming::StreamProcessor, Streaming::ReceiveStreamProcessor, Streaming::TransmitStreamProcessor, Streaming::PortManager 164 159 165 160 @subsection mappingports Mapping Ports to IsoStreams … … 167 162 168 163 @subsection puttingtogether Putting it all together 164 165 @note this is outdated 166 169 167 The framework is completed by introducing the StreamProcessorManager. As indicated before, this class implements a 'collection of StreamProcessors' and an IsoHandlerManager. 170 168 171 169 First of all, the StreamProcessorManager is a collection of StreamProcessors, hence it implements the registerStreamProcessor and unregisterStreamProcessor methods. It maintains the list of StreamProcessors under it's control. When StreamProcessors are (un)registered, they are automatically (un)registered to the IsoHandlerManager too, creating IsoHandlers to handle them. Remember that StreamProcessor is a descendant of IsoStream, and can therefore be registered to an IsoHandlerManager. This results in the fact that the ISO stream the StreamProcessor is supposed to handle, will be attached to an IsoHandler. 172 170 173 Furthermore StreamProcessorManager is a child of the FreebobRunnable interface, and can therefore be used as the worker class for a FreebobThread. A complicated sentence to say that the StreamProcessorManager will start up a thread that calls its Execute() function, which in its turn calls the IsoHandlerManager Exectute() method (hence iterating the IsoHandlers managed by the IsoHandlerManager). This thread also performs the synchronisation as described in the next paragraph.171 Furthermore StreamProcessorManager is a child of the Runnable interface, and can therefore be used as the worker class for a Thread. A complicated sentence to say that the StreamProcessorManager will start up a thread that calls its Execute() function, which in its turn calls the IsoHandlerManager Exectute() method (hence iterating the IsoHandlers managed by the IsoHandlerManager). This thread also performs the synchronisation as described in the next paragraph. 174 172 175 173 The third function of the StreamProcessorManager is the synchronisation between the ISO side and the Audio API side. To implement this, the class provides a wait() method that waits on a synchronisation primitive. This primitive is signalled by the thread that iterates the IsoHandlerManager. This thread will signal the primitive when all StreamProcessors indicate that they have one period ready. … … 181 179 \note A blocking-read/nonblocking write (and the other way around) version of access to PacketBuffered Ports is planned. 182 180 183 Related classes: FreebobStreaming::StreamProcessorManager, FreebobStreaming::IsoHandlerManager, FreebobStreaming::Port181 Related classes: Streaming::StreamProcessorManager, Streaming::IsoHandlerManager, Streaming::Port 184 182 185 183 @subsection callingorder Some notes on when which method is called trunk/libffado/doc/amdtpstreamprocessor.dox
r249 r445 1 /*2 * This is the main page of the FreeBoB reference manual, built using3 * doxygen.4 */5 6 1 /** 7 2 @page amdtpdescription The AMDTP StreamProcessor trunk/libffado/doc/mainpage.dox
r249 r445 1 1 /* 2 * This is the main page of the F reeBoBreference manual, built using2 * This is the main page of the FFADO reference manual, built using 3 3 * doxygen. 4 4 */ 5 5 6 6 /** 7 @mainpage F reeBoB - Firewire (pro-)audiofor Linux7 @mainpage FFADO - Free Firewire (pro-)Audio Drivers for Linux 8 8 9 9 @author Pieter Palmers <pieterpalmers@users.sourceforge.net> … … 11 11 @section intro Introduction 12 12 13 F reeBoBis intended as an intermediate layer between the Linux1394 kernel/userspace layer, and the various audio API's (ALSA, jack, ...) present.13 FFADO is intended as an intermediate layer between the Linux1394 kernel/userspace layer, and the various audio API's (ALSA, jack, ...) present. 14 14 15 15 \note this is a SVN version, therefore it is highly volatile. Certain parts of the documentation can be outdated. This documentation is also auto-generated, and it can occur that unused classes and interfaces appear in the documentation. This pollution will be cleaned up as we go along. 16 16 17 @see <http://f reebob.sourceforge.net>17 @see <http://ffado.sourceforge.net> 18 18 19 19 @section library Client side library 20 20 21 F reeBoBpresents an interface that can be used to implement backends for various audio21 FFADO presents an interface that can be used to implement backends for various audio 22 22 API's. Currently the best support is for the JACK backend. It is also intended to implement configuration applications like mixer controls etc.. 23 23 24 The library API is split in two parts: 25 - @ref freebob.h "<libfreebob/freebob.h>" is the discovery & configuration interface 26 - @ref freebob_streaming.h "<libfreebob/freebob_streaming.h>" is the streaming interface 27 24 The library API's external C interface is defined in: 25 - @ref ffado.h "<libffado/ffado.h>" 28 26 29 27 @section devicesupport Adding support for unsupported devices 30 28 31 Initial support is/was for BeBoB devices only, however theframework32 is usable for all firewire audio devices.29 Initial support by FreeBoB was for BeBoB devices only, however the FFADO framework 30 is usable for all FireWire audio devices. 33 31 34 32 Take a look at the @ref adding_devices page for a detailed description. trunk/libffado/doc/reference.doxygen.in
r250 r445 18 18 # by quotes) that should identify the project. 19 19 20 PROJECT_NAME = LIBF REEBOB20 PROJECT_NAME = LIBFFADO 21 21 22 22 # The PROJECT_NUMBER tag can be used to enter a project or revision number. … … 366 366 @top_srcdir@/src/ \ 367 367 @top_srcdir@/src/debugmodule \ 368 @top_srcdir@/src/libavc \ 369 @top_srcdir@/src/libieee1394 \ 370 @top_srcdir@/src/libosc \ 368 371 @top_srcdir@/src/libstreaming \ 369 372 @top_srcdir@/src/libutil \ 370 @top_srcdir@/src/libfreebobavc \ 371 @top_srcdir@/libfreebob/ 373 @top_srcdir@/src/bebob \ 374 @top_srcdir@/src/bounce \ 375 @top_srcdir@/src/dice \ 376 @top_srcdir@/src/maudio \ 377 @top_srcdir@/src/metrichalo \ 378 @top_srcdir@/src/motu \ 379 @top_srcdir@/src/rme \ 380 @top_srcdir@/libffado/ 381 372 382 373 383 # If the value of the INPUT tag contains directories, you can use the trunk/libffado/doc/streaming.xmi
r403 r445 85 85 <UML:DataType stereotype="12706" isSpecification="false" isLeaf="false" visibility="public" namespace="88018" xmi.id="13397" isRoot="false" isAbstract="false" name="PortVectorIterator" elementReference="13396" /> 86 86 <UML:DataType stereotype="12706" isSpecification="false" isLeaf="false" visibility="public" namespace="88018" xmi.id="13401" isRoot="false" isAbstract="false" name="Port*" elementReference="12717" /> 87 <UML:DataType stereotype="12706" isSpecification="false" isLeaf="false" visibility="public" namespace="88018" xmi.id="14009" isRoot="false" isAbstract="false" name="F reebobRunnableInterface*" elementReference="14008" />87 <UML:DataType stereotype="12706" isSpecification="false" isLeaf="false" visibility="public" namespace="88018" xmi.id="14009" isRoot="false" isAbstract="false" name="FFADORunnableInterface*" elementReference="14008" /> 88 88 <UML:DataType stereotype="12706" isSpecification="false" isLeaf="false" visibility="public" namespace="88018" xmi.id="14530" isRoot="false" isAbstract="false" name="unsigned char*" elementReference="14529" /> 89 89 <UML:DataType stereotype="12706" isSpecification="false" isLeaf="false" visibility="public" namespace="88018" xmi.id="14540" isRoot="false" isAbstract="false" name="unsigned int*" elementReference="12734" /> … … 96 96 <UML:DataType stereotype="12706" isSpecification="false" isLeaf="false" visibility="public" namespace="88018" xmi.id="14665" isRoot="false" isAbstract="false" name="IsoHandlerManager*" elementReference="14659" /> 97 97 <UML:DataType stereotype="12706" isSpecification="false" isLeaf="false" visibility="public" namespace="88018" xmi.id="15179" isRoot="false" isAbstract="false" name="quadlet_t*" elementReference="15178" /> 98 <UML:DataType stereotype="12706" isSpecification="false" isLeaf="false" visibility="public" namespace="88018" xmi.id="15190" isRoot="false" isAbstract="false" name="f reebob_ringbuffer_t*" elementReference="15166" />98 <UML:DataType stereotype="12706" isSpecification="false" isLeaf="false" visibility="public" namespace="88018" xmi.id="15190" isRoot="false" isAbstract="false" name="ffado_ringbuffer_t*" elementReference="15166" /> 99 99 <UML:DataType stereotype="12706" isSpecification="false" isLeaf="false" visibility="public" namespace="88018" xmi.id="15236" isRoot="false" isAbstract="false" name="IsoHandler*" elementReference="15194" /> 100 100 <UML:DataType stereotype="12706" isSpecification="false" isLeaf="false" visibility="public" namespace="88018" xmi.id="15278" isRoot="false" isAbstract="false" name="PacketBuffer*" elementReference="15167" /> … … 109 109 </UML:Package> 110 110 <UML:Class comment="Id$ *//* 111 F reeBobStreaming API112 F reeBob= Firewire (pro-)audio for linux111 FFADO Streaming API 112 FFADO = Firewire (pro-)audio for linux 113 113 114 http://f reebob.sf.net114 http://ffado.sf.net 115 115 116 116 Copyright (C) 2005,2006 Pieter Palmers <pieterpalmers@users.sourceforge.net> … … 958 958 </UML:Class> 959 959 <UML:Class comment="Id$ *//* 960 F reeBobStreaming API961 F reeBob= Firewire (pro-)audio for linux960 FFADO Streaming API 961 FFADO = Firewire (pro-)audio for linux 962 962 963 http://f reebob.sf.net963 http://ffado.sf.net 964 964 965 965 Copyright (C) 2005,2006 Pieter Palmers <pieterpalmers@users.sourceforge.net> … … 1034 1034 <UML:Class isSpecification="false" isLeaf="false" visibility="public" namespace="1" xmi.id="13000" isRoot="false" isAbstract="false" name="enum E_Formats" /> 1035 1035 <UML:Class comment="Id$ *//* 1036 F reeBobStreaming API1037 F reeBob= Firewire (pro-)audio for linux1036 FFADO Streaming API 1037 FFADO = Firewire (pro-)audio for linux 1038 1038 1039 http://f reebob.sf.net1039 http://ffado.sf.net 1040 1040 1041 1041 Copyright (C) 2005,2006 Pieter Palmers <pieterpalmers@users.sourceforge.net> … … 1531 1531 <UML:Class stereotype="13989" isSpecification="false" isLeaf="false" visibility="public" namespace="1" xmi.id="13991" isRoot="false" isAbstract="false" name="SInt32" /> 1532 1532 <UML:Class stereotype="13989" isSpecification="false" isLeaf="false" visibility="public" namespace="1" xmi.id="13992" isRoot="false" isAbstract="false" name="UInt64" /> 1533 <UML:Class comment="Modifications for F reebob(C) 2006, Pieter Palmers1533 <UML:Class comment="Modifications for FFADO (C) 2006, Pieter Palmers 1534 1534 Copied from the jackd/jackdmp sources 1535 1535 function names changed in order to avoid naming problems when using this in … … 1549 1549 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 1550 1550 //*! 1551 \brief The POSIX thread base class." isSpecification="false" isLeaf="false" visibility="public" namespace="1" xmi.id="13993" isRoot="false" isAbstract="false" name="F reebobPosixThread" >1551 \brief The POSIX thread base class." isSpecification="false" isLeaf="false" visibility="public" namespace="1" xmi.id="13993" isRoot="false" isAbstract="false" name="FFADOPosixThread" > 1552 1552 <UML:GeneralizableElement.generalization> 1553 1553 <UML:Generalization xmi.idref="13995" /> … … 1660 1660 </UML:BehavioralFeature.parameter> 1661 1661 </UML:Operation> 1662 <UML:Operation stereotype="12714" isSpecification="false" isLeaf="false" visibility="public" xmi.id="14007" isRoot="false" isAbstract="false" isQuery="false" name="F reebobPosixThread" >1662 <UML:Operation stereotype="12714" isSpecification="false" isLeaf="false" visibility="public" xmi.id="14007" isRoot="false" isAbstract="false" isQuery="false" name="FFADOPosixThread" > 1663 1663 <UML:BehavioralFeature.parameter> 1664 1664 <UML:Parameter isSpecification="false" visibility="private" xmi.id="14010" value="" type="14009" name="runnable" /> … … 1668 1668 </UML:BehavioralFeature.parameter> 1669 1669 </UML:Operation> 1670 <UML:Operation stereotype="12714" isSpecification="false" isLeaf="false" visibility="public" xmi.id="14014" isRoot="false" isAbstract="false" isQuery="false" name="F reebobPosixThread" >1670 <UML:Operation stereotype="12714" isSpecification="false" isLeaf="false" visibility="public" xmi.id="14014" isRoot="false" isAbstract="false" isQuery="false" name="FFADOPosixThread" > 1671 1671 <UML:BehavioralFeature.parameter> 1672 1672 <UML:Parameter isSpecification="false" visibility="private" xmi.id="14015" value="" type="14009" name="runnable" /> 1673 1673 </UML:BehavioralFeature.parameter> 1674 1674 </UML:Operation> 1675 <UML:Operation stereotype="12714" isSpecification="false" isLeaf="false" visibility="public" xmi.id="14016" isRoot="false" isAbstract="false" isQuery="false" name="F reebobPosixThread" >1675 <UML:Operation stereotype="12714" isSpecification="false" isLeaf="false" visibility="public" xmi.id="14016" isRoot="false" isAbstract="false" isQuery="false" name="FFADOPosixThread" > 1676 1676 <UML:BehavioralFeature.parameter> 1677 1677 <UML:Parameter isSpecification="false" visibility="private" xmi.id="14017" value="" type="14009" name="runnable" /> … … 1679 1679 </UML:BehavioralFeature.parameter> 1680 1680 </UML:Operation> 1681 <UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="14019" isRoot="false" isAbstract="false" isQuery="false" name="~ F reebobPosixThread" />1681 <UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="14019" isRoot="false" isAbstract="false" isQuery="false" name="~ FFADOPosixThread" /> 1682 1682 <UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="14020" isRoot="false" isAbstract="false" isQuery="false" name="Start" > 1683 1683 <UML:BehavioralFeature.parameter> … … 1718 1718 </UML:Classifier.feature> 1719 1719 </UML:Class> 1720 <UML:Class isSpecification="false" isLeaf="false" visibility="public" namespace="1" xmi.id="13994" isRoot="false" isAbstract="false" name="F reebobThread" />1720 <UML:Class isSpecification="false" isLeaf="false" visibility="public" namespace="1" xmi.id="13994" isRoot="false" isAbstract="false" name="FFADOThread" /> 1721 1721 <UML:Class isSpecification="false" isLeaf="false" visibility="public" namespace="1" xmi.id="13998" isRoot="false" isAbstract="false" name="pthread_t" /> 1722 1722 <UML:Class isSpecification="false" isLeaf="false" visibility="public" namespace="1" xmi.id="14002" isRoot="false" isAbstract="false" name="volatile bool" /> 1723 <UML:Class isSpecification="false" isLeaf="false" visibility="public" namespace="1" xmi.id="14008" isRoot="false" isAbstract="false" name="F reebobRunnableInterface" />1723 <UML:Class isSpecification="false" isLeaf="false" visibility="public" namespace="1" xmi.id="14008" isRoot="false" isAbstract="false" name="FFADORunnableInterface" /> 1724 1724 <UML:Class comment="Id$ *//* 1725 F reeBobStreaming API1726 F reeBob= Firewire (pro-)audio for linux1725 FFADO Streaming API 1726 FFADO = Firewire (pro-)audio for linux 1727 1727 1728 http://f reebob.sf.net1728 http://ffado.sf.net 1729 1729 1730 1730 Copyright (C) 2005,2006 Pieter Palmers <pieterpalmers@users.sourceforge.net> … … 2554 2554 </UML:Class> 2555 2555 <UML:Class comment="Id$ *//* 2556 F reeBobStreaming API2557 F reeBob= Firewire (pro-)audio for linux2556 FFADO Streaming API 2557 FFADO = Firewire (pro-)audio for linux 2558 2558 2559 http://f reebob.sf.net2559 http://ffado.sf.net 2560 2560 2561 2561 Copyright (C) 2005,2006 Pieter Palmers <pieterpalmers@users.sourceforge.net> … … 3556 3556 </UML:BehavioralFeature.parameter> 3557 3557 </UML:Operation> 3558 <UML:Operation comment="// F reebobRunnableInterface interface// note that this is called in we while(running) loop" isSpecification="false" isLeaf="false" visibility="protected" xmi.id="14649" isRoot="false" isAbstract="false" isQuery="false" name="Execute" >3558 <UML:Operation comment="// FFADORunnableInterface interface// note that this is called in we while(running) loop" isSpecification="false" isLeaf="false" visibility="protected" xmi.id="14649" isRoot="false" isAbstract="false" isQuery="false" name="Execute" > 3559 3559 <UML:BehavioralFeature.parameter> 3560 3560 <UML:Parameter kind="return" xmi.id="LlXy8i6aXj2o" type="12708" /> … … 3686 3686 </UML:Operation> 3687 3687 <UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="14668" isRoot="false" isAbstract="false" isQuery="false" name="~ StreamRunner" /> 3688 <UML:Operation comment="// F reebobRunnableInterface interface// note that this is called in we while(running) loop" isSpecification="false" isLeaf="false" visibility="public" xmi.id="14669" isRoot="false" isAbstract="false" isQuery="false" name="Execute" >3688 <UML:Operation comment="// FFADORunnableInterface interface// note that this is called in we while(running) loop" isSpecification="false" isLeaf="false" visibility="public" xmi.id="14669" isRoot="false" isAbstract="false" isQuery="false" name="Execute" > 3689 3689 <UML:BehavioralFeature.parameter> 3690 3690 <UML:Parameter kind="return" xmi.id="9wZVdbzyKUvQ" type="12708" /> … … 3698 3698 </UML:Classifier.feature> 3699 3699 </UML:Class> 3700 <UML:Class stereotype="13989" isSpecification="false" isLeaf="false" visibility="public" namespace="1" xmi.id="15165" isRoot="false" isAbstract="false" name="f reebob_ringbuffer_data_t" />3701 <UML:Class stereotype="13989" isSpecification="false" isLeaf="false" visibility="public" namespace="1" xmi.id="15166" isRoot="false" isAbstract="false" name="f reebob_ringbuffer_t" />3700 <UML:Class stereotype="13989" isSpecification="false" isLeaf="false" visibility="public" namespace="1" xmi.id="15165" isRoot="false" isAbstract="false" name="ffado_ringbuffer_data_t" /> 3701 <UML:Class stereotype="13989" isSpecification="false" isLeaf="false" visibility="public" namespace="1" xmi.id="15166" isRoot="false" isAbstract="false" name="ffado_ringbuffer_t" /> 3702 3702 <UML:Class comment="Id$ *//* 3703 F reeBobStreaming API3704 F reeBob= Firewire (pro-)audio for linux3703 FFADO Streaming API 3704 FFADO = Firewire (pro-)audio for linux 3705 3705 3706 http://f reebob.sf.net3706 http://ffado.sf.net 3707 3707 3708 3708 Copyright (C) 2005,2006 Pieter Palmers <pieterpalmers@users.sourceforge.net>