| 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 |