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

Side by Side Diff: media/mojo/services/mojo_demuxer_stream_adapter.cc

Issue 2416183002: media: Use native DemuxerStream enum types in media mojo interfaces (Closed)
Patch Set: comments addressed Created 4 years, 2 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 | « media/mojo/services/mojo_demuxer_stream_adapter.h ('k') | no next file » | 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 "media/mojo/services/mojo_demuxer_stream_adapter.h" 5 #include "media/mojo/services/mojo_demuxer_stream_adapter.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
11 #include "base/callback_helpers.h" 11 #include "base/callback_helpers.h"
12 #include "base/numerics/safe_conversions.h" 12 #include "base/numerics/safe_conversions.h"
13 #include "media/base/decoder_buffer.h" 13 #include "media/base/decoder_buffer.h"
14 #include "media/mojo/common/media_type_converters.h" 14 #include "media/mojo/common/media_type_converters.h"
15 #include "media/mojo/common/mojo_decoder_buffer_converter.h" 15 #include "media/mojo/common/mojo_decoder_buffer_converter.h"
16 #include "mojo/public/cpp/system/data_pipe.h" 16 #include "mojo/public/cpp/system/data_pipe.h"
17 17
18 namespace media { 18 namespace media {
19 19
20 MojoDemuxerStreamAdapter::MojoDemuxerStreamAdapter( 20 MojoDemuxerStreamAdapter::MojoDemuxerStreamAdapter(
21 mojom::DemuxerStreamPtr demuxer_stream, 21 mojom::DemuxerStreamPtr demuxer_stream,
22 const base::Closure& stream_ready_cb) 22 const base::Closure& stream_ready_cb)
23 : demuxer_stream_(std::move(demuxer_stream)), 23 : demuxer_stream_(std::move(demuxer_stream)),
24 stream_ready_cb_(stream_ready_cb), 24 stream_ready_cb_(stream_ready_cb),
25 type_(DemuxerStream::UNKNOWN), 25 type_(UNKNOWN),
26 weak_factory_(this) { 26 weak_factory_(this) {
27 DVLOG(1) << __FUNCTION__; 27 DVLOG(1) << __FUNCTION__;
28 demuxer_stream_->Initialize(base::Bind( 28 demuxer_stream_->Initialize(base::Bind(
29 &MojoDemuxerStreamAdapter::OnStreamReady, weak_factory_.GetWeakPtr())); 29 &MojoDemuxerStreamAdapter::OnStreamReady, weak_factory_.GetWeakPtr()));
30 } 30 }
31 31
32 MojoDemuxerStreamAdapter::~MojoDemuxerStreamAdapter() { 32 MojoDemuxerStreamAdapter::~MojoDemuxerStreamAdapter() {
33 DVLOG(1) << __FUNCTION__; 33 DVLOG(1) << __FUNCTION__;
34 } 34 }
35 35
36 void MojoDemuxerStreamAdapter::Read(const DemuxerStream::ReadCB& read_cb) { 36 void MojoDemuxerStreamAdapter::Read(const ReadCB& read_cb) {
37 DVLOG(3) << __FUNCTION__; 37 DVLOG(3) << __FUNCTION__;
38 // We shouldn't be holding on to a previous callback if a new Read() came in. 38 // We shouldn't be holding on to a previous callback if a new Read() came in.
39 DCHECK(read_cb_.is_null()); 39 DCHECK(read_cb_.is_null());
40 40
41 read_cb_ = read_cb; 41 read_cb_ = read_cb;
42 demuxer_stream_->Read(base::Bind(&MojoDemuxerStreamAdapter::OnBufferReady, 42 demuxer_stream_->Read(base::Bind(&MojoDemuxerStreamAdapter::OnBufferReady,
43 weak_factory_.GetWeakPtr())); 43 weak_factory_.GetWeakPtr()));
44 } 44 }
45 45
46 AudioDecoderConfig MojoDemuxerStreamAdapter::audio_decoder_config() { 46 AudioDecoderConfig MojoDemuxerStreamAdapter::audio_decoder_config() {
47 DCHECK_EQ(type_, DemuxerStream::AUDIO); 47 DCHECK_EQ(type_, AUDIO);
48 return audio_config_; 48 return audio_config_;
49 } 49 }
50 50
51 VideoDecoderConfig MojoDemuxerStreamAdapter::video_decoder_config() { 51 VideoDecoderConfig MojoDemuxerStreamAdapter::video_decoder_config() {
52 DCHECK_EQ(type_, DemuxerStream::VIDEO); 52 DCHECK_EQ(type_, VIDEO);
53 return video_config_; 53 return video_config_;
54 } 54 }
55 55
56 DemuxerStream::Type MojoDemuxerStreamAdapter::type() const { 56 DemuxerStream::Type MojoDemuxerStreamAdapter::type() const {
57 return type_; 57 return type_;
58 } 58 }
59 59
60 void MojoDemuxerStreamAdapter::EnableBitstreamConverter() { 60 void MojoDemuxerStreamAdapter::EnableBitstreamConverter() {
61 demuxer_stream_->EnableBitstreamConverter(); 61 demuxer_stream_->EnableBitstreamConverter();
62 } 62 }
(...skipping 16 matching lines...) Expand all
79 NOTIMPLEMENTED(); 79 NOTIMPLEMENTED();
80 } 80 }
81 81
82 void MojoDemuxerStreamAdapter::SetStreamStatusChangeCB( 82 void MojoDemuxerStreamAdapter::SetStreamStatusChangeCB(
83 const StreamStatusChangeCB& cb) { 83 const StreamStatusChangeCB& cb) {
84 NOTIMPLEMENTED(); 84 NOTIMPLEMENTED();
85 } 85 }
86 86
87 // TODO(xhwang): Pass liveness here. 87 // TODO(xhwang): Pass liveness here.
88 void MojoDemuxerStreamAdapter::OnStreamReady( 88 void MojoDemuxerStreamAdapter::OnStreamReady(
89 mojom::DemuxerStream::Type type, 89 Type type,
90 mojo::ScopedDataPipeConsumerHandle consumer_handle, 90 mojo::ScopedDataPipeConsumerHandle consumer_handle,
91 mojom::AudioDecoderConfigPtr audio_config, 91 mojom::AudioDecoderConfigPtr audio_config,
92 mojom::VideoDecoderConfigPtr video_config) { 92 mojom::VideoDecoderConfigPtr video_config) {
93 DVLOG(1) << __FUNCTION__; 93 DVLOG(1) << __FUNCTION__;
94 DCHECK_EQ(DemuxerStream::UNKNOWN, type_); 94 DCHECK_EQ(UNKNOWN, type_);
95 DCHECK(consumer_handle.is_valid()); 95 DCHECK(consumer_handle.is_valid());
96 96
97 type_ = static_cast<DemuxerStream::Type>(type); 97 type_ = type;
98 98
99 mojo_decoder_buffer_reader_.reset( 99 mojo_decoder_buffer_reader_.reset(
100 new MojoDecoderBufferReader(std::move(consumer_handle))); 100 new MojoDecoderBufferReader(std::move(consumer_handle)));
101 101
102 UpdateConfig(std::move(audio_config), std::move(video_config)); 102 UpdateConfig(std::move(audio_config), std::move(video_config));
103 103
104 stream_ready_cb_.Run(); 104 stream_ready_cb_.Run();
105 } 105 }
106 106
107 void MojoDemuxerStreamAdapter::OnBufferReady( 107 void MojoDemuxerStreamAdapter::OnBufferReady(
108 mojom::DemuxerStream::Status status, 108 Status status,
109 mojom::DecoderBufferPtr buffer, 109 mojom::DecoderBufferPtr buffer,
110 mojom::AudioDecoderConfigPtr audio_config, 110 mojom::AudioDecoderConfigPtr audio_config,
111 mojom::VideoDecoderConfigPtr video_config) { 111 mojom::VideoDecoderConfigPtr video_config) {
112 DVLOG(3) << __FUNCTION__; 112 DVLOG(3) << __FUNCTION__;
113 DCHECK(!read_cb_.is_null()); 113 DCHECK(!read_cb_.is_null());
114 DCHECK_NE(type_, DemuxerStream::UNKNOWN); 114 DCHECK_NE(type_, UNKNOWN);
115 115
116 if (status == mojom::DemuxerStream::Status::CONFIG_CHANGED) { 116 if (status == kConfigChanged) {
117 UpdateConfig(std::move(audio_config), std::move(video_config)); 117 UpdateConfig(std::move(audio_config), std::move(video_config));
118 base::ResetAndReturn(&read_cb_).Run(DemuxerStream::kConfigChanged, nullptr); 118 base::ResetAndReturn(&read_cb_).Run(kConfigChanged, nullptr);
119 return; 119 return;
120 } 120 }
121 121
122 if (status == mojom::DemuxerStream::Status::ABORTED) { 122 if (status == kAborted) {
123 base::ResetAndReturn(&read_cb_).Run(DemuxerStream::kAborted, nullptr); 123 base::ResetAndReturn(&read_cb_).Run(kAborted, nullptr);
124 return; 124 return;
125 } 125 }
126 126
127 DCHECK_EQ(status, mojom::DemuxerStream::Status::OK); 127 DCHECK_EQ(status, kOk);
128 128
129 scoped_refptr<DecoderBuffer> media_buffer = 129 scoped_refptr<DecoderBuffer> media_buffer =
130 mojo_decoder_buffer_reader_->ReadDecoderBuffer(buffer); 130 mojo_decoder_buffer_reader_->ReadDecoderBuffer(buffer);
131 if (!media_buffer) { 131 if (!media_buffer) {
132 base::ResetAndReturn(&read_cb_).Run(DemuxerStream::kAborted, nullptr); 132 base::ResetAndReturn(&read_cb_).Run(kAborted, nullptr);
133 return; 133 return;
134 } 134 }
135 135
136 base::ResetAndReturn(&read_cb_).Run(DemuxerStream::kOk, media_buffer); 136 base::ResetAndReturn(&read_cb_).Run(kOk, media_buffer);
137 } 137 }
138 138
139 void MojoDemuxerStreamAdapter::UpdateConfig( 139 void MojoDemuxerStreamAdapter::UpdateConfig(
140 mojom::AudioDecoderConfigPtr audio_config, 140 mojom::AudioDecoderConfigPtr audio_config,
141 mojom::VideoDecoderConfigPtr video_config) { 141 mojom::VideoDecoderConfigPtr video_config) {
142 DCHECK_NE(type_, DemuxerStream::UNKNOWN); 142 DCHECK_NE(type_, UNKNOWN);
143 143
144 switch(type_) { 144 switch(type_) {
145 case DemuxerStream::AUDIO: 145 case AUDIO:
146 DCHECK(audio_config && !video_config); 146 DCHECK(audio_config && !video_config);
147 audio_config_ = audio_config.To<AudioDecoderConfig>(); 147 audio_config_ = audio_config.To<AudioDecoderConfig>();
148 break; 148 break;
149 case DemuxerStream::VIDEO: 149 case VIDEO:
150 DCHECK(video_config && !audio_config); 150 DCHECK(video_config && !audio_config);
151 video_config_ = video_config.To<VideoDecoderConfig>(); 151 video_config_ = video_config.To<VideoDecoderConfig>();
152 break; 152 break;
153 default: 153 default:
154 NOTREACHED(); 154 NOTREACHED();
155 } 155 }
156 } 156 }
157 157
158 } // namespace media 158 } // namespace media
OLDNEW
« no previous file with comments | « media/mojo/services/mojo_demuxer_stream_adapter.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698