summaryrefslogtreecommitdiff
path: root/third_party/googleapis/google/cloud/video/livestream/v1/outputs.proto
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/googleapis/google/cloud/video/livestream/v1/outputs.proto')
-rw-r--r--third_party/googleapis/google/cloud/video/livestream/v1/outputs.proto397
1 files changed, 397 insertions, 0 deletions
diff --git a/third_party/googleapis/google/cloud/video/livestream/v1/outputs.proto b/third_party/googleapis/google/cloud/video/livestream/v1/outputs.proto
new file mode 100644
index 0000000..90ab85b
--- /dev/null
+++ b/third_party/googleapis/google/cloud/video/livestream/v1/outputs.proto
@@ -0,0 +1,397 @@
+// Copyright 2022 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+syntax = "proto3";
+
+package google.cloud.video.livestream.v1;
+
+import "google/api/field_behavior.proto";
+import "google/protobuf/duration.proto";
+
+option csharp_namespace = "Google.Cloud.Video.LiveStream.V1";
+option go_package = "google.golang.org/genproto/googleapis/cloud/video/livestream/v1;livestream";
+option java_multiple_files = true;
+option java_outer_classname = "OutputsProto";
+option java_package = "com.google.cloud.video.livestream.v1";
+option php_namespace = "Google\\Cloud\\Video\\LiveStream\\V1";
+option ruby_package = "Google::Cloud::Video::LiveStream::V1";
+
+// Encoding of an input element such as an audio, video, or text track.
+// Elementary streams must be packaged before mapping and sharing between
+// different output formats.
+message ElementaryStream {
+ // A unique key for this elementary stream.
+ string key = 4;
+
+ // Required. Encoding of an audio, video, or text track.
+ oneof elementary_stream {
+ // Encoding of a video stream.
+ VideoStream video_stream = 1;
+
+ // Encoding of an audio stream.
+ AudioStream audio_stream = 2;
+
+ // Encoding of a text stream. For example, closed captions or subtitles.
+ TextStream text_stream = 3;
+ }
+}
+
+// Multiplexing settings for output stream.
+message MuxStream {
+ // A unique key for this multiplexed stream.
+ string key = 1;
+
+ // The container format. The default is `fmp4`.
+ //
+ // Supported container formats:
+ //
+ // - `fmp4` - the corresponding file extension is `.m4s`
+ // - `ts` - the corresponding file extension is `.ts`
+ string container = 3;
+
+ // List of `ElementaryStream` [key][google.cloud.video.livestream.v1.ElementaryStream.key]s multiplexed in this
+ // stream.
+ //
+ // - For `fmp4` container, must contain either one video or one audio stream.
+ // - For `ts` container, must contain exactly one audio stream and up to one
+ // video stream.
+ repeated string elementary_streams = 4;
+
+ // Segment settings for `fmp4` and `ts`.
+ SegmentSettings segment_settings = 5;
+}
+
+// Manifest configuration.
+message Manifest {
+ // The manifest type can be either `HLS` or `DASH`.
+ enum ManifestType {
+ // The manifest type is not specified.
+ MANIFEST_TYPE_UNSPECIFIED = 0;
+
+ // Create an `HLS` manifest. The corresponding file extension is `.m3u8`.
+ HLS = 1;
+
+ // Create a `DASH` manifest. The corresponding file extension is `.mpd`.
+ DASH = 2;
+ }
+
+ // The name of the generated file. The default is `manifest` with the
+ // extension suffix corresponding to the `Manifest` [type][google.cloud.video.livestream.v1.Manifest.type]. If multiple
+ // manifests are added to the channel, each must have a unique file name.
+ string file_name = 1;
+
+ // Required. Type of the manifest, can be `HLS` or `DASH`.
+ ManifestType type = 2 [(google.api.field_behavior) = REQUIRED];
+
+ // Required. List of `MuxStream` [key][google.cloud.video.livestream.v1.MuxStream.key]s that should appear in this
+ // manifest.
+ //
+ // - For HLS, either `fmp4` or `ts` mux streams can be specified but not
+ // mixed.
+ // - For DASH, only `fmp4` mux streams can be specified.
+ repeated string mux_streams = 3 [(google.api.field_behavior) = REQUIRED];
+
+ // Maximum number of segments that this manifest holds. Once the manifest
+ // reaches this maximum number of segments, whenever a new segment is added to
+ // the manifest, the oldest segment will be removed from the manifest.
+ // The minimum value is 3 and the default value is 5.
+ int32 max_segment_count = 4;
+
+ // How long to keep a segment on the output Google Cloud Storage bucket after
+ // it is removed from the manifest. This field should be large enough to cover
+ // the manifest propagation delay. Otherwise, a player could receive 404
+ // errors while accessing segments which are listed in the manifest that the
+ // player has, but were already deleted from the output Google Cloud Storage
+ // bucket. Default value is `60s`.
+ google.protobuf.Duration segment_keep_duration = 5;
+}
+
+// Sprite sheet configuration.
+message SpriteSheet {
+ // Format type. The default is `jpeg`.
+ //
+ // Supported formats:
+ //
+ // - `jpeg`
+ string format = 1;
+
+ // Required. File name prefix for the generated sprite sheets. If multiple
+ // sprite sheets are added to the channel, each must have a unique file
+ // prefix.
+ // Each sprite sheet has an incremental 10-digit zero-padded suffix starting
+ // from 0 before the extension, such as `sprite_sheet0000000123.jpeg`.
+ string file_prefix = 2 [(google.api.field_behavior) = REQUIRED];
+
+ // Required. The width of the sprite in pixels. Must be an even integer.
+ int32 sprite_width_pixels = 3 [(google.api.field_behavior) = REQUIRED];
+
+ // Required. The height of the sprite in pixels. Must be an even integer.
+ int32 sprite_height_pixels = 4 [(google.api.field_behavior) = REQUIRED];
+
+ // The maximum number of sprites per row in a sprite sheet. Valid range is
+ // [1, 10] and the default value is 1.
+ int32 column_count = 5;
+
+ // The maximum number of rows per sprite sheet. When the sprite sheet is full,
+ // a new sprite sheet is created. Valid range is [1, 10] and the default value
+ // is 1.
+ int32 row_count = 6;
+
+ // Create sprites at regular intervals. Valid range is [1 second, 1 hour] and
+ // the default value is `10s`.
+ google.protobuf.Duration interval = 7;
+
+ // The quality of the generated sprite sheet. Enter a value between 1
+ // and 100, where 1 is the lowest quality and 100 is the highest quality.
+ // The default is 100. A high quality value corresponds to a low image data
+ // compression ratio.
+ int32 quality = 8;
+}
+
+// Preprocessing configurations.
+message PreprocessingConfig {
+ // Video cropping configuration for the input video. The cropped input video
+ // is scaled to match the output resolution.
+ message Crop {
+ // The number of pixels to crop from the top. The default is 0.
+ int32 top_pixels = 1;
+
+ // The number of pixels to crop from the bottom. The default is 0.
+ int32 bottom_pixels = 2;
+
+ // The number of pixels to crop from the left. The default is 0.
+ int32 left_pixels = 3;
+
+ // The number of pixels to crop from the right. The default is 0.
+ int32 right_pixels = 4;
+ }
+
+ // Pad filter configuration for the input video. The padded input video
+ // is scaled after padding with black to match the output resolution.
+ message Pad {
+ // The number of pixels to add to the top. The default is 0.
+ int32 top_pixels = 1;
+
+ // The number of pixels to add to the bottom. The default is 0.
+ int32 bottom_pixels = 2;
+
+ // The number of pixels to add to the left. The default is 0.
+ int32 left_pixels = 3;
+
+ // The number of pixels to add to the right. The default is 0.
+ int32 right_pixels = 4;
+ }
+
+ // Specify the video cropping configuration.
+ Crop crop = 2;
+
+ // Specify the video pad filter configuration.
+ Pad pad = 3;
+}
+
+// Video stream resource.
+message VideoStream {
+ // H264 codec settings.
+ message H264CodecSettings {
+ // Required. The width of the video in pixels. Must be an even integer.
+ // Valid range is [320, 1920].
+ int32 width_pixels = 1;
+
+ // Required. The height of the video in pixels. Must be an even integer.
+ // Valid range is [180, 1080].
+ int32 height_pixels = 2;
+
+ // Required. The target video frame rate in frames per second (FPS). Must be less
+ // than or equal to 60. Will default to the input frame rate if larger
+ // than the input frame rate. The API will generate an output FPS that is
+ // divisible by the input FPS, and smaller or equal to the target FPS. See
+ // [Calculating frame
+ // rate](https://cloud.google.com/transcoder/docs/concepts/frame-rate) for
+ // more information.
+ double frame_rate = 3 [(google.api.field_behavior) = REQUIRED];
+
+ // Required. The video bitrate in bits per second. Minimum value is 10,000.
+ //
+ // - For SD resolution (< 720p), must be <= 3,000,000 (3 Mbps).
+ // - For HD resolution (<= 1080p), must be <= 15,000,000 (15 Mbps).
+ int32 bitrate_bps = 4 [(google.api.field_behavior) = REQUIRED];
+
+ // Specifies whether an open Group of Pictures (GOP) structure should be
+ // allowed or not. The default is `false`.
+ bool allow_open_gop = 6;
+
+ // GOP mode can be either by frame count or duration.
+ oneof gop_mode {
+ // Select the GOP size based on the specified frame count.
+ // If GOP frame count is set instead of GOP duration, GOP duration will be
+ // calculated by `gopFrameCount`/`frameRate`. The calculated GOP duration
+ // must satisfy the limitations on `gopDuration` as well.
+ // Valid range is [60, 600].
+ int32 gop_frame_count = 7;
+
+ // Select the GOP size based on the specified duration. The default is
+ // `2s`. Note that `gopDuration` must be less than or equal to
+ // [segment_duration][google.cloud.video.livestream.v1.SegmentSettings.segment_duration], and
+ // [segment_duration][google.cloud.video.livestream.v1.SegmentSettings.segment_duration] must be divisible
+ // by `gopDuration`. Valid range is [2s, 20s].
+ //
+ // All video streams in the same channel must have the same GOP size.
+ google.protobuf.Duration gop_duration = 8;
+ }
+
+ // Size of the Video Buffering Verifier (VBV) buffer in bits. Must be
+ // greater than zero. The default is equal to [bitrate_bps][google.cloud.video.livestream.v1.VideoStream.H264CodecSettings.bitrate_bps].
+ int32 vbv_size_bits = 9;
+
+ // Initial fullness of the Video Buffering Verifier (VBV) buffer in bits.
+ // Must be greater than zero. The default is equal to 90% of
+ // [vbv_size_bits][google.cloud.video.livestream.v1.VideoStream.H264CodecSettings.vbv_size_bits].
+ int32 vbv_fullness_bits = 10;
+
+ // The entropy coder to use. The default is `cabac`.
+ //
+ // Supported entropy coders:
+ //
+ // - `cavlc`
+ // - `cabac`
+ string entropy_coder = 11;
+
+ // Allow B-pyramid for reference frame selection. This may not be supported
+ // on all decoders. The default is `false`.
+ bool b_pyramid = 12;
+
+ // The number of consecutive B-frames. Must be greater than or equal to
+ // zero. Must be less than [gop_frame_count][google.cloud.video.livestream.v1.VideoStream.H264CodecSettings.gop_frame_count] if set. The default
+ // is 0.
+ int32 b_frame_count = 13;
+
+ // Specify the intensity of the adaptive quantizer (AQ). Must be between 0
+ // and 1, where 0 disables the quantizer and 1 maximizes the quantizer. A
+ // higher value equals a lower bitrate but smoother image. The default is 0.
+ double aq_strength = 14;
+
+ // Enforces the specified codec profile. The following profiles are
+ // supported:
+ //
+ // * `baseline`
+ // * `main` (default)
+ // * `high`
+ //
+ // The available options are [FFmpeg-compatible Profile
+ // Options](https://trac.ffmpeg.org/wiki/Encode/H.264#Profile).
+ // Note that certain values for this field may cause the
+ // transcoder to override other fields you set in the [H264CodecSettings][google.cloud.video.livestream.v1.VideoStream.H264CodecSettings]
+ // message.
+ string profile = 15;
+
+ // Enforces the specified codec tune. The available options are
+ // [FFmpeg-compatible Encode
+ // Options](https://trac.ffmpeg.org/wiki/Encode/H.264#Tune)
+ // Note that certain values for this field may cause the transcoder to
+ // override other fields you set in the [H264CodecSettings][google.cloud.video.livestream.v1.VideoStream.H264CodecSettings] message.
+ string tune = 16;
+ }
+
+ // Codec settings.
+ oneof codec_settings {
+ // H264 codec settings.
+ H264CodecSettings h264 = 20;
+ }
+}
+
+// Audio stream resource.
+message AudioStream {
+ // The mapping for the input streams and audio channels.
+ message AudioMapping {
+ // Required. The `Channel` [InputAttachment.key][google.cloud.video.livestream.v1.InputAttachment.key] that identifies the input that this
+ // audio mapping applies to. If an active input doesn't have an audio
+ // mapping, the primary audio track in the input stream will be selected.
+ string input_key = 6 [(google.api.field_behavior) = REQUIRED];
+
+ // Required. The zero-based index of the track in the input stream.
+ // All [mapping][google.cloud.video.livestream.v1.AudioStream.mapping]s in the same [AudioStream][google.cloud.video.livestream.v1.AudioStream]
+ // must have the same input track.
+ int32 input_track = 2 [(google.api.field_behavior) = REQUIRED];
+
+ // Required. The zero-based index of the channel in the input stream.
+ int32 input_channel = 3 [(google.api.field_behavior) = REQUIRED];
+
+ // Required. The zero-based index of the channel in the output audio stream.
+ // Must be consistent with the [input_channel][google.cloud.video.livestream.v1.AudioStream.AudioMapping.input_channel].
+ int32 output_channel = 4 [(google.api.field_behavior) = REQUIRED];
+ }
+
+ // Specifies whether pass through (transmuxing) is enabled or not.
+ // If set to `true`, the rest of the settings, other than `mapping`, will be
+ // ignored. The default is `false`.
+ bool transmux = 8;
+
+ // The codec for this audio stream. The default is `aac`.
+ //
+ // Supported audio codecs:
+ //
+ // - `aac`
+ string codec = 1;
+
+ // Required. Audio bitrate in bits per second. Must be between 1 and 10,000,000.
+ int32 bitrate_bps = 2 [(google.api.field_behavior) = REQUIRED];
+
+ // Number of audio channels. Must be between 1 and 6. The default is 2.
+ int32 channel_count = 3;
+
+ // A list of channel names specifying layout of the audio channels.
+ // This only affects the metadata embedded in the container headers, if
+ // supported by the specified format. The default is `[fl, fr]`.
+ //
+ // Supported channel names:
+ //
+ // - `fl` - Front left channel
+ // - `fr` - Front right channel
+ // - `sl` - Side left channel
+ // - `sr` - Side right channel
+ // - `fc` - Front center channel
+ // - `lfe` - Low frequency
+ repeated string channel_layout = 4;
+
+ // The mapping for the input streams and audio channels.
+ repeated AudioMapping mapping = 5;
+
+ // The audio sample rate in Hertz. The default is 48000 Hertz.
+ int32 sample_rate_hertz = 6;
+}
+
+// Encoding of a text stream. For example, closed captions or subtitles.
+message TextStream {
+ // Required. The codec for this text stream.
+ //
+ // Supported text codecs:
+ //
+ // - `cea608`
+ // - `cea708`
+ string codec = 1 [(google.api.field_behavior) = REQUIRED];
+}
+
+// Segment settings for `fmp4` and `ts`.
+message SegmentSettings {
+ // Duration of the segments in seconds. The default is `6s`. Note that
+ // `segmentDuration` must be greater than or equal to
+ // [gop_duration][google.cloud.video.livestream.v1.VideoStream.H264CodecSettings.gop_duration], and
+ // `segmentDuration` must be divisible by
+ // [gop_duration][google.cloud.video.livestream.v1.VideoStream.H264CodecSettings.gop_duration].
+ // Valid range is [2s, 20s].
+ //
+ // All [mux_streams][google.cloud.video.livestream.v1.Manifest.mux_streams] in the same manifest must have the
+ // same segment duration.
+ google.protobuf.Duration segment_duration = 1;
+}