Index: /branches/streaming-rework/config.h.in =================================================================== --- /branches/streaming-rework/config.h.in (revision 412) +++ /branches/streaming-rework/config.h.in (revision 425) @@ -84,5 +84,5 @@ #undef const -/* Define to `unsigned' if does not define. */ +/* Define to `unsigned int' if does not define. */ #undef size_t Index: /branches/streaming-rework/src/libstreaming/MotuStreamProcessor.cpp =================================================================== --- /branches/streaming-rework/src/libstreaming/MotuStreamProcessor.cpp (revision 419) +++ /branches/streaming-rework/src/libstreaming/MotuStreamProcessor.cpp (revision 425) @@ -409,14 +409,14 @@ // allocate the internal buffer - float ticks_per_frame = (TICKS_PER_SECOND*1.0) / ((float)m_framerate); + m_ticks_per_frame = (TICKS_PER_SECOND*1.0) / ((float)m_framerate); unsigned int events_per_frame = m_framerate<=48000?8:(m_framerate<=96000?16:32); assert(m_data_buffer); m_data_buffer->setBufferSize(ringbuffer_size_frames); - m_data_buffer->setEventSize(m_event_size/events_per_frame); - m_data_buffer->setEventsPerFrame(events_per_frame); + m_data_buffer->setEventSize(m_event_size); + m_data_buffer->setEventsPerFrame(1); m_data_buffer->setUpdatePeriod(m_period); - m_data_buffer->setNominalRate(ticks_per_frame); + m_data_buffer->setNominalRate(m_ticks_per_frame); // FIXME: check if the timestamp wraps at one second @@ -919,4 +919,5 @@ m_data_buffer->setBufferTailTimestamp(m_last_timestamp2); +debugOutput(DEBUG_LEVEL_VERBOSE,"On enable: last ts2=%lld\n",m_last_timestamp2); } else { debugOutput(DEBUG_LEVEL_VERY_VERBOSE, @@ -989,5 +990,8 @@ // set the timestamp as if there will be a sample put into // the buffer by the next packet. +if (ts > TICKS_PER_SECOND) + ts -= TICKS_PER_SECOND; m_data_buffer->setBufferTailTimestamp(ts); +debugOutput(DEBUG_LEVEL_VERBOSE,"%p, last ts=%lld, ts=%lld, lts2=%lld\n", m_data_buffer, m_last_timestamp, ts, m_last_timestamp2); return RAW1394_ISO_DEFER; @@ -995,4 +999,5 @@ debugOutput( DEBUG_LEVEL_VERY_VERBOSE, "put packet...\n"); +debugOutput(DEBUG_LEVEL_VERBOSE,"enabled: %p, last ts=%lld, ts2=%lld\n",m_data_buffer, m_last_timestamp, m_last_timestamp2); //=> process the packet @@ -1074,5 +1079,5 @@ // prepare the framerate estimate - float ticks_per_frame = (TICKS_PER_SECOND*1.0) / ((float)m_framerate); + m_ticks_per_frame = (TICKS_PER_SECOND*1.0) / ((float)m_framerate); // initialize internal buffer @@ -1083,9 +1088,12 @@ assert(m_data_buffer); m_data_buffer->setBufferSize(ringbuffer_size_frames); - m_data_buffer->setEventSize(m_event_size/events_per_frame); - m_data_buffer->setEventsPerFrame(events_per_frame); - - m_data_buffer->setUpdatePeriod(m_period); - m_data_buffer->setNominalRate(ticks_per_frame); + m_data_buffer->setEventSize(m_event_size); + m_data_buffer->setEventsPerFrame(1); + +// JMW: The rx buffer receives a new timestamp once per received frame so I think the +// buffer update period is events_per_frame, not events per period. +// m_data_buffer->setUpdatePeriod(m_period); + m_data_buffer->setUpdatePeriod(events_per_frame); + m_data_buffer->setNominalRate(m_ticks_per_frame); m_data_buffer->setWrapValue(TICKS_PER_SECOND);