Index: mojo/services/media/common/interfaces/media_types.mojom |
diff --git a/mojo/services/media/common/interfaces/media_types.mojom b/mojo/services/media/common/interfaces/media_types.mojom |
index 0babb662a91b70aa6b242a355603bcc693e487f7..3a86b32ffbc9fecd8cb1ed7ff1c9d38ffcca8689 100644 |
--- a/mojo/services/media/common/interfaces/media_types.mojom |
+++ b/mojo/services/media/common/interfaces/media_types.mojom |
@@ -5,118 +5,80 @@ |
[DartPackage="mojo_services"] |
module mojo.media; |
-// Specifies the type of media. |
+// Describes the type of media. |
struct MediaType { |
- // Broadly identifies the media type and indicates how the details field is |
- // to be interpreted. |
- MediaTypeScheme scheme; |
+ const string kAudioEncodingLpcm = "lpcm"; |
+ const string kAudioEncodingVorbis = "vorbis"; |
+ const string kVideoEncodingUncompressed = "uncompressed_video"; |
+ const string kVideoEncodingTheora = "theora"; |
- // Scheme-dependent details. |
- MediaTypeDetails? details; |
-}; |
- |
-// Specifies a set of types of media. |
-// TODO(dalesat): Consider eliminating type sets. |
-struct MediaTypeSet { |
- // Broadly identifies the media types and indicates how the details field is |
- // to be interpreted. |
- MediaTypeScheme scheme; |
- |
- // Scheme-dependent details. |
- MediaTypeSetDetails? details; |
-}; |
- |
-// Media type schemes. A media type scheme broadly identifies a media type and |
-// indicates what structure, if any, is used to specify the details of the type. |
-// If a scheme XYZ has details, then there should be structure definitions for |
-// XyzMediaTypeDetails and XyzMediaTypeSetDetails, and fields of those types |
-// should appear in MediaTypeDetails and MediaTypeSetDetails respectively. |
-// TODO(dalesat): Placeholder schemes could go away as part of eliminating |
-// or simplifying type sets. |
-enum MediaTypeScheme { |
- // Placeholder indicating type is unknown. |
- UNKNOWN, |
- |
- // Placeholder indicating no type. |
- NONE, |
+ // Identifies the type’s medium. |
+ MediaTypeMedium medium; |
- // Placeholder indicating any elementary type. |
- ANY_ELEMENTARY, |
+ // Medium-dependent details. |
+ MediaTypeDetails details; |
- // Placeholder indicating any audio type. |
- ANY_AUDIO, |
+ // Encoding. |
+ string encoding; |
- // Placeholder indicating any video type. |
- ANY_VIDEO, |
- |
- // Placeholder indicating any subpicture type. |
- ANY_SUBPICTURE, |
- |
- // Placeholder indicating any text type. |
- ANY_TEXT, |
- |
- // Placeholder indicating any multiplexed type. |
- ANY_MULTIPLEXED, |
- |
- // Placeholder indicating any type. |
- ANY, |
+ // Encoding-specific parameters. |
+ array<uint8>? encoding_parameters; |
+}; |
- // Indicates a multiplexed type. See MultiplexedMediaTypeDetails and |
- // MultiplexedMediaTypeSetDetails. |
- MULTIPLEXED, |
+// Describes a set of types of media. |
+struct MediaTypeSet { |
+ // Identifies the types’ medium. |
+ MediaTypeMedium medium; |
- // Indicates LPCM audio. See LpcmMediaTypeDetails and LpcmMediaTypeSetDetails. |
- LPCM, |
+ // Medium-dependent details. |
+ MediaTypeSetDetails details; |
- // Indicates compressed audio. See CompressedAudioMediaTypeDetails and |
- // CompressedAudioMediaTypeSetDetails. |
- COMPRESSED_AUDIO, |
+ // Included encodings. |
+ array<string> encodings; |
+}; |
- // Indicates video. See VideoMediaTypeDetails and VideoMediaTypeSetDetails. |
- // TODO(dalesat): One scheme for video won't be adequate. |
+// Medium values for MediaType |
+enum MediaTypeMedium { |
+ AUDIO, |
VIDEO, |
+ TEXT, |
+ SUBPICTURE |
}; |
// A union of all media type details. |
union MediaTypeDetails { |
- // Each field name should correspond to a value in MediaTypeScheme. |
- MultiplexedMediaTypeDetails multiplexed; |
- LpcmMediaTypeDetails lpcm; |
- CompressedAudioMediaTypeDetails compressed_audio; |
+ AudioMediaTypeDetails audio; |
VideoMediaTypeDetails video; |
+ TextMediaTypeDetails text; |
+ SubpictureMediaTypeDetails subpicture; |
}; |
// A union of all media type set details. |
union MediaTypeSetDetails { |
- // Each field name should correspond to a value in MediaTypeScheme. |
- MultiplexedMediaTypeSetDetails multiplexed; |
- LpcmMediaTypeSetDetails lpcm; |
- CompressedAudioMediaTypeSetDetails compressed_audio; |
+ AudioMediaTypeSetDetails audio; |
VideoMediaTypeSetDetails video; |
+ TextMediaTypeSetDetails text; |
+ SubpictureMediaTypeSetDetails subpicture; |
}; |
-// MediaType details for the LPCM scheme. |
-struct LpcmMediaTypeDetails { |
- LpcmSampleFormat sample_format; |
+// Media type details for the AUDIO medium. |
+struct AudioMediaTypeDetails { |
+ AudioSampleFormat sample_format; |
uint32 channels; |
uint32 frames_per_second; |
// TODO(dalesat): Channel designations. |
}; |
-// MediaTypeSet details for the LPCM scheme. |
-struct LpcmMediaTypeSetDetails { |
- LpcmSampleFormat sample_format; |
+// Media type set details for the AUDIO medium. |
+struct AudioMediaTypeSetDetails { |
+ AudioSampleFormat sample_format; |
uint32 min_channels; |
uint32 max_channels; |
uint32 min_frames_per_second; |
uint32 max_frames_per_second; |
}; |
-// Sample formats for LPCM media types. |
-enum LpcmSampleFormat { |
- // Placeholder indicating sample format is unknown. |
- UNKNOWN, |
- |
+enum AudioSampleFormat { |
// Placeholder indicating any sample format. |
ANY, |
@@ -128,67 +90,15 @@ enum LpcmSampleFormat { |
// 24-bit signed samples in 32 bits, host-endian, sample size 4 bytes. |
// TODO(johngro): describe the packing for this |
- SIGNED_24_IN_32, // Host endian |
+ SIGNED_24_IN_32, |
// 32-bit floating-point samples, sample size 4 bytes. |
FLOAT, |
}; |
-// Media type details for the Multiplexed scheme. |
-struct MultiplexedMediaTypeDetails { |
- // Describes how the streams are multiplexed. |
- MediaType multiplex_type; |
- |
- // Media type for each substream. |
- array<MediaType> substream_types; |
-}; |
- |
-// Media type set details for the Multiplexed scheme. |
-struct MultiplexedMediaTypeSetDetails { |
- // Describes how the streams can be multiplexed. |
- MediaTypeSet multiplex_type_set; |
- |
- // Possible substream types. |
- array<MediaTypeSet> substream_type_sets; |
-}; |
- |
-// Audio encodings. |
-// TODO(dalesat): Add more audio encodings. |
-enum AudioEncoding { |
- // Placeholder indicating audio encoding is unknown. |
- UNKNOWN, |
- |
- // Placeholder indicating any audio encoding. |
- ANY, |
- |
- VORBIS, |
-}; |
- |
-// Media type details for the COMPRESSED_AUDIO scheme. |
-struct CompressedAudioMediaTypeDetails { |
- AudioEncoding encoding; |
- LpcmSampleFormat sample_format; |
- uint32 channels; |
- uint32 frames_per_second; |
- |
- // Encoding-specific parameter provided by demuxes and used by decoders. |
- string extra_data_base64; |
-}; |
- |
-// Media type set details for the COMPRESSED_AUDIO scheme. |
-struct CompressedAudioMediaTypeSetDetails { |
- AudioEncoding encoding; |
- LpcmSampleFormat sample_format; |
- uint32 min_channels; |
- uint32 max_channels; |
- uint32 min_frames_per_second; |
- uint32 max_frames_per_second; |
-}; |
- |
-// Media type details for the VIDEO scheme. |
-// TODO(dalesat): Expand and document. |
+// Media type details for the VIDEO medium. |
+// TODO(dalesat): Refine and document. |
struct VideoMediaTypeDetails { |
- VideoEncoding encoding; |
VideoProfile profile; |
PixelFormat pixel_format; |
ColorSpace color_space; |
@@ -196,34 +106,17 @@ struct VideoMediaTypeDetails { |
uint32 height; |
uint32 coded_width; |
uint32 coded_height; |
- |
- // Encoding-specific parameter provided by demuxes and used by decoders. |
- string extra_data_base64; |
}; |
-// Media type set details for the VIDEO scheme. |
+// Media type set details for the VIDEO medium. |
// TODO(dalesat): Expand and document. |
struct VideoMediaTypeSetDetails { |
- VideoEncoding encoding; |
uint32 min_width; |
uint32 max_width; |
uint32 min_height; |
uint32 max_height; |
}; |
-// Video encodings. |
-// TODO(dalesat): Add more video encodings. |
-enum VideoEncoding { |
- // Placeholder indicating video encoding is unknown. |
- UNKNOWN, |
- |
- // Placeholder indicating any video encoding. |
- ANY, |
- |
- THEORA, |
- VP8, |
-}; |
- |
// Video profiles. |
// TODO(dalesat): Blindly copied from Chromium, revisit. |
enum VideoProfile { |
@@ -272,3 +165,23 @@ enum ColorSpace { |
HD_REC709, |
SD_REC601, |
}; |
+ |
+// Media type details for the TEXT medium. |
+// TODO(dalesat): Define. |
+struct TextMediaTypeDetails { |
+}; |
+ |
+// Media type set details for the TEXT medium. |
+// TODO(dalesat): Define. |
+struct TextMediaTypeSetDetails { |
+}; |
+ |
+// Media type details for the SUBPICTURE medium. |
+// TODO(dalesat): Define. |
+struct SubpictureMediaTypeDetails { |
+}; |
+ |
+// Media type set details for the SUBPICTURE medium. |
+// TODO(dalesat): Define. |
+struct SubpictureMediaTypeSetDetails { |
+}; |