Compartir a través de


IEEE 1394 Streaming Filter Driver Differences in Media Types (Windows CE 5.0)

Send Feedback

While the API provided by the driver for streaming data is uniform, requirements on the data transferred is not. Each type of streamed data differs in characteristics, such as size, content, or time stamping. Two formats are described here; for a complete description of all formats, refer to ISO/IEC-61883.

DV and the IEEE 1394 Streaming Filter Driver

Digital video (DV) data, as in the specific form of digital video that camcorders use, has some unique properties. DV frames are of constant length, 120,000 bytes for a National Television Standards Committee (NTSC) DV frame, and 144,400 bytes for a phase alternation line (PAL) DV frame. NTSC DV frames are transmitted at 29.97 frames per second, and PAL DV frames at 25 frames per second, yielding roughly the same overall bytes per second throughput. DV data is transmitted as a predetermined, constant rate, which is around 28 megabits per second.

It is expected that the application will transmit and receive a minimum of one frame per transmitted or received IOCTL call. Frame data cannot be broken into parts.

If a transmitting application generates underflow by not queuing the correct number of frames per second, the IEEE 1394 stack will send empty CIP packets for that frame's period of time. The results of this on the destination are dependent on the destination's particular implementation.

MPEG and the IEEE 1394 Streaming Filter Driver

Motion Picture Experts Group (MPEG) data is represented as MPEG-2 transport stream data. MPEG elementary streams or PES Streams are not sufficient for use. Elementary streams must be made into PES Stream packets, and then further into transport stream packets.

Transport stream packets are defined by IEC-13818-1, and are expected to be 188 bytes in length. Constant-rate MPEG transport streams when PID-filtered are considered to be variable rate. This means that data is not necessarily transmitted at particular points in time. Considering that individual transport stream packets are relatively small, must be transmitted at finite points in time, and are subject to jitter-correction, the application is required to provide not only the individual transport stream packet, but also a 4-byte time stamp that indicates the point in time when the packet should be processed on the receiver.

When initiating a transmit session, the application must provide a maximum throughput number. This is provided in units of bits per second (bps), and must be the**highest bit rate at which you will transfer data for the given stream.

When receiving or transmitting data, it is expected that the application will receive one or more blocks of data at a time. As transport packets are relatively small, it is usually preferable to transmit and receive many packets at once. For example, 1,000 packets would add up to a total usage of 192000 bytes, a manageable amount.

SPH Time Stamp and the IEEE 1394 Streaming Filter Driver

A 4-byte (32 bit) header precedes each 188-byte transport packet in data queued to the streaming filter driver. This header is referred to in IEC-61883-4 as the source packet header (SPH). This value indicates when, in time, the individual packet is to be processed on the receiver, and also guides the IEEE 1394 stack into determining when the packet should be transmitted. This time stamp exists both in MPEG-2 transport stream data received from the streaming filter driver and in data sent to the streaming filter driver for transmission.

When receiving data, you may interpret this time stamp as desired, depending on your particular MPEG architecture and buffer management. When transmitting, however, you must provide this data accurately. Accuracy is extremely important, because this data is tied to the program clock reference (PCR) values encoded within an MPEG-2 transport stream.

The appropriate guide to the details of the SPH value is the IEC standard 61883, part 4 (IEC-61883-4). The following table shows how the SPH values are defined.

Bits Range Description
0 to 11 0 through 3071 IEEE 1394 cycle offset
12 to 24 0 through 7999 IEEE 1394 cycle number
25 to 31 Optional encoded with the lowest seven bits of a seconds counter. This data is neither required nor used in transmission. Not used

The primary IEEE 1394 cycle clock is incremented at a rate of 24.576 megahertz (MHz). Each tick of that clock causes the cycle-offset clock to increment. Each time this clock wraps from 3071 back around to 0, the cycle number is incremented. Thus, the cycle number field is updated at a rate of 1/8,000 of a second, and the cycle offset is 1/3,072 of that time.

For transmission, you can obtain appropriate SPH values either from a previously captured stream, which is a stream read from the driver sent from a device that properly defined the values, or through other means. It is possible to generate generally accurate SPH values from the PCRs in a transport stream.

Send Feedback on this topic to the authors

Feedback FAQs

© 2006 Microsoft Corporation. All rights reserved.