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

Unified Diff: webkit/media/webmediasourceclient_impl.cc

Issue 12713004: Add Chromium-side changes for MediaSource::isTypeSupported() (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 9 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
Index: webkit/media/webmediasourceclient_impl.cc
diff --git a/webkit/media/webmediasourceclient_impl.cc b/webkit/media/webmediasourceclient_impl.cc
index 2f84c0f1447c8634eeef6de0ad16acaed39d814c..586ea0dc8b6cbaa58a579f69e8780711bbfa8fb8 100644
--- a/webkit/media/webmediasourceclient_impl.cc
+++ b/webkit/media/webmediasourceclient_impl.cc
@@ -6,6 +6,7 @@
#include "base/guid.h"
#include "media/filters/chunk_demuxer.h"
+#include "media/filters/stream_parser_factory.h"
#include "third_party/WebKit/Source/Platform/chromium/public/WebCString.h"
#include "third_party/WebKit/Source/Platform/chromium/public/WebString.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebSourceBuffer.h"
@@ -84,9 +85,21 @@ void WebSourceBufferImpl::removedFromMediaSource() {
demuxer_ = NULL;
}
+bool WebMediaSourceClientImpl::isTypeSupported(
+ const WebKit::WebString& type,
+ const WebKit::WebVector<WebKit::WebString>& codecs) {
+ std::vector<std::string> new_codecs(codecs.size());
+ for (size_t i = 0; i < codecs.size(); ++i)
+ new_codecs[i] = codecs[i].utf8().data();
+ return media::StreamParserFactory::IsTypeSupported(type.utf8().data(),
+ new_codecs);
+}
+
WebMediaSourceClientImpl::WebMediaSourceClientImpl(
- const scoped_refptr<media::ChunkDemuxer>& demuxer)
- : demuxer_(demuxer) {
+ const scoped_refptr<media::ChunkDemuxer>& demuxer,
+ media::LogCB log_cb)
+ : demuxer_(demuxer),
+ log_cb_(log_cb) {
DCHECK(demuxer_);
}
@@ -96,14 +109,24 @@ WebMediaSourceClient::AddStatus WebMediaSourceClientImpl::addSourceBuffer(
const WebKit::WebString& type,
const WebKit::WebVector<WebKit::WebString>& codecs,
WebKit::WebSourceBuffer** source_buffer) {
+ DCHECK(isTypeSupported(type, codecs));
+
std::string id = base::GenerateGUID();
+ bool has_audio = false;
+ bool has_video = false;
std::vector<std::string> new_codecs(codecs.size());
for (size_t i = 0; i < codecs.size(); ++i)
new_codecs[i] = codecs[i].utf8().data();
+ scoped_ptr<media::StreamParser> stream_parser(
+ media::StreamParserFactory::Create(type.utf8().data(), new_codecs,
+ log_cb_, &has_audio, &has_video));
+
+ if (!stream_parser)
+ return AddStatusNotSupported;
WebMediaSourceClient::AddStatus result =
static_cast<WebMediaSourceClient::AddStatus>(
- demuxer_->AddId(id, type.utf8().data(), new_codecs));
+ demuxer_->AddParser(id, stream_parser.Pass(), has_audio, has_video));
scherkus (not reviewing) 2013/03/14 01:15:26 where is ChunkDemuxer::AddParser() defined? I'm no
acolwell GONE FROM CHROMIUM 2013/03/14 18:34:34 This was accidentally left in for a refactor that
if (result == WebMediaSourceClient::AddStatusOk)
*source_buffer = new WebSourceBufferImpl(id, demuxer_);
« webkit/glue/webkitplatformsupport_impl.h ('K') | « webkit/media/webmediasourceclient_impl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698