Chromium Code Reviews| 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"; |
|
kulakowski
2016/04/19 19:18:22
I feel like I don't know enough about mature media
dalesat
2016/04/19 19:47:03
Medium isn't encoded as a string. There are four o
kulakowski
2016/04/20 17:42:37
Sure.
I suppose I was considering Audio and Video
|
| + 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 { |
| +}; |