Index: media/mojo/interfaces/media_types.mojom |
diff --git a/media/mojo/interfaces/media_types.mojom b/media/mojo/interfaces/media_types.mojom |
index edaf282aac25e46f915f6b399df85ef83928380c..fb99a2a08b0202d394c7b2efc79115e1cd6d4a00 100644 |
--- a/media/mojo/interfaces/media_types.mojom |
+++ b/media/mojo/interfaces/media_types.mojom |
@@ -2,6 +2,8 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
+import "mojo/services/public/interfaces/geometry/geometry.mojom" |
+ |
module mojo { |
// See media/base/buffering_state.h for descriptions. |
@@ -84,6 +86,63 @@ enum SampleFormat { |
Max = PlanarF32, |
}; |
+enum VideoFormat { |
+ UNKNOWN = 0, // Unknown format value. |
+ YV12 = 1, // 12bpp YVU planar 1x1 Y, 2x2 VU samples |
+ YV16 = 2, // 16bpp YVU planar 1x1 Y, 2x1 VU samples |
+ I420 = 3, // 12bpp YVU planar 1x1 Y, 2x2 UV samples. |
+ YV12A = 4, // 20bpp YUVA planar 1x1 Y, 2x2 VU, 1x1 A samples. |
+ HOLE = 5, // Hole frame. |
+ NATIVE_TEXTURE = 6, // Native texture. Pixel-format agnostic. |
+ YV12J = 7, // JPEG color range version of YV12 |
+ NV12 = 8, // 12bpp 1x1 Y plane followed by an interleaved 2x2 UV plane. |
+ YV24 = 9, // 24bpp YUV planar, no subsampling. |
+ FORMAT_MAX = YV24, // Must always be equal to largest entry logged. |
+}; |
+ |
+enum VideoCodec { |
+ UNKNOWN = 0, |
+ H264, |
+ VC1, |
+ MPEG2, |
+ MPEG4, |
+ THEORA, |
+ VP8, |
+ VP9, |
+ Max = VP9 |
+}; |
+ |
+// Video stream profile. This *must* match PP_VideoDecoder_Profile. |
+// (enforced in webkit/plugins/ppapi/ppb_video_decoder_impl.cc) and |
+// gpu::VideoCodecProfile. |
xhwang
2014/10/29 00:22:13
Update: needs to match media::VideoCodecProfile.
DaleCurtis
2014/10/30 23:16:56
Done.
|
+enum VideoCodecProfile { |
+ // Keep the values in this enum unique, as they imply format (h.264 vs. VP8, |
+ // for example), and keep the values for a particular format grouped |
+ // together for clarity. |
+ VIDEO_CODEC_PROFILE_UNKNOWN = -1, |
+ VIDEO_CODEC_PROFILE_MIN = VIDEO_CODEC_PROFILE_UNKNOWN, |
+ H264PROFILE_MIN = 0, |
+ H264PROFILE_BASELINE = H264PROFILE_MIN, |
+ H264PROFILE_MAIN = 1, |
+ H264PROFILE_EXTENDED = 2, |
+ H264PROFILE_HIGH = 3, |
+ H264PROFILE_HIGH10PROFILE = 4, |
+ H264PROFILE_HIGH422PROFILE = 5, |
+ H264PROFILE_HIGH444PREDICTIVEPROFILE = 6, |
+ H264PROFILE_SCALABLEBASELINE = 7, |
+ H264PROFILE_SCALABLEHIGH = 8, |
+ H264PROFILE_STEREOHIGH = 9, |
+ H264PROFILE_MULTIVIEWHIGH = 10, |
+ H264PROFILE_MAX = H264PROFILE_MULTIVIEWHIGH, |
+ VP8PROFILE_MIN = 11, |
+ VP8PROFILE_ANY = VP8PROFILE_MIN, |
+ VP8PROFILE_MAX = VP8PROFILE_ANY, |
+ VP9PROFILE_MIN = 12, |
+ VP9PROFILE_ANY = VP9PROFILE_MIN, |
+ VP9PROFILE_MAX = VP9PROFILE_ANY, |
+ VIDEO_CODEC_PROFILE_MAX = VP9PROFILE_MAX, |
+}; |
+ |
// This defines a mojo transport format for media::AudioDecoderConfig. |
// See media/base/audio_decoder_config.h for descriptions. |
struct AudioDecoderConfig { |
@@ -96,6 +155,17 @@ struct AudioDecoderConfig { |
int32 codec_delay; |
}; |
+struct VideoDecoderConfig { |
+ VideoCodec codec; |
+ VideoCodecProfile profile; |
+ VideoFormat format; |
+ Size coded_size; |
+ Rect visible_rect; |
+ Size natural_size; |
+ array<uint8>? extra_data; |
+ bool is_encrypted; |
+}; |
+ |
// This defines a mojo transport format for media::DecoderBuffer. |
struct MediaDecoderBuffer { |
// See media/base/buffers.h for details. |