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

Unified Diff: media/filters/chunk_demuxer.cc

Issue 10696182: Add config change handling to SourceBufferStream & ChunkDemuxer (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Added copyright headers to manifest files Created 8 years, 5 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « media/base/video_decoder_config.cc ('k') | media/filters/chunk_demuxer_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/filters/chunk_demuxer.cc
diff --git a/media/filters/chunk_demuxer.cc b/media/filters/chunk_demuxer.cc
index c548467504824a96e2c63e3fa6353511255c1f2e..be4fa60ce46ed00b59e8d39b3c8d30784ada33c5 100644
--- a/media/filters/chunk_demuxer.cc
+++ b/media/filters/chunk_demuxer.cc
@@ -326,46 +326,13 @@ Ranges<TimeDelta> ChunkDemuxerStream::GetBufferedRanges() {
bool ChunkDemuxerStream::UpdateAudioConfig(const AudioDecoderConfig& config) {
DCHECK(config.IsValidConfig());
DCHECK_EQ(type_, AUDIO);
-
- const AudioDecoderConfig& current_config =
- stream_->GetCurrentAudioDecoderConfig();
-
- bool success = (current_config.codec() == config.codec()) &&
- (current_config.bits_per_channel() == config.bits_per_channel()) &&
- (current_config.channel_layout() == config.channel_layout()) &&
- (current_config.samples_per_second() == config.samples_per_second()) &&
- (current_config.extra_data_size() == config.extra_data_size()) &&
- (!current_config.extra_data() ||
- !memcmp(current_config.extra_data(), config.extra_data(),
- current_config.extra_data_size()));
-
- if (!success)
- DVLOG(1) << "UpdateAudioConfig() : Failed to update audio config.";
-
- return success;
+ return stream_->UpdateAudioConfig(config);
}
bool ChunkDemuxerStream::UpdateVideoConfig(const VideoDecoderConfig& config) {
DCHECK(config.IsValidConfig());
DCHECK_EQ(type_, VIDEO);
- const VideoDecoderConfig& current_config =
- stream_->GetCurrentVideoDecoderConfig();
-
- bool success = (current_config.codec() == config.codec()) &&
- (current_config.format() == config.format()) &&
- (current_config.profile() == config.profile()) &&
- (current_config.coded_size() == config.coded_size()) &&
- (current_config.visible_rect() == config.visible_rect()) &&
- (current_config.natural_size() == config.natural_size()) &&
- (current_config.extra_data_size() == config.extra_data_size()) &&
- (!current_config.extra_data() ||
- !memcmp(current_config.extra_data(), config.extra_data(),
- current_config.extra_data_size()));
-
- if (!success)
- DVLOG(1) << "UpdateVideoConfig() : Failed to update video config.";
-
- return success;
+ return stream_->UpdateVideoConfig(config);
}
void ChunkDemuxerStream::EndOfStream() {
@@ -448,6 +415,9 @@ const VideoDecoderConfig& ChunkDemuxerStream::video_decoder_config() {
void ChunkDemuxerStream::ChangeState_Locked(State state) {
lock_.AssertAcquired();
+ DVLOG(1) << "ChunkDemuxerStream::ChangeState_Locked() : "
+ << "type " << type_
+ << " - " << state_ << " -> " << state;
state_ = state;
}
@@ -485,17 +455,23 @@ bool ChunkDemuxerStream::GetNextBuffer_Locked(
switch (state_) {
case RETURNING_DATA_FOR_READS:
- if (stream_->GetNextBuffer(buffer)) {
- *status = DemuxerStream::kOk;
- return true;
- }
-
- if (end_of_stream_) {
- *status = DemuxerStream::kOk;
- *buffer = StreamParserBuffer::CreateEOSBuffer();
- return true;
+ switch (stream_->GetNextBuffer(buffer)) {
+ case SourceBufferStream::kSuccess:
+ *status = DemuxerStream::kOk;
+ return true;
+ case SourceBufferStream::kNeedBuffer:
+ if (end_of_stream_) {
+ *status = DemuxerStream::kOk;
+ *buffer = StreamParserBuffer::CreateEOSBuffer();
+ return true;
+ }
+ return false;
+ case SourceBufferStream::kConfigChange:
+ *status = kConfigChanged;
+ *buffer = NULL;
+ return true;
}
- return false;
+ break;
case WAITING_FOR_SEEK:
// Null buffers should be returned in this state since we are waiting
// for a seek. Any buffers in the SourceBuffer should NOT be returned
« no previous file with comments | « media/base/video_decoder_config.cc ('k') | media/filters/chunk_demuxer_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698