Changeset 1848
- Timestamp:
- 06/11/10 06:22:02 (3 months ago)
- Files:
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/libffado/doc/rme_notes/rme_config_register_map.txt
r1690 r1848 2 2 ============================================ 3 3 4 Version: 0.1 84 Version: 0.19 5 5 Author: Jonathan Woithe 6 Date: 1 7 October 20096 Date: 11 June 2010 7 7 8 8 … … 620 620 immediately after the standard 2-quadlet firewire iso packet header. 621 621 622 Each iso packet contains a number of samples across all 28 device channels .623 For 1x rates, 7 samples per channel seem to be sent. Thus the size of 624 the data portion of a 1x iso packet is 28*4*7 = 784, with a total packet 625 size being 784 + 8 = 792.622 Each iso packet contains a number of samples across all 28 device channels 623 (18 channels in the case of the ff400). For 1x rates, 7 samples per channel 624 seem to be sent. Thus the size of the data portion of a 1x iso packet is 625 28*4*7 = 784, with a total packet size being 784 + 8 = 792. 626 626 627 627 The data is sent with one audio channel per quadlet. The audio data is a 24 … … 655 655 through. In other words, the "current frame" is not necessarily constant 656 656 for all samples in a packet. 657 658 With the number of samples per channel contained in each iso packet it is 659 not necessary for the RME to send audio data in every iso cycle. When it is 660 deemed that a cycle can be skipped the RME simply doesn't send any packet at 661 all in that cycle. This contrasts with other devices which tend to send 662 empty "placeholder" packets when the need arises. This means that a cycle 663 without a packet from the RME is not necessarily an error condition. To 664 detect dropped packets one must instead rely on the rx sample counter 665 embedded in the audio data stream. 657 666 658 667 trunk/libffado/src/libstreaming/rme/RmeReceiveStreamProcessor.cpp
r1847 r1848 110 110 { 111 111 // For testing 112 quadlet_t *adata = (quadlet_t *)data; 112 113 debugOutput(DEBUG_LEVEL_VERBOSE, "data packet header, len=%d\n", length); 113 114 … … 137 138 debugOutput(DEBUG_LEVEL_VERBOSE, " timestamp: %lld, ct=%08x (%03ld,%04ld,%04ld)\n", m_last_timestamp, ct, 138 139 CYCLE_TIMER_GET_SECS(ct), CYCLE_TIMER_GET_CYCLES(ct), CYCLE_TIMER_GET_OFFSET(ct)); 140 debugOutput(DEBUG_LEVEL_VERBOSE, " %02x %02x %02x %02x %02x %02x %02x %02x\n", 141 adata[0] & 0xff, adata[1] & 0xff, adata[2] & 0xff, adata[3] & 0xff, 142 adata[4] & 0xff, adata[5] & 0xff, adata[6] & 0xff, adata[7] & 0xff); 143 debugOutput(DEBUG_LEVEL_VERBOSE, " tx size=%d, rxcount=%d\n", 144 ((adata[5] & 0xff) << 8) | (adata[0] & 0xff), 145 ((adata[4] & 0xff) << 8) | (adata[1] & 0xff)); 139 146 return eCRV_OK; 140 147 } else {
