Search code examples
formatstreamingsmoothingsmooth-streaming

Smooth Streaming Codec Private Data


When I add a new SSF_STREAM_INFO into the SSF SDK muxer, the header data that is produced doesn't seem to contain a proper value for CodecPrivateData param.

<param name="CodecPrivateData" value="0000000100000001" valuetype="data" />

I am under the impression that this information is used by a smooth streaming player, to decode individual frames. See, when I play back my live stream from my encoder I get a blank frames in my video feed.

If CodecPrivateData is supposed to contain information on decoding frames, how do I properly set it and with what data? Pretty sure that belongs in the MPEG2VIDEOINFO struct (that I use for the stream info's pTypeSpecificInfo field).

Below is more of the header information that the muxer produces. Does any one have any experience with this? Some pointers would be helpful!

`<?xml version="1.0" encoding="utf-8"?>
<smil xmlns="http://www.w3.org/2001/SMIL20/Language">
    <head></head>
    <body>
        <switch>
            <video src="Streams" systemBitrate="500000">
                <param name="trackID" value="1" valuetype="data" />
                <param name="FourCC" value="AVC1" valueType="data" />
                <param name="MaxWidth" value="320" valueType="data" />
                <param name="MaxHeight" value="240" valueType="data" />
                <param name="CodecPrivateData" value="0000000100000001" valuetype="data" />
            </video>
        </switch>
    </body>
</smil>`

My encoder is encoding a live h.264 video feed into the SSF muxer. So I used an MPEG2VIDEOINFO struct for my pTypeSpecificInfo.


Solution

  • The codec private data for AVC1 is supposed to be

    NAL_START_CODE SPS NAL_START_CODE PPS

    where

    NAL_START_CODE is the byte sequence 00,00,00,01

    SPS is Sequence Parameter Set, and

    PPS is Picture Parameter Set

    Source: https://msdn.microsoft.com/en-us/library/ff728116%28v=vs.95%29.aspx