Page 4 |
![]() |
|
5.0 Multi-channel Unsplit Process This section outlines the sequence of steps involved in the Unsplit Process. Configure the Unsplit Process to parse for the Telos Systems frame header. Allocate a memory buffer for each physical channel used to receive data. The size of the buffer is very important to the Unsplit Process. The buffer should be able to store half the total number of frames supported by the Telos Systems frame header. In particular, the size of each buffer should be: 0.5 * (128 max frames * 64 words/frame * 24 bits/word) = 98304 bits Construct 24-bit values from data received on each 56 Kbps or 64 Kbps physical channel. Store the constructed 24-bit values in the corresponding buffer associated with each physical channel. Parse the received data from each physical channel and search for the Telos Systems frame header. Create a table with the buffer address and bit shift used to locate the Telos Systems frame header within the buffered data from each physical channel. Wait until at least two Telos Systems frame headers have detected in each physical channel buffer. Figures 4 and 5 illustrate the Unsplit Process for two physical channels. (The same concept can be extended for more than two channels). The first step in the Unsplit Process is to compare the Frame Count field in the last Telos Systems frame header detected for each channel. If the current Frame Count field values are equal, then the frames are already synchronized and the buffered data can be sent along to the Decoder once the Telos Systems frame header is extracted and the proper data ordering is determined. (More about this in a moment). Figures 4 and 5 show two examples of when the Frame Count field values are unequal, and how to determine which channel has connected at the receiving side and received data first.
Figure 4 illustrates the situation where the difference in the Frame Count field is less than 64 frames (i.e. the channel buffer size). Physical Channel #1 has connected first and has already five frames worth of data in its buffer (i.e. current Frame Count = 4), while Physical Channel #0 has just received its second frame (i.e. current Frame Count = 1) as shown in this figure. The Unsplit Process computes the difference between the current Frame Count values, and determines that Physical Channel #1 has connected first because it has the larger Frame Count value but the difference is less than 64 frames. The Unsplit Process uses the Frame Count difference to compute a negative offset into the Physical Channel #1 Frame Header Look Up Table to locate the position of the frame with the same Frame Count value as Physical Channel #0 (i.e. Frame Count = 1). The Unsplit Process would follow the same steps if Physical Channel #0 had the larger Frame Count value, but the difference is less than 64 frames, to locate the Physical Channel #0 frame with the matching current Frame Count value as Physical Channel #1.
Figure 5 illustrates the situation where the Frame Count field value for Physical Channel #0 has wrapped back around to zero, thus the difference between the two Frame Count fields is more than or equal to 64 frames. (This can occur when the transmission is disrupted and reconnected on one physical channel). When the Unsplit Process computes the difference between the current Frame Count values and sees the value is 64 frames or greater, the Unsplit Process determines that physical channel with the lower Frame Count field connected first. As shown in Figure 5, Physical Channel #1 has actually connected at the receiving end after Physical Channel #0, even though Frame Count field value (i.e. 127) is greater than the Frame Count field value for Physical Channel #0 (i.e. 1). The Unsplit Process uses the Frame Count difference to compute a negative offset into the Physical Channel #0 Frame Header Look Up Table to locate the position of the frame with the same Frame Count value as Physical Channel #1 (i.e. Frame Count = 127). Once the current common frame is located in each physical channel buffer, it is time to reconstruct the original encoded audio stream. The Unsplit Process extracts the Telos Systems specific frame header from the split audio stream in each receive channel buffer, and examines the Channel ID number in the frame header. The Unsplit Process then uses the Channel ID number to restore the original sequence of 24-bit values. The Unsplit Process copies one 24-bit value at a time from each channel buffer into a separate output buffer which holds the data being sent to the AAC or AAC-LD Decoder. After copying sixty-three 24-bit values from each channel buffer, the next value in each channel buffer should be a Telos Systems specific frame header. If it has a Frame Count field value one increment higher than the previous frame header, then continue copying data from the channel buffer to the common output buffer. If the Telos Systems specific frame header is not found, or it does not have the expected Frame Count field value, then the Unsplit Process must re-synchronize the physical channel data streams again before sending data to the AAC or AAC-LD Decoder. | |