OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 // | 4 // |
5 // This file contains an implementation of a class that provides H264 decode | 5 // This file contains an implementation of a class that provides H264 decode |
6 // support for use with VAAPI hardware video decode acceleration on Intel | 6 // support for use with VAAPI hardware video decode acceleration on Intel |
7 // systems. | 7 // systems. |
8 | 8 |
9 #ifndef CONTENT_COMMON_GPU_MEDIA_VAAPI_H264_DECODER_H_ | 9 #ifndef CONTENT_COMMON_GPU_MEDIA_VAAPI_H264_DECODER_H_ |
10 #define CONTENT_COMMON_GPU_MEDIA_VAAPI_H264_DECODER_H_ | 10 #define CONTENT_COMMON_GPU_MEDIA_VAAPI_H264_DECODER_H_ |
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
136 bool InitCurrPicture(media::H264SliceHeader* slice_hdr); | 136 bool InitCurrPicture(media::H264SliceHeader* slice_hdr); |
137 | 137 |
138 // Calculate picture order counts for the new picture | 138 // Calculate picture order counts for the new picture |
139 // on initialization of a new frame (see spec). | 139 // on initialization of a new frame (see spec). |
140 bool CalculatePicOrderCounts(media::H264SliceHeader* slice_hdr); | 140 bool CalculatePicOrderCounts(media::H264SliceHeader* slice_hdr); |
141 | 141 |
142 // Update PicNum values in pictures stored in DPB on creation of new | 142 // Update PicNum values in pictures stored in DPB on creation of new |
143 // frame (see spec). | 143 // frame (see spec). |
144 void UpdatePicNums(); | 144 void UpdatePicNums(); |
145 | 145 |
| 146 bool UpdateMaxNumReorderFrames(const media::H264SPS* sps); |
| 147 |
146 // Prepare reference picture lists (ref_pic_list[01]_). | 148 // Prepare reference picture lists (ref_pic_list[01]_). |
147 bool PrepareRefPicLists(media::H264SliceHeader* slice_hdr); | 149 bool PrepareRefPicLists(media::H264SliceHeader* slice_hdr); |
148 | 150 |
149 // Construct initial reference picture lists for use in decoding of | 151 // Construct initial reference picture lists for use in decoding of |
150 // P and B pictures (see 8.2.4 in spec). | 152 // P and B pictures (see 8.2.4 in spec). |
151 void ConstructReferencePicListsP(media::H264SliceHeader* slice_hdr); | 153 void ConstructReferencePicListsP(media::H264SliceHeader* slice_hdr); |
152 void ConstructReferencePicListsB(media::H264SliceHeader* slice_hdr); | 154 void ConstructReferencePicListsB(media::H264SliceHeader* slice_hdr); |
153 | 155 |
154 // Helper functions for reference list construction, per spec. | 156 // Helper functions for reference list construction, per spec. |
155 int PicNumF(H264Picture *pic); | 157 int PicNumF(H264Picture *pic); |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
234 // Reference picture lists, constructed for each picture before decoding. | 236 // Reference picture lists, constructed for each picture before decoding. |
235 // Those lists are not owners of the pointers (DPB is). | 237 // Those lists are not owners of the pointers (DPB is). |
236 H264Picture::PtrVector ref_pic_list0_; | 238 H264Picture::PtrVector ref_pic_list0_; |
237 H264Picture::PtrVector ref_pic_list1_; | 239 H264Picture::PtrVector ref_pic_list1_; |
238 | 240 |
239 // Global state values, needed in decoding. See spec. | 241 // Global state values, needed in decoding. See spec. |
240 int max_pic_order_cnt_lsb_; | 242 int max_pic_order_cnt_lsb_; |
241 int max_frame_num_; | 243 int max_frame_num_; |
242 int max_pic_num_; | 244 int max_pic_num_; |
243 int max_long_term_frame_idx_; | 245 int max_long_term_frame_idx_; |
| 246 size_t max_num_reorder_frames_; |
244 | 247 |
245 int frame_num_; | 248 int frame_num_; |
246 int prev_frame_num_; | 249 int prev_frame_num_; |
247 int prev_frame_num_offset_; | 250 int prev_frame_num_offset_; |
248 bool prev_has_memmgmnt5_; | 251 bool prev_has_memmgmnt5_; |
249 | 252 |
250 // Values related to previously decoded reference picture. | 253 // Values related to previously decoded reference picture. |
251 bool prev_ref_has_memmgmnt5_; | 254 bool prev_ref_has_memmgmnt5_; |
252 int prev_ref_top_field_order_cnt_; | 255 int prev_ref_top_field_order_cnt_; |
253 int prev_ref_pic_order_cnt_msb_; | 256 int prev_ref_pic_order_cnt_msb_; |
(...skipping 29 matching lines...) Expand all Loading... |
283 | 286 |
284 // PicOrderCount of the previously outputted frame. | 287 // PicOrderCount of the previously outputted frame. |
285 int last_output_poc_; | 288 int last_output_poc_; |
286 | 289 |
287 DISALLOW_COPY_AND_ASSIGN(VaapiH264Decoder); | 290 DISALLOW_COPY_AND_ASSIGN(VaapiH264Decoder); |
288 }; | 291 }; |
289 | 292 |
290 } // namespace content | 293 } // namespace content |
291 | 294 |
292 #endif // CONTENT_COMMON_GPU_MEDIA_VAAPI_H264_DECODER_H_ | 295 #endif // CONTENT_COMMON_GPU_MEDIA_VAAPI_H264_DECODER_H_ |
OLD | NEW |