Index: content/common/gpu/media/v4l2_slice_video_decode_accelerator.cc |
diff --git a/content/common/gpu/media/v4l2_slice_video_decode_accelerator.cc b/content/common/gpu/media/v4l2_slice_video_decode_accelerator.cc |
index dafcf7ecf371ad1770bed82e01577491e5ea8200..4d98f2a72ef72aed626f6f54b38d1f5c4a8b25e6 100644 |
--- a/content/common/gpu/media/v4l2_slice_video_decode_accelerator.cc |
+++ b/content/common/gpu/media/v4l2_slice_video_decode_accelerator.cc |
@@ -1777,18 +1777,23 @@ void V4L2SliceVideoDecodeAccelerator::V4L2H264Accelerator::H264DPBToV4L2DPB( |
DVLOG(1) << "Invalid DPB size"; |
break; |
} |
+ |
+ int index = VIDEO_MAX_FRAME; |
+ if (!pic->nonexisting) { |
+ scoped_refptr<V4L2DecodeSurface> dec_surface = |
+ H264PictureToV4L2DecodeSurface(pic); |
+ index = dec_surface->output_record(); |
+ ref_surfaces->push_back(dec_surface); |
+ } |
+ |
struct v4l2_h264_dpb_entry& entry = v4l2_decode_param_.dpb[i++]; |
- scoped_refptr<V4L2DecodeSurface> dec_surface = |
- H264PictureToV4L2DecodeSurface(pic); |
- entry.buf_index = dec_surface->output_record(); |
+ entry.buf_index = index; |
entry.frame_num = pic->frame_num; |
entry.pic_num = pic->pic_num; |
entry.top_field_order_cnt = pic->top_field_order_cnt; |
entry.bottom_field_order_cnt = pic->bottom_field_order_cnt; |
entry.flags = (pic->ref ? V4L2_H264_DPB_ENTRY_FLAG_ACTIVE : 0) | |
(pic->long_term ? V4L2_H264_DPB_ENTRY_FLAG_LONG_TERM : 0); |
- |
- ref_surfaces->push_back(dec_surface); |
} |
} |