• Stefan Holmer's avatar
    New ways of passing encoded data between encoder and decoder. · 7296b3f9
    Stefan Holmer authored
    With this commit frames can be received partition-by-partition
    from the encoder and passed partition-by-partition to the
    decoder.
    
    At the encoder-side this makes it easier to split encoded
    frames at partition boundaries, useful when packetizing
    frames. When VPX_CODEC_USE_OUTPUT_PARTITION is enabled,
    several VPX_CODEC_CX_FRAME_PKT packets will be returned
    from vpx_codec_get_cx_data(), containing one partition
    each. The partition_id (starting at 0) specifies the decoding
    order of the partitions. All partitions but the last has
    the VPX_FRAME_IS_FRAGMENT flag set.
    
    At the decoder this opens up the possibility of decoding partition
    N even though partition N-1 was lost (given that independent
    partitioning has been enabled in the encoder) if more info
    about the missing parts of the stream is available through
    external signaling.
    
    Each partition is passed to the decoder through the
    vpx_codec_decode() function, with the data pointer pointing
    to the start of the partition, and with data_sz equal to the
    size of the partition. Missing partitions can be signaled to
    the decoder by setting data != NULL and data_sz = 0. When
    all partitions have been given to the decoder "end of data"
    should be signaled by calling vpx_codec_decode() with
    data = NULL and data_sz = 0.
    
    The first partition is the first partition according to the
    VP8 bitstream + the uncompressed data chunk + DCT address
    offsets if multiple residual partitions are used.
    
    Change-Id: I5bc0682b9e4112e0db77904755c694c3c7ac6e74
    7296b3f9
vpx_encoder.h 34.4 KB