summaryrefslogtreecommitdiffstats
path: root/media/base/decoder_factory.h
diff options
context:
space:
mode:
authorxhwang <xhwang@chromium.org>2016-02-22 16:52:44 -0800
committerCommit bot <commit-bot@chromium.org>2016-02-23 00:54:53 +0000
commit409e5355ae1269cde51dc5b73b4592bad4e8c2ea (patch)
treefcb18200e016245e50ac64833c12ac6031649a82 /media/base/decoder_factory.h
parentfa8b941eb242bc26430d1053d771c624bb45ea10 (diff)
downloadchromium_src-409e5355ae1269cde51dc5b73b4592bad4e8c2ea.zip
chromium_src-409e5355ae1269cde51dc5b73b4592bad4e8c2ea.tar.gz
chromium_src-409e5355ae1269cde51dc5b73b4592bad4e8c2ea.tar.bz2
media: Support MojoAudioDecoder.
Details: - Support mojo audio decoder in gn args. - Add DecoderFactory to help create external decoders. - Add MojoDecoderFactory that can create MojoAudioDecoder. - When mojo audio decoder is enabled, enable MojoDecoderFactory. In the next CL we'll add mojo audio decoder interface and services. We'll also add real implementation of MojoAudioDecoder. To test this on Desktop, set the following gn arguments: enable_mojo_media = true mojo_media_services = [ "audio_decoder" ] Then in DecoderSelector, manually disable DecryptingAudioDecoder and DecryptingDemuxerStream. Now try to play an encrypted audio, MojoAudioDecoder should be selected. But it'll fail immediately in the first Decode() call. BUG=542910 TEST=See above. Review URL: https://codereview.chromium.org/1717933002 Cr-Commit-Position: refs/heads/master@{#376878}
Diffstat (limited to 'media/base/decoder_factory.h')
-rw-r--r--media/base/decoder_factory.h35
1 files changed, 35 insertions, 0 deletions
diff --git a/media/base/decoder_factory.h b/media/base/decoder_factory.h
new file mode 100644
index 0000000..21d66d2
--- /dev/null
+++ b/media/base/decoder_factory.h
@@ -0,0 +1,35 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef MEDIA_BASE_DECODER_FACTORY_H_
+#define MEDIA_BASE_DECODER_FACTORY_H_
+
+#include "base/macros.h"
+#include "base/memory/scoped_vector.h"
+#include "media/base/media_export.h"
+
+namespace media {
+
+class AudioDecoder;
+class VideoDecoder;
+
+// A factory class for creating audio and video decoders.
+class MEDIA_EXPORT DecoderFactory {
+ public:
+ DecoderFactory();
+ virtual ~DecoderFactory();
+
+ // Creates audio decoders and append them to the end of |audio_decoders|.
+ virtual void CreateAudioDecoders(ScopedVector<AudioDecoder>* audio_decoders);
+
+ // Creates video decoders and append them to the end of |video_decoders|.
+ virtual void CreateVideoDecoders(ScopedVector<VideoDecoder>* video_decoders);
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(DecoderFactory);
+};
+
+} // namespace media
+
+#endif // MEDIA_BASE_DECODER_FACTORY_H_