Ticket #152 (assigned enhancement)

Opened 4 months ago

Last modified 3 months ago

Alesis io14 playback support

Reported by: adi Assigned to: ppalmers (accepted)
Priority: minor Milestone: FFADO 2.1
Version: FFADO SVN (trunk) Keywords:
Cc: The device the bug applies to: Alesis io14

Description

Hi!

The io14-playback.patch makes the dice code working for Alesis io14. It's still necessary to set AMDTP_ALLOW_PAYLOAD_IN_NODATA_XMIT to 0 in the toplevel config.h, but perhaps it's possible circumvent that somehow.

Attachments

io14-playback.patch (0.6 kB) - added by adi on 08/27/08 07:26:34.
nodata-xmit.patch (0.7 kB) - added by adi on 09/23/08 14:02:42.

Change History

08/27/08 07:26:34 changed by adi

  • attachment io14-playback.patch added.

09/23/08 02:10:37 changed by ppalmers

(In [1332]) re #152: applied the patch.

09/23/08 02:11:52 changed by ppalmers

  • status changed from new to assigned.
  • owner set to ppalmers.

It should not be necessary to set AMDTP_ALLOW_PAYLOAD_IN_NODATA_XMIT to 0, since the code for the dice disables this dynamically. Can you try whether it works with AMDTP_ALLOW_PAYLOAD_IN_NODATA_XMIT set to 1?

09/23/08 14:01:56 changed by adi

I've rechecked with AMDTP_ALLOW_PAYLOAD_IN_NODATA_XMIT=1, and it immediately gives:

126392527373: Error (StreamProcessorManager.cpp)[ 702] alignReceivedStreams: Could not shift SP 0xd70580 -5 frames
126392527431: Error (StreamProcessorManager.cpp)[ 629] syncStartAll: Could not align streams...
126393128059: Warning (StreamProcessorManager.cpp)[ 660] alignReceivedStreams: xrun while aligning streams...
126393128115: Error (StreamProcessorManager.cpp)[ 629] syncStartAll: Could not align streams...

and finally:

126399134051: Error (StreamProcessorManager.cpp)[ 702] alignReceivedStreams: Could not shift SP 0xd70580 -5 frames
126399134113: Error (StreamProcessorManager.cpp)[ 629] syncStartAll: Could not align streams...
126399134128: Fatal (StreamProcessorManager.cpp)[ 742] start: Could not syncStartAll...
126402723678: Fatal (IsoHandlerManager.cpp)[ 341] Execute: (0xd6f850, Receive) Handler died: now: 46D00B36, last: 4028A000, diff: 81957686 (max: 49152000)
126402723733: Warning (StreamProcessor.cpp)[ 127] handlerDied: Handler died for 0xd712e0
firewire ERR: Could not start streaming threads: -1
DRIVER NT: could not start driver
cannot start driver

As soon as I switch back to AMDTP_ALLOW_PAYLOAD_IN_NODATA_XMIT=0, everything's fine. Ok, it's pretty sensitive: changing the workspaces or opening a new firefox tab causes an audible glitch accompanied by

126661619240: Warning (TimestampedBuffer.cpp)[ 431] writeFrames: ringbuffer full, 256, 31
126661619418: Warning (StreamProcessorManager.cpp)[ 660] alignReceivedStreams: xrun while aligning streams...
126661619462: Error (StreamProcessorManager.cpp)[ 629] syncStartAll: Could not align streams...
126662373537: Error (StreamProcessorManager.cpp)[ 702] alignReceivedStreams: Could not shift SP 0x8ff580 -7 frames

This might be caused by the nx6325 AMD C1E stability problem (large clock jitter on my dualcore laptop). Linux-2.6.27 should fix the underlying timer issue, so once 2.6.27 will be available, I can see whether the xruns still occur or not.

I've checked all occurances of AMDTP_ALLOW_PAYLOAD_IN_NODATA_XMIT and added

   assert (false == m_send_nodata_payload );

to libstreaming/amdtp/AmdtpTransmitStreamProcessor.cpp:375. This leads to

jackd: src/libstreaming/amdtp/AmdtpTransmitStreamProcessor.cpp:375: unsigned int Streaming::AmdtpTransmitStreamProcessor::fillNoDataPacketHeader(iec61883_packet*, unsigned int*): Assertion `false == m_send_nodata_payload' failed.
Aborted

Replacing the assertion with printf reveals that m_send_nodata_payload is always true, so the code in dice_avdevice.c isn't executed.

I've tracked it down: config.h needs to be included in dice_avdevice.c and AmdtpTransmitStreamProcessor?.h in order to propagate the correct value of AMDTP_ALLOW_PAYLOAD_IN_NODATA_XMIT.

I'll attach a patch to this ticket.

09/23/08 14:02:42 changed by adi

  • attachment nodata-xmit.patch added.

09/24/08 09:40:37 changed by ppalmers

  • milestone changed from FFADO 2.0 to FFADO 2.1.

09/24/08 09:42:57 changed by ppalmers

(In [1347]) re #152: apply patch