summaryrefslogtreecommitdiffstats
path: root/media/base/media_format.h
diff options
context:
space:
mode:
authorscherkus@chromium.org <scherkus@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2008-12-05 01:23:46 +0000
committerscherkus@chromium.org <scherkus@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2008-12-05 01:23:46 +0000
commit91fa49e706cbb796d6eaa1f6d5c95cc7b277db58 (patch)
treee1bef5ff6e1c3bcf55ee1e49ed1222755549f6c4 /media/base/media_format.h
parent133a3ba58877c351acfae890f7c75d112c7fb112 (diff)
downloadchromium_src-91fa49e706cbb796d6eaa1f6d5c95cc7b277db58.zip
chromium_src-91fa49e706cbb796d6eaa1f6d5c95cc7b277db58.tar.gz
chromium_src-91fa49e706cbb796d6eaa1f6d5c95cc7b277db58.tar.bz2
Checking in media::MediaFormat class, which describes the output of a filter.
Review URL: http://codereview.chromium.org/13149 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@6412 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'media/base/media_format.h')
-rw-r--r--media/base/media_format.h86
1 files changed, 86 insertions, 0 deletions
diff --git a/media/base/media_format.h b/media/base/media_format.h
new file mode 100644
index 0000000..d1303a2
--- /dev/null
+++ b/media/base/media_format.h
@@ -0,0 +1,86 @@
+// Copyright (c) 2006-2008 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_MEDIA_FORMAT_H_
+#define MEDIA_BASE_MEDIA_FORMAT_H_
+
+#include "base/values.h"
+
+namespace media {
+
+// Common MIME types.
+namespace mime_type {
+extern const std::wstring kURI;
+extern const std::wstring kApplicationOctetStream;
+extern const std::wstring kMPEGAudio;
+extern const std::wstring kAACAudio;
+extern const std::wstring kH264AnnexB;
+extern const std::wstring kUncompressedAudio;
+extern const std::wstring kUncompressedVideo;
+extern const std::wstring kFFmpegAudio;
+extern const std::wstring kFFmpegVideo;
+} // namespace mime_type
+
+// MediaFormat is used to describe the output of a MediaFilterInterface to
+// determine whether a downstream filter can accept the output from an upstream
+// filter. In general, every MediaFormat contains a MIME type describing
+// its output as well as additional key-values describing additional details.
+//
+// For example, an audio decoder could output audio/x-uncompressed and include
+// additional key-values such as the number of channels and the sample rate.
+// An audio renderer would use this information to properly initialize the
+// audio hardware before playback started.
+//
+// It's also perfectly acceptable to create your own MIME types and standards
+// to allow communication between two filters that goes beyond the basics
+// described here. For example, you could write a video decoder that outputs
+// a MIME type video/x-special for which your video renderer knows it's some
+// special form of decompressed video output that regular video renderers
+// couldn't handle.
+class MediaFormat {
+ public:
+ // Common keys.
+ static const std::wstring kMimeType;
+ static const std::wstring kURI;
+ static const std::wstring kSurfaceFormat;
+ static const std::wstring kSampleRate;
+ static const std::wstring kSampleBits;
+ static const std::wstring kChannels;
+ static const std::wstring kWidth;
+ static const std::wstring kHeight;
+ static const std::wstring kFfmpegCodecId;
+
+ MediaFormat();
+ ~MediaFormat();
+
+ // Basic map operations.
+ bool empty() const { return value_map_.empty(); }
+
+ bool Contains(const std::wstring& key) const;
+
+ void Clear();
+
+ // Value accessors.
+ void SetAsBoolean(const std::wstring& key, bool in_value);
+ void SetAsInteger(const std::wstring& key, int in_value);
+ void SetAsReal(const std::wstring& key, double in_value);
+ void SetAsString(const std::wstring& key, const std::wstring& in_value);
+
+ bool GetAsBoolean(const std::wstring& key, bool* out_value) const;
+ bool GetAsInteger(const std::wstring& key, int* out_value) const;
+ bool GetAsReal(const std::wstring& key, double* out_value) const;
+ bool GetAsString(const std::wstring& key, std::wstring* out_value) const;
+
+ private:
+ // Helper to return a value.
+ Value* GetValue(const std::wstring& key) const;
+
+ ValueMap value_map_;
+
+ DISALLOW_COPY_AND_ASSIGN(MediaFormat);
+};
+
+} // namespace media
+
+#endif // MEDIA_BASE_MEDIA_FORMAT_H_