Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(53)

Side by Side Diff: mojo/services/media/audio/interfaces/audio_track.mojom

Issue 1424933002: Add an initial revision of an audio server. (Closed) Base URL: https://github.com/domokit/mojo.git@change4
Patch Set: refactor MixerKernel into a class to prepare for the addition of a linear interpolation sampler Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2015 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.
4
5 module mojo.media;
6
7 import "mojo/services/media/common/interfaces/media_common.mojom";
8 import "mojo/services/media/common/interfaces/media_pipe.mojom";
9 import "mojo/services/media/common/interfaces/media_types.mojom";
10 import "mojo/services/media/common/interfaces/rate_control.mojom";
11
12 struct AudioTrackDescriptor {
13 // The track supports the union of all these media type sets.
14 array<MediaTypeSet> supported_media_types;
15
16 // Whether the track supports a push transport.
17 bool supports_push_transport;
18
19 // Whether the track supports a pull transport.
20 bool supports_pull_transport;
jeffbrown 2015/11/04 23:43:32 I thought we were only going to support push?
johngro 2015/11/06 02:20:23 copied directly from Dale's design doc. Let's bri
dalesat 2015/11/06 06:14:11 Push-only came up in the doc review...no longer th
johngro 2015/11/06 20:24:25 Acknowledged. What do you think I should do here?
dalesat 2015/11/06 21:03:56 If you're not using them, you might as well delete
johngro 2015/11/09 20:25:16 Done.
21 };
22
23 struct AudioTrackConfiguration {
24 // The media type to use.
25 MediaType media_type;
26
27 // Desired maximum buffer size, in frames of audio.
28 uint64 max_frames;
29
30 // Ratio of audio frames to media time ticks.
31 //
32 // Presentation time stamps on audio packets are expressed in units of media
33 // time ticks. Many users will choose to use units of audio frames to express
34 // their media time, and can simply leave this ratio at the default of 1:1.
35 // For some, however, it may be more convenient to use different units for
36 // media time. For example, if the audio frame rate was 48KHz, and the time
37 // stamps are expressed in 90KHz units (the units used by MPEG-2 Program
38 // Stream timestamps), the ratio should be set to 48000:90000 (aka, 8:15).
39 // IOW - audio_frame_ratio would be set to 8 and media_time_ratio would be set
40 // to 15.
41 //
42 // Neither of these values may be 0. A configuration error will occur if they
43 // are.
44 uint32 audio_frame_ratio = 1;
45 uint32 media_time_ratio = 1;
46 };
47
48 interface AudioTrack {
49 // Get the descriptor.
50 Describe() => (AudioTrackDescriptor descriptor);
51
52 // Set the configuration, receive a pipe to send data to in return.
53 // Possible results include...
54 //
55 // kOK:
56 // Configuration successful, the bound pipe interface is ready to be used.
57 //
58 // kInvalidArgs:
jeffbrown 2015/11/04 23:43:32 close the connection
johngro 2015/11/06 02:20:24 Acknowledged. FWIW - I'm putting these all in my
59 // One or more of the configuration arguments are illegal. For example, a
60 // value of 0 for either numerator or denominator of the audio frame to
61 // media time ratio.
62 //
63 // kUnsupportedConfig:
jeffbrown 2015/11/04 23:43:32 if the client was able to determine this ahead of
johngro 2015/11/06 02:20:24 Acknowledged.
64 // The requested configuration is not supported by this track.
65 //
66 // kInsufficientResources:
67 // Resource limitations prevent configuring the audio track is the desired
68 // way. Perhaps there is not enough RAM to support the 2.7 days of audio
69 // buffer you requested, or perhaps there is not enough CPU power given the
70 // existing active tracks in the system to support rendering 128 channels
71 // at 1.5 MHz frame rate.
72 //
73 // kBadState:
jeffbrown 2015/11/04 23:43:32 This suggests coupling the creation of an audio tr
johngro 2015/11/06 02:20:24 Acknowledged. Agreed, I do not think we currently
74 // The track is already configured and has pending data in its pipe. Data
75 // needs to be flushed and the media clock must be stopped before the track
76 // may be re-configured.
77 Configure(AudioTrackConfiguration configuration,
78 MediaPipe& pipe) => (MediaResult result);
79
80 // Request the rate control interface for this AudioTrack
81 // Possbile results include...
82 //
83 // kOK:
84 // Everything went well.
85 //
86 // kBadState:
87 // Rate control interface is already bound to a different client.
88 GetRateControl(RateControl& rate_control) => (MediaResult result);
jeffbrown 2015/11/04 23:43:32 I can't think of a meaningful error to report here
johngro 2015/11/06 02:20:24 It is possible for anyone with access to the Audio
89 };
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698