Roll src/third_party/WebKit d9c6159:8139f33 (svn 201974:201975)
[chromium-blink-merge.git] / media / mojo / interfaces / media_types.mojom
blob84701975a40757f3cf925267960131a8a2ce31e9
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 module media.interfaces;
7 import "ui/mojo/geometry/geometry.mojom";
9 // See media/base/buffering_state.h for descriptions.
10 // Kept in sync with media::BufferingState via static_asserts.
11 enum BufferingState {
12   HAVE_NOTHING,
13   HAVE_ENOUGH,
16 // See media/base/audio_decoder_config.h for descriptions.
17 // Kept in sync with media::AudioCodec via static_asserts.
18 enum AudioCodec {
19   UNKNOWN = 0,
20   AAC = 1,
21   MP3 = 2,
22   PCM = 3,
23   Vorbis = 4,
24   FLAC = 5,
25   AMR_NB = 6,
26   AMR_WB = 7,
27   PCM_MULAW = 8,
28   GSM_MS = 9,
29   PCM_S16BE = 10,
30   PCM_S24BE = 11,
31   Opus = 12,
32   // EAC3 = 13,
33   PCM_ALAW = 14,
34   ALAC = 15,
35   MAX = ALAC,
38 // See media/base/channel_layout.h for descriptions.
39 // Kept in sync with media::ChannelLayout via static_asserts.
40 // TODO(tim): The bindings generators will always prepend the enum name, should
41 // mojom therefore allow enum values starting with numbers?
42 enum ChannelLayout {
43   k_NONE = 0,
44   k_UNSUPPORTED = 1,
45   k_MONO = 2,
46   k_STEREO = 3,
47   k_2_1 = 4,
48   k_SURROUND = 5,
49   k_4_0 = 6,
50   k_2_2 = 7,
51   k_QUAD = 8,
52   k_5_0 = 9,
53   k_5_1 = 10,
54   k_5_0_BACK = 11,
55   k_5_1_BACK = 12,
56   k_7_0 = 13,
57   k_7_1 = 14,
58   k_7_1_WIDE = 15,
59   k_STEREO_DOWNMIX = 16,
60   k_2POINT1 = 17,
61   k_3_1 = 18,
62   k_4_1 = 19,
63   k_6_0 = 20,
64   k_6_0_FRONT = 21,
65   k_HEXAGONAL = 22,
66   k_6_1 = 23,
67   k_6_1_BACK = 24,
68   k_6_1_FRONT = 25,
69   k_7_0_FRONT = 26,
70   k_7_1_WIDE_BACK = 27,
71   k_OCTAGONAL = 28,
72   k_DISCRETE = 29,
73   k_STEREO_AND_KEYBOARD_MIC = 30,
74   k_4_1_QUAD_SIDE = 31,
75   k_MAX = k_4_1_QUAD_SIDE,
78 // See media/base/sample_format.h for descriptions.
79 // Kept in sync with media::SampleFormat via static_asserts.
80 enum SampleFormat {
81   UNKNOWN = 0,
82   U8,
83   S16,
84   S32,
85   F32,
86   PlanarS16,
87   PlanarF32,
88   PlanarS32,
89   Max = PlanarS32,
92 // See media/base/video_types.h for descriptions.
93 // Kept in sync with media::VideoPixelFormat via static_asserts.
94 enum VideoFormat {
95   UNKNOWN = 0,
96   I420,
97   YV12,
98   YV16,
99   YV12A,
100   YV24,
101   NV12,
102   NV21,
103   UYVY,
104   YUY2,
105   ARGB,
106   XRGB,
107   RGB24,
108   RGB32,
109   MJPEG,
110   FORMAT_MAX = MJPEG,
113 // Kept in sync with media::ColorSpace via static_asserts.
114 enum ColorSpace {
115   UNSPECIFIED = 0,
116   JPEG = 1,
117   HD_REC709 = 2,
118   SD_REC601 = 3,
119   MAX = SD_REC601,
122 // See media/base/video_decoder_config.h for descriptions.
123 // Kept in sync with media::VideoCodec via static_asserts.
124 enum VideoCodec {
125   UNKNOWN = 0,
126   H264,
127   VC1,
128   MPEG2,
129   MPEG4,
130   Theora,
131   VP8,
132   VP9,
133   HEVC,
134   Max = HEVC,
137 // See media/base/video_decoder_config.h for descriptions.
138 // Kept in sync with media::VideoCodecProfile via static_asserts.
139 enum VideoCodecProfile {
140   VIDEO_CODEC_PROFILE_UNKNOWN = -1,
141   VIDEO_CODEC_PROFILE_MIN = VIDEO_CODEC_PROFILE_UNKNOWN,
142   H264PROFILE_MIN = 0,
143   H264PROFILE_BASELINE = H264PROFILE_MIN,
144   H264PROFILE_MAIN = 1,
145   H264PROFILE_EXTENDED = 2,
146   H264PROFILE_HIGH = 3,
147   H264PROFILE_HIGH10PROFILE = 4,
148   H264PROFILE_HIGH422PROFILE = 5,
149   H264PROFILE_HIGH444PREDICTIVEPROFILE = 6,
150   H264PROFILE_SCALABLEBASELINE = 7,
151   H264PROFILE_SCALABLEHIGH = 8,
152   H264PROFILE_STEREOHIGH = 9,
153   H264PROFILE_MULTIVIEWHIGH = 10,
154   H264PROFILE_MAX = H264PROFILE_MULTIVIEWHIGH,
155   VP8PROFILE_MIN = 11,
156   VP8PROFILE_ANY = VP8PROFILE_MIN,
157   VP8PROFILE_MAX = VP8PROFILE_ANY,
158   VP9PROFILE_MIN = 12,
159   VP9PROFILE_ANY = VP9PROFILE_MIN,
160   VP9PROFILE_MAX = VP9PROFILE_ANY,
161   VIDEO_CODEC_PROFILE_MAX = VP9PROFILE_MAX,
164 // This defines a mojo transport format for media::AudioDecoderConfig.
165 // See media/base/audio_decoder_config.h for descriptions.
166 struct AudioDecoderConfig {
167   AudioCodec codec;
168   SampleFormat sample_format;
169   ChannelLayout channel_layout;
170   int32 samples_per_second;
171   array<uint8>? extra_data;
172   int64 seek_preroll_usec;
173   int32 codec_delay;
174   bool is_encrypted;
177 // This defines a mojo transport format for media::VideoDecoderConfig.
178 // See media/base/video_decoder_config.h for descriptions.
179 struct VideoDecoderConfig {
180   VideoCodec codec;
181   VideoCodecProfile profile;
182   VideoFormat format;
183   ColorSpace color_space;
184   mojo.Size coded_size;
185   mojo.Rect visible_rect;
186   mojo.Size natural_size;
187   array<uint8>? extra_data;
188   bool is_encrypted;
191 // This defines a mojo transport format for media::SubsampleEntry.
192 // See media/base/decrypt_config.h for descriptions.
193 struct SubsampleEntry {
194   uint32 clear_bytes;
195   uint32 cypher_bytes;
198 // This defines a mojo transport format for media::DecryptConfig.
199 // See media/base/decrypt_config.h for descriptions.
200 struct DecryptConfig {
201   string key_id;
202   string iv;
203   array<SubsampleEntry> subsamples;
206 // This defines a mojo transport format for media::DecoderBuffer.
207 struct DecoderBuffer {
208   int64 timestamp_usec;
209   int64 duration_usec;
211   // The number of bytes present in this buffer.  The data is not serialized
212   // along with this structure and must be read from a separate DataPipe.
213   uint32 data_size;
215   // Indicates whether or not this buffer is a random access point.
216   bool is_key_frame;
218   // This is backed by an std::vector and results in a few copies.
219   // Into the vector, onto and off the MessagePipe, back into a vector.
220   array<uint8>? side_data;
221   uint32 side_data_size;
223   // DecryptConfig for a encrypted buffer. NULL if the buffer is not encrypted.
224   DecryptConfig? decrypt_config;
226   // These fields indicate the amount of data to discard after decoding.
227   int64 front_discard_usec;
228   int64 back_discard_usec;
230   // Indicates this buffer is part of a splice around |splice_timestamp_usec|.
231   int64 splice_timestamp_usec;