Previous: Software decode/mux/recode
Previous Page: Software decode/mux/recode
Next Page: Audio
This path through the CMMC is undergoing testing in Jan 1994
The method of quad multiplexing is based upon a properties of the definition of H.261.
H.261 defines two formats for video transmission, Common Image Format (CIF - 352 pixels by 288 pixels) and Quarter CIF (QCIF 176 pixels by 144 pixels). For compression, each image is divided up into groups of blocks (GOBs), which in turn comprise macro-blocks, which themselves are formed from blocks of 8x8 pixels. In a QCIF image, the picture is divided up into three groups of blocks (1 GOB by 3 GOBs). In a CIF image, the picture is divided up into twelve groups of blocks (2 GOBs by 6 GOBs), so that in effect a QCIF image is really just the top left quarter of a CIF image. The numbering of blocks and macroblocks within each group of blocks is identical.
To combine four QCIF streams into one CIF stream, we parse the incoming QCIF streams searching for Group of Block Start Codes (GBSC), and renumber the groups of blocks to correspond with those in the target quarter in the resulting CIF image. We then interleave the groups of blocks from the four streams on a first come first served basis. We must also be sure to insert Picture Start Codes (PSC) at least as frequently as in the fastest moving stream of video. This will result in a CIF image stream that conforms to the H.261 specification.
If none of the incoming streams contains motion vectors, the multiplex is now complete. If any of the incoming streams contains motion vectors however, more modification of the stream will be necessary to prevent "bleedover" between groups of blocks. In practise it may be necessary to parse some of the groups of blocks and delete groups of blocks neighboring other images to prevent corruption of image boundaries. Obviously this requires more CPU power than just combining groups of blocks, but will still require considerably less than actually decompressing the data, and will also greatly reduce the delays normally associated with decompression/compression of data.