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

Unified Diff: media/filters/chunk_demuxer.cc

Issue 14217008: Remove reference counting from media::DemuxerStream and friends. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 7 years, 8 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/filters/chunk_demuxer.h ('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 3ff3f1c9f3d1bcb73c6706bbd8389f6cafbaf6a8..c1232f6d2010540c5d5835e9d5a84784ad0d81f2 100644
--- a/media/filters/chunk_demuxer.cc
+++ b/media/filters/chunk_demuxer.cc
@@ -173,6 +173,7 @@ class ChunkDemuxerStream : public DemuxerStream {
const LogCB& log_cb);
ChunkDemuxerStream(const VideoDecoderConfig& video_config,
const LogCB& log_cb);
+ virtual ~ChunkDemuxerStream();
void StartWaitingForSeek();
void Seek(TimeDelta time);
@@ -213,9 +214,6 @@ class ChunkDemuxerStream : public DemuxerStream {
virtual const AudioDecoderConfig& audio_decoder_config() OVERRIDE;
virtual const VideoDecoderConfig& video_decoder_config() OVERRIDE;
- protected:
- virtual ~ChunkDemuxerStream();
-
private:
enum State {
RETURNING_DATA_FOR_READS,
@@ -615,18 +613,18 @@ void ChunkDemuxer::Seek(TimeDelta time, const PipelineStatusCB& cb) {
void ChunkDemuxer::OnAudioRendererDisabled() {
base::AutoLock auto_lock(lock_);
- audio_ = NULL;
+ audio_->Shutdown();
+ disabled_audio_ = audio_.Pass();
}
// Demuxer implementation.
-scoped_refptr<DemuxerStream> ChunkDemuxer::GetStream(
- DemuxerStream::Type type) {
+DemuxerStream* ChunkDemuxer::GetStream(DemuxerStream::Type type) {
base::AutoLock auto_lock(lock_);
if (type == DemuxerStream::VIDEO)
- return video_;
+ return video_.get();
if (type == DemuxerStream::AUDIO)
- return audio_;
+ return audio_.get();
return NULL;
}
@@ -1142,7 +1140,7 @@ bool ChunkDemuxer::OnNewConfigs(bool has_audio, bool has_video,
if (audio_) {
success &= audio_->UpdateAudioConfig(audio_config);
} else {
- audio_ = new ChunkDemuxerStream(audio_config, log_cb_);
+ audio_.reset(new ChunkDemuxerStream(audio_config, log_cb_));
}
}
@@ -1150,7 +1148,7 @@ bool ChunkDemuxer::OnNewConfigs(bool has_audio, bool has_video,
if (video_) {
success &= video_->UpdateVideoConfig(video_config);
} else {
- video_ = new ChunkDemuxerStream(video_config, log_cb_);
+ video_.reset(new ChunkDemuxerStream(video_config, log_cb_));
}
}
@@ -1169,7 +1167,7 @@ bool ChunkDemuxer::OnAudioBuffers(const StreamParser::BufferQueue& buffers) {
if (!audio_->Append(buffers))
return false;
- IncreaseDurationIfNecessary(buffers, audio_);
+ IncreaseDurationIfNecessary(buffers, audio_.get());
return true;
}
@@ -1184,7 +1182,7 @@ bool ChunkDemuxer::OnVideoBuffers(const StreamParser::BufferQueue& buffers) {
if (!video_->Append(buffers))
return false;
- IncreaseDurationIfNecessary(buffers, video_);
+ IncreaseDurationIfNecessary(buffers, video_.get());
return true;
}
@@ -1227,7 +1225,7 @@ void ChunkDemuxer::UpdateDuration(base::TimeDelta new_duration) {
void ChunkDemuxer::IncreaseDurationIfNecessary(
const StreamParser::BufferQueue& buffers,
- const scoped_refptr<ChunkDemuxerStream>& stream) {
+ ChunkDemuxerStream* stream) {
DCHECK(!buffers.empty());
if (buffers.back()->GetTimestamp() <= duration_)
return;
« no previous file with comments | « media/filters/chunk_demuxer.h ('k') | media/filters/chunk_demuxer_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698