diff options
author | scherkus@chromium.org <scherkus@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-12-05 01:23:46 +0000 |
---|---|---|
committer | scherkus@chromium.org <scherkus@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-12-05 01:23:46 +0000 |
commit | 91fa49e706cbb796d6eaa1f6d5c95cc7b277db58 (patch) | |
tree | e1bef5ff6e1c3bcf55ee1e49ed1222755549f6c4 /media/base/media_format.h | |
parent | 133a3ba58877c351acfae890f7c75d112c7fb112 (diff) | |
download | chromium_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.h | 86 |
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_ |