| 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 |