Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1283)

Side by Side Diff: content/renderer/pepper/video_decoder_shim.cc

Issue 1834303005: Refactor audio and video decoder status into common file. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Comments. Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « content/common/gpu/media/video_encode_accelerator_unittest.cc ('k') | media/base/BUILD.gn » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 632 matching lines...) Expand 10 before | Expand all | Expand 10 after
643 ~DecoderImpl(); 643 ~DecoderImpl();
644 644
645 void Initialize(media::VideoDecoderConfig config); 645 void Initialize(media::VideoDecoderConfig config);
646 void Decode(uint32_t decode_id, scoped_refptr<media::DecoderBuffer> buffer); 646 void Decode(uint32_t decode_id, scoped_refptr<media::DecoderBuffer> buffer);
647 void Reset(); 647 void Reset();
648 void Stop(); 648 void Stop();
649 649
650 private: 650 private:
651 void OnInitDone(bool success); 651 void OnInitDone(bool success);
652 void DoDecode(); 652 void DoDecode();
653 void OnDecodeComplete(media::VideoDecoder::Status status); 653 void OnDecodeComplete(media::DecodeStatus status);
654 void OnOutputComplete(const scoped_refptr<media::VideoFrame>& frame); 654 void OnOutputComplete(const scoped_refptr<media::VideoFrame>& frame);
655 void OnResetComplete(); 655 void OnResetComplete();
656 656
657 // WeakPtr is bound to main_message_loop_. Use only in shim callbacks. 657 // WeakPtr is bound to main_message_loop_. Use only in shim callbacks.
658 base::WeakPtr<VideoDecoderShim> shim_; 658 base::WeakPtr<VideoDecoderShim> shim_;
659 scoped_ptr<media::VideoDecoder> decoder_; 659 scoped_ptr<media::VideoDecoder> decoder_;
660 bool initialized_ = false; 660 bool initialized_ = false;
661 scoped_refptr<base::SingleThreadTaskRunner> main_task_runner_; 661 scoped_refptr<base::SingleThreadTaskRunner> main_task_runner_;
662 // Queue of decodes waiting for the decoder. 662 // Queue of decodes waiting for the decoder.
663 typedef std::queue<PendingDecode> PendingDecodeQueue; 663 typedef std::queue<PendingDecode> PendingDecodeQueue;
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
725 DoDecode(); 725 DoDecode();
726 } 726 }
727 727
728 void VideoDecoderShim::DecoderImpl::Reset() { 728 void VideoDecoderShim::DecoderImpl::Reset() {
729 DCHECK(decoder_); 729 DCHECK(decoder_);
730 // Abort all pending decodes. 730 // Abort all pending decodes.
731 while (!pending_decodes_.empty()) { 731 while (!pending_decodes_.empty()) {
732 const PendingDecode& decode = pending_decodes_.front(); 732 const PendingDecode& decode = pending_decodes_.front();
733 scoped_ptr<PendingFrame> pending_frame(new PendingFrame(decode.decode_id)); 733 scoped_ptr<PendingFrame> pending_frame(new PendingFrame(decode.decode_id));
734 main_task_runner_->PostTask( 734 main_task_runner_->PostTask(
735 FROM_HERE, base::Bind(&VideoDecoderShim::OnDecodeComplete, shim_, 735 FROM_HERE, base::Bind(&VideoDecoderShim::OnDecodeComplete, shim_, PP_OK,
736 media::VideoDecoder::kAborted, decode.decode_id)); 736 decode.decode_id));
737 pending_decodes_.pop(); 737 pending_decodes_.pop();
738 } 738 }
739 // Don't need to call Reset() if the |decoder_| hasn't been initialized. 739 // Don't need to call Reset() if the |decoder_| hasn't been initialized.
740 if (!initialized_) { 740 if (!initialized_) {
741 OnResetComplete(); 741 OnResetComplete();
742 return; 742 return;
743 } 743 }
744 744
745 decoder_->Reset(base::Bind(&VideoDecoderShim::DecoderImpl::OnResetComplete, 745 decoder_->Reset(base::Bind(&VideoDecoderShim::DecoderImpl::OnResetComplete,
746 weak_ptr_factory_.GetWeakPtr())); 746 weak_ptr_factory_.GetWeakPtr()));
(...skipping 27 matching lines...) Expand all
774 awaiting_decoder_ = true; 774 awaiting_decoder_ = true;
775 const PendingDecode& decode = pending_decodes_.front(); 775 const PendingDecode& decode = pending_decodes_.front();
776 decode_id_ = decode.decode_id; 776 decode_id_ = decode.decode_id;
777 decoder_->Decode(decode.buffer, 777 decoder_->Decode(decode.buffer,
778 base::Bind(&VideoDecoderShim::DecoderImpl::OnDecodeComplete, 778 base::Bind(&VideoDecoderShim::DecoderImpl::OnDecodeComplete,
779 weak_ptr_factory_.GetWeakPtr())); 779 weak_ptr_factory_.GetWeakPtr()));
780 pending_decodes_.pop(); 780 pending_decodes_.pop();
781 } 781 }
782 782
783 void VideoDecoderShim::DecoderImpl::OnDecodeComplete( 783 void VideoDecoderShim::DecoderImpl::OnDecodeComplete(
784 media::VideoDecoder::Status status) { 784 media::DecodeStatus status) {
785 DCHECK(awaiting_decoder_); 785 DCHECK(awaiting_decoder_);
786 awaiting_decoder_ = false; 786 awaiting_decoder_ = false;
787 787
788 int32_t result; 788 int32_t result;
789 switch (status) { 789 switch (status) {
790 case media::VideoDecoder::kOk: 790 case media::DecodeStatus::OK:
791 case media::VideoDecoder::kAborted: 791 case media::DecodeStatus::ABORTED:
792 result = PP_OK; 792 result = PP_OK;
793 break; 793 break;
794 case media::VideoDecoder::kDecodeError: 794 case media::DecodeStatus::DECODE_ERROR:
795 result = PP_ERROR_RESOURCE_FAILED; 795 result = PP_ERROR_RESOURCE_FAILED;
796 break; 796 break;
797 default:
798 NOTREACHED();
799 result = PP_ERROR_FAILED;
800 break;
801 } 797 }
802 798
803 main_task_runner_->PostTask( 799 main_task_runner_->PostTask(
804 FROM_HERE, base::Bind(&VideoDecoderShim::OnDecodeComplete, shim_, result, 800 FROM_HERE, base::Bind(&VideoDecoderShim::OnDecodeComplete, shim_, result,
805 decode_id_)); 801 decode_id_));
806 802
807 DoDecode(); 803 DoDecode();
808 } 804 }
809 805
810 void VideoDecoderShim::DecoderImpl::OnOutputComplete( 806 void VideoDecoderShim::DecoderImpl::OnOutputComplete(
(...skipping 309 matching lines...) Expand 10 before | Expand all | Expand 10 after
1120 void VideoDecoderShim::DeleteTexture(uint32_t texture_id) { 1116 void VideoDecoderShim::DeleteTexture(uint32_t texture_id) {
1121 gpu::gles2::GLES2Interface* gles2 = context_provider_->ContextGL(); 1117 gpu::gles2::GLES2Interface* gles2 = context_provider_->ContextGL();
1122 gles2->DeleteTextures(1, &texture_id); 1118 gles2->DeleteTextures(1, &texture_id);
1123 } 1119 }
1124 1120
1125 void VideoDecoderShim::FlushCommandBuffer() { 1121 void VideoDecoderShim::FlushCommandBuffer() {
1126 context_provider_->ContextGL()->Flush(); 1122 context_provider_->ContextGL()->Flush();
1127 } 1123 }
1128 1124
1129 } // namespace content 1125 } // namespace content
OLDNEW
« no previous file with comments | « content/common/gpu/media/video_encode_accelerator_unittest.cc ('k') | media/base/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698