[media/mediaplayer/mediacodec] remove fidl ordinals
TEST: no behavior change
Change-Id: I2740f01e14a2f9629f51ad2e1094c1f3ef8fedd8
diff --git a/public/fidl/fuchsia.media/audio.fidl b/public/fidl/fuchsia.media/audio.fidl
index 46386f9..92a6e64 100644
--- a/public/fidl/fuchsia.media/audio.fidl
+++ b/public/fidl/fuchsia.media/audio.fidl
@@ -4,10 +4,9 @@
library fuchsia.media;
-// Ordinal range: 0x0700-0x7ff
[Discoverable]
interface Audio {
- 0x0701: CreateAudioRenderer(request<AudioRenderer> audio_renderer_request);
+ CreateAudioRenderer(request<AudioRenderer> audio_renderer_request);
// Create an AudioCapturer which either captures from the current default
// audio input device, or loops-back from the current default audio output
@@ -19,8 +18,8 @@
// Eventually, I suspect that all of this will move up into the audio policy
// manager and application clients will obtain AudioCapturers from and control
// through the policy manager.
- 0x0702: CreateAudioCapturer(request<AudioCapturer> audio_capturer_request,
- bool loopback);
+ CreateAudioCapturer(request<AudioCapturer> audio_capturer_request,
+ bool loopback);
// System Gain and Mute
// TODO(mpuryear): remove this systemwide setting once device-centric settings
@@ -41,12 +40,12 @@
// -160db to 0db, inclusive. This setting is applied to all audio output
// devices. Audio input devices are unaffected. System Gain changes do not
// affect the System Mute state.
- 0x0703: SetSystemGain(float32 gain_db);
+ SetSystemGain(float32 gain_db);
// Sets/clears the systemwide 'Mute' state for audio output devices. Audio
// input devices are unaffected. Changes to the System Mute state do not
// affect the value of System Gain.
- 0x0704: SetSystemMute(bool muted);
+ SetSystemMute(bool muted);
// Provides current values for the systemwide Gain and Mute.
// When a client connects to Audio, the system enqueues an action (to be
@@ -68,9 +67,9 @@
// from a FIDL message dispatch (returning control to the FIDL dispatcher),
// then that client subsequently registers this callback, the client has no
// way to learn the current Gain|Mute settings until they actually change.
- 0x0705: -> SystemGainMuteChanged(float32 gain_db, bool muted);
+ -> SystemGainMuteChanged(float32 gain_db, bool muted);
- 0x0706: SetRoutingPolicy(AudioOutputRoutingPolicy policy);
+ SetRoutingPolicy(AudioOutputRoutingPolicy policy);
};
// A placeholder for various types of simple routing policies. This should be
diff --git a/public/fidl/fuchsia.media/audio_capturer.fidl b/public/fidl/fuchsia.media/audio_capturer.fidl
index 84890e2..91d48b8 100644
--- a/public/fidl/fuchsia.media/audio_capturer.fidl
+++ b/public/fidl/fuchsia.media/audio_capturer.fidl
@@ -251,34 +251,33 @@
// sensitive content. Enforce using the policy manager.
// ++ Consider allowing the mixer to produce compressed audio.
//
-// Ordinal range: 0x0500-0x5ff
[FragileBase]
interface AudioCapturer : StreamBufferSet, StreamSource {
// Sets the stream type of the stream to be delivered. Causes the source
// material to be reformatted/resampled if needed in order to produce the
// requested stream type. Note that the stream type may not be changed after
// the payload buffer has been established.
- 0x0501: SetPcmStreamType(AudioStreamType stream_type);
+ SetPcmStreamType(AudioStreamType stream_type);
// Explicitly specify a region of the shared payload buffer for the audio
// input to capture into.
- 0x0502: CaptureAt(uint32 payload_buffer_id, uint32 payload_offset,
- uint32 frames) -> (StreamPacket captured_packet);
+ CaptureAt(uint32 payload_buffer_id, uint32 payload_offset,
+ uint32 frames) -> (StreamPacket captured_packet);
// Place the AudioCapturer into 'async' capture mode and begin to produce packets
// of exactly 'frames_per_packet' number of frames each. The
// OnPacketProduced event (of StreamSink) will be used to inform the client of
// produced packets.
- 0x0503: StartAsyncCapture(uint32 frames_per_packet);
+ StartAsyncCapture(uint32 frames_per_packet);
// Stop capturing in 'async' capture mode and (optionally) deliver a
// callback that may be used by the client if explicit synchronization
// is needed.
- 0x0504: StopAsyncCapture() -> ();
- 0x0505: StopAsyncCaptureNoReply();
+ StopAsyncCapture() -> ();
+ StopAsyncCaptureNoReply();
// Binds to the gain control for this AudioCapturer.
- 0x0506: BindGainControl(request<GainControl> gain_control_request);
+ BindGainControl(request<GainControl> gain_control_request);
/////////////////////////////////////////////////////////////////////////////
// StreamBufferSet methods
@@ -303,5 +302,5 @@
// enumerate the configuration of these bind-able endpoints (and perhaps to
// exercise control over them), but it will be the user of the AudioCapturer's job
// to specify the format they want.
- 0xffff: GetStreamType() -> (StreamType stream_type);
+ GetStreamType() -> (StreamType stream_type);
};
diff --git a/public/fidl/fuchsia.media/audio_device_enumerator.fidl b/public/fidl/fuchsia.media/audio_device_enumerator.fidl
index 807b5c6..3134b4f 100644
--- a/public/fidl/fuchsia.media/audio_device_enumerator.fidl
+++ b/public/fidl/fuchsia.media/audio_device_enumerator.fidl
@@ -36,7 +36,7 @@
[Discoverable]
interface AudioDeviceEnumerator {
// Obtain the list of currently active audio devices.
- 100: GetDevices() -> (vector<AudioDeviceInfo> devices);
+ GetDevices() -> (vector<AudioDeviceInfo> devices);
// Events sent when devices are added or removed, or when properties of a
// device change.
@@ -51,11 +51,11 @@
//
// Con: Having filters like this means that the server needs to maintain a bit
// more per-client state.
- 110: -> OnDeviceAdded(AudioDeviceInfo device);
- 111: -> OnDeviceRemoved(uint64 device_token);
- 112: -> OnDeviceGainChanged(uint64 device_token, AudioGainInfo gain_info);
- 113: -> OnDefaultDeviceChanged(uint64 old_default_token,
- uint64 new_default_token);
+ -> OnDeviceAdded(AudioDeviceInfo device);
+ -> OnDeviceRemoved(uint64 device_token);
+ -> OnDeviceGainChanged(uint64 device_token, AudioGainInfo gain_info);
+ -> OnDefaultDeviceChanged(uint64 old_default_token,
+ uint64 new_default_token);
// Gain/Mute/AGC control
//
@@ -75,11 +75,11 @@
// call to care only about the mute setting in the gain_info structure, while
// passing (SetAudioGainFlag_GainValid | SetAudioGainFlag_MuteValid) will
// cause both the mute and the gain status to be changed simultaneously.
- 200: GetDeviceGain(uint64 device_token)
- -> (uint64 device_token, AudioGainInfo gain_info);
- 201: SetDeviceGain(uint64 device_token,
- AudioGainInfo gain_info,
- uint32 set_flags);
+ GetDeviceGain(uint64 device_token)
+ -> (uint64 device_token, AudioGainInfo gain_info);
+ SetDeviceGain(uint64 device_token,
+ AudioGainInfo gain_info,
+ uint32 set_flags);
// Default Device
//
@@ -98,6 +98,6 @@
// plugged input/output". As the human level logic which drives the audio
// routing policy evolves and becomes more complicated, this will probably
// change.
- 300: GetDefaultInputDevice() -> (uint64 device_token);
- 301: GetDefaultOutputDevice() -> (uint64 device_token);
+ GetDefaultInputDevice() -> (uint64 device_token);
+ GetDefaultOutputDevice() -> (uint64 device_token);
};
diff --git a/public/fidl/fuchsia.media/audio_renderer.fidl b/public/fidl/fuchsia.media/audio_renderer.fidl
index 525eee1..4b10256 100644
--- a/public/fidl/fuchsia.media/audio_renderer.fidl
+++ b/public/fidl/fuchsia.media/audio_renderer.fidl
@@ -17,22 +17,21 @@
// `DiscardAllPackets` on the AudioRenderer, before starting to reconfigure it.
//
-// Ordinal range: 0x0600-0x6ff
[FragileBase]
interface AudioRenderer : StreamBufferSet, StreamSink {
// Sets the type of the stream to be delivered by the client. Using this
// method implies that the stream encoding is AUDIO_ENCODING_LPCM.
- 0x0601: SetPcmStreamType(AudioStreamType type);
+ SetPcmStreamType(AudioStreamType type);
// Sets the stream type to be delivered by the client. This method is used for
// compressed pass-through. The media_specific field must be of type audio.
// NOTE: Not currently implemented.
- 0x0602: SetStreamType(StreamType type);
+ SetStreamType(StreamType type);
// Sets the units used by the presentation (media) timeline. By default, PTS
// units are nanoseconds (as if this were called with values of 1e9 and 1).
- 0x0603: SetPtsUnits(uint32 tick_per_second_numerator,
- uint32 tick_per_second_denominator);
+ SetPtsUnits(uint32 tick_per_second_numerator,
+ uint32 tick_per_second_denominator);
// Sets the maximum threshold (in frames) between an explicit PTS (user-
// provided) and an expected PTS (determined using interpolation). Beyond this
@@ -90,14 +89,14 @@
// previously delivered packets. Conversely, users who wish to *always*
// explicitly schedule their audio packets exactly may specify a CT of 0.
//
- 0x0604: SetPtsContinuityThreshold(float32 threshold_seconds);
+ SetPtsContinuityThreshold(float32 threshold_seconds);
// Set the reference clock used to control playback rate.
//
// TODO(mpuryear): refine this type when we solidly define what a clock handle
// is/looks like. Also should we allow users to lock their rates to CLOCK_MONO
// instead of following the default (perhaps dynamic) system rate?
- 0x0605: SetReferenceClock(handle reference_clock);
+ SetReferenceClock(handle reference_clock);
// Immediately put the AudioRenderer into a playing state. Start the advance
// of the media timeline, using specific values provided by the caller (or
@@ -205,9 +204,9 @@
// relationship), in which case we should introduce a discontinuity.
//
// TODO(mpuryear): Collapse these if we ever have optional retvals in FIDL
- 0x0606: Play(int64 reference_time, int64 media_time)
- -> (int64 reference_time, int64 media_time);
- 0x0607: PlayNoReply(int64 reference_time, int64 media_time);
+ Play(int64 reference_time, int64 media_time)
+ -> (int64 reference_time, int64 media_time);
+ PlayNoReply(int64 reference_time, int64 media_time);
// Immediately put the AudioRenderer into the paused state and then report the
// relationship between the media and reference timelines which was
@@ -218,8 +217,8 @@
// but provide a valid correspondence pair in response.
//
// TODO(mpuryear): Collapse these if we ever have optional retvals in FIDL
- 0x0608: Pause() -> (int64 reference_time, int64 media_time);
- 0x0609: PauseNoReply();
+ Pause() -> (int64 reference_time, int64 media_time);
+ PauseNoReply();
// Enable or disable notifications about changes to the minimum clock lead
// time (in nanoseconds) for this AudioRenderer. Calling this method with
@@ -256,15 +255,15 @@
// draining and dropping any lead time changed events that were already in
// flight when the disable message was sent.
//
- 0x060a: EnableMinLeadTimeEvents(bool enabled);
- 0x060b: -> OnMinLeadTimeChanged(int64 min_lead_time_nsec);
+ EnableMinLeadTimeEvents(bool enabled);
+ -> OnMinLeadTimeChanged(int64 min_lead_time_nsec);
// TODO(mpuryear): Eliminate this method when possible. Right now, it is used
// by code requiring synchronous FIDL interfaces to talk to AudioRenderers.
- 0x060c: GetMinLeadTime() -> (int64 min_lead_time_nsec);
+ GetMinLeadTime() -> (int64 min_lead_time_nsec);
// Binds to the gain control for this AudioRenderer.
- 0x060d: BindGainControl(request<GainControl> gain_control_request);
+ BindGainControl(request<GainControl> gain_control_request);
/////////////////////////////////////////////////////////////////////////////
// StreamBufferSet methods
diff --git a/public/fidl/fuchsia.media/gain_control.fidl b/public/fidl/fuchsia.media/gain_control.fidl
index a9f2b6d..5856315 100644
--- a/public/fidl/fuchsia.media/gain_control.fidl
+++ b/public/fidl/fuchsia.media/gain_control.fidl
@@ -12,10 +12,9 @@
// including logarithmic (i.e. linear wrt dB), cubic (in/out/inout) or others.
};
-// Ordinal range: 0x0100-0x1ff
interface GainControl {
// Sets the gain in decibels.
- 0x0101: SetGain(float32 gain_db);
+ SetGain(float32 gain_db);
// Smoothly change gain from its current value to specified value, over the
// specified duration (in milliseconds). If 'duration_ns' is 0, gain changes
@@ -50,13 +49,13 @@
// Time 8: Ramp 3 replaces Ramp 2 and starts from current scale (approx 0.5).
// Time 9: Ramp 3 completes; current scale value is now 0.0 (MUTED_GAIN_DB).
//
- 0x0102: SetGainWithRamp(float32 gain_db,
- int64 duration_ns,
- AudioRamp rampType);
+ SetGainWithRamp(float32 gain_db,
+ int64 duration_ns,
+ AudioRamp rampType);
// Sets the mute value. Ramping and Mute are fully independent, although of
// course they both affect the scalingthat is applied to the audio stream(s).
- 0x0103: SetMute(bool muted);
+ SetMute(bool muted);
// Provides current gain/mute values to those who register for notification.
//
@@ -64,7 +63,7 @@
//
// TODO(mpuryear): notify upon ramp milestones (not just SetGain/Mute) --
// upon the start/pause/restart/completion of an active ramp?
- 0x0104: -> OnGainMuteChanged(float32 gain_db, bool muted);
+ -> OnGainMuteChanged(float32 gain_db, bool muted);
};
const float32 MUTED_GAIN_DB = -160.0;
diff --git a/public/fidl/fuchsia.media/stream.fidl b/public/fidl/fuchsia.media/stream.fidl
index a8b871b..1cad893 100644
--- a/public/fidl/fuchsia.media/stream.fidl
+++ b/public/fidl/fuchsia.media/stream.fidl
@@ -5,55 +5,52 @@
library fuchsia.media;
// Manages a set of payload buffers for a stream.
-// Ordinal range: 0x0200-0x2ff
[FragileBase]
interface StreamBufferSet {
// Adds a payload buffer for stream packets. StreamPacket structs reference
// a payload buffer by ID using the StreamPacket.payload_buffer_id field.
- 0x0201: AddPayloadBuffer(uint32 id, handle<vmo> payload_buffer);
+ AddPayloadBuffer(uint32 id, handle<vmo> payload_buffer);
// Removes a payload buffer.
- 0x0202: RemovePayloadBuffer(uint32 id);
+ RemovePayloadBuffer(uint32 id);
};
// Consumes a stream of packets.
-// Ordinal range: 0x0300-03ff
[FragileBase]
interface StreamSink {
// Sends a packet to this object. The response is sent when this object is
// done with the associated payload memory.
- 0x0301: SendPacket(StreamPacket packet) -> ();
+ SendPacket(StreamPacket packet) -> ();
// Sends a packet to this object. This interface doesn't define how the client
// knows when the sink is done with the associated payload memory. The
// inheriting interface must define that.
- 0x0302: SendPacketNoReply(StreamPacket packet);
+ SendPacketNoReply(StreamPacket packet);
// Indicates the stream has ended.
- 0x0303: EndOfStream();
+ EndOfStream();
// Discards packets previously sent via SendPacket or SendPacketNoReply.
- 0x0304: DiscardAllPackets() -> ();
- 0x0305: DiscardAllPacketsNoReply();
+ DiscardAllPackets() -> ();
+ DiscardAllPacketsNoReply();
};
// Produces a stream of packets.
-// Ordinal range: 0x0400-04ff
[FragileBase]
interface StreamSource {
// Delivers a packet produced by this object. Each packet delivered via this
// event must be released with a call to ReleasePacket.
- 0x0401: -> OnPacketProduced(StreamPacket packet);
+ -> OnPacketProduced(StreamPacket packet);
// Indicates that the stream has ended.
- 0x0402: -> OnEndOfStream();
+ -> OnEndOfStream();
// Releases a packet delivered via OnPacketProduced.
- 0x0403: ReleasePacket(StreamPacket packet);
+ ReleasePacket(StreamPacket packet);
// Discards queued packets.
- 0x0404: DiscardAllPackets() -> ();
- 0x0405: DiscardAllPacketsNoReply();
+ DiscardAllPackets() -> ();
+ DiscardAllPacketsNoReply();
};
// A StreamSink that uses StreamBufferSet for buffer management.
diff --git a/public/fidl/fuchsia.mediacodec/BUILD.gn b/public/fidl/fuchsia.mediacodec/BUILD.gn
index 8d1a2ba..1f1b232 100644
--- a/public/fidl/fuchsia.mediacodec/BUILD.gn
+++ b/public/fidl/fuchsia.mediacodec/BUILD.gn
@@ -8,8 +8,8 @@
sdk_category = "partner"
sources = [
+ "codec.fidl",
"codec_common.fidl",
"codec_factory.fidl",
- "codec.fidl",
]
}
diff --git a/public/fidl/fuchsia.mediacodec/codec.fidl b/public/fidl/fuchsia.mediacodec/codec.fidl
index e5f2bcc..0575029 100644
--- a/public/fidl/fuchsia.mediacodec/codec.fidl
+++ b/public/fidl/fuchsia.mediacodec/codec.fidl
@@ -850,7 +850,7 @@
//
// If the server hasn't seen this message by the time a stream fails, the
// server will close the Codec channel instead of sending OnStreamFailed().
- 1: EnableOnStreamFailed();
+ EnableOnStreamFailed();
// OnStreamFailed()
//
@@ -883,7 +883,7 @@
// zx_status_t, though that might tend to encourage mis-use of zx_status_t so
// maybe just error_message for quicker debugging on the client side. Also
// plumb from CodecAdapterH264 and similar.
- 2: -> OnStreamFailed(uint64 stream_lifetime_ordinal);
+ -> OnStreamFailed(uint64 stream_lifetime_ordinal);
// OnInputConstraints()
//
@@ -926,7 +926,7 @@
// "recommended" values for input, maybe only on request rather than via this
// event, to keep things simpler for simpler clients. Maybe separate the
// recommendations from the constraints.
- 3: -> OnInputConstraints(CodecBufferConstraints input_constraints);
+ -> OnInputConstraints(CodecBufferConstraints input_constraints);
// SetInputBufferSettings() and AddInputBuffer()
//
@@ -953,7 +953,7 @@
// low-level buffers is outside the scope of this interface.
//
// This call ends any previous buffer_lifetime_ordinal, and starts a new one.
- 4: SetInputBufferSettings(CodecPortBufferSettings input_settings);
+ SetInputBufferSettings(CodecPortBufferSettings input_settings);
// The client is required to add all the input buffers before sending any
// message that starts a new stream else the codec will close the Codec
@@ -964,7 +964,7 @@
// will not generate an OnFreeInputPacket() for each new input packet. The
// client can immediately start sending QueueInputPacket() after sending the
// last AddInputBuffer().
- 5: AddInputBuffer(CodecBuffer buffer);
+ AddInputBuffer(CodecBuffer buffer);
// OnOutputConfig()
//
@@ -983,7 +983,7 @@
// config changes.
//
// For more on OnOutputConfig(), see cocec.md.
- 6: -> OnOutputConfig(CodecOutputConfig output_config);
+ -> OnOutputConfig(CodecOutputConfig output_config);
// SetOutputBufferSettings() and AddOutputBuffer()
//
@@ -1004,8 +1004,8 @@
// _permitted_ any time there is no current stream.
//
// For more on SetOutputBufferSettings() and AddOutputBuffer(), see codec.md.
- 7: SetOutputBufferSettings(CodecPortBufferSettings output_settings);
- 8: AddOutputBuffer(CodecBuffer buffer);
+ SetOutputBufferSettings(CodecPortBufferSettings output_settings);
+ AddOutputBuffer(CodecBuffer buffer);
// FlushEndOfStreamAndCloseStream()
//
@@ -1049,7 +1049,7 @@
// OnOutputEndOfStream(), OnStreamFailed(), or the Codec channel closes.
//
// For more on FlushEndOfStreamAndCloseStream(), see codec.md.
- 9: FlushEndOfStreamAndCloseStream(uint64 stream_lifetime_ordinal);
+ FlushEndOfStreamAndCloseStream(uint64 stream_lifetime_ordinal);
// CloseCurrentStream()
//
@@ -1074,10 +1074,10 @@
// See also Sync().
//
// For more on CloseCurrentStream(), see codec.md.
- 10: CloseCurrentStream(
- uint64 stream_lifetime_ordinal,
- bool release_input_buffers,
- bool release_output_buffers);
+ CloseCurrentStream(
+ uint64 stream_lifetime_ordinal,
+ bool release_input_buffers,
+ bool release_output_buffers);
// Sync() -> ()
//
@@ -1108,7 +1108,7 @@
// SetInputBufferSettings() and the like, a client that spams the channel
// can expect that the channel will just close if the server or the channel
// itself gets too far behind.
- 11: Sync() -> ();
+ Sync() -> ();
// OnOutputPacket()
//
@@ -1148,10 +1148,10 @@
//
// The scope of error_detected_during is from the start to the end of this
// output_packet.
- 12: -> OnOutputPacket(
- CodecPacket output_packet,
- bool error_detected_before,
- bool error_detected_during);
+ -> OnOutputPacket(
+ CodecPacket output_packet,
+ bool error_detected_before,
+ bool error_detected_during);
// RecycleOutputPacket()
//
@@ -1166,7 +1166,7 @@
// A server must ignore any such stale RecycleOutputPacket() calls.
//
// For more on RecycleOutputPacket(), see codec.md.
- 13: RecycleOutputPacket(CodecPacketHeader available_output_packet);
+ RecycleOutputPacket(CodecPacketHeader available_output_packet);
// OnOutputEndOfStream()
//
@@ -1195,9 +1195,9 @@
//
// The error_detected_before bool has the same semantics as the
// error_detected_before bool in OnOutputPacket().
- 14: -> OnOutputEndOfStream(
- uint64 stream_lifetime_ordinal,
- bool error_detected_before);
+ -> OnOutputEndOfStream(
+ uint64 stream_lifetime_ordinal,
+ bool error_detected_before);
//
// Stream specific messages:
@@ -1229,8 +1229,8 @@
// the start of any stream). The format specified need not match what was
// specified during codec creation, but if it doesn't match, the Codec channel
// might close as described above.
- 15: QueueInputFormatDetails(
- uint64 stream_lifetime_ordinal, CodecFormatDetails format_details);
+ QueueInputFormatDetails(
+ uint64 stream_lifetime_ordinal, CodecFormatDetails format_details);
// QueueInputPacket()
//
@@ -1250,7 +1250,7 @@
// OnOutputConfig().
//
// For more on QueueInputPacket(), see codec.md.
- 16: QueueInputPacket(CodecPacket packet);
+ QueueInputPacket(CodecPacket packet);
// OnFreeInputPacket()
//
@@ -1273,7 +1273,7 @@
// the order vs. QueueInputPacket(), to make it easier to feed input from a
// ring buffer or similar. For audio encoders it might still make sense. For
// video encoders probably not.
- 17: -> OnFreeInputPacket(CodecPacketHeader free_input_packet);
+ -> OnFreeInputPacket(CodecPacketHeader free_input_packet);
// Inform the server that all QueueInputPacket() messages for this stream
// have been sent.
@@ -1311,5 +1311,5 @@
// QueueInputEndOfStream() for this stream after the first
// QueueInputEndOfStream() for this stream, a server should close the Codec
// channel.
- 18: QueueInputEndOfStream(uint64 stream_lifetime_ordinal);
+ QueueInputEndOfStream(uint64 stream_lifetime_ordinal);
};
diff --git a/public/fidl/fuchsia.mediacodec/codec_common.fidl b/public/fidl/fuchsia.mediacodec/codec_common.fidl
index d1e7a7c..8ff3d5d 100644
--- a/public/fidl/fuchsia.mediacodec/codec_common.fidl
+++ b/public/fidl/fuchsia.mediacodec/codec_common.fidl
@@ -8,12 +8,12 @@
//
// Generic "value" for use within generic "Parameter" struct.
union Value {
- bool bool_value;
- uint64 uint64_value;
- int64 int64_value;
- string string_value;
- // Prefer using codec_oob_bytes instead.
- vector<uint8> bytes_value;
+ bool bool_value;
+ uint64 uint64_value;
+ int64 int64_value;
+ string string_value;
+ // Prefer using codec_oob_bytes instead.
+ vector<uint8> bytes_value;
};
// Parameter
@@ -26,12 +26,12 @@
// TODO: When possible, describe the very limited scenarios in which it would
// still be reasonable to use a generic Parameter.
struct Parameter {
- // Some indication of the scope of applicability of this Parameter.
- string scope;
- // Specific name of this parameter, without the scope prefix.
- string name;
- // The particular value of this parameter.
- Value value;
+ // Some indication of the scope of applicability of this Parameter.
+ string scope;
+ // Specific name of this parameter, without the scope prefix.
+ string name;
+ // The particular value of this parameter.
+ Value value;
};
// CodecFormatDetails
@@ -92,56 +92,56 @@
// TODO(dustingreen): Consider whether splitting encoder settings out separately
// would be better.
union AudioCompressedFormat {
- // For an aac encoder, this field has settings the encoder needs which are
- // specific to AAC encoding.
- AudioCompressedFormatAacEncoder aac;
+ // For an aac encoder, this field has settings the encoder needs which are
+ // specific to AAC encoding.
+ AudioCompressedFormatAacEncoder aac;
};
enum AudioBitrateMode {
- // Used mainly when a client is configuring an encoder's output format. May
- // also be present in an OnOutputConfig() message from an encoder, but should
- // not be relied upon to be present by any consumer downstream of an encoder.
- UNSPECIFIED = 0;
- CBR = 1;
- VBR = 2;
+ // Used mainly when a client is configuring an encoder's output format. May
+ // also be present in an OnOutputConfig() message from an encoder, but should
+ // not be relied upon to be present by any consumer downstream of an encoder.
+ UNSPECIFIED = 0;
+ CBR = 1;
+ VBR = 2;
};
// AudioCompressedFormatAacEncoder
//
// Encoder settings for an AAC encoder.
struct AudioCompressedFormatAacEncoder {
- // In SetOutputConfig():
- //
- // If zero, an encoder should generate 256 kbps, and a consumer should not
- // assume any particular bitrate.
- //
- // If not zero, the encoder should not exceed this bitrate. In CBR the
- // encoder should use the highest available bitrate that doesn't exceed this
- // value, or if there is no such bitrate, the lowest available bitrate. In
- // VBR, the encoder should stay at or below this bitrate.
- //
- // In VBR it's left up to the encoder to choose a reasonable ratio between
- // max bits per second and min bits per second, with the aim in VBR being
- // constant perceived quality.
- //
- // In OnOutputConfig():
- //
- // In CBR, the nominal bits per second. In VBR, the nominal max bits per
- // second.
- uint32 bits_per_second;
+ // In SetOutputConfig():
+ //
+ // If zero, an encoder should generate 256 kbps, and a consumer should not
+ // assume any particular bitrate.
+ //
+ // If not zero, the encoder should not exceed this bitrate. In CBR the
+ // encoder should use the highest available bitrate that doesn't exceed this
+ // value, or if there is no such bitrate, the lowest available bitrate. In
+ // VBR, the encoder should stay at or below this bitrate.
+ //
+ // In VBR it's left up to the encoder to choose a reasonable ratio between
+ // max bits per second and min bits per second, with the aim in VBR being
+ // constant perceived quality.
+ //
+ // In OnOutputConfig():
+ //
+ // In CBR, the nominal bits per second. In VBR, the nominal max bits per
+ // second.
+ uint32 bits_per_second;
- // In SetOutputConfig():
- //
- // If UNSPECIFIED, up to the encoder. If CBR or VBR, a hint to the encoder
- // to use that mode.
- //
- // In OnOutputConfig():
- //
- // Actual mode being used. UNSPECIFIED means the source is not specifying
- // which mode.
- AudioBitrateMode bitrate_mode;
+ // In SetOutputConfig():
+ //
+ // If UNSPECIFIED, up to the encoder. If CBR or VBR, a hint to the encoder
+ // to use that mode.
+ //
+ // In OnOutputConfig():
+ //
+ // Actual mode being used. UNSPECIFIED means the source is not specifying
+ // which mode.
+ AudioBitrateMode bitrate_mode;
- // TODO(dustingreen): AAC profile settings.
+ // TODO(dustingreen): AAC profile settings.
};
// AudioPcmMode
@@ -149,16 +149,16 @@
// TODO(dustingreen): Keep or discard any non-linear formats for purposes of the
// Codec interface?
enum AudioPcmMode {
- // 16 bit signed int linear or 32 bit float linear, for now
- // 1-N channels ok, with "A.B" channels designated as A+B channel_count - the
- // channel map is separately specified. So 5.1 becomes channel_count 6.
- LINEAR = 0;
- // G.711 8 bit format-defined waveform semantics
- // 1 channel
- ALAW = 1;
- // G.711 8 bit format-defined waveform semantics
- // 1 channel
- MULAW = 2;
+ // 16 bit signed int linear or 32 bit float linear, for now
+ // 1-N channels ok, with "A.B" channels designated as A+B channel_count - the
+ // channel map is separately specified. So 5.1 becomes channel_count 6.
+ LINEAR = 0;
+ // G.711 8 bit format-defined waveform semantics
+ // 1 channel
+ ALAW = 1;
+ // G.711 8 bit format-defined waveform semantics
+ // 1 channel
+ MULAW = 2;
};
// AudioChannelId
@@ -173,25 +173,25 @@
// get added incrementally, but changing the order would no longer match
// Android's ordering.
enum AudioChannelId {
- SKIP = 0; // unused channel
- LF = 1; // left front
- RF = 2; // right front
- CF = 3; // center front
- LS = 4; // left surround
- RS = 5; // right surround
- LFE = 6; // low frequency effects
- CS = 7; // back surround
- LR = 8; // left rear
- RR = 9; // right rear
- // This is the last explicitly-defined value + 1. This name will be
- // re-defined in future if we add more defined channel IDs above.
- END_DEFINED = 10;
- // This is where format-specific (or ad-hoc) channel ID values should go, to
- // avoid colliding with any additional values allocated above. The values
- // here are not guaranteed to avoid collision across different formats.
- EXTENDED_CHANNEL_ID_BASE = 0x6f000000;
- // Extended channel IDs should be <= Max.
- MAX = 0x7fffffff;
+ SKIP = 0; // unused channel
+ LF = 1; // left front
+ RF = 2; // right front
+ CF = 3; // center front
+ LS = 4; // left surround
+ RS = 5; // right surround
+ LFE = 6; // low frequency effects
+ CS = 7; // back surround
+ LR = 8; // left rear
+ RR = 9; // right rear
+ // This is the last explicitly-defined value + 1. This name will be
+ // re-defined in future if we add more defined channel IDs above.
+ END_DEFINED = 10;
+ // This is where format-specific (or ad-hoc) channel ID values should go, to
+ // avoid colliding with any additional values allocated above. The values
+ // here are not guaranteed to avoid collision across different formats.
+ EXTENDED_CHANNEL_ID_BASE = 0x6f000000;
+ // Extended channel IDs should be <= Max.
+ MAX = 0x7fffffff;
};
// PcmFormat
@@ -201,56 +201,56 @@
// TODO(dustingreen): Discuss with mpuryear@ re. where definitions for these
// details go and make sure the common details can specify at least this much.
struct PcmFormat {
- // Implicit details:
- // * For bits_per_sample > 8, host-endian is implied.
- // * At least for now, for channel_count >= 2, interleaved layout is
- // implied.
+ // Implicit details:
+ // * For bits_per_sample > 8, host-endian is implied.
+ // * At least for now, for channel_count >= 2, interleaved layout is
+ // implied.
- AudioPcmMode pcm_mode;
+ AudioPcmMode pcm_mode;
- // bits_per_sample
- //
- // A "sample" is for a single channel.
- //
- // For example, CD quality is 16. See PcmMode comments, as the mode
- // constrains this value.
- uint32 bits_per_sample;
+ // bits_per_sample
+ //
+ // A "sample" is for a single channel.
+ //
+ // For example, CD quality is 16. See PcmMode comments, as the mode
+ // constrains this value.
+ uint32 bits_per_sample;
- // frames_per_second
- //
- // A "frame" is one datapoint (one "sample") for each channel. Each channel
- // is sampled this many times per second. For example, CD quality is 44100.
- uint32 frames_per_second;
+ // frames_per_second
+ //
+ // A "frame" is one datapoint (one "sample") for each channel. Each channel
+ // is sampled this many times per second. For example, CD quality is 44100.
+ uint32 frames_per_second;
- // channel_map
- //
- // channel_map.size() is the channel count. See PcmMode comments, as some
- // modes constrain the channel count to 1.
- //
- // Values from AudioChannelId should be used if they are suitable.
- //
- // If a channel has no suitable AudioChannelId, an ad-hoc value can be used in
- // a range starting from AudioChannel_ExtendedChannelIdBase.
- vector<AudioChannelId>:16 channel_map;
+ // channel_map
+ //
+ // channel_map.size() is the channel count. See PcmMode comments, as some
+ // modes constrain the channel count to 1.
+ //
+ // Values from AudioChannelId should be used if they are suitable.
+ //
+ // If a channel has no suitable AudioChannelId, an ad-hoc value can be used in
+ // a range starting from AudioChannel_ExtendedChannelIdBase.
+ vector<AudioChannelId>:16 channel_map;
- // TODO(dustingreen): Add unsigned 8 bit, float 32 bit, maybe others. FWIW,
- // AOSP appears to support signed 16 bit, unsigned 8 bit, and float 32 bit
- // under "Pcm", AFAICT based on OMX_NUMERICALDATATYPE and ACodec.cpp code.
+ // TODO(dustingreen): Add unsigned 8 bit, float 32 bit, maybe others. FWIW,
+ // AOSP appears to support signed 16 bit, unsigned 8 bit, and float 32 bit
+ // under "Pcm", AFAICT based on OMX_NUMERICALDATATYPE and ACodec.cpp code.
};
// AudioUncompressedFormat
//
// Uncompressed audio format details.
union AudioUncompressedFormat {
- PcmFormat pcm;
+ PcmFormat pcm;
};
// AudioFormat
//
// Audio format details.
union AudioFormat {
- AudioCompressedFormat compressed;
- AudioUncompressedFormat uncompressed;
+ AudioCompressedFormat compressed;
+ AudioUncompressedFormat uncompressed;
};
// VideoCompressedFormat
@@ -264,12 +264,12 @@
// given the mime_type + format-defined codec_oob_bytes as appropriate +
// in-band data.
union VideoCompressedFormat {
- // TODO(dustingreen): Any compressed video formats that aren't sufficiently
- // self-describing to select and create a Codec instance to decode it?
+ // TODO(dustingreen): Any compressed video formats that aren't sufficiently
+ // self-describing to select and create a Codec instance to decode it?
- // TODO(dustingreen): temp field to make the compiler happy until we have at
- // least one real field.
- uint32 temp_field_todo_remove;
+ // TODO(dustingreen): temp field to make the compiler happy until we have at
+ // least one real field.
+ uint32 temp_field_todo_remove;
};
// VideoUncompressedFormatSpecificDetails
@@ -278,17 +278,17 @@
//
// TODO(dustingreen): Switch to FIDL table instead.
union VideoUncompressedFormatSpecificDetails {
- // TODO(dustingreen): Which formats that we care about really require special
- // format-specific details here?
+ // TODO(dustingreen): Which formats that we care about really require special
+ // format-specific details here?
- // TODO(dustingreen): temp field to make the compiler happy until we have at
- // least one real field.
- uint32 temp_field_todo_remove;
+ // TODO(dustingreen): temp field to make the compiler happy until we have at
+ // least one real field.
+ uint32 temp_field_todo_remove;
};
enum VideoColorSpace {
- // TODO(dustingreen): add to this list
- INVALID = 0;
+ // TODO(dustingreen): add to this list
+ INVALID = 0;
};
// VideoUncompressedFormat
@@ -297,118 +297,118 @@
//
// TODO(dustingreen): Integrate with a system-wide structure for this purpose.
struct VideoUncompressedFormat {
- // fourcc
- //
- // A human-readable fourcc like RGBA should be 0x41424752 in the fourcc field
- // (regardless of host endian-ness). Note that the R (first character) of the
- // fourcc is in the low-order byte of this fourcc field.
- //
- // There are some fourcc codes that don't format nicely as a string. While I
- // don't foresee any use of any of the purely numeric fourcc codes (not
- // corresponding to packed ascii character values), those would be stored
- // such that their numeric value has it's low-order byte in the low-order
- // byte of this fourcc value. So a fourcc with "hex value" 0x00000001 would
- // have the numeric value 1 in this field.
- //
- // The endian-ness of fourcc values stored in files or in network packets is
- // outside the scope of these comments, other than to state that regardless
- // of the source of the fourcc code and the order that storage / transmission
- // format stores these bytes, a human-readable fourcc should have its
- // human-read first ascii character value in the low order byte of this
- // field.
- uint32 fourcc;
+ // fourcc
+ //
+ // A human-readable fourcc like RGBA should be 0x41424752 in the fourcc field
+ // (regardless of host endian-ness). Note that the R (first character) of the
+ // fourcc is in the low-order byte of this fourcc field.
+ //
+ // There are some fourcc codes that don't format nicely as a string. While I
+ // don't foresee any use of any of the purely numeric fourcc codes (not
+ // corresponding to packed ascii character values), those would be stored
+ // such that their numeric value has it's low-order byte in the low-order
+ // byte of this fourcc value. So a fourcc with "hex value" 0x00000001 would
+ // have the numeric value 1 in this field.
+ //
+ // The endian-ness of fourcc values stored in files or in network packets is
+ // outside the scope of these comments, other than to state that regardless
+ // of the source of the fourcc code and the order that storage / transmission
+ // format stores these bytes, a human-readable fourcc should have its
+ // human-read first ascii character value in the low order byte of this
+ // field.
+ uint32 fourcc;
- // For formats with different planes having different resolution, this is the
- // resolution of the highest-resolution plane(s). Else it's the resolution
- // of all the planes.
- uint32 primary_width_pixels;
- uint32 primary_height_pixels;
+ // For formats with different planes having different resolution, this is the
+ // resolution of the highest-resolution plane(s). Else it's the resolution
+ // of all the planes.
+ uint32 primary_width_pixels;
+ uint32 primary_height_pixels;
- // For formats where the seconary planes are the same resolution, these fields
- // will be the same as primary_width_pixels and primary_height_pixels. For
- // formats with smaller secondary resolutions, these indicate that resolution.
- uint32 secondary_width_pixels;
- uint32 secondary_height_pixels;
+ // For formats where the seconary planes are the same resolution, these fields
+ // will be the same as primary_width_pixels and primary_height_pixels. For
+ // formats with smaller secondary resolutions, these indicate that resolution.
+ uint32 secondary_width_pixels;
+ uint32 secondary_height_pixels;
- // Planar means the various planes are separately stored in their own chunks
- // of memory.
- bool planar;
+ // Planar means the various planes are separately stored in their own chunks
+ // of memory.
+ bool planar;
- // If a format is swizzled, the swizzling parameters are not directly here.
- bool swizzled;
+ // If a format is swizzled, the swizzling parameters are not directly here.
+ bool swizzled;
- uint32 primary_line_stride_bytes;
- // Formats with the same stride for all planes will have this field equal to
- // primary_line_stride_bytes.
- uint32 secondary_line_stride_bytes;
+ uint32 primary_line_stride_bytes;
+ // Formats with the same stride for all planes will have this field equal to
+ // primary_line_stride_bytes.
+ uint32 secondary_line_stride_bytes;
- // R or Y
- uint32 primary_start_offset;
- // G or U
- uint32 secondary_start_offset;
- // B or V
- uint32 tertiary_start_offset;
+ // R or Y
+ uint32 primary_start_offset;
+ // G or U
+ uint32 secondary_start_offset;
+ // B or V
+ uint32 tertiary_start_offset;
- uint32 primary_pixel_stride;
- // For formats with the same pixel stride for all planes, this field will be
- // equal to primary_pixel_stride.
- uint32 secondary_pixel_stride;
+ uint32 primary_pixel_stride;
+ // For formats with the same pixel stride for all planes, this field will be
+ // equal to primary_pixel_stride.
+ uint32 secondary_pixel_stride;
- // These override the primary_width_pixels and primary_height_pixels for
- // purposes of display (but not for purposes of determining the pixel layout
- // in memory). These can crop on the right and bottom. These must be <= the
- // corresponding coded dimension.
- //
- // This value must be <= primary_width_pixels.
- uint32 primary_display_width_pixels;
- // This value must be <= primary_height_pixels.
- uint32 primary_display_height_pixels;
+ // These override the primary_width_pixels and primary_height_pixels for
+ // purposes of display (but not for purposes of determining the pixel layout
+ // in memory). These can crop on the right and bottom. These must be <= the
+ // corresponding coded dimension.
+ //
+ // This value must be <= primary_width_pixels.
+ uint32 primary_display_width_pixels;
+ // This value must be <= primary_height_pixels.
+ uint32 primary_display_height_pixels;
- // The pixel_aspect_ratio_width : pixel_aspect_ratio_height is the pixel
- // aspect ratio (AKA sample aspect ratio aka SAR) for the luma (AKA Y)
- // samples. A pixel_aspect_ratio of 1:1 mean square pixels. A
- // pixel_aspect_ratio of 2:1 would mean pixels that are displayed twice as
- // wide as they are tall. Codec implementation should ensure these two values
- // are relatively prime by reducing the fraction (dividing both by GCF) if
- // necessary.
- //
- // When has_pixel_aspect_ratio == false, pixel_aspect_ratio_width and
- // pixel_aspect_ratio_height will both be 1, but in that case the
- // pixel_aspect_ratio_width : pixel_aspect_ratio_height of 1:1 is just a very
- // weak suggestion re. reasonable-ish handling, not in any way authoritative.
- // In this case (or in any case really) the receiver of this message may have
- // other OOB means to determine the actual pixel_aspect_ratio.
- bool has_pixel_aspect_ratio = false;
- uint32 pixel_aspect_ratio_width = 1;
- uint32 pixel_aspect_ratio_height = 1;
+ // The pixel_aspect_ratio_width : pixel_aspect_ratio_height is the pixel
+ // aspect ratio (AKA sample aspect ratio aka SAR) for the luma (AKA Y)
+ // samples. A pixel_aspect_ratio of 1:1 mean square pixels. A
+ // pixel_aspect_ratio of 2:1 would mean pixels that are displayed twice as
+ // wide as they are tall. Codec implementation should ensure these two values
+ // are relatively prime by reducing the fraction (dividing both by GCF) if
+ // necessary.
+ //
+ // When has_pixel_aspect_ratio == false, pixel_aspect_ratio_width and
+ // pixel_aspect_ratio_height will both be 1, but in that case the
+ // pixel_aspect_ratio_width : pixel_aspect_ratio_height of 1:1 is just a very
+ // weak suggestion re. reasonable-ish handling, not in any way authoritative.
+ // In this case (or in any case really) the receiver of this message may have
+ // other OOB means to determine the actual pixel_aspect_ratio.
+ bool has_pixel_aspect_ratio = false;
+ uint32 pixel_aspect_ratio_width = 1;
+ uint32 pixel_aspect_ratio_height = 1;
- // TODO(dustingreen): Currently this assumes 8 bits per channel, but we'll
- // need fields to indicate more bits per pixel such as 10 or 12 bits per
- // pixel. Also, potentially a way to indicate different number of bits per
- // channel for 565 16 bit RGB + packing details. Also, potentially
- // endian-ness.
- //
- // TODO(dustingreen): Also, an easy way to get a template
- // VideoUncompressedFormat that's pre-populated with reasonably-plausible
- // values, based on a fourcc or enum value + maybe primary resolution.
+ // TODO(dustingreen): Currently this assumes 8 bits per channel, but we'll
+ // need fields to indicate more bits per pixel such as 10 or 12 bits per
+ // pixel. Also, potentially a way to indicate different number of bits per
+ // channel for 565 16 bit RGB + packing details. Also, potentially
+ // endian-ness.
+ //
+ // TODO(dustingreen): Also, an easy way to get a template
+ // VideoUncompressedFormat that's pre-populated with reasonably-plausible
+ // values, based on a fourcc or enum value + maybe primary resolution.
- VideoUncompressedFormatSpecificDetails special_formats;
+ VideoUncompressedFormatSpecificDetails special_formats;
};
// VideoFormat
//
// Video (compress or uncompressed) format details.
union VideoFormat {
- VideoCompressedFormat compressed;
- VideoUncompressedFormat uncompressed;
+ VideoCompressedFormat compressed;
+ VideoUncompressedFormat uncompressed;
};
// DomainFormat
//
// Domain-specific format details (audio or video, compressed or uncompressed).
union DomainFormat {
- AudioFormat audio;
- VideoFormat video;
+ AudioFormat audio;
+ VideoFormat video;
};
const uint64 kMaxCodecOobBytesSize = 8192;
@@ -418,94 +418,94 @@
// This describes/details the format on input or output of a codec (separate
// instances for input vs. output).
struct CodecFormatDetails {
- // Particular instances of CodecFormatDetails will set this field to make it
- // easier for a receiver to determine if any part of the format has changed
- // vs. the last CodecFormatDetails received for the same context.
- uint64 format_details_version_ordinal;
+ // Particular instances of CodecFormatDetails will set this field to make it
+ // easier for a receiver to determine if any part of the format has changed
+ // vs. the last CodecFormatDetails received for the same context.
+ uint64 format_details_version_ordinal;
- // "mime_type" strings used by particular decoders / encoders so far:
- //
- // SW AAC decoder:
- // * input:
- // * "audio/aac-adts" - ATDS AAC; self-contained format, but
- // implementation for now requires codec_oob_bytes to contain
- // AudioSpecificConfig() reconstructed from ADTS header data - see also
- // make_AudioSpecificConfig_from_ADTS_header() for now.
- // * output:
- // * "audio/raw" - stereo linear 16 bit integer PCM
- //
- // TODO(dustingreen): avoid requiring codec_oob_bytes when using SoftAAC2.cpp
- // for AAC ADTS.
- //
- // TODO(dustingreen): Add non-ADTS AAC support (which naturally needs
- // codec_oob_bytes).
- //
- // TODO(dustingreen): Consider "pseudo_mime_type", or an enum, + "domain"
- // details as needed instead, since calling this "mime_type" could lead to
- // confusion.
- string mime_type;
+ // "mime_type" strings used by particular decoders / encoders so far:
+ //
+ // SW AAC decoder:
+ // * input:
+ // * "audio/aac-adts" - ATDS AAC; self-contained format, but
+ // implementation for now requires codec_oob_bytes to contain
+ // AudioSpecificConfig() reconstructed from ADTS header data - see also
+ // make_AudioSpecificConfig_from_ADTS_header() for now.
+ // * output:
+ // * "audio/raw" - stereo linear 16 bit integer PCM
+ //
+ // TODO(dustingreen): avoid requiring codec_oob_bytes when using SoftAAC2.cpp
+ // for AAC ADTS.
+ //
+ // TODO(dustingreen): Add non-ADTS AAC support (which naturally needs
+ // codec_oob_bytes).
+ //
+ // TODO(dustingreen): Consider "pseudo_mime_type", or an enum, + "domain"
+ // details as needed instead, since calling this "mime_type" could lead to
+ // confusion.
+ string mime_type;
- // Some codecs have their own binary codec configuration structure. For those
- // codecs we allow that binary structure to be directly conveyed to the codec
- // here.
- //
- // audio/aac - this is an AudioSpecificConfig().
- // audio/aac-adts - this is not set.
- // TODO(dustingreen): make the audio/aac-adts statement true soon. At the
- // moment we set this with make_AudioSpecificConfig_from_ADTS_header(), but
- // that should not be the client's job for ADTS.
- //
- // For some formats whose "ES" data format is self-contained, or for which
- // there is no format-defined binary OOB config, this is null.
- //
- // A server can close the channel if the count of bytes is >
- // kMaxCodecOobBytesSize or is larger than makes any sense for the codec. If
- // any codec actually needs more than kMaxCodecOobBytesSize bytes here, we
- // could potentially increase this restriction some, but this interface isn't
- // designed to support codec OOB config blobs that approach
- // ZX_CHANNEL_MAX_MSG_BYTES.
- vector<uint8>? codec_oob_bytes;
+ // Some codecs have their own binary codec configuration structure. For those
+ // codecs we allow that binary structure to be directly conveyed to the codec
+ // here.
+ //
+ // audio/aac - this is an AudioSpecificConfig().
+ // audio/aac-adts - this is not set.
+ // TODO(dustingreen): make the audio/aac-adts statement true soon. At the
+ // moment we set this with make_AudioSpecificConfig_from_ADTS_header(), but
+ // that should not be the client's job for ADTS.
+ //
+ // For some formats whose "ES" data format is self-contained, or for which
+ // there is no format-defined binary OOB config, this is null.
+ //
+ // A server can close the channel if the count of bytes is >
+ // kMaxCodecOobBytesSize or is larger than makes any sense for the codec. If
+ // any codec actually needs more than kMaxCodecOobBytesSize bytes here, we
+ // could potentially increase this restriction some, but this interface isn't
+ // designed to support codec OOB config blobs that approach
+ // ZX_CHANNEL_MAX_MSG_BYTES.
+ vector<uint8>? codec_oob_bytes;
- // Decoder input format:
- //
- // If a format is not self-describing given the mime_type and a
- // format-spec-defined codec_oob_bytes, this domain field can be set to
- // provide the additional compressed-format-specific details. This is
- // expected to be fairly rare, so most compressed input formats will have
- // only the mime_type and possibly codec_oob_bytes set, with domain typically
- // null. If an encoder is upstream however, domain may be set to convey the
- // encoder settings that were used, but a decoder consumer doesn't need to
- // look at those.
- //
- // Encoder output format:
- //
- // The encoder's compressed data output typically needs some configuration
- // (provided in this field) that's convenient to provide in a form that's not
- // codec_oob_bytes, and the codec can convert that config to codec_oob_bytes
- // on encoder output via OnOutputConfig(). We retain these encoder settings
- // in the output CodecFormatDetails to allow for cases where a downstream
- // consumer knowing the encoder settings could be useful.
- //
- // TODO(dustingreen): Decide if we want to retain this, or if we'd prefer to
- // split out config settings and maybe only represent a few encoder settings
- // as best-effort optional aux data, like bitrate.
- //
- // Encoder input format / decoder output format:
- //
- // This field contains fairly detailed information re. uncompressed data
- // format details, which tends to _not_ be self-describing in-band.
- DomainFormat? domain;
+ // Decoder input format:
+ //
+ // If a format is not self-describing given the mime_type and a
+ // format-spec-defined codec_oob_bytes, this domain field can be set to
+ // provide the additional compressed-format-specific details. This is
+ // expected to be fairly rare, so most compressed input formats will have
+ // only the mime_type and possibly codec_oob_bytes set, with domain typically
+ // null. If an encoder is upstream however, domain may be set to convey the
+ // encoder settings that were used, but a decoder consumer doesn't need to
+ // look at those.
+ //
+ // Encoder output format:
+ //
+ // The encoder's compressed data output typically needs some configuration
+ // (provided in this field) that's convenient to provide in a form that's not
+ // codec_oob_bytes, and the codec can convert that config to codec_oob_bytes
+ // on encoder output via OnOutputConfig(). We retain these encoder settings
+ // in the output CodecFormatDetails to allow for cases where a downstream
+ // consumer knowing the encoder settings could be useful.
+ //
+ // TODO(dustingreen): Decide if we want to retain this, or if we'd prefer to
+ // split out config settings and maybe only represent a few encoder settings
+ // as best-effort optional aux data, like bitrate.
+ //
+ // Encoder input format / decoder output format:
+ //
+ // This field contains fairly detailed information re. uncompressed data
+ // format details, which tends to _not_ be self-describing in-band.
+ DomainFormat? domain;
- // See comments above on Parameter. At the time we lock relevant FIDL
- // interfaces, there should be zero use of this field outside tests, but this
- // is here in case we need to allow a codec client to convey additional config
- // parameters to/from a codec which we didn't anticipate before locking.
- //
- // If there are any known "official" exceptions to the previous paragraph,
- // we'll list them here by corresponding mime_type (none so far):
- // * "<mime_type>" - <usage_description>
- //
- // For codecs that define their own codec-specific config/OOB data, put that
- // in codec_oob_bytes above instead of this field.
- vector<Parameter>? pass_through_parameters;
+ // See comments above on Parameter. At the time we lock relevant FIDL
+ // interfaces, there should be zero use of this field outside tests, but this
+ // is here in case we need to allow a codec client to convey additional config
+ // parameters to/from a codec which we didn't anticipate before locking.
+ //
+ // If there are any known "official" exceptions to the previous paragraph,
+ // we'll list them here by corresponding mime_type (none so far):
+ // * "<mime_type>" - <usage_description>
+ //
+ // For codecs that define their own codec-specific config/OOB data, put that
+ // in codec_oob_bytes above instead of this field.
+ vector<Parameter>? pass_through_parameters;
};
diff --git a/public/fidl/fuchsia.mediacodec/codec_factory.fidl b/public/fidl/fuchsia.mediacodec/codec_factory.fidl
index 6fad411..59c1242 100644
--- a/public/fidl/fuchsia.mediacodec/codec_factory.fidl
+++ b/public/fidl/fuchsia.mediacodec/codec_factory.fidl
@@ -10,185 +10,185 @@
//
// TODO(dustingreen): Switch this to a FIDL table instead when possible.
struct CreateDecoder_Params {
- // Input mime type for a decoder.
- //
- // The recognized mime types for now:
- // audio/aac
- // input_details.codec_oob_bytes must be an AudioSpecificConfig() as defined
- // by AAC spec.
- // audio/aac-adts
- // On a temporary basis, input_details.codec_oob_bytes must be an
- // AudioSpecificConfig() extracted from the ADTS stream data by the client.
- // This is temporary. Later, codec_oob_bytes will be ignored and allowed to
- // be null. On a temporary basis, see
- // make_AudioSpecificConfig_from_ADTS_header() for some self-contained
- // conversion code.
- // TODO(dustingreen): fix this up server side and make most of this
- // paragraph go away, possibly by also parsing ADTS before it hits OMX
- // since the parsing code there doesn't tolerate split ADTS headers.
- CodecFormatDetails input_details;
+ // Input mime type for a decoder.
+ //
+ // The recognized mime types for now:
+ // audio/aac
+ // input_details.codec_oob_bytes must be an AudioSpecificConfig() as defined
+ // by AAC spec.
+ // audio/aac-adts
+ // On a temporary basis, input_details.codec_oob_bytes must be an
+ // AudioSpecificConfig() extracted from the ADTS stream data by the client.
+ // This is temporary. Later, codec_oob_bytes will be ignored and allowed to
+ // be null. On a temporary basis, see
+ // make_AudioSpecificConfig_from_ADTS_header() for some self-contained
+ // conversion code.
+ // TODO(dustingreen): fix this up server side and make most of this
+ // paragraph go away, possibly by also parsing ADTS before it hits OMX
+ // since the parsing code there doesn't tolerate split ADTS headers.
+ CodecFormatDetails input_details;
- // The settings below nail down more details.
+ // The settings below nail down more details.
- // This must be true in order for the client to be permitted to put a
- // timestamp on an input packet, which is in turn required to get any
- // timestamps on any output packets.
- //
- // It is always legal to provide separate Access Units (henceforth AUs) to a
- // decoder, but this boolean must be true for a decoder to accept and
- // propagate timestamp values.
- //
- // This must be true when creating a video encoder, or the CodecFactory
- // channel will close.
- bool promise_separate_access_units_on_input = false;
+ // This must be true in order for the client to be permitted to put a
+ // timestamp on an input packet, which is in turn required to get any
+ // timestamps on any output packets.
+ //
+ // It is always legal to provide separate Access Units (henceforth AUs) to a
+ // decoder, but this boolean must be true for a decoder to accept and
+ // propagate timestamp values.
+ //
+ // This must be true when creating a video encoder, or the CodecFactory
+ // channel will close.
+ bool promise_separate_access_units_on_input = false;
- // "require" fields:
- //
- // Specifying any of these "require" fields can result in failure to get a
- // Codec if there's no suitable codec. None of these correspond to any
- // required features of a codec server.
- //
- // TODO(dustingreen): implement filtering codecs based on these fields.
+ // "require" fields:
+ //
+ // Specifying any of these "require" fields can result in failure to get a
+ // Codec if there's no suitable codec. None of these correspond to any
+ // required features of a codec server.
+ //
+ // TODO(dustingreen): implement filtering codecs based on these fields.
- // Require that the selected codec be capable of accepting input where
- // AUs are not separated into separate packets.
- //
- // This does not imply that the decoder can find the start of the first AU;
- // for that see require_can_find_start. This does not imply that the decoder
- // can re-sync on its own if the stream data is damaged; for that see
- // require_can_re_sync.
- //
- // If both promise_separate_access_units_on_input and
- // require_can_stream_bytes_input are true, the CodecFactory channel will
- // close.
- //
- // If this is false, the client must feed separate AUs on the fuchsia.ui.input. This
- // must be false for a video encoder, and if true the CodecFactory channel
- // will close.
- //
- // Unless a client demands a decoder capable of taking concatenated AUs
- // (require_can_stream_bytes_input true), the client must feed a decoder
- // separate AUs. This means the client cannot have parts of two separate AUs
- // in the same packet, unless require_can_stream_bytes_input is true.
- bool require_can_stream_bytes_input = false;
+ // Require that the selected codec be capable of accepting input where
+ // AUs are not separated into separate packets.
+ //
+ // This does not imply that the decoder can find the start of the first AU;
+ // for that see require_can_find_start. This does not imply that the decoder
+ // can re-sync on its own if the stream data is damaged; for that see
+ // require_can_re_sync.
+ //
+ // If both promise_separate_access_units_on_input and
+ // require_can_stream_bytes_input are true, the CodecFactory channel will
+ // close.
+ //
+ // If this is false, the client must feed separate AUs on the fuchsia.ui.input. This
+ // must be false for a video encoder, and if true the CodecFactory channel
+ // will close.
+ //
+ // Unless a client demands a decoder capable of taking concatenated AUs
+ // (require_can_stream_bytes_input true), the client must feed a decoder
+ // separate AUs. This means the client cannot have parts of two separate AUs
+ // in the same packet, unless require_can_stream_bytes_input is true.
+ bool require_can_stream_bytes_input = false;
- // A decoder is allowed to be capable of streaming bytes but not capable of
- // searching for the start of the first usable AU. To require both, set both
- // require_can_stream_bytes_input and require_can_find_start. Setting
- // require_can_find_start without require_can_stream_bytes_input is invalid.
- //
- // With require_can_stream_bytes_input true but require_can_find_start false,
- // the client must start the first packet with the start of an AU, but can
- // send a stream of bytes after that.
- bool require_can_find_start = false;
+ // A decoder is allowed to be capable of streaming bytes but not capable of
+ // searching for the start of the first usable AU. To require both, set both
+ // require_can_stream_bytes_input and require_can_find_start. Setting
+ // require_can_find_start without require_can_stream_bytes_input is invalid.
+ //
+ // With require_can_stream_bytes_input true but require_can_find_start false,
+ // the client must start the first packet with the start of an AU, but can
+ // send a stream of bytes after that.
+ bool require_can_find_start = false;
- // On problematic input data, all decoders are expected to at least be able to
- // close the channel rather than getting stuck in a failed and/or broken
- // state.
- //
- // A decoder returned from a request with require_can_re_sync is potentially
- // able to handle damaged input without closing the Codec channel. Such a
- // Codec is encouraged, but not required, to also satisfy requirements of
- // require_report_all_detected_errors.
- bool require_can_re_sync = false;
+ // On problematic input data, all decoders are expected to at least be able to
+ // close the channel rather than getting stuck in a failed and/or broken
+ // state.
+ //
+ // A decoder returned from a request with require_can_re_sync is potentially
+ // able to handle damaged input without closing the Codec channel. Such a
+ // Codec is encouraged, but not required, to also satisfy requirements of
+ // require_report_all_detected_errors.
+ bool require_can_re_sync = false;
- // Sometimes a client would rather fail an overall use of a decoder than fail
- // to notice data corruption. For such scenarios, the client can specify
- // require_report_all_detected_errors. For any codec returned from a
- // request with require_report_all_detected_errors set, on detection of
- // any input data corruption the codec will report in one or more of these
- // ways:
- // * closing the Codec channel
- // * OnStreamFailed()
- // * error_detected_before
- // * error_detected_during
- //
- // If false, a codec may silently skip past corrupted input data.
- //
- // No decoder can detect all corruption, because some corruption can look like
- // valid stream data. This requirement is only to request a codec that
- // is written to attempt to detect _and report_ input stream corruption.
- //
- // This flag is not intended to be 100% bulletproof. If a client needs robust
- // assurance that _all_ detectable stream corruption is _always_ detected,
- // this flag is not enough of a guarantee to achieve that. Since some stream
- // corruption is inherently non-detectable in any case, such a client should
- // consider using stronger techniques upstream to ensure that corruption can
- // be detected with the needed probability very close to 1.
- //
- // This flag being true doesn't imply anything about whether the codec will
- // discard damaged data vs. producing corresponding damaged output. Only that
- // the codec will set error_detected_* bools to true when appropriate.
- //
- // Regardless of this setting, not all timstamp_ish values provided on input
- // are guaranteed to show up on ouput.
- bool require_report_all_detected_errors = false;
+ // Sometimes a client would rather fail an overall use of a decoder than fail
+ // to notice data corruption. For such scenarios, the client can specify
+ // require_report_all_detected_errors. For any codec returned from a
+ // request with require_report_all_detected_errors set, on detection of
+ // any input data corruption the codec will report in one or more of these
+ // ways:
+ // * closing the Codec channel
+ // * OnStreamFailed()
+ // * error_detected_before
+ // * error_detected_during
+ //
+ // If false, a codec may silently skip past corrupted input data.
+ //
+ // No decoder can detect all corruption, because some corruption can look like
+ // valid stream data. This requirement is only to request a codec that
+ // is written to attempt to detect _and report_ input stream corruption.
+ //
+ // This flag is not intended to be 100% bulletproof. If a client needs robust
+ // assurance that _all_ detectable stream corruption is _always_ detected,
+ // this flag is not enough of a guarantee to achieve that. Since some stream
+ // corruption is inherently non-detectable in any case, such a client should
+ // consider using stronger techniques upstream to ensure that corruption can
+ // be detected with the needed probability very close to 1.
+ //
+ // This flag being true doesn't imply anything about whether the codec will
+ // discard damaged data vs. producing corresponding damaged output. Only that
+ // the codec will set error_detected_* bools to true when appropriate.
+ //
+ // Regardless of this setting, not all timstamp_ish values provided on input
+ // are guaranteed to show up on ouput.
+ bool require_report_all_detected_errors = false;
- // If true, require that the returned codec is HW-accelerated.
- bool require_hw = false;
+ // If true, require that the returned codec is HW-accelerated.
+ bool require_hw = false;
- // permit_lack_of_split_header_handling
- //
- // This field is a temporary field that will be going away.
- //
- // TODO(dustingreen): Remove this field once we're down to zero codecs with
- // problems handling split headers.
- //
- // By default, a Codec instance is required to handle "split headers", meaning
- // that a client is allowed to deliver parts of an AU one byte at a time,
- // including parts near the beginning of the AU, and the codec is required to
- // tolerate and handle that properly. However, unfortunately not all codecs
- // properly support split headers. If a client is willing to permit such a
- // codec to be used, the client can set this to true. Clients are not
- // encouraged to set this, but setting it may be necessary to find a codec for
- // some formats _for now_. If a client sets this to true, the client should
- // deliver data of each AU with many contiguous non-split bytes from the start
- // of each AU. The client is not strictly required to deliver one AU at a
- // time, only to ensure that either all the AU bytes are in a single packet or
- // that many bytes at the start of each AU are in a single packet.
- //
- // The specification for how a client should use this and how a client should
- // behave if setting this to true is intentionally vague, because lack of
- // support for header splitting is not ideal, and is expected to be
- // temporary, and all codecs should handle split headers in the long run.
- // The main intent of this field is to avoid giving an innocent client using
- // default value of false here a codec that can't properly handle split
- // headers. This is not an attempt at a mechanism to fully work around a
- // codec that doesn't handle split headers.
- //
- // TODO(dustingreen): In the near term, wire this up so that SoftAAC2.cpp
- // used for ADTS is not selected when this field is false, even if there is
- // no other suitable codec. In the long term, fix or work around the header
- // handling behavior of SoftAAC2 when used in ADTS mode (and any other
- // similar issues in other codecs) and remove this field.
- bool permit_lack_of_split_header_handling = false;
+ // permit_lack_of_split_header_handling
+ //
+ // This field is a temporary field that will be going away.
+ //
+ // TODO(dustingreen): Remove this field once we're down to zero codecs with
+ // problems handling split headers.
+ //
+ // By default, a Codec instance is required to handle "split headers", meaning
+ // that a client is allowed to deliver parts of an AU one byte at a time,
+ // including parts near the beginning of the AU, and the codec is required to
+ // tolerate and handle that properly. However, unfortunately not all codecs
+ // properly support split headers. If a client is willing to permit such a
+ // codec to be used, the client can set this to true. Clients are not
+ // encouraged to set this, but setting it may be necessary to find a codec for
+ // some formats _for now_. If a client sets this to true, the client should
+ // deliver data of each AU with many contiguous non-split bytes from the start
+ // of each AU. The client is not strictly required to deliver one AU at a
+ // time, only to ensure that either all the AU bytes are in a single packet or
+ // that many bytes at the start of each AU are in a single packet.
+ //
+ // The specification for how a client should use this and how a client should
+ // behave if setting this to true is intentionally vague, because lack of
+ // support for header splitting is not ideal, and is expected to be
+ // temporary, and all codecs should handle split headers in the long run.
+ // The main intent of this field is to avoid giving an innocent client using
+ // default value of false here a codec that can't properly handle split
+ // headers. This is not an attempt at a mechanism to fully work around a
+ // codec that doesn't handle split headers.
+ //
+ // TODO(dustingreen): In the near term, wire this up so that SoftAAC2.cpp
+ // used for ADTS is not selected when this field is false, even if there is
+ // no other suitable codec. In the long term, fix or work around the header
+ // handling behavior of SoftAAC2 when used in ADTS mode (and any other
+ // similar issues in other codecs) and remove this field.
+ bool permit_lack_of_split_header_handling = false;
};
enum CodecType {
- DECODER = 0;
- ENCODER = 1;
+ DECODER = 0;
+ ENCODER = 1;
};
struct CodecDescription {
- // Decoder or encoder.
- CodecType codec_type;
- // The mime type of the compressed format. For decoders this is the mime
- // type of the input. For encoders, this is the mime type of the output.
- string mime_type;
+ // Decoder or encoder.
+ CodecType codec_type;
+ // The mime type of the compressed format. For decoders this is the mime
+ // type of the input. For encoders, this is the mime type of the output.
+ string mime_type;
- // TODO(dustingreen): All these fields should be optional.
- //
- // TODO(dustingreen): Re-evaluate this for encoders.
- //
- // For each of these fields, the default is the most-capable setting, but if a
- // codec doesn't support the most-capable behavior, then the codec must
- // override the default.
- bool can_stream_bytes_input = true;
- bool can_find_start = true;
- bool can_re_sync = true;
- bool will_report_all_detected_errors = true;
- bool is_hw = true;
- bool split_header_handling = true;
+ // TODO(dustingreen): All these fields should be optional.
+ //
+ // TODO(dustingreen): Re-evaluate this for encoders.
+ //
+ // For each of these fields, the default is the most-capable setting, but if a
+ // codec doesn't support the most-capable behavior, then the codec must
+ // override the default.
+ bool can_stream_bytes_input = true;
+ bool can_find_start = true;
+ bool can_re_sync = true;
+ bool will_report_all_detected_errors = true;
+ bool is_hw = true;
+ bool split_header_handling = true;
};
// CodecFactory
@@ -204,46 +204,46 @@
// stateful between create requests.
[Discoverable]
interface CodecFactory {
- // Driver-based local CodecFactory(s) will send this once shortly after the
- // main CodecFactory connects to the driver-local CodecFactory.
- //
- // For now, the main CodecFactory will not send this.
- //
- // A SW-based local CodecFactory(s) will not send this event.
- //
- // Each codec in the list must be separately-described, for clean aggregation.
- 1: -> OnCodecList(vector<CodecDescription> codecs);
+ // Driver-based local CodecFactory(s) will send this once shortly after the
+ // main CodecFactory connects to the driver-local CodecFactory.
+ //
+ // For now, the main CodecFactory will not send this.
+ //
+ // A SW-based local CodecFactory(s) will not send this event.
+ //
+ // Each codec in the list must be separately-described, for clean aggregation.
+ -> OnCodecList(vector<CodecDescription> codecs);
- // Rough sequence to create a decoder:
- //
- // factory = ConnectToEnvironmentService(CodecFactory);
- // CreateDecoder_Params params;
- // [fill out params]
- // CreateDecoder(params, decoder_request);
- //
- // See use_media_decoder code for more detail.
- //
- // TODO(dustingreen): More detail in this comment block.
+ // Rough sequence to create a decoder:
+ //
+ // factory = ConnectToEnvironmentService(CodecFactory);
+ // CreateDecoder_Params params;
+ // [fill out params]
+ // CreateDecoder(params, decoder_request);
+ //
+ // See use_media_decoder code for more detail.
+ //
+ // TODO(dustingreen): More detail in this comment block.
- // Requests:
+ // Requests:
- // CreateDecoder:
- //
- // decoder_params - See CreateDecoder_Params comments for required
- // and optional parameters for creating a decoder.
- //
- // decoder - a Codec.NewRequest() which will hopefully be connected to
- // a Codec server, or the Codec channel will get closed if no suitable codec
- // can be found. We don't return any additional Codec-specific status here
- // because finding the Codec is allowed to be fully async, so we don't
- // necessarily yet know on return from this method which Codec will be
- // selected, if any.
- 2: CreateDecoder(
- CreateDecoder_Params decoder_params,
- request<Codec> decoder);
+ // CreateDecoder:
+ //
+ // decoder_params - See CreateDecoder_Params comments for required
+ // and optional parameters for creating a decoder.
+ //
+ // decoder - a Codec.NewRequest() which will hopefully be connected to
+ // a Codec server, or the Codec channel will get closed if no suitable codec
+ // can be found. We don't return any additional Codec-specific status here
+ // because finding the Codec is allowed to be fully async, so we don't
+ // necessarily yet know on return from this method which Codec will be
+ // selected, if any.
+ CreateDecoder(
+ CreateDecoder_Params decoder_params,
+ request<Codec> decoder);
- // TODO(dustingreen):
- // CreateAudioEncoder
- // CreateVideoEncoder
- // (or combined)
+ // TODO(dustingreen):
+ // CreateAudioEncoder
+ // CreateVideoEncoder
+ // (or combined)
};
diff --git a/public/fidl/fuchsia.mediaplayer/player.fidl b/public/fidl/fuchsia.mediaplayer/player.fidl
index 9464cbf..e6d914f9 100644
--- a/public/fidl/fuchsia.mediaplayer/player.fidl
+++ b/public/fidl/fuchsia.mediaplayer/player.fidl
@@ -11,7 +11,6 @@
using fuchsia.ui.viewsv1token;
// Plays media.
-// Ordinal range: 0x1001-10ff
[Discoverable]
interface Player : SourceManager {
/////////////////////////////////////////////////////////////////////////////
@@ -21,40 +20,40 @@
// Sets an HTTP URL to read from. The provided headers are added to each
// HTTP request issued to the URL.
- 0x1001: SetHttpSource(string http_url,
- vector<fuchsia.net.oldhttp.HttpHeader>? headers);
+ SetHttpSource(string http_url,
+ vector<fuchsia.net.oldhttp.HttpHeader>? headers);
// Sets a file channel to read from.
- 0x1002: SetFileSource(handle<channel> file_channel);
+ SetFileSource(handle<channel> file_channel);
// Starts playback.
- 0x1003: Play();
+ Play();
// Pauses playback.
- 0x1004: Pause();
+ Pause();
// Provides current status immediately after binding and whenever status
// changes thereafter.
- 0x1005: -> OnStatusChanged(PlayerStatus player_status);
+ -> OnStatusChanged(PlayerStatus player_status);
// Seeks to the specified position, specified in nanoseconds.
- 0x1006: Seek(int64 position);
+ Seek(int64 position);
// Creates a video view.
// DEPRECATED
- 0x1007: CreateView(fuchsia.ui.viewsv1.ViewManager view_manager,
- request<fuchsia.ui.viewsv1token.ViewOwner> view_owner_request);
+ CreateView(fuchsia.ui.viewsv1.ViewManager view_manager,
+ request<fuchsia.ui.viewsv1token.ViewOwner> view_owner_request);
// Creates a video view.
// Temporary, in use for V2 transition.
- 0x1601: CreateView2(handle<eventpair> view_owner_token);
+ CreateView2(handle<eventpair> view_owner_token);
// Binds to the gain control for this player.
- 0x1008: BindGainControl(
- request<fuchsia.media.GainControl> gain_control_request);
+ BindGainControl(
+ request<fuchsia.media.GainControl> gain_control_request);
// Adds a new binding to this player.
- 0x1009: AddBinding(request<Player> player_request);
+ AddBinding(request<Player> player_request);
/////////////////////////////////////////////////////////////////////////////
// SourceManager methods
diff --git a/public/fidl/fuchsia.mediaplayer/seeking_reader.fidl b/public/fidl/fuchsia.mediaplayer/seeking_reader.fidl
index 48c2fd1..e3740fd 100644
--- a/public/fidl/fuchsia.mediaplayer/seeking_reader.fidl
+++ b/public/fidl/fuchsia.mediaplayer/seeking_reader.fidl
@@ -10,13 +10,13 @@
// Describes the content. If there’s a problem accessing the content, this
// is expressed by using result. The size_in_bytes may be reported as
// UNKNOWN_SIZE if the size of the content is unknown.
- 1: Describe() -> (SeekingReaderResult result, uint64 size, bool can_seek);
+ Describe() -> (SeekingReaderResult result, uint64 size, bool can_seek);
// Reads the content. If there’s a problem performing the read, this is
// expressed using result. If the read succeeded, the reply must contain a
// valid socket from which the content can be read.
- 2: ReadAt(uint64 position) -> (SeekingReaderResult SeekingReaderResult,
- handle<socket>? socket);
+ ReadAt(uint64 position) -> (SeekingReaderResult SeekingReaderResult,
+ handle<socket>? socket);
};
const uint64 UNKNOWN_SIZE = 0xffffffffffffffff;
diff --git a/public/fidl/fuchsia.mediaplayer/sink_manager.fidl b/public/fidl/fuchsia.mediaplayer/sink_manager.fidl
index c3467db..6fbfe9a0 100644
--- a/public/fidl/fuchsia.mediaplayer/sink_manager.fidl
+++ b/public/fidl/fuchsia.mediaplayer/sink_manager.fidl
@@ -7,21 +7,19 @@
using fuchsia.media;
// Manages sinks on behalf of a Player.
-// Ordinal range: 0x1501-15ff
interface SinkManager {
// Creates a sink that renders audio using an AudioRenderer.
- 0x1501: CreateAudioRendererSink(fuchsia.media.AudioRenderer audio_renderer,
- request<Sink> sink_request);
+ CreateAudioRendererSink(fuchsia.media.AudioRenderer audio_renderer,
+ request<Sink> sink_request);
// Adds a sink.
- 0x1502: AddSink(uint32 id, Sink sink);
+ AddSink(uint32 id, Sink sink);
// Removes a sink.
- 0x1503: RemoveSink(uint32 id, request<Sink> removed_sink);
+ RemoveSink(uint32 id, request<Sink> removed_sink);
// TODO(dalesat): Many features to add here.
};
-// Ordinal range: 0x1601-16ff
interface Sink {
};
diff --git a/public/fidl/fuchsia.mediaplayer/source_manager.fidl b/public/fidl/fuchsia.mediaplayer/source_manager.fidl
index 18d84da..c2fd94d 100644
--- a/public/fidl/fuchsia.mediaplayer/source_manager.fidl
+++ b/public/fidl/fuchsia.mediaplayer/source_manager.fidl
@@ -8,59 +8,56 @@
using fuchsia.net.oldhttp;
// Manages sources on behalf of a Player.
-// Ordinal range: 0x1101-11ff
[FragileBase]
interface SourceManager {
// Creates a source that reads from a URL.
- 0x1101: CreateHttpSource(string http_url,
- vector<fuchsia.net.oldhttp.HttpHeader>? headers,
- request<Source> source_request);
+ CreateHttpSource(string http_url,
+ vector<fuchsia.net.oldhttp.HttpHeader>? headers,
+ request<Source> source_request);
// Creates a source that reads from a file.
- 0x1102: CreateFileSource(handle<channel> file_channel,
- request<Source> source_request);
+ CreateFileSource(handle<channel> file_channel,
+ request<Source> source_request);
// Creates a source that reads from a SeekingReader.
- 0x1103: CreateReaderSource(SeekingReader seeking_reader,
- request<Source> source_request);
+ CreateReaderSource(SeekingReader seeking_reader,
+ request<Source> source_request);
// Creates a source that allows the client to provide independent elementary
// streams to the player. duration_ns, can_pause, can_seek and metadata are
// all included in the SourceStatus and, when the StreamSource is used by
// the player, in the PlayerStatus as well. can_pause and can_seek, when
// false, constrain the capabilities of the player.
- 0x1104: CreateStreamSource(int64 duration_ns, bool can_pause, bool can_seek,
- Metadata? metadata,
- request<StreamSource> source_request);
+ CreateStreamSource(int64 duration_ns, bool can_pause, bool can_seek,
+ Metadata? metadata,
+ request<StreamSource> source_request);
// Sets the source for this player to use. If source is null, the player
// becomes idle.
- 0x1105: SetSource(Source? source);
+ SetSource(Source? source);
// Transitions to the specified source when playback of the current source
// reaches transition_pts. The new source starts playback at start_pts. If
// a transition is already pending, it will be discarded in favor of the new
// transition.
// NOT CURRENTLY IMPLEMENTED.
- 0x1106: TransitionToSource(Source source, int64 transition_pts,
- int64 start_pts);
+ TransitionToSource(Source source, int64 transition_pts,
+ int64 start_pts);
// Cancels a pending transition, returning the source. If no transition is
// pending, the request channel is closed.
// NOT CURRENTLY IMPLEMENTED.
- 0x1107: CancelSourceTransition(request<Source> returned_source_request);
+ CancelSourceTransition(request<Source> returned_source_request);
};
-// Ordinal range: 0x1201-12ff
[FragileBase]
interface Source {
// Provides current status immediately after binding and whenever status
// changes thereafter.
- 0x1201: -> OnStatusChanged(SourceStatus source_status);
+ -> OnStatusChanged(SourceStatus source_status);
};
// Source variant for providing elementary streams directly.
-// Ordinal range: 0x1301-13ff
interface StreamSource : Source {
// Adds an elementary stream. The elementary stream can be removed by
// closing the SimpleStreamSink. ticks_per_second_numerator and
@@ -74,11 +71,11 @@
// SimpleStreamSink methods not currently implemented:
// DiscardAllPackets
// DiscardAllPacketsNoReply
- 0x1301: AddStream(
- fuchsia.media.StreamType type,
- uint32 ticks_per_second_numerator,
- uint32 ticks_per_second_denominator,
- request<fuchsia.media.SimpleStreamSink> stream_source_sink_request);
+ AddStream(
+ fuchsia.media.StreamType type,
+ uint32 ticks_per_second_numerator,
+ uint32 ticks_per_second_denominator,
+ request<fuchsia.media.SimpleStreamSink> stream_source_sink_request);
// Adds a new binding to this StreamSource. By using this method, the client
// can obtain an additional channel through which to communicate to this
@@ -91,7 +88,7 @@
// original CreateStreamSource call. That is, a connection established
// using AddBinding cannot be passed to SourceManager.SetSource.
// TODO(dalesat): Remove this limitation.
- 0x1302: AddBinding(request<StreamSource> stream_source_request);
+ AddBinding(request<StreamSource> stream_source_request);
////////////////////////////////////////////////////////////////////////////
// Source methods