blob: 8425609f3f5d06e1e175b993da8ad8449af61103 [file] [log] [blame]
// Copyright 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// The <code>chrome.cast.streaming.rtpStream</code> API allows configuration
// of encoding parameters and RTP parameters used in a Cast streaming
// session.
//
// Valid stream IDs are positive and non-zero.
namespace cast.streaming.rtpStream {
// Params for audio and video codec.
dictionary CodecSpecificParams {
DOMString key;
DOMString value;
};
// RTP payload param.
dictionary RtpPayloadParams {
long payloadType;
// Maximum latency in milliseconds. This parameter controls the logic
// of flow control. Implementation can adjust latency adaptively and
// tries to keep it under this threshold. A larger value allows smoother
// playback at the cost of higher latency.
long maxLatency;
// Minimum latency in milliseconds. Defaults to |maxLatency|.
long? minLatency;
// Starting latency for animated content in milliseconds.
// Defaults to |maxLatency|.
long? animatedLatency;
DOMString codecName;
// Synchronization source identifier.
long ssrc;
long feedbackSsrc;
long? clockRate;
// Minimum bitrate in kilobits per second.
long? minBitrate;
// Maximum bitrate in kilobits per second.
long? maxBitrate;
// The number of channels.
long? channels;
// The maximum frame rate.
double? maxFrameRate;
// 32 bytes hex-encoded AES key.
DOMString? aesKey;
// 32 bytes hex-encoded AES IV (Initialization vector) mask.
DOMString? aesIvMask;
// A list of codec specific params.
CodecSpecificParams[] codecSpecificParams;
};
// Cast RTP parameters.
dictionary RtpParams {
// RTP payload params.
RtpPayloadParams payload;
DOMString[] rtcpFeatures;
};
// Callback from the <code>create</code> method.
// |id| : The ID for the RTP stream.
callback CreateCallback = void (long streamId);
// Callback from the <code>getRawEvents</code> method.
// |rawEvents|: compressed serialized raw bytes containing raw events
// recorded for a stream.
// The compression is in gzip format.
// The serialization format can be found at
// media/cast/logging/log_serializer.cc.
callback GetRawEventsCallback = void (ArrayBuffer rawEvents);
// Callback from the <code>getStats</code> method.
// |rawEvents|: dictionary object containing stats recorded for a stream.
// The format can be found at
// media/cast/logging/stats_event_subscriber.cc.
callback GetStatsCallback = void (object stats);
interface Functions {
// Destroys a Cast RTP stream.
// |streamId| : The RTP stream ID.
[nocompile] static void destroy(long streamId);
// Returns an array of supported parameters with default values.
// This includes a list of supported codecs on this platform and
// corresponding encoding and RTP parameters.
// |streamId| : The RTP stream ID.
[nocompile] static RtpParams[] getSupportedParams(long streamId);
// Activates the RTP stream by providing the parameters.
// |streamId| : The RTP stream ID.
// |params| : Parameters set for this stream.
[nocompile] static void start(long streamId, RtpParams params);
// Stops activity on the specified stream.
// |streamId| : The RTP stream ID.
[nocompile] static void stop(long streamId);
// Enables / disables logging for a stream.
// |enable|: If true, enables logging. Otherwise disables logging.
[nocompile] static void toggleLogging(long streamId, boolean enable);
// Get raw events for a stream in the current session.
// |streamId|: Stream to get events for.
// |extraData|: Extra data to attach to the log, e.g. system info or
// experiment tags, in key-value JSON string format.
// |callback|: Called with the raw events.
[nocompile] static void getRawEvents(
long streamId, optional DOMString extraData,
GetRawEventsCallback callback);
// Get stats for a stream in the current session.
// |streamId|: Stream to get stats for.
// |callback|: Called with the stats.
[nocompile] static void getStats(
long streamId, GetStatsCallback callback);
};
interface Events {
// Event fired when a Cast RTP stream has started.
// |streamId| : The ID of the RTP stream.
static void onStarted(long streamId);
// Event fired when a Cast RTP stream has stopped.
// |streamId| : The ID of the RTP stream.
static void onStopped(long streamId);
// Event fired when a Cast RTP stream has error.
// |streamId| : The ID of the RTP stream.
// |errorString| : The error info.
static void onError(long streamId, DOMString errorString);
};
};