| 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 "content/renderer/media/android/media_source_delegate.h" | 5 #include "content/renderer/media/android/media_source_delegate.h" |
| 6 | 6 |
| 7 #include <limits> | 7 #include <limits> |
| 8 #include <string> | 8 #include <string> |
| 9 #include <utility> |
| 9 #include <vector> | 10 #include <vector> |
| 10 | 11 |
| 11 #include "base/strings/string_number_conversions.h" | 12 #include "base/strings/string_number_conversions.h" |
| 12 #include "base/thread_task_runner_handle.h" | 13 #include "base/thread_task_runner_handle.h" |
| 13 #include "content/renderer/media/android/renderer_demuxer_android.h" | 14 #include "content/renderer/media/android/renderer_demuxer_android.h" |
| 14 #include "media/base/android/demuxer_stream_player_params.h" | 15 #include "media/base/android/demuxer_stream_player_params.h" |
| 15 #include "media/base/bind_to_current_loop.h" | 16 #include "media/base/bind_to_current_loop.h" |
| 16 #include "media/base/demuxer_stream.h" | 17 #include "media/base/demuxer_stream.h" |
| 17 #include "media/base/media_log.h" | 18 #include "media/base/media_log.h" |
| 18 #include "media/base/timestamp_constants.h" | 19 #include "media/base/timestamp_constants.h" |
| (...skipping 316 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 335 DVLOG(1) << __FUNCTION__ << "(" << type << ") : " << demuxer_client_id_; | 336 DVLOG(1) << __FUNCTION__ << "(" << type << ") : " << demuxer_client_id_; |
| 336 if (IsSeeking()) | 337 if (IsSeeking()) |
| 337 return; // Drop the request during seeking. | 338 return; // Drop the request during seeking. |
| 338 | 339 |
| 339 DCHECK(type == DemuxerStream::AUDIO || type == DemuxerStream::VIDEO); | 340 DCHECK(type == DemuxerStream::AUDIO || type == DemuxerStream::VIDEO); |
| 340 // The access unit size should have been initialized properly at this stage. | 341 // The access unit size should have been initialized properly at this stage. |
| 341 DCHECK_GT(access_unit_size_, 0u); | 342 DCHECK_GT(access_unit_size_, 0u); |
| 342 scoped_ptr<DemuxerData> data(new DemuxerData()); | 343 scoped_ptr<DemuxerData> data(new DemuxerData()); |
| 343 data->type = type; | 344 data->type = type; |
| 344 data->access_units.resize(access_unit_size_); | 345 data->access_units.resize(access_unit_size_); |
| 345 ReadFromDemuxerStream(type, data.Pass(), 0); | 346 ReadFromDemuxerStream(type, std::move(data), 0); |
| 346 } | 347 } |
| 347 | 348 |
| 348 void MediaSourceDelegate::ReadFromDemuxerStream(media::DemuxerStream::Type type, | 349 void MediaSourceDelegate::ReadFromDemuxerStream(media::DemuxerStream::Type type, |
| 349 scoped_ptr<DemuxerData> data, | 350 scoped_ptr<DemuxerData> data, |
| 350 size_t index) { | 351 size_t index) { |
| 351 DCHECK(media_task_runner_->BelongsToCurrentThread()); | 352 DCHECK(media_task_runner_->BelongsToCurrentThread()); |
| 352 // DemuxerStream::Read() always returns the read callback asynchronously. | 353 // DemuxerStream::Read() always returns the read callback asynchronously. |
| 353 DemuxerStream* stream = | 354 DemuxerStream* stream = |
| 354 (type == DemuxerStream::AUDIO) ? audio_stream_ : video_stream_; | 355 (type == DemuxerStream::AUDIO) ? audio_stream_ : video_stream_; |
| 355 stream->Read(base::Bind( | 356 stream->Read(base::Bind( |
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 442 data->access_units[index].key_id = std::vector<char>( | 443 data->access_units[index].key_id = std::vector<char>( |
| 443 buffer->decrypt_config()->key_id().begin(), | 444 buffer->decrypt_config()->key_id().begin(), |
| 444 buffer->decrypt_config()->key_id().end()); | 445 buffer->decrypt_config()->key_id().end()); |
| 445 data->access_units[index].iv = std::vector<char>( | 446 data->access_units[index].iv = std::vector<char>( |
| 446 buffer->decrypt_config()->iv().begin(), | 447 buffer->decrypt_config()->iv().begin(), |
| 447 buffer->decrypt_config()->iv().end()); | 448 buffer->decrypt_config()->iv().end()); |
| 448 data->access_units[index].subsamples = | 449 data->access_units[index].subsamples = |
| 449 buffer->decrypt_config()->subsamples(); | 450 buffer->decrypt_config()->subsamples(); |
| 450 } | 451 } |
| 451 if (++index < data->access_units.size()) { | 452 if (++index < data->access_units.size()) { |
| 452 ReadFromDemuxerStream(type, data.Pass(), index); | 453 ReadFromDemuxerStream(type, std::move(data), index); |
| 453 return; | 454 return; |
| 454 } | 455 } |
| 455 break; | 456 break; |
| 456 | 457 |
| 457 default: | 458 default: |
| 458 NOTREACHED(); | 459 NOTREACHED(); |
| 459 } | 460 } |
| 460 | 461 |
| 461 if (!IsSeeking() && demuxer_client_) | 462 if (!IsSeeking() && demuxer_client_) |
| 462 demuxer_client_->ReadFromDemuxerAck(demuxer_client_id_, *data); | 463 demuxer_client_->ReadFromDemuxerAck(demuxer_client_id_, *data); |
| (...skipping 286 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 749 configs->video_codec = config.codec(); | 750 configs->video_codec = config.codec(); |
| 750 configs->video_size = config.natural_size(); | 751 configs->video_size = config.natural_size(); |
| 751 configs->is_video_encrypted = config.is_encrypted(); | 752 configs->is_video_encrypted = config.is_encrypted(); |
| 752 configs->video_extra_data = config.extra_data(); | 753 configs->video_extra_data = config.extra_data(); |
| 753 return true; | 754 return true; |
| 754 } | 755 } |
| 755 return false; | 756 return false; |
| 756 } | 757 } |
| 757 | 758 |
| 758 } // namespace content | 759 } // namespace content |
| OLD | NEW |