Index: content/renderer/media/webmediasource_impl.cc |
diff --git a/content/renderer/media/webmediasource_impl.cc b/content/renderer/media/webmediasource_impl.cc |
index b3078f7edcd5261de65bf4d5b91938478d028f1b..d6f708b50cd879fde9ae42332877179bbe5aa579 100644 |
--- a/content/renderer/media/webmediasource_impl.cc |
+++ b/content/renderer/media/webmediasource_impl.cc |
@@ -4,6 +4,7 @@ |
#include "content/renderer/media/webmediasource_impl.h" |
+#include "base/bind.h" |
#include "base/guid.h" |
#include "content/renderer/media/websourcebuffer_impl.h" |
#include "media/filters/chunk_demuxer.h" |
@@ -42,12 +43,20 @@ WebMediaSource::AddStatus WebMediaSourceImpl::addSourceBuffer( |
for (size_t i = 0; i < codecs.size(); ++i) |
new_codecs[i] = codecs[i].utf8().data(); |
+ scoped_ptr<WebSourceBufferImpl> web_source_buffer( |
+ new WebSourceBufferImpl(id, demuxer_)); |
+ |
WebMediaSource::AddStatus result = |
static_cast<WebMediaSource::AddStatus>( |
- demuxer_->AddId(id, type.utf8().data(), new_codecs)); |
+ demuxer_->AddId( |
+ id, |
+ type.utf8().data(), |
+ new_codecs, |
+ base::Bind(&WebSourceBufferImpl::OnNewInitSegment, |
+ base::Unretained(web_source_buffer.get())))); |
if (result == WebMediaSource::AddStatusOk) |
- *source_buffer = new WebSourceBufferImpl(id, demuxer_); |
+ *source_buffer = web_source_buffer.release(); |
return result; |
} |