| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "content/renderer/pepper/video_decoder_shim.h" | 5 #include "content/renderer/pepper/video_decoder_shim.h" |
| 6 | 6 |
| 7 #include <GLES2/gl2.h> | 7 #include <GLES2/gl2.h> |
| 8 #include <GLES2/gl2ext.h> | 8 #include <GLES2/gl2ext.h> |
| 9 #include <GLES2/gl2extchromium.h> | 9 #include <GLES2/gl2extchromium.h> |
| 10 #include <utility> | 10 #include <utility> |
| (...skipping 639 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 650 | 650 |
| 651 private: | 651 private: |
| 652 void OnInitDone(bool success); | 652 void OnInitDone(bool success); |
| 653 void DoDecode(); | 653 void DoDecode(); |
| 654 void OnDecodeComplete(media::DecodeStatus status); | 654 void OnDecodeComplete(media::DecodeStatus status); |
| 655 void OnOutputComplete(const scoped_refptr<media::VideoFrame>& frame); | 655 void OnOutputComplete(const scoped_refptr<media::VideoFrame>& frame); |
| 656 void OnResetComplete(); | 656 void OnResetComplete(); |
| 657 | 657 |
| 658 // WeakPtr is bound to main_message_loop_. Use only in shim callbacks. | 658 // WeakPtr is bound to main_message_loop_. Use only in shim callbacks. |
| 659 base::WeakPtr<VideoDecoderShim> shim_; | 659 base::WeakPtr<VideoDecoderShim> shim_; |
| 660 media::MediaLog media_log_; |
| 660 std::unique_ptr<media::VideoDecoder> decoder_; | 661 std::unique_ptr<media::VideoDecoder> decoder_; |
| 661 bool initialized_ = false; | 662 bool initialized_ = false; |
| 662 scoped_refptr<base::SingleThreadTaskRunner> main_task_runner_; | 663 scoped_refptr<base::SingleThreadTaskRunner> main_task_runner_; |
| 663 // Queue of decodes waiting for the decoder. | 664 // Queue of decodes waiting for the decoder. |
| 664 typedef std::queue<PendingDecode> PendingDecodeQueue; | 665 typedef std::queue<PendingDecode> PendingDecodeQueue; |
| 665 PendingDecodeQueue pending_decodes_; | 666 PendingDecodeQueue pending_decodes_; |
| 666 bool awaiting_decoder_ = false; | 667 bool awaiting_decoder_ = false; |
| 667 // VideoDecoder returns pictures without information about the decode buffer | 668 // VideoDecoder returns pictures without information about the decode buffer |
| 668 // that generated it, but VideoDecoder implementations used in this class | 669 // that generated it, but VideoDecoder implementations used in this class |
| 669 // (media::FFmpegVideoDecoder and media::VpxVideoDecoder) always generate | 670 // (media::FFmpegVideoDecoder and media::VpxVideoDecoder) always generate |
| (...skipping 20 matching lines...) Expand all Loading... |
| 690 DCHECK(!decoder_); | 691 DCHECK(!decoder_); |
| 691 #if !defined(MEDIA_DISABLE_LIBVPX) | 692 #if !defined(MEDIA_DISABLE_LIBVPX) |
| 692 if (config.codec() == media::kCodecVP9) { | 693 if (config.codec() == media::kCodecVP9) { |
| 693 decoder_.reset(new media::VpxVideoDecoder()); | 694 decoder_.reset(new media::VpxVideoDecoder()); |
| 694 } else | 695 } else |
| 695 #endif | 696 #endif |
| 696 | 697 |
| 697 #if !defined(MEDIA_DISABLE_FFMPEG) && !defined(DISABLE_FFMPEG_VIDEO_DECODERS) | 698 #if !defined(MEDIA_DISABLE_FFMPEG) && !defined(DISABLE_FFMPEG_VIDEO_DECODERS) |
| 698 { | 699 { |
| 699 std::unique_ptr<media::FFmpegVideoDecoder> ffmpeg_video_decoder( | 700 std::unique_ptr<media::FFmpegVideoDecoder> ffmpeg_video_decoder( |
| 700 new media::FFmpegVideoDecoder( | 701 new media::FFmpegVideoDecoder(&media_log_)); |
| 701 make_scoped_refptr(new media::MediaLog()))); | |
| 702 ffmpeg_video_decoder->set_decode_nalus(true); | 702 ffmpeg_video_decoder->set_decode_nalus(true); |
| 703 decoder_ = std::move(ffmpeg_video_decoder); | 703 decoder_ = std::move(ffmpeg_video_decoder); |
| 704 } | 704 } |
| 705 #elif defined(MEDIA_DISABLE_LIBVPX) | 705 #elif defined(MEDIA_DISABLE_LIBVPX) |
| 706 OnInitDone(false); | 706 OnInitDone(false); |
| 707 return; | 707 return; |
| 708 #endif | 708 #endif |
| 709 | 709 |
| 710 // VpxVideoDecoder and FFmpegVideoDecoder support only one pending Decode() | 710 // VpxVideoDecoder and FFmpegVideoDecoder support only one pending Decode() |
| 711 // request. | 711 // request. |
| (...skipping 408 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1120 void VideoDecoderShim::DeleteTexture(uint32_t texture_id) { | 1120 void VideoDecoderShim::DeleteTexture(uint32_t texture_id) { |
| 1121 gpu::gles2::GLES2Interface* gles2 = context_provider_->ContextGL(); | 1121 gpu::gles2::GLES2Interface* gles2 = context_provider_->ContextGL(); |
| 1122 gles2->DeleteTextures(1, &texture_id); | 1122 gles2->DeleteTextures(1, &texture_id); |
| 1123 } | 1123 } |
| 1124 | 1124 |
| 1125 void VideoDecoderShim::FlushCommandBuffer() { | 1125 void VideoDecoderShim::FlushCommandBuffer() { |
| 1126 context_provider_->ContextGL()->Flush(); | 1126 context_provider_->ContextGL()->Flush(); |
| 1127 } | 1127 } |
| 1128 | 1128 |
| 1129 } // namespace content | 1129 } // namespace content |
| OLD | NEW |