Annex 4 to AVC-598R

ISO/IEC JTC1/SC29/WG11
MPEG93/965
November 1993

Temporary Document No.8 rev (Daejeon)
October 29, 1993

Source:	ITU-T SG15 Experts Group for Video Coding and Systems in ATM and Other Network Environments
Title:	Decoding start-up algorithm for VBR coded bitstream
Relevant sub-groups: Video, Systems

---------------------

This document describes an example of workable solution for the VBR decoding start-up.  This issue is not specific to the ATM video coding, but common among various applications including digital storage media applications.

When we have first received a picture header, we should decide how much time after that point decoding (i.e. removal of coded data from VBV buffer) be started.  The current WD method for CBR operation uses vbv_delay to indicate this timing, which is equivalent to indicate the buffer occupancy at that point of time decoding is started.

The current description for VBR operation intends to indicate the buffer occupancy, at which time decoding is started, by using the value of vbv_delay and the maximum bit rate in bit_rate   For the encoder to write the vbv_delay value at the start of encoding, it should know the future transmission bit rates for the subsequent L period (L is the constant delay between encoder input picture and the decoder output picture).  This is impossible in general except for very few specific cases, e.g. where transmission of any coded data for a picture is completed within a picture time, i.e. the encoder buffer is always empty when it starts to encode a new picture.

A general method for the decoder to correctly determine the timing to start decoding a coded picture is to use PTS/DTS in the system layer.  It is noted that this method is applicable not only to VBR but also CBR (because CBR is a subset of VBR).

When the decoder starts to receive a Systems bitstream (PS for explanation), it operates as follows (see Figure);

1)	Search a Pack Header, and read the SCR value.  Then using their values, phase lock the local STC with the remote STC 

2)	Search a Video Packet Header and read the PTS/DTS.  DTS is the necessary information in this discussion.  The encoder puts a DTS as the time to start encoding a picture plus L (second), where L is the constant delay between encoder input picture and the decoder output picture.

3)	Search a Picture Header in the video packet.  Then start to forward the coded video data to the receiving buffer with discarding all the bits before the picture start code.

4)	Start decoding at the time indicated by DTS.

It should be noted that the encoder is responsible to generate coded data so that the decoder buffer never overflows nor underflows within the limits of buffer sizes indicated by vbv_buffer_size in video and STD_buffer_bound_scale/STD_buffer_size_bound in Systems as well as L value which encoder decides as a design parameter.

In conclusion, the Experts Group propose to define the semantics for vbv_delay and bit_rate as follows;

	vbv_delay	set "FFFF" in case of VBR 
	bit_rate	"undefined" in case of VBR

Furthermore,  we encourage implementers to apply the DTS method described here even for the CBR operation.

END