- Timestamp:
- 11/28/07 03:25:27 (13 years ago)
- Files:
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
branches/ppalmers-streaming/src/libstreaming/motu/MotuTransmitStreamProcessor.h
r732 r733 22 22 */ 23 23 24 #ifndef __FFADO_ AMDTPTRANSMITSTREAMPROCESSOR__25 #define __FFADO_ AMDTPTRANSMITSTREAMPROCESSOR__24 #ifndef __FFADO_MOTUTRANSMITSTREAMPROCESSOR__ 25 #define __FFADO_MOTUTRANSMITSTREAMPROCESSOR__ 26 26 27 27 /** 28 * This class implements IEC61883-6 / AM824 / AMDTPbased streaming28 * This class implements MOTU based streaming 29 29 */ 30 30 … … 34 34 #include "../util/cip.h" 35 35 36 #include <libiec61883/iec61883.h>37 #include <pthread.h>38 39 #define AMDTP_MAX_PACKET_SIZE 204840 41 #define IEC61883_STREAM_TYPE_MIDI 0x0D42 #define IEC61883_STREAM_TYPE_SPDIF 0x0043 #define IEC61883_STREAM_TYPE_MBLA 0x0644 45 #define IEC61883_AM824_LABEL_MASK 0xFF00000046 #define IEC61883_AM824_GET_LABEL(x) (((x) & 0xFF000000) >> 24)47 #define IEC61883_AM824_SET_LABEL(x,y) ((x) | ((y)<<24))48 49 #define IEC61883_AM824_LABEL_MIDI_NO_DATA 0x8050 #define IEC61883_AM824_LABEL_MIDI_1X 0x8151 #define IEC61883_AM824_LABEL_MIDI_2X 0x8252 #define IEC61883_AM824_LABEL_MIDI_3X 0x8353 54 36 namespace Streaming { 55 37 56 38 class Port; 57 class AmdtpAudioPort; 58 class AmdtpMidiPort; 39 class MotuAudioPort; 59 40 60 41 /*! 61 \brief The Base Class for an AMDTPtransmit stream processor42 \brief The Base Class for an MOTU transmit stream processor 62 43 63 44 This class implements a TransmitStreamProcessor that multiplexes Ports 64 into AMDTPstreams.45 into MOTU streams. 65 46 66 47 */ 67 class AmdtpTransmitStreamProcessor48 class MotuTransmitStreamProcessor 68 49 : public StreamProcessor 69 50 { … … 71 52 public: 72 53 /** 73 * Create a AMDTP transmit StreamProcessor 74 * @param port 1394 port 75 * @param framerate frame rate 76 * @param dimension number of substreams in the ISO stream 77 * (midi-muxed is only one stream) 54 * Create a MOTU transmit StreamProcessor 78 55 */ 79 AmdtpTransmitStreamProcessor(int port, int dimension);80 virtual ~ AmdtpTransmitStreamProcessor() {};56 MotuTransmitStreamProcessor(int port, unsigned int event_size); 57 virtual ~MotuTransmitStreamProcessor() {}; 81 58 82 59 enum eChildReturnValue generatePacketHeader(unsigned char *data, unsigned int *length, … … 95 72 96 73 public: 97 virtual unsigned int getEventSize() 98 {return 4;}; 99 virtual unsigned int getMaxPacketSize() 100 {return 4 * (2 + m_syt_interval * m_dimension);}; 101 virtual unsigned int getEventsPerFrame() 102 { return m_dimension; }; 103 virtual unsigned int getNominalFramesPerPacket() 104 {return m_syt_interval;}; 105 virtual unsigned int getPacketsPerPeriod(); 106 virtual unsigned int getNominalPacketsNeeded(unsigned int nframes); 74 virtual unsigned int getEventSize() 75 {return m_event_size;}; 76 virtual unsigned int getMaxPacketSize(); 77 virtual unsigned int getEventsPerFrame() 78 { return 1; }; // FIXME: check 79 virtual unsigned int getNominalFramesPerPacket(); 107 80 108 81 protected: … … 111 84 112 85 private: 113 unsigned int fillNoDataPacketHeader( struct iec61883_packet *packet, unsigned int* length);114 unsigned int fillDataPacketHeader( struct iec61883_packet *packet, unsigned int* length, uint32_t ts);86 unsigned int fillNoDataPacketHeader(quadlet_t *data, unsigned int* length); 87 unsigned int fillDataPacketHeader(quadlet_t *data, unsigned int* length, uint32_t ts); 115 88 116 89 int transmitBlock(char *data, unsigned int nevents, … … 120 93 unsigned int dbc); 121 94 122 int encodePortToM BLAEvents(AmdtpAudioPort *, quadlet_t *data,95 int encodePortToMotuEvents(MotuAudioPort *, quadlet_t *data, 123 96 unsigned int offset, unsigned int nevents); 124 int encodeSilencePortToM BLAEvents(AmdtpAudioPort *, quadlet_t *data,97 int encodeSilencePortToMotuEvents(MotuAudioPort *, quadlet_t *data, 125 98 unsigned int offset, unsigned int nevents); 126 99 127 struct iec61883_cip m_cip_status; 128 int m_dimension; 129 unsigned int m_syt_interval; 130 int m_fdf; 131 unsigned int m_dbc; 100 /* 101 * An iso packet mostly consists of multiple events. m_event_size 102 * is the size of a single 'event' in bytes. 103 */ 104 unsigned int m_event_size; 105 106 // Keep track of transmission data block count 107 unsigned int m_tx_dbc; 108 132 109 }; 133 110 134 111 } // end of namespace Streaming 135 112 136 #endif /* __FFADO_ AMDTPTRANSMITSTREAMPROCESSOR__ */113 #endif /* __FFADO_MOTUTRANSMITSTREAMPROCESSOR__ */ 137 114