OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 <string> | 5 #include <string> |
6 | 6 |
7 #include "base/basictypes.h" | 7 #include "base/basictypes.h" |
8 #include "base/memory/scoped_ptr.h" | 8 #include "base/memory/scoped_ptr.h" |
9 #include "media/base/android/media_codec_bridge.h" | 9 #include "media/base/android/media_codec_bridge.h" |
10 #include "media/base/android/media_player_manager.h" | 10 #include "media/base/android/media_player_manager.h" |
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
99 | 99 |
100 // Starts an audio decoder job. | 100 // Starts an audio decoder job. |
101 void StartAudioDecoderJob() { | 101 void StartAudioDecoderJob() { |
102 MediaPlayerHostMsg_DemuxerReady_Params params; | 102 MediaPlayerHostMsg_DemuxerReady_Params params; |
103 params.audio_codec = kCodecVorbis; | 103 params.audio_codec = kCodecVorbis; |
104 params.audio_channels = 2; | 104 params.audio_channels = 2; |
105 params.audio_sampling_rate = 44100; | 105 params.audio_sampling_rate = 44100; |
106 params.is_audio_encrypted = false; | 106 params.is_audio_encrypted = false; |
107 scoped_refptr<DecoderBuffer> buffer = ReadTestDataFile("vorbis-extradata"); | 107 scoped_refptr<DecoderBuffer> buffer = ReadTestDataFile("vorbis-extradata"); |
108 params.audio_extra_data = std::vector<uint8>( | 108 params.audio_extra_data = std::vector<uint8>( |
109 buffer->GetData(), | 109 buffer->data(), |
110 buffer->GetData() + buffer->GetDataSize()); | 110 buffer->data() + buffer->data_size()); |
111 Start(params); | 111 Start(params); |
112 } | 112 } |
113 | 113 |
114 void StartVideoDecoderJob() { | 114 void StartVideoDecoderJob() { |
115 MediaPlayerHostMsg_DemuxerReady_Params params; | 115 MediaPlayerHostMsg_DemuxerReady_Params params; |
116 params.video_codec = kCodecVP8; | 116 params.video_codec = kCodecVP8; |
117 params.video_size = gfx::Size(320, 240); | 117 params.video_size = gfx::Size(320, 240); |
118 params.is_video_encrypted = false; | 118 params.is_video_encrypted = false; |
119 Start(params); | 119 Start(params); |
120 } | 120 } |
121 | 121 |
122 // Starts decoding the data. | 122 // Starts decoding the data. |
123 void Start(const MediaPlayerHostMsg_DemuxerReady_Params& params) { | 123 void Start(const MediaPlayerHostMsg_DemuxerReady_Params& params) { |
124 player_->DemuxerReady(params); | 124 player_->DemuxerReady(params); |
125 player_->Start(); | 125 player_->Start(); |
126 } | 126 } |
127 | 127 |
128 MediaPlayerHostMsg_ReadFromDemuxerAck_Params | 128 MediaPlayerHostMsg_ReadFromDemuxerAck_Params |
129 CreateReadFromDemuxerAckForAudio() { | 129 CreateReadFromDemuxerAckForAudio() { |
130 MediaPlayerHostMsg_ReadFromDemuxerAck_Params ack_params; | 130 MediaPlayerHostMsg_ReadFromDemuxerAck_Params ack_params; |
131 ack_params.type = DemuxerStream::AUDIO; | 131 ack_params.type = DemuxerStream::AUDIO; |
132 ack_params.access_units.resize(1); | 132 ack_params.access_units.resize(1); |
133 ack_params.access_units[0].status = DemuxerStream::kOk; | 133 ack_params.access_units[0].status = DemuxerStream::kOk; |
134 scoped_refptr<DecoderBuffer> buffer = ReadTestDataFile("vorbis-packet-0"); | 134 scoped_refptr<DecoderBuffer> buffer = ReadTestDataFile("vorbis-packet-0"); |
135 ack_params.access_units[0].data = std::vector<uint8>( | 135 ack_params.access_units[0].data = std::vector<uint8>( |
136 buffer->GetData(), buffer->GetData() + buffer->GetDataSize()); | 136 buffer->data(), buffer->data() + buffer->data_size()); |
137 // Vorbis needs 4 extra bytes padding on Android to decode properly. Check | 137 // Vorbis needs 4 extra bytes padding on Android to decode properly. Check |
138 // NuMediaExtractor.cpp in Android source code. | 138 // NuMediaExtractor.cpp in Android source code. |
139 uint8 padding[4] = { 0xff , 0xff , 0xff , 0xff }; | 139 uint8 padding[4] = { 0xff , 0xff , 0xff , 0xff }; |
140 ack_params.access_units[0].data.insert( | 140 ack_params.access_units[0].data.insert( |
141 ack_params.access_units[0].data.end(), padding, padding + 4); | 141 ack_params.access_units[0].data.end(), padding, padding + 4); |
142 return ack_params; | 142 return ack_params; |
143 } | 143 } |
144 | 144 |
145 MediaPlayerHostMsg_ReadFromDemuxerAck_Params | 145 MediaPlayerHostMsg_ReadFromDemuxerAck_Params |
146 CreateReadFromDemuxerAckForVideo() { | 146 CreateReadFromDemuxerAckForVideo() { |
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
407 base::PlatformThread::Sleep(base::TimeDelta::FromMilliseconds(100)); | 407 base::PlatformThread::Sleep(base::TimeDelta::FromMilliseconds(100)); |
408 manager_->message_loop()->RunUntilIdle(); | 408 manager_->message_loop()->RunUntilIdle(); |
409 | 409 |
410 // Send new data to the decoder. This should reset the start time ticks. | 410 // Send new data to the decoder. This should reset the start time ticks. |
411 player_->ReadFromDemuxerAck(CreateReadFromDemuxerAckForAudio()); | 411 player_->ReadFromDemuxerAck(CreateReadFromDemuxerAckForAudio()); |
412 base::TimeTicks current = StartTimeTicks(); | 412 base::TimeTicks current = StartTimeTicks(); |
413 EXPECT_LE(100.0, (current - previous).InMillisecondsF()); | 413 EXPECT_LE(100.0, (current - previous).InMillisecondsF()); |
414 } | 414 } |
415 | 415 |
416 } // namespace media | 416 } // namespace media |
OLD | NEW |