Changeset 747
- Timestamp:
- 11/29/07 13:56:38 (15 years ago)
- Files:
-
- trunk/libffado/src/libstreaming/amdtp/AmdtpReceiveStreamProcessor.cpp (modified) (2 diffs)
- trunk/libffado/src/libstreaming/amdtp/AmdtpTransmitStreamProcessor.cpp (modified) (1 diff)
- trunk/libffado/src/libstreaming/generic/IsoStream.cpp (deleted)
- trunk/libffado/src/libstreaming/generic/IsoStream.h (deleted)
- trunk/libffado/src/libstreaming/generic/StreamProcessor.cpp (modified) (5 diffs)
- trunk/libffado/src/libstreaming/generic/StreamProcessor.h (modified) (3 diffs)
- trunk/libffado/src/libstreaming/motu/MotuReceiveStreamProcessor.cpp (modified) (1 diff)
- trunk/libffado/src/libstreaming/motu/MotuTransmitStreamProcessor.cpp (modified) (1 diff)
- trunk/libffado/src/libstreaming/util/IsoHandler.cpp (modified) (4 diffs)
- trunk/libffado/src/libstreaming/util/IsoHandler.h (modified) (3 diffs)
- trunk/libffado/src/libstreaming/util/IsoHandlerManager.cpp (modified) (10 diffs)
- trunk/libffado/src/libstreaming/util/IsoHandlerManager.h (modified) (5 diffs)
- trunk/libffado/src/SConscript (modified) (1 diff)
- trunk/libffado/tests/SConscript (modified) (1 diff)
- trunk/libffado/tests/SytMonitor.cpp (deleted)
- trunk/libffado/tests/SytMonitor.h (deleted)
- trunk/libffado/tests/test-cycletimer.cpp (deleted)
- trunk/libffado/tests/test-sytmonitor.cpp (deleted)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/libffado/src/libstreaming/amdtp/AmdtpReceiveStreamProcessor.cpp
r742 r747 61 61 return false; 62 62 } 63 64 debugOutput( DEBUG_LEVEL_VERBOSE, "Prepared for:\n");65 debugOutput( DEBUG_LEVEL_VERBOSE, " Samplerate: %d, DBS: %d, SYT: %d\n",66 m_manager->getNominalRate(), m_dimension, m_syt_interval);67 debugOutput( DEBUG_LEVEL_VERBOSE, " PeriodSize: %d, NbBuffers: %d\n",68 m_manager->getPeriodSize(), m_manager->getNbBuffers());69 debugOutput( DEBUG_LEVEL_VERBOSE, " Port: %d, Channel: %d\n",70 m_port,m_channel);71 72 63 return true; 73 64 } … … 136 127 #ifdef DEBUG 137 128 if(isRunning()) { 138 debugOutput(DEBUG_LEVEL_VERY_VERBOSE,"STMP: %lluticks | buff=%d,syt_interval=%d, tpf=%f\n",139 m_last_timestamp, m_ handler->getWakeupInterval(), m_syt_interval, getTicksPerFrame());129 debugOutput(DEBUG_LEVEL_VERY_VERBOSE,"STMP: %lluticks | syt_interval=%d, tpf=%f\n", 130 m_last_timestamp, m_syt_interval, getTicksPerFrame()); 140 131 } 141 132 #endif trunk/libffado/src/libstreaming/amdtp/AmdtpTransmitStreamProcessor.cpp
r742 r747 415 415 } 416 416 } 417 418 debugOutput ( DEBUG_LEVEL_VERBOSE, "Prepared for:\n" );419 debugOutput ( DEBUG_LEVEL_VERBOSE, " Samplerate: %d, FDF: %d, DBS: %d, SYT: %d\n",420 m_manager->getNominalRate(), m_fdf, m_dimension, m_syt_interval );421 debugOutput ( DEBUG_LEVEL_VERBOSE, " PeriodSize: %d, NbBuffers: %d\n",422 m_manager->getPeriodSize(), m_manager->getNbBuffers() );423 debugOutput ( DEBUG_LEVEL_VERBOSE, " Port: %d, Channel: %d\n",424 m_port,m_channel );425 417 return true; 426 418 } trunk/libffado/src/libstreaming/generic/StreamProcessor.cpp
r742 r747 36 36 37 37 StreamProcessor::StreamProcessor(enum eProcessorType type, int port) 38 : IsoStream((type==ePT_Receive ? IsoStream::eST_Receive : IsoStream::eST_Transmit), port) 39 , m_processor_type ( type ) 38 : m_processor_type ( type ) 39 , m_channel( -1 ) 40 , m_port( port ) 41 , m_handler( NULL ) 40 42 , m_state( ePS_Created ) 41 43 , m_next_state( ePS_Invalid ) … … 82 84 return nominal_packets; 83 85 } 86 87 unsigned int 88 StreamProcessor::getPacketsPerPeriod() 89 { 90 return getNominalPacketsNeeded(m_manager->getPeriodSize()); 91 } 92 84 93 85 94 /*********************************************** … … 820 829 return false; 821 830 } 831 832 debugOutput( DEBUG_LEVEL_VERBOSE, "Prepared for:\n"); 833 debugOutput( DEBUG_LEVEL_VERBOSE, " Samplerate: %d\n", 834 m_manager->getNominalRate()); 835 debugOutput( DEBUG_LEVEL_VERBOSE, " PeriodSize: %d, NbBuffers: %d\n", 836 m_manager->getPeriodSize(), m_manager->getNbBuffers()); 837 debugOutput( DEBUG_LEVEL_VERBOSE, " Port: %d, Channel: %d\n", 838 m_port,m_channel); 822 839 823 840 // initialization can be done without requesting it … … 1513 1530 { 1514 1531 debugOutputShort( DEBUG_LEVEL_NORMAL, " StreamProcessor %p information\n", this); 1515 debugOutputShort( DEBUG_LEVEL_NORMAL, " Iso stream info:\n"); 1516 1517 IsoStream::dumpInfo(); 1532 debugOutputShort( DEBUG_LEVEL_NORMAL, " Port, Channel : %d, %d\n", m_port, m_channel); 1518 1533 debugOutputShort( DEBUG_LEVEL_NORMAL, " StreamProcessor info:\n"); 1519 1534 if (m_handler) { … … 1542 1557 StreamProcessor::setVerboseLevel(int l) { 1543 1558 setDebugLevel(l); 1544 IsoStream::setVerboseLevel(l);1545 1559 PortManager::setVerboseLevel(l); 1546 1560 m_data_buffer->setVerboseLevel(l); trunk/libffado/src/libstreaming/generic/StreamProcessor.h
r742 r747 25 25 #define __FFADO_STREAMPROCESSOR__ 26 26 27 #include "IsoStream.h"28 27 #include "PortManager.h" 28 #include "../util/IsoHandler.h" 29 29 30 30 #include "libutil/StreamStatistics.h" … … 47 47 48 48 */ 49 class StreamProcessor : public IsoStream, 50 public PortManager, 49 class StreamProcessor : public PortManager, 51 50 public Util::TimestampedBufferClient, 52 51 public Util::OptionContainer … … 251 250 bool xrunOccurred() { return m_in_xrun; }; 252 251 252 // the ISO interface (can we get rid of this?) 253 public: 254 int getChannel() {return m_channel;}; 255 bool setChannel(int c) 256 {m_channel = c; return true;}; 257 int getPort() {return m_port;}; 258 virtual unsigned int getPacketsPerPeriod(); 259 virtual unsigned int getMaxPacketSize() = 0; 260 // do we need the handler? 261 void setHandler( IsoHandler * h) {m_handler = h;}; 262 void clearHandler() {m_handler = NULL;}; 263 264 private: 265 int m_channel; 266 int m_port; 267 protected: 268 IsoHandler *m_handler; // needed for local id and cycle counter 269 253 270 protected: // FIXME: move to private 254 271 uint64_t m_dropped; /// FIXME:debug trunk/libffado/src/libstreaming/motu/MotuReceiveStreamProcessor.cpp
r742 r747 91 91 // FIXME: not needed anymore? 92 92 //m_ticks_per_frame = (TICKS_PER_SECOND*1.0) / ((float)m_manager->getNominalRate()); 93 94 debugOutput( DEBUG_LEVEL_VERBOSE, "Prepared for:\n");95 debugOutput( DEBUG_LEVEL_VERBOSE, " Samplerate: %d\n",96 m_manager->getNominalRate());97 debugOutput( DEBUG_LEVEL_VERBOSE, " PeriodSize: %d, NbBuffers: %d\n",98 m_manager->getPeriodSize(), m_manager->getNbBuffers());99 debugOutput( DEBUG_LEVEL_VERBOSE, " Port: %d, Channel: %d\n",100 m_port, m_channel);101 93 102 94 return true; trunk/libffado/src/libstreaming/motu/MotuTransmitStreamProcessor.cpp
r742 r747 429 429 } 430 430 #endif 431 432 debugOutput ( DEBUG_LEVEL_VERBOSE, "Prepared for:\n" );433 debugOutput ( DEBUG_LEVEL_VERBOSE, " Samplerate: %d\n",434 m_manager->getNominalRate() );435 debugOutput ( DEBUG_LEVEL_VERBOSE, " PeriodSize: %d, NbBuffers: %d\n",436 m_manager->getPeriodSize(), m_manager->getNbBuffers() );437 debugOutput ( DEBUG_LEVEL_VERBOSE, " Port: %d, Channel: %d\n",438 m_port, m_channel );439 431 return true; 440 432 } trunk/libffado/src/libstreaming/util/IsoHandler.cpp
r742 r747 24 24 #include "IsoHandler.h" 25 25 #include "cycletimer.h" 26 #include "../generic/ IsoStream.h"26 #include "../generic/StreamProcessor.h" 27 27 28 28 #include "libutil/TimeSource.h" … … 345 345 } 346 346 347 bool IsoHandler::registerStream( IsoStream*stream)347 bool IsoHandler::registerStream(StreamProcessor *stream) 348 348 { 349 349 assert(stream); … … 354 354 return false; 355 355 } 356 357 356 m_Client=stream; 358 359 357 m_Client->setHandler(this); 360 361 return true; 362 363 } 364 365 bool IsoHandler::unregisterStream(IsoStream *stream) 358 return true; 359 } 360 361 bool IsoHandler::unregisterStream(StreamProcessor *stream) 366 362 { 367 363 assert(stream); … … 684 680 } 685 681 686 // an recv handler can have multiple destination IsoStreams682 // an recv handler can have multiple destination StreamProcessors 687 683 // NOTE: this implementation even allows for already registered 688 684 // streams to be registered again. trunk/libffado/src/libstreaming/util/IsoHandler.h
r742 r747 34 34 { 35 35 36 class IsoStream;36 class StreamProcessor; 37 37 /*! 38 38 \brief The Base Class for ISO Handlers 39 39 40 40 These classes perform the actual ISO communication through libraw1394. 41 They are different from IsoStreams because one handler can provide multiple41 They are different from StreamProcessors because one handler can provide multiple 42 42 streams with packets in case of ISO multichannel receive. 43 43 … … 88 88 89 89 bool inUse() {return (m_Client != 0) ;}; 90 virtual bool isStreamRegistered( IsoStream*s) {return (m_Client == s);};91 92 virtual bool registerStream( IsoStream*);93 virtual bool unregisterStream( IsoStream*);90 virtual bool isStreamRegistered(StreamProcessor *s) {return (m_Client == s);}; 91 92 virtual bool registerStream(StreamProcessor *); 93 virtual bool unregisterStream(StreamProcessor *); 94 94 95 95 int getLocalNodeId() {return raw1394_get_local_id( m_handle );}; … … 112 112 int m_dropped; 113 113 114 IsoStream*m_Client;114 StreamProcessor *m_Client; 115 115 116 116 virtual int handleBusReset(unsigned int generation); trunk/libffado/src/libstreaming/util/IsoHandlerManager.cpp
r742 r747 24 24 #include "IsoHandlerManager.h" 25 25 #include "IsoHandler.h" 26 #include "../generic/ IsoStream.h"26 #include "../generic/StreamProcessor.h" 27 27 28 28 #include "libutil/PosixThread.h" … … 229 229 } 230 230 231 void IsoHandlerManager::disablePolling( IsoStream*stream) {231 void IsoHandlerManager::disablePolling(StreamProcessor *stream) { 232 232 int i=0; 233 233 … … 248 248 } 249 249 250 void IsoHandlerManager::enablePolling( IsoStream*stream) {250 void IsoHandlerManager::enablePolling(StreamProcessor *stream) { 251 251 int i=0; 252 252 … … 269 269 270 270 /** 271 * Registers an IsoStreamwith the IsoHandlerManager.271 * Registers an StreamProcessor with the IsoHandlerManager. 272 272 * 273 273 * If nescessary, an IsoHandler is created to handle this stream. 274 * Once an IsoStreamis registered to the handler, it will be included274 * Once an StreamProcessor is registered to the handler, it will be included 275 275 * in the ISO streaming cycle (i.e. receive/transmit of it will occur). 276 276 * … … 282 282 * multichannel receive 283 283 */ 284 bool IsoHandlerManager::registerStream( IsoStream*stream)284 bool IsoHandlerManager::registerStream(StreamProcessor *stream) 285 285 { 286 286 debugOutput( DEBUG_LEVEL_VERBOSE, "Registering stream %p\n",stream); … … 303 303 304 304 // allocate a handler for this stream 305 if (stream->get StreamType()==IsoStream::eST_Receive) {305 if (stream->getType()==StreamProcessor::ePT_Receive) { 306 306 // setup the optimal parameters for the raw1394 ISO buffering 307 307 unsigned int packets_per_period = stream->getPacketsPerPeriod(); … … 315 315 // per period for better latency. 316 316 unsigned int max_packet_size=(MINIMUM_INTERRUPTS_PER_PERIOD * getpagesize()) / packets_per_period; 317 317 318 if (max_packet_size < stream->getMaxPacketSize()) { 318 319 debugWarning("calculated max packet size (%u) < stream max packet size (%u)\n", … … 400 401 } 401 402 402 if (stream->get StreamType()==IsoStream::eST_Transmit) {403 if (stream->getType()==StreamProcessor::ePT_Transmit) { 403 404 // setup the optimal parameters for the raw1394 ISO buffering 404 405 unsigned int packets_per_period = stream->getPacketsPerPeriod(); … … 498 499 } 499 500 500 m_ IsoStreams.push_back(stream);501 m_StreamProcessors.push_back(stream); 501 502 debugOutput( DEBUG_LEVEL_VERBOSE, " %d streams, %d handlers registered\n", 502 m_ IsoStreams.size(), m_IsoHandlers.size());503 m_StreamProcessors.size(), m_IsoHandlers.size()); 503 504 504 505 return true; 505 506 } 506 507 507 bool IsoHandlerManager::unregisterStream( IsoStream*stream)508 bool IsoHandlerManager::unregisterStream(StreamProcessor *stream) 508 509 { 509 510 debugOutput( DEBUG_LEVEL_VERBOSE, "Unregistering stream %p\n",stream); … … 529 530 530 531 // remove the stream from the registered streams list 531 for ( IsoStreamVectorIterator it = m_IsoStreams.begin();532 it != m_ IsoStreams.end();532 for ( StreamProcessorVectorIterator it = m_StreamProcessors.begin(); 533 it != m_StreamProcessors.end(); 533 534 ++it ) 534 535 { 535 536 if ( *it == stream ) { 536 m_ IsoStreams.erase(it);537 m_StreamProcessors.erase(it); 537 538 538 539 debugOutput( DEBUG_LEVEL_VERBOSE, " deleted stream (%p) from list...\n", *it); trunk/libffado/src/libstreaming/util/IsoHandlerManager.h
r742 r747 44 44 { 45 45 class IsoHandler; 46 class IsoStream;46 class StreamProcessor; 47 47 48 48 typedef std::vector<IsoHandler *> IsoHandlerVector; 49 49 typedef std::vector<IsoHandler *>::iterator IsoHandlerVectorIterator; 50 50 51 typedef std::vector< IsoStream *> IsoStreamVector;52 typedef std::vector< IsoStream *>::iterator IsoStreamVectorIterator;51 typedef std::vector<StreamProcessor *> StreamProcessorVector; 52 typedef std::vector<StreamProcessor *>::iterator StreamProcessorVectorIterator; 53 53 54 54 … … 57 57 58 58 This class manages the use of ISO handlers by ISO streams. 59 You can register an IsoStreamwith an IsoHandlerManager. This59 You can register an StreamProcessor with an IsoHandlerManager. This 60 60 manager will assign an IsoHandler to the stream. If nescessary 61 61 the manager allocates a new handler. If there is already a handler 62 that can handle the IsoStream(e.g. in case of multichannel receive),62 that can handle the StreamProcessor (e.g. in case of multichannel receive), 63 63 it can be assigned. 64 64 … … 85 85 void dumpInfo(); ///< print some information about the manager to stdout/stderr 86 86 87 bool registerStream( IsoStream*); ///< register an iso stream with the manager88 bool unregisterStream( IsoStream*); ///< unregister an iso stream from the manager87 bool registerStream(StreamProcessor *); ///< register an iso stream with the manager 88 bool unregisterStream(StreamProcessor *); ///< unregister an iso stream from the manager 89 89 90 90 bool startHandlers(); ///< start the managed ISO handlers … … 98 98 bool init(); 99 99 100 void disablePolling( IsoStream*); ///< disables polling on a stream101 void enablePolling( IsoStream*); ///< enables polling on a stream100 void disablePolling(StreamProcessor *); ///< disables polling on a stream 101 void enablePolling(StreamProcessor *); ///< enables polling on a stream 102 102 103 103 // RunnableInterface interface … … 139 139 140 140 // the collection of streams 141 IsoStreamVector m_IsoStreams;141 StreamProcessorVector m_StreamProcessors; 142 142 143 143 // poll stuff trunk/libffado/src/SConscript
r742 r747 67 67 libstreaming/util/IsoHandlerManager.cpp \ 68 68 libstreaming/generic/StreamProcessor.cpp \ 69 libstreaming/generic/IsoStream.cpp \70 69 libstreaming/generic/Port.cpp \ 71 70 libstreaming/generic/PortManager.cpp \ trunk/libffado/tests/SConscript
r742 r747 45 45 #"test-volume" : "test-volume.cpp", 46 46 #"test-mixer" : "test-mixer.cpp", 47 "test-cycletimer" : "test-cycletimer.cpp",48 47 "test-timestampedbuffer" : "test-timestampedbuffer.cpp", 49 48 "test-ieee1394service" : "test-ieee1394service.cpp", 50 49 "test-streamdump" : "test-streamdump.cpp", 51 "test-sytmonitor" : "test-sytmonitor.cpp SytMonitor.cpp",52 50 } 53 51