OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 #include <fcntl.h> | 5 #include <fcntl.h> |
6 #include <linux/videodev2.h> | 6 #include <linux/videodev2.h> |
7 #include <poll.h> | 7 #include <poll.h> |
8 #include <sys/eventfd.h> | 8 #include <sys/eventfd.h> |
9 #include <sys/ioctl.h> | 9 #include <sys/ioctl.h> |
10 #include <sys/mman.h> | 10 #include <sys/mman.h> |
(...skipping 222 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
233 : cleared(cleared), picture(picture) { | 233 : cleared(cleared), picture(picture) { |
234 } | 234 } |
235 | 235 |
236 V4L2SliceVideoDecodeAccelerator::PictureRecord::~PictureRecord() { | 236 V4L2SliceVideoDecodeAccelerator::PictureRecord::~PictureRecord() { |
237 } | 237 } |
238 | 238 |
239 class V4L2SliceVideoDecodeAccelerator::V4L2H264Accelerator | 239 class V4L2SliceVideoDecodeAccelerator::V4L2H264Accelerator |
240 : public H264Decoder::H264Accelerator { | 240 : public H264Decoder::H264Accelerator { |
241 public: | 241 public: |
242 V4L2H264Accelerator(V4L2SliceVideoDecodeAccelerator* v4l2_dec); | 242 V4L2H264Accelerator(V4L2SliceVideoDecodeAccelerator* v4l2_dec); |
243 virtual ~V4L2H264Accelerator() override; | 243 ~V4L2H264Accelerator() override; |
244 | 244 |
245 // H264Decoder::H264Accelerator implementation. | 245 // H264Decoder::H264Accelerator implementation. |
246 scoped_refptr<H264Picture> CreateH264Picture() override; | 246 scoped_refptr<H264Picture> CreateH264Picture() override; |
247 | 247 |
248 bool SubmitFrameMetadata(const media::H264SPS* sps, | 248 bool SubmitFrameMetadata(const media::H264SPS* sps, |
249 const media::H264PPS* pps, | 249 const media::H264PPS* pps, |
250 const H264DPB& dpb, | 250 const H264DPB& dpb, |
251 const H264Picture::Vector& ref_pic_listp0, | 251 const H264Picture::Vector& ref_pic_listp0, |
252 const H264Picture::Vector& ref_pic_listb0, | 252 const H264Picture::Vector& ref_pic_listb0, |
253 const H264Picture::Vector& ref_pic_listb1, | 253 const H264Picture::Vector& ref_pic_listb1, |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
315 | 315 |
316 DISALLOW_COPY_AND_ASSIGN(V4L2VP8Accelerator); | 316 DISALLOW_COPY_AND_ASSIGN(V4L2VP8Accelerator); |
317 }; | 317 }; |
318 | 318 |
319 // Codec-specific subclasses of software decoder picture classes. | 319 // Codec-specific subclasses of software decoder picture classes. |
320 // This allows us to keep decoders oblivious of our implementation details. | 320 // This allows us to keep decoders oblivious of our implementation details. |
321 class V4L2H264Picture : public H264Picture { | 321 class V4L2H264Picture : public H264Picture { |
322 public: | 322 public: |
323 V4L2H264Picture(const scoped_refptr< | 323 V4L2H264Picture(const scoped_refptr< |
324 V4L2SliceVideoDecodeAccelerator::V4L2DecodeSurface>& dec_surface); | 324 V4L2SliceVideoDecodeAccelerator::V4L2DecodeSurface>& dec_surface); |
325 virtual ~V4L2H264Picture() override; | |
326 | 325 |
327 V4L2H264Picture* AsV4L2H264Picture() override { return this; } | 326 V4L2H264Picture* AsV4L2H264Picture() override { return this; } |
328 scoped_refptr<V4L2SliceVideoDecodeAccelerator::V4L2DecodeSurface> | 327 scoped_refptr<V4L2SliceVideoDecodeAccelerator::V4L2DecodeSurface> |
329 dec_surface() { | 328 dec_surface() { |
330 return dec_surface_; | 329 return dec_surface_; |
331 } | 330 } |
332 | 331 |
333 private: | 332 private: |
| 333 ~V4L2H264Picture() override; |
| 334 |
334 scoped_refptr<V4L2SliceVideoDecodeAccelerator::V4L2DecodeSurface> | 335 scoped_refptr<V4L2SliceVideoDecodeAccelerator::V4L2DecodeSurface> |
335 dec_surface_; | 336 dec_surface_; |
336 | 337 |
337 DISALLOW_COPY_AND_ASSIGN(V4L2H264Picture); | 338 DISALLOW_COPY_AND_ASSIGN(V4L2H264Picture); |
338 }; | 339 }; |
339 | 340 |
340 V4L2H264Picture::V4L2H264Picture(const scoped_refptr< | 341 V4L2H264Picture::V4L2H264Picture(const scoped_refptr< |
341 V4L2SliceVideoDecodeAccelerator::V4L2DecodeSurface>& dec_surface) | 342 V4L2SliceVideoDecodeAccelerator::V4L2DecodeSurface>& dec_surface) |
342 : dec_surface_(dec_surface) { | 343 : dec_surface_(dec_surface) { |
343 } | 344 } |
344 | 345 |
345 V4L2H264Picture::~V4L2H264Picture() { | 346 V4L2H264Picture::~V4L2H264Picture() { |
346 } | 347 } |
347 | 348 |
348 class V4L2VP8Picture : public VP8Picture { | 349 class V4L2VP8Picture : public VP8Picture { |
349 public: | 350 public: |
350 V4L2VP8Picture(const scoped_refptr< | 351 V4L2VP8Picture(const scoped_refptr< |
351 V4L2SliceVideoDecodeAccelerator::V4L2DecodeSurface>& dec_surface); | 352 V4L2SliceVideoDecodeAccelerator::V4L2DecodeSurface>& dec_surface); |
352 virtual ~V4L2VP8Picture() override; | |
353 | 353 |
354 V4L2VP8Picture* AsV4L2VP8Picture() override { return this; } | 354 V4L2VP8Picture* AsV4L2VP8Picture() override { return this; } |
355 scoped_refptr<V4L2SliceVideoDecodeAccelerator::V4L2DecodeSurface> | 355 scoped_refptr<V4L2SliceVideoDecodeAccelerator::V4L2DecodeSurface> |
356 dec_surface() { | 356 dec_surface() { |
357 return dec_surface_; | 357 return dec_surface_; |
358 } | 358 } |
359 | 359 |
360 private: | 360 private: |
| 361 ~V4L2VP8Picture() override; |
| 362 |
361 scoped_refptr<V4L2SliceVideoDecodeAccelerator::V4L2DecodeSurface> | 363 scoped_refptr<V4L2SliceVideoDecodeAccelerator::V4L2DecodeSurface> |
362 dec_surface_; | 364 dec_surface_; |
363 | 365 |
364 DISALLOW_COPY_AND_ASSIGN(V4L2VP8Picture); | 366 DISALLOW_COPY_AND_ASSIGN(V4L2VP8Picture); |
365 }; | 367 }; |
366 | 368 |
367 V4L2VP8Picture::V4L2VP8Picture(const scoped_refptr< | 369 V4L2VP8Picture::V4L2VP8Picture(const scoped_refptr< |
368 V4L2SliceVideoDecodeAccelerator::V4L2DecodeSurface>& dec_surface) | 370 V4L2SliceVideoDecodeAccelerator::V4L2DecodeSurface>& dec_surface) |
369 : dec_surface_(dec_surface) { | 371 : dec_surface_(dec_surface) { |
370 } | 372 } |
(...skipping 2098 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2469 DCHECK_GT(picture_clearing_count_, 0); | 2471 DCHECK_GT(picture_clearing_count_, 0); |
2470 picture_clearing_count_--; | 2472 picture_clearing_count_--; |
2471 SendPictureReady(); | 2473 SendPictureReady(); |
2472 } | 2474 } |
2473 | 2475 |
2474 bool V4L2SliceVideoDecodeAccelerator::CanDecodeOnIOThread() { | 2476 bool V4L2SliceVideoDecodeAccelerator::CanDecodeOnIOThread() { |
2475 return true; | 2477 return true; |
2476 } | 2478 } |
2477 | 2479 |
2478 } // namespace content | 2480 } // namespace content |
OLD | NEW |