tree 3f4a31e70626968e9e7e040fc8208d8e379ca8b5
parent 7a3853e6a1d079f02ca4cd37640b8549dff501b4
author Wan-Teh Chang <wtc@google.com> 1573086019 -0800
committer Wan-Teh Chang <wtc@google.com> 1573594785 +0000

Implement the frame_header_copy check in the spec.

Section 5.9.1 of the spec says:

  frame_header_obu( ) {
      if ( SeenFrameHeader == 1 ) {
          frame_header_copy()
      } else {
          SeenFrameHeader = 1
          uncompressed_header( )
          if ( show_existing_frame ) {
              decode_frame_wrapup( )
              SeenFrameHeader = 0
          } else {
              TileNum = 0
              SeenFrameHeader = 1
          }
      }
  }

Note that if SeenFrameHeader is equal to 1, we should call
frame_header_copy().

Section 6.8.1 of the spec says:

  frame_header_copy is a function call that indicates that a copy of the
  previous frame_header_obu should be inserted at this point.

    Note: Bitstreams may contain several copies of the frame_header_obu
    interspersed with tile_group_obu to allow for greater error
    resilience. However, the copies must contain identical contents to
    the original frame_header_obu.

Change-Id: I342716452d64be36989b445804024a4899c7e6df
