Input and Output Buffers (IIS Smooth Streaming Format SDK)

IIS 7.0

[Note: This topic is pre-release documentation and is subject to change in future releases. Blank topics are included as placeholders.]

The SSF SDK expects compressed video and audio payloads as input. The input structure is codec-agnostic, and requires only basic information such as size, duration, and timestamp information. The output structure contains the f-MP4 wire format fragment/chunk along with timestamp information and duration. Note that bmiHeader.biCompression is big-endian. For more information, see SSFMuxAddStream (IIS Smooth Streaming Format SDK API)

The input and output data structures are defined below.

The SSF_SAMPLE structure specifies the input parameters for SSFMuxProcessInput (IIS Smooth Streaming Format SDK API).

typedef struct _tagSSF_SAMPLE

{
    // Pointer to buffer containing the sample data
    __bcount(cbSampleData) LPVOID pSampleData;

    // Size of the data in the sample data buffer
    DWORD cbSampleData;

    // Flags that indicate which of the following fields are set
    SSF_SAMPLE_FLAGS flags;
    UINT64 qwSampleStartTime;
    UINT64 qwSampleDuration;
    SSF_FRAME_TYPE FrameType;

    // Pointer to optional buffer containing the user data
    __bcount_opt(cbUsedData) LPVOID pUserData;

    // Size of the data in the user data buffer
    DWORD cbUserData;

    // Pointer to an optional array that specifies what parts of the
    // sample to protect when DRM is enabled
    __in_ecount_opt(cProtectedRanges) SSF_RANGE* prgProtectedRanges;

    // Number of elements in the prgProtectedRanges array
    DWORD cProtectedRanges;
} SSF_SAMPLE;

The SSF_BUFFER receives the output buffer of some of the SSF API.

typedef struct _tagSSF_BUFFER
{
    // Pointer to the buffer containing the data
    __bcount(cbBuffer) BYTE* pbBuffer;

    // Size of the data in the buffer
    DWORD cbBuffer;

    // Start time of the fragment (valid for SSFMuxProcessOutput)
    UINT64 qwTime;

    // Duration of the fragment (valid for SSFMuxProcessOutput
    UINT64 qwDuration;

} SSF_BUFFER;

typedef struct
{

    DWORD dwOffset;

    DWORD dwLength;

} SSF_RANGE;

The SSF_STREAM_INFO structure describes the stream properties for SSFMuxAddStream (IIS Smooth Streaming Format SDK API).

typedef struct _tagSSF_STREAM_INFO
{

    // The type of the stream (audio, video, etc)
    SSF_STREAM_TYPE streamType;

    // Average bitrate for this stream, in bits per second
    INT32 dwBitrate;

    // Bitrate index for this stream (used in client manifest)
    INT32 dwBitrateID;

    // Optional hardware profile
    DWORD dwHardwareProfile;

    // Pointer to buffer containing the media type specific information
    // according to the stream type:
    //      SSF_STREAM_AUDIO - WAVEFORMATEX
    //      SSF_STREAM_VIDEO - VIDEOINFOHEADER2 or MPEG2VIDEOINFO
    //      SSF_STREAM_TTML1  - not used, it should be empty
    __bcount_opt(cbTypeSpecificInfo) LPCVOID pTypeSpecificInfo;

    // Size of the data in the type specific information buffer
    DWORD cbTypeSpecificInfo;

    // The language of the stream in ISO 639-2/T three character code
    WORD wLanguage;

    // Mandatory source file name to set as the 'src' attribute in the
    // server manifest. Example: "Video.ismv"
    LPCWSTR pszSourceFileName;

    // Optional track name to set as the 'Name' attribute of the
    // StreamIndex element in the client manifest and as the
    // 'trackName' parameter in the server manifest. If absent, the
    // SDK will generate a default name.
    //
    LPCWSTR pszTrackName;
}
SSF_STREAM_INFO;

Show: