static GstVideoFrame *
gst_base_video_decoder_new_frame (GstBaseVideoDecoder * base_video_decoder)
{
  GstBaseVideoDecoderClass *base_video_decoder_class =
      GST_BASE_VIDEO_DECODER_GET_CLASS (base_video_decoder);

  GstVideoFrame *frame;

  if (base_video_decoder_class->create_frame)
    frame = base_video_decoder_class->create_frame (base_video_decoder);
  else
    frame = gst_video_frame_new ();

  return frame;
}
static GstVideoFrame *
gst_base_video_decoder_new_frame (GstBaseVideoDecoder * base_video_decoder)
{
  GstBaseVideoDecoderClass *base_video_decoder_class =
      GST_BASE_VIDEO_DECODER_GET_CLASS (base_video_decoder);

  GstVideoFrame *frame;

  if (base_video_decoder_class->create_frame)
    frame = base_video_decoder_class->create_frame (base_video_decoder);
  else
    frame = gst_video_frame_new ();

  frame->system_frame_number = base_video_decoder->system_frame_number;
  base_video_decoder->system_frame_number++;

  frame->decode_frame_number = frame->system_frame_number -
      base_video_decoder->reorder_depth;

  return frame;
}