# frozen_string_literal: true

# Copyright 2021 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
#
#     https://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.

# Auto-generated by gapic-generator-ruby. DO NOT EDIT!


module Google
  module Cloud
    module Video
      module Transcoder
        module V1
          # Transcoding job resource.
          # @!attribute [rw] name
          #   @return [::String]
          #     The resource name of the job.
          #     Format: `projects/{project_number}/locations/{location}/jobs/{job}`
          # @!attribute [rw] input_uri
          #   @return [::String]
          #     Input only. Specify the `input_uri` to populate empty `uri` fields in each element of
          #     `Job.config.inputs` or `JobTemplate.config.inputs` when using template.
          #     URI of the media. Input files must be at least 5 seconds in duration and
          #     stored in Cloud Storage (for example, `gs://bucket/inputs/file.mp4`). See
          #     [Supported input and output
          #     formats](https://cloud.google.com/transcoder/docs/concepts/supported-input-and-output-formats).
          # @!attribute [rw] output_uri
          #   @return [::String]
          #     Input only. Specify the `output_uri` to populate an empty `Job.config.output.uri` or
          #     `JobTemplate.config.output.uri` when using template.
          #     URI for the output file(s). For example, `gs://my-bucket/outputs/`. See
          #     [Supported input and output
          #     formats](https://cloud.google.com/transcoder/docs/concepts/supported-input-and-output-formats).
          # @!attribute [rw] template_id
          #   @return [::String]
          #     Input only. Specify the `template_id` to use for populating `Job.config`. The default
          #     is `preset/web-hd`.
          #
          #     Preset Transcoder templates:
          #     - `preset/{preset_id}`
          #
          #     - User defined JobTemplate:
          #       `{job_template_id}`
          # @!attribute [rw] config
          #   @return [::Google::Cloud::Video::Transcoder::V1::JobConfig]
          #     The configuration for this job.
          # @!attribute [r] state
          #   @return [::Google::Cloud::Video::Transcoder::V1::Job::ProcessingState]
          #     Output only. The current state of the job.
          # @!attribute [r] create_time
          #   @return [::Google::Protobuf::Timestamp]
          #     Output only. The time the job was created.
          # @!attribute [r] start_time
          #   @return [::Google::Protobuf::Timestamp]
          #     Output only. The time the transcoding started.
          # @!attribute [r] end_time
          #   @return [::Google::Protobuf::Timestamp]
          #     Output only. The time the transcoding finished.
          # @!attribute [rw] ttl_after_completion_days
          #   @return [::Integer]
          #     Job time to live value in days, which will be effective after job
          #     completion. Job should be deleted automatically after the given TTL. Enter
          #     a value between 1 and 90. The default is 30.
          # @!attribute [rw] labels
          #   @return [::Google::Protobuf::Map{::String => ::String}]
          #     The labels associated with this job. You can use these to organize and
          #     group your jobs.
          # @!attribute [r] error
          #   @return [::Google::Rpc::Status]
          #     Output only. An error object that describes the reason for the failure.
          #     This property is always present when `state` is `FAILED`.
          class Job
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods

            # @!attribute [rw] key
            #   @return [::String]
            # @!attribute [rw] value
            #   @return [::String]
            class LabelsEntry
              include ::Google::Protobuf::MessageExts
              extend ::Google::Protobuf::MessageExts::ClassMethods
            end

            # The current state of the job.
            module ProcessingState
              # The processing state is not specified.
              PROCESSING_STATE_UNSPECIFIED = 0

              # The job is enqueued and will be picked up for processing soon.
              PENDING = 1

              # The job is being processed.
              RUNNING = 2

              # The job has been completed successfully.
              SUCCEEDED = 3

              # The job has failed. For additional information, see `failure_reason` and
              # `failure_details`
              FAILED = 4
            end
          end

          # Transcoding job template resource.
          # @!attribute [rw] name
          #   @return [::String]
          #     The resource name of the job template.
          #     Format:
          #     `projects/{project_number}/locations/{location}/jobTemplates/{job_template}`
          # @!attribute [rw] config
          #   @return [::Google::Cloud::Video::Transcoder::V1::JobConfig]
          #     The configuration for this template.
          # @!attribute [rw] labels
          #   @return [::Google::Protobuf::Map{::String => ::String}]
          #     The labels associated with this job template. You can use these to organize
          #     and group your job templates.
          class JobTemplate
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods

            # @!attribute [rw] key
            #   @return [::String]
            # @!attribute [rw] value
            #   @return [::String]
            class LabelsEntry
              include ::Google::Protobuf::MessageExts
              extend ::Google::Protobuf::MessageExts::ClassMethods
            end
          end

          # Job configuration
          # @!attribute [rw] inputs
          #   @return [::Array<::Google::Cloud::Video::Transcoder::V1::Input>]
          #     List of input assets stored in Cloud Storage.
          # @!attribute [rw] edit_list
          #   @return [::Array<::Google::Cloud::Video::Transcoder::V1::EditAtom>]
          #     List of `Edit atom`s. Defines the ultimate timeline of the resulting
          #     file or manifest.
          # @!attribute [rw] elementary_streams
          #   @return [::Array<::Google::Cloud::Video::Transcoder::V1::ElementaryStream>]
          #     List of elementary streams.
          # @!attribute [rw] mux_streams
          #   @return [::Array<::Google::Cloud::Video::Transcoder::V1::MuxStream>]
          #     List of multiplexing settings for output streams.
          # @!attribute [rw] manifests
          #   @return [::Array<::Google::Cloud::Video::Transcoder::V1::Manifest>]
          #     List of output manifests.
          # @!attribute [rw] output
          #   @return [::Google::Cloud::Video::Transcoder::V1::Output]
          #     Output configuration.
          # @!attribute [rw] ad_breaks
          #   @return [::Array<::Google::Cloud::Video::Transcoder::V1::AdBreak>]
          #     List of ad breaks. Specifies where to insert ad break tags in the output
          #     manifests.
          # @!attribute [rw] pubsub_destination
          #   @return [::Google::Cloud::Video::Transcoder::V1::PubsubDestination]
          #     Destination on Pub/Sub.
          # @!attribute [rw] sprite_sheets
          #   @return [::Array<::Google::Cloud::Video::Transcoder::V1::SpriteSheet>]
          #     List of output sprite sheets.
          #     Spritesheets require at least one VideoStream in the Jobconfig.
          # @!attribute [rw] overlays
          #   @return [::Array<::Google::Cloud::Video::Transcoder::V1::Overlay>]
          #     List of overlays on the output video, in descending Z-order.
          class JobConfig
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods
          end

          # Input asset.
          # @!attribute [rw] key
          #   @return [::String]
          #     A unique key for this input. Must be specified when using advanced
          #     mapping and edit lists.
          # @!attribute [rw] uri
          #   @return [::String]
          #     URI of the media. Input files must be at least 5 seconds in duration and
          #     stored in Cloud Storage (for example, `gs://bucket/inputs/file.mp4`).
          #     If empty, the value is populated from `Job.input_uri`. See
          #     [Supported input and output
          #     formats](https://cloud.google.com/transcoder/docs/concepts/supported-input-and-output-formats).
          # @!attribute [rw] preprocessing_config
          #   @return [::Google::Cloud::Video::Transcoder::V1::PreprocessingConfig]
          #     Preprocessing configurations.
          class Input
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods
          end

          # Location of output file(s) in a Cloud Storage bucket.
          # @!attribute [rw] uri
          #   @return [::String]
          #     URI for the output file(s). For example, `gs://my-bucket/outputs/`.
          #     If empty, the value is populated from `Job.output_uri`. See
          #     [Supported input and output
          #     formats](https://cloud.google.com/transcoder/docs/concepts/supported-input-and-output-formats).
          class Output
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods
          end

          # Edit atom.
          # @!attribute [rw] key
          #   @return [::String]
          #     A unique key for this atom. Must be specified when using advanced
          #     mapping.
          # @!attribute [rw] inputs
          #   @return [::Array<::String>]
          #     List of `Input.key`s identifying files that should be used in this atom.
          #     The listed `inputs` must have the same timeline.
          # @!attribute [rw] end_time_offset
          #   @return [::Google::Protobuf::Duration]
          #     End time in seconds for the atom, relative to the input file timeline.
          #     When `end_time_offset` is not specified, the `inputs` are used until
          #     the end of the atom.
          # @!attribute [rw] start_time_offset
          #   @return [::Google::Protobuf::Duration]
          #     Start time in seconds for the atom, relative to the input file timeline.
          #     The default is `0s`.
          class EditAtom
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods
          end

          # Ad break.
          # @!attribute [rw] start_time_offset
          #   @return [::Google::Protobuf::Duration]
          #     Start time in seconds for the ad break, relative to the output file
          #     timeline. The default is `0s`.
          class AdBreak
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods
          end

          # Encoding of an input file such as an audio, video, or text track.
          # Elementary streams must be packaged before
          # mapping and sharing between different output formats.
          # @!attribute [rw] key
          #   @return [::String]
          #     A unique key for this elementary stream.
          # @!attribute [rw] video_stream
          #   @return [::Google::Cloud::Video::Transcoder::V1::VideoStream]
          #     Encoding of a video stream.
          # @!attribute [rw] audio_stream
          #   @return [::Google::Cloud::Video::Transcoder::V1::AudioStream]
          #     Encoding of an audio stream.
          # @!attribute [rw] text_stream
          #   @return [::Google::Cloud::Video::Transcoder::V1::TextStream]
          #     Encoding of a text stream. For example, closed captions or subtitles.
          class ElementaryStream
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods
          end

          # Multiplexing settings for output stream.
          # @!attribute [rw] key
          #   @return [::String]
          #     A unique key for this multiplexed stream. HLS media manifests will be
          #     named `MuxStream.key` with the `.m3u8` extension suffix.
          # @!attribute [rw] file_name
          #   @return [::String]
          #     The name of the generated file. The default is `MuxStream.key` with the
          #     extension suffix corresponding to the `MuxStream.container`.
          #
          #     Individual segments also have an incremental 10-digit zero-padded suffix
          #     starting from 0 before the extension, such as `mux_stream0000000123.ts`.
          # @!attribute [rw] container
          #   @return [::String]
          #     The container format. The default is `mp4`
          #
          #     Supported container formats:
          #
          #     - `ts`
          #     - `fmp4`- the corresponding file extension is `.m4s`
          #     - `mp4`
          #     - `vtt`
          #
          #     See also:
          #     [Supported input and output
          #     formats](https://cloud.google.com/transcoder/docs/concepts/supported-input-and-output-formats)
          # @!attribute [rw] elementary_streams
          #   @return [::Array<::String>]
          #     List of `ElementaryStream.key`s multiplexed in this stream.
          # @!attribute [rw] segment_settings
          #   @return [::Google::Cloud::Video::Transcoder::V1::SegmentSettings]
          #     Segment settings for `ts`, `fmp4` and `vtt`.
          class MuxStream
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods
          end

          # Manifest configuration.
          # @!attribute [rw] file_name
          #   @return [::String]
          #     The name of the generated file. The default is `manifest` with the
          #     extension suffix corresponding to the `Manifest.type`.
          # @!attribute [rw] type
          #   @return [::Google::Cloud::Video::Transcoder::V1::Manifest::ManifestType]
          #     Required. Type of the manifest, can be `HLS` or `DASH`.
          # @!attribute [rw] mux_streams
          #   @return [::Array<::String>]
          #     Required. List of user given `MuxStream.key`s that should appear in this manifest.
          #
          #     When `Manifest.type` is `HLS`, a media manifest with name `MuxStream.key`
          #     and `.m3u8` extension is generated for each element of the
          #     `Manifest.mux_streams`.
          class Manifest
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods

            # The manifest type can be either `HLS` or `DASH`.
            module ManifestType
              # The manifest type is not specified.
              MANIFEST_TYPE_UNSPECIFIED = 0

              # Create `HLS` manifest. The corresponding file extension is `.m3u8`.
              HLS = 1

              # Create `DASH` manifest. The corresponding file extension is `.mpd`.
              DASH = 2
            end
          end

          # A Pub/Sub destination.
          # @!attribute [rw] topic
          #   @return [::String]
          #     The name of the Pub/Sub topic to publish job completion notification
          #     to. For example: `projects/{project}/topics/{topic}`.
          class PubsubDestination
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods
          end

          # Sprite sheet configuration.
          # @!attribute [rw] format
          #   @return [::String]
          #     Format type. The default is `jpeg`.
          #
          #     Supported formats:
          #
          #     - `jpeg`
          # @!attribute [rw] file_prefix
          #   @return [::String]
          #     Required. File name prefix for the generated sprite sheets.
          #
          #     Each sprite sheet has an incremental 10-digit zero-padded suffix starting
          #     from 0 before the extension, such as `sprite_sheet0000000123.jpeg`.
          # @!attribute [rw] sprite_width_pixels
          #   @return [::Integer]
          #     Required. The width of sprite in pixels. Must be an even integer. To preserve the
          #     source aspect ratio, set the {::Google::Cloud::Video::Transcoder::V1::SpriteSheet#sprite_width_pixels SpriteSheet.sprite_width_pixels} field or
          #     the {::Google::Cloud::Video::Transcoder::V1::SpriteSheet#sprite_height_pixels SpriteSheet.sprite_height_pixels} field, but not both (the API will
          #     automatically calculate the missing field).
          #
          #     For portrait videos that contain horizontal ASR and rotation metadata,
          #     provide the width, in pixels, per the horizontal ASR. The API calculates
          #     the height per the horizontal ASR. The API detects any rotation metadata
          #     and swaps the requested height and width for the output.
          # @!attribute [rw] sprite_height_pixels
          #   @return [::Integer]
          #     Required. The height of sprite in pixels. Must be an even integer. To preserve the
          #     source aspect ratio, set the {::Google::Cloud::Video::Transcoder::V1::SpriteSheet#sprite_height_pixels SpriteSheet.sprite_height_pixels} field or
          #     the {::Google::Cloud::Video::Transcoder::V1::SpriteSheet#sprite_width_pixels SpriteSheet.sprite_width_pixels} field, but not both (the API will
          #     automatically calculate the missing field).
          #
          #     For portrait videos that contain horizontal ASR and rotation metadata,
          #     provide the height, in pixels, per the horizontal ASR. The API calculates
          #     the width per the horizontal ASR. The API detects any rotation metadata
          #     and swaps the requested height and width for the output.
          # @!attribute [rw] column_count
          #   @return [::Integer]
          #     The maximum number of sprites per row in a sprite sheet. The default is 0,
          #     which indicates no maximum limit.
          # @!attribute [rw] row_count
          #   @return [::Integer]
          #     The maximum number of rows per sprite sheet. When the sprite sheet is full,
          #     a new sprite sheet is created. The default is 0, which indicates no maximum
          #     limit.
          # @!attribute [rw] start_time_offset
          #   @return [::Google::Protobuf::Duration]
          #     Start time in seconds, relative to the output file timeline. Determines the
          #     first sprite to pick. The default is `0s`.
          # @!attribute [rw] end_time_offset
          #   @return [::Google::Protobuf::Duration]
          #     End time in seconds, relative to the output file timeline. When
          #     `end_time_offset` is not specified, the sprites are generated until the end
          #     of the output file.
          # @!attribute [rw] total_count
          #   @return [::Integer]
          #     Total number of sprites. Create the specified number of sprites
          #     distributed evenly across the timeline of the output media. The default
          #     is 100.
          # @!attribute [rw] interval
          #   @return [::Google::Protobuf::Duration]
          #     Starting from `0s`, create sprites at regular intervals. Specify the
          #     interval value in seconds.
          # @!attribute [rw] quality
          #   @return [::Integer]
          #     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.
          class SpriteSheet
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods
          end

          # Overlay configuration.
          # @!attribute [rw] image
          #   @return [::Google::Cloud::Video::Transcoder::V1::Overlay::Image]
          #     Image overlay.
          # @!attribute [rw] animations
          #   @return [::Array<::Google::Cloud::Video::Transcoder::V1::Overlay::Animation>]
          #     List of Animations. The list should be chronological, without any time
          #     overlap.
          class Overlay
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods

            # 2D normalized coordinates. Default: `{0.0, 0.0}`
            # @!attribute [rw] x
            #   @return [::Float]
            #     Normalized x coordinate.
            # @!attribute [rw] y
            #   @return [::Float]
            #     Normalized y coordinate.
            class NormalizedCoordinate
              include ::Google::Protobuf::MessageExts
              extend ::Google::Protobuf::MessageExts::ClassMethods
            end

            # Overlaid jpeg image.
            # @!attribute [rw] uri
            #   @return [::String]
            #     Required. URI of the JPEG image in Cloud Storage. For example,
            #     `gs://bucket/inputs/image.jpeg`. JPEG is the only supported image type.
            # @!attribute [rw] resolution
            #   @return [::Google::Cloud::Video::Transcoder::V1::Overlay::NormalizedCoordinate]
            #     Normalized image resolution, based on output video resolution. Valid
            #     values: `0.0`–`1.0`. To respect the original image aspect ratio, set
            #     either `x` or `y` to `0.0`. To use the original image resolution, set
            #     both `x` and `y` to `0.0`.
            # @!attribute [rw] alpha
            #   @return [::Float]
            #     Target image opacity. Valid values are from  `1.0` (solid, default) to
            #     `0.0` (transparent), exclusive. Set this to a value greater than `0.0`.
            class Image
              include ::Google::Protobuf::MessageExts
              extend ::Google::Protobuf::MessageExts::ClassMethods
            end

            # Display static overlay object.
            # @!attribute [rw] xy
            #   @return [::Google::Cloud::Video::Transcoder::V1::Overlay::NormalizedCoordinate]
            #     Normalized coordinates based on output video resolution. Valid
            #     values: `0.0`–`1.0`. `xy` is the upper-left coordinate of the overlay
            #     object. For example, use the x and y coordinates \\{0,0} to position the
            #     top-left corner of the overlay animation in the top-left corner of the
            #     output video.
            # @!attribute [rw] start_time_offset
            #   @return [::Google::Protobuf::Duration]
            #     The time to start displaying the overlay object, in seconds. Default: 0
            class AnimationStatic
              include ::Google::Protobuf::MessageExts
              extend ::Google::Protobuf::MessageExts::ClassMethods
            end

            # Display overlay object with fade animation.
            # @!attribute [rw] fade_type
            #   @return [::Google::Cloud::Video::Transcoder::V1::Overlay::FadeType]
            #     Required. Type of fade animation: `FADE_IN` or `FADE_OUT`.
            # @!attribute [rw] xy
            #   @return [::Google::Cloud::Video::Transcoder::V1::Overlay::NormalizedCoordinate]
            #     Normalized coordinates based on output video resolution. Valid
            #     values: `0.0`–`1.0`. `xy` is the upper-left coordinate of the overlay
            #     object. For example, use the x and y coordinates \\{0,0} to position the
            #     top-left corner of the overlay animation in the top-left corner of the
            #     output video.
            # @!attribute [rw] start_time_offset
            #   @return [::Google::Protobuf::Duration]
            #     The time to start the fade animation, in seconds. Default: 0
            # @!attribute [rw] end_time_offset
            #   @return [::Google::Protobuf::Duration]
            #     The time to end the fade animation, in seconds. Default:
            #     `start_time_offset` + 1s
            class AnimationFade
              include ::Google::Protobuf::MessageExts
              extend ::Google::Protobuf::MessageExts::ClassMethods
            end

            # End previous overlay animation from the video. Without AnimationEnd, the
            # overlay object will keep the state of previous animation until the end of
            # the video.
            # @!attribute [rw] start_time_offset
            #   @return [::Google::Protobuf::Duration]
            #     The time to end overlay object, in seconds. Default: 0
            class AnimationEnd
              include ::Google::Protobuf::MessageExts
              extend ::Google::Protobuf::MessageExts::ClassMethods
            end

            # Animation types.
            # @!attribute [rw] animation_static
            #   @return [::Google::Cloud::Video::Transcoder::V1::Overlay::AnimationStatic]
            #     Display static overlay object.
            # @!attribute [rw] animation_fade
            #   @return [::Google::Cloud::Video::Transcoder::V1::Overlay::AnimationFade]
            #     Display overlay object with fade animation.
            # @!attribute [rw] animation_end
            #   @return [::Google::Cloud::Video::Transcoder::V1::Overlay::AnimationEnd]
            #     End previous animation.
            class Animation
              include ::Google::Protobuf::MessageExts
              extend ::Google::Protobuf::MessageExts::ClassMethods
            end

            # Fade type for the overlay: `FADE_IN` or `FADE_OUT`.
            module FadeType
              # The fade type is not specified.
              FADE_TYPE_UNSPECIFIED = 0

              # Fade the overlay object into view.
              FADE_IN = 1

              # Fade the overlay object out of view.
              FADE_OUT = 2
            end
          end

          # Preprocessing configurations.
          # @!attribute [rw] color
          #   @return [::Google::Cloud::Video::Transcoder::V1::PreprocessingConfig::Color]
          #     Color preprocessing configuration.
          # @!attribute [rw] denoise
          #   @return [::Google::Cloud::Video::Transcoder::V1::PreprocessingConfig::Denoise]
          #     Denoise preprocessing configuration.
          # @!attribute [rw] deblock
          #   @return [::Google::Cloud::Video::Transcoder::V1::PreprocessingConfig::Deblock]
          #     Deblock preprocessing configuration.
          # @!attribute [rw] audio
          #   @return [::Google::Cloud::Video::Transcoder::V1::PreprocessingConfig::Audio]
          #     Audio preprocessing configuration.
          # @!attribute [rw] crop
          #   @return [::Google::Cloud::Video::Transcoder::V1::PreprocessingConfig::Crop]
          #     Specify the video cropping configuration.
          # @!attribute [rw] pad
          #   @return [::Google::Cloud::Video::Transcoder::V1::PreprocessingConfig::Pad]
          #     Specify the video pad filter configuration.
          # @!attribute [rw] deinterlace
          #   @return [::Google::Cloud::Video::Transcoder::V1::PreprocessingConfig::Deinterlace]
          #     Specify the video deinterlace configuration.
          class PreprocessingConfig
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods

            # Color preprocessing configuration.
            #
            # **Note:** This configuration is not supported.
            # @!attribute [rw] saturation
            #   @return [::Float]
            #     Control color saturation of the video. Enter a value between -1 and 1,
            #     where -1 is fully desaturated and 1 is maximum saturation. 0 is no
            #     change. The default is 0.
            # @!attribute [rw] contrast
            #   @return [::Float]
            #     Control black and white contrast of the video. Enter a value between -1
            #     and 1, where -1 is minimum contrast and 1 is maximum contrast. 0 is no
            #     change. The default is 0.
            # @!attribute [rw] brightness
            #   @return [::Float]
            #     Control brightness of the video. Enter a value between -1 and 1, where -1
            #     is minimum brightness and 1 is maximum brightness. 0 is no change. The
            #     default is 0.
            class Color
              include ::Google::Protobuf::MessageExts
              extend ::Google::Protobuf::MessageExts::ClassMethods
            end

            # Denoise preprocessing configuration.
            #
            # **Note:** This configuration is not supported.
            # @!attribute [rw] strength
            #   @return [::Float]
            #     Set strength of the denoise. Enter a value between 0 and 1. The higher
            #     the value, the smoother the image. 0 is no denoising. The default is 0.
            # @!attribute [rw] tune
            #   @return [::String]
            #     Set the denoiser mode. The default is `standard`.
            #
            #     Supported denoiser modes:
            #
            #     - `standard`
            #     - `grain`
            class Denoise
              include ::Google::Protobuf::MessageExts
              extend ::Google::Protobuf::MessageExts::ClassMethods
            end

            # Deblock preprocessing configuration.
            #
            # **Note:** This configuration is not supported.
            # @!attribute [rw] strength
            #   @return [::Float]
            #     Set strength of the deblocker. Enter a value between 0 and 1. The higher
            #     the value, the stronger the block removal. 0 is no deblocking. The
            #     default is 0.
            # @!attribute [rw] enabled
            #   @return [::Boolean]
            #     Enable deblocker. The default is `false`.
            class Deblock
              include ::Google::Protobuf::MessageExts
              extend ::Google::Protobuf::MessageExts::ClassMethods
            end

            # Audio preprocessing configuration.
            # @!attribute [rw] lufs
            #   @return [::Float]
            #     Specify audio loudness normalization in loudness units relative to full
            #     scale (LUFS). Enter a value between -24 and 0 (the default), where:
            #
            #     *   -24 is the Advanced Television Systems Committee (ATSC A/85) standard
            #     *   -23 is the EU R128 broadcast standard
            #     *   -19 is the prior standard for online mono audio
            #     *   -18 is the ReplayGain standard
            #     *   -16 is the prior standard for stereo audio
            #     *   -14 is the new online audio standard recommended by Spotify, as well
            #         as Amazon Echo
            #     *   0 disables normalization
            # @!attribute [rw] high_boost
            #   @return [::Boolean]
            #     Enable boosting high frequency components. The default is `false`.
            #
            #     **Note:** This field is not supported.
            # @!attribute [rw] low_boost
            #   @return [::Boolean]
            #     Enable boosting low frequency components. The default is `false`.
            #
            #     **Note:** This field is not supported.
            class Audio
              include ::Google::Protobuf::MessageExts
              extend ::Google::Protobuf::MessageExts::ClassMethods
            end

            # Video cropping configuration for the input video. The cropped input video
            # is scaled to match the output resolution.
            # @!attribute [rw] top_pixels
            #   @return [::Integer]
            #     The number of pixels to crop from the top. The default is 0.
            # @!attribute [rw] bottom_pixels
            #   @return [::Integer]
            #     The number of pixels to crop from the bottom. The default is 0.
            # @!attribute [rw] left_pixels
            #   @return [::Integer]
            #     The number of pixels to crop from the left. The default is 0.
            # @!attribute [rw] right_pixels
            #   @return [::Integer]
            #     The number of pixels to crop from the right. The default is 0.
            class Crop
              include ::Google::Protobuf::MessageExts
              extend ::Google::Protobuf::MessageExts::ClassMethods
            end

            # Pad filter configuration for the input video. The padded input video
            # is scaled after padding with black to match the output resolution.
            # @!attribute [rw] top_pixels
            #   @return [::Integer]
            #     The number of pixels to add to the top. The default is 0.
            # @!attribute [rw] bottom_pixels
            #   @return [::Integer]
            #     The number of pixels to add to the bottom. The default is 0.
            # @!attribute [rw] left_pixels
            #   @return [::Integer]
            #     The number of pixels to add to the left. The default is 0.
            # @!attribute [rw] right_pixels
            #   @return [::Integer]
            #     The number of pixels to add to the right. The default is 0.
            class Pad
              include ::Google::Protobuf::MessageExts
              extend ::Google::Protobuf::MessageExts::ClassMethods
            end

            # Deinterlace configuration for input video.
            # @!attribute [rw] yadif
            #   @return [::Google::Cloud::Video::Transcoder::V1::PreprocessingConfig::Deinterlace::YadifConfig]
            #     Specifies the Yet Another Deinterlacing Filter Configuration.
            # @!attribute [rw] bwdif
            #   @return [::Google::Cloud::Video::Transcoder::V1::PreprocessingConfig::Deinterlace::BwdifConfig]
            #     Specifies the Bob Weaver Deinterlacing Filter Configuration.
            class Deinterlace
              include ::Google::Protobuf::MessageExts
              extend ::Google::Protobuf::MessageExts::ClassMethods

              # Yet Another Deinterlacing Filter Configuration.
              # @!attribute [rw] mode
              #   @return [::String]
              #     Specifies the deinterlacing mode to adopt.
              #     The default is `send_frame`.
              #     Supported values:
              #
              #     - `send_frame`: Output one frame for each frame
              #     - `send_field`: Output one frame for each field
              # @!attribute [rw] disable_spatial_interlacing
              #   @return [::Boolean]
              #     Disable spacial interlacing.
              #     The default is `false`.
              # @!attribute [rw] parity
              #   @return [::String]
              #     The picture field parity assumed for the input interlaced video.
              #     The default is `auto`.
              #     Supported values:
              #
              #     - `tff`: Assume the top field is first
              #     - `bff`: Assume the bottom field is first
              #     - `auto`: Enable automatic detection of field parity
              # @!attribute [rw] deinterlace_all_frames
              #   @return [::Boolean]
              #     Deinterlace all frames rather than just the frames identified as
              #     interlaced. The default is `false`.
              class YadifConfig
                include ::Google::Protobuf::MessageExts
                extend ::Google::Protobuf::MessageExts::ClassMethods
              end

              # Bob Weaver Deinterlacing Filter Configuration.
              # @!attribute [rw] mode
              #   @return [::String]
              #     Specifies the deinterlacing mode to adopt.
              #     The default is `send_frame`.
              #     Supported values:
              #
              #     - `send_frame`: Output one frame for each frame
              #     - `send_field`: Output one frame for each field
              # @!attribute [rw] parity
              #   @return [::String]
              #     The picture field parity assumed for the input interlaced video.
              #     The default is `auto`.
              #     Supported values:
              #
              #     - `tff`: Assume the top field is first
              #     - `bff`: Assume the bottom field is first
              #     - `auto`: Enable automatic detection of field parity
              # @!attribute [rw] deinterlace_all_frames
              #   @return [::Boolean]
              #     Deinterlace all frames rather than just the frames identified as
              #     interlaced. The default is `false`.
              class BwdifConfig
                include ::Google::Protobuf::MessageExts
                extend ::Google::Protobuf::MessageExts::ClassMethods
              end
            end
          end

          # Video stream resource.
          # @!attribute [rw] h264
          #   @return [::Google::Cloud::Video::Transcoder::V1::VideoStream::H264CodecSettings]
          #     H264 codec settings.
          # @!attribute [rw] h265
          #   @return [::Google::Cloud::Video::Transcoder::V1::VideoStream::H265CodecSettings]
          #     H265 codec settings.
          # @!attribute [rw] vp9
          #   @return [::Google::Cloud::Video::Transcoder::V1::VideoStream::Vp9CodecSettings]
          #     VP9 codec settings.
          class VideoStream
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods

            # H264 codec settings.
            # @!attribute [rw] width_pixels
            #   @return [::Integer]
            #     The width of the video in pixels. Must be an even integer.
            #     When not specified, the width is adjusted to match the specified height
            #     and input aspect ratio. If both are omitted, the input width is used.
            #
            #     For portrait videos that contain horizontal ASR and rotation metadata,
            #     provide the width, in pixels, per the horizontal ASR. The API calculates
            #     the height per the horizontal ASR. The API detects any rotation metadata
            #     and swaps the requested height and width for the output.
            # @!attribute [rw] height_pixels
            #   @return [::Integer]
            #     The height of the video in pixels. Must be an even integer.
            #     When not specified, the height is adjusted to match the specified width
            #     and input aspect ratio. If both are omitted, the input height is used.
            #
            #     For portrait videos that contain horizontal ASR and rotation metadata,
            #     provide the height, in pixels, per the horizontal ASR. The API calculates
            #     the width per the horizontal ASR. The API detects any rotation metadata
            #     and swaps the requested height and width for the output.
            # @!attribute [rw] frame_rate
            #   @return [::Float]
            #     Required. The target video frame rate in frames per second (FPS). Must be less than
            #     or equal to 120. 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.
            # @!attribute [rw] bitrate_bps
            #   @return [::Integer]
            #     Required. The video bitrate in bits per second. The minimum value is 1,000.
            #     The maximum value is 800,000,000.
            # @!attribute [rw] pixel_format
            #   @return [::String]
            #     Pixel format to use. The default is `yuv420p`.
            #
            #     Supported pixel formats:
            #
            #     - `yuv420p` pixel format
            #     - `yuv422p` pixel format
            #     - `yuv444p` pixel format
            #     - `yuv420p10` 10-bit HDR pixel format
            #     - `yuv422p10` 10-bit HDR pixel format
            #     - `yuv444p10` 10-bit HDR pixel format
            #     - `yuv420p12` 12-bit HDR pixel format
            #     - `yuv422p12` 12-bit HDR pixel format
            #     - `yuv444p12` 12-bit HDR pixel format
            # @!attribute [rw] rate_control_mode
            #   @return [::String]
            #     Specify the `rate_control_mode`. The default is `vbr`.
            #
            #     Supported rate control modes:
            #
            #     - `vbr` - variable bitrate
            #     - `crf` - constant rate factor
            # @!attribute [rw] crf_level
            #   @return [::Integer]
            #     Target CRF level. Must be between 10 and 36, where 10 is the highest
            #     quality and 36 is the most efficient compression. The default is 21.
            # @!attribute [rw] allow_open_gop
            #   @return [::Boolean]
            #     Specifies whether an open Group of Pictures (GOP) structure should be
            #     allowed or not. The default is `false`.
            # @!attribute [rw] gop_frame_count
            #   @return [::Integer]
            #     Select the GOP size based on the specified frame count. Must be greater
            #     than zero.
            # @!attribute [rw] gop_duration
            #   @return [::Google::Protobuf::Duration]
            #     Select the GOP size based on the specified duration. The default is
            #     `3s`. Note that `gopDuration` must be less than or equal to
            #     [`segmentDuration`](#SegmentSettings), and
            #     [`segmentDuration`](#SegmentSettings) must be divisible by
            #     `gopDuration`.
            # @!attribute [rw] enable_two_pass
            #   @return [::Boolean]
            #     Use two-pass encoding strategy to achieve better video quality.
            #     `VideoStream.rate_control_mode` must be `vbr`. The default is `false`.
            # @!attribute [rw] vbv_size_bits
            #   @return [::Integer]
            #     Size of the Video Buffering Verifier (VBV) buffer in bits. Must be
            #     greater than zero. The default is equal to `VideoStream.bitrate_bps`.
            # @!attribute [rw] vbv_fullness_bits
            #   @return [::Integer]
            #     Initial fullness of the Video Buffering Verifier (VBV) buffer in bits.
            #     Must be greater than zero. The default is equal to 90% of
            #     `VideoStream.vbv_size_bits`.
            # @!attribute [rw] entropy_coder
            #   @return [::String]
            #     The entropy coder to use. The default is `cabac`.
            #
            #     Supported entropy coders:
            #
            #     - `cavlc`
            #     - `cabac`
            # @!attribute [rw] b_pyramid
            #   @return [::Boolean]
            #     Allow B-pyramid for reference frame selection. This may not be supported
            #     on all decoders. The default is `false`.
            # @!attribute [rw] b_frame_count
            #   @return [::Integer]
            #     The number of consecutive B-frames. Must be greater than or equal to
            #     zero. Must be less than `VideoStream.gop_frame_count` if set. The default
            #     is 0.
            # @!attribute [rw] aq_strength
            #   @return [::Float]
            #     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.
            # @!attribute [rw] profile
            #   @return [::String]
            #     Enforces the specified codec profile. The following profiles are
            #     supported:
            #
            #     *   `baseline`
            #     *   `main`
            #     *   `high` (default)
            #
            #     The available options are
            #     [FFmpeg-compatible](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`
            #     message.
            # @!attribute [rw] tune
            #   @return [::String]
            #     Enforces the specified codec tune. The available options are
            #     [FFmpeg-compatible](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`
            #     message.
            # @!attribute [rw] preset
            #   @return [::String]
            #     Enforces the specified codec preset. The default is `veryfast`. The
            #     available options are
            #     [FFmpeg-compatible](https://trac.ffmpeg.org/wiki/Encode/H.264#Preset).
            #     Note that certain values for this field may cause the
            #     transcoder to override other fields you set in the `H264CodecSettings`
            #     message.
            class H264CodecSettings
              include ::Google::Protobuf::MessageExts
              extend ::Google::Protobuf::MessageExts::ClassMethods
            end

            # H265 codec settings.
            # @!attribute [rw] width_pixels
            #   @return [::Integer]
            #     The width of the video in pixels. Must be an even integer.
            #     When not specified, the width is adjusted to match the specified height
            #     and input aspect ratio. If both are omitted, the input width is used.
            #
            #     For portrait videos that contain horizontal ASR and rotation metadata,
            #     provide the width, in pixels, per the horizontal ASR. The API calculates
            #     the height per the horizontal ASR. The API detects any rotation metadata
            #     and swaps the requested height and width for the output.
            # @!attribute [rw] height_pixels
            #   @return [::Integer]
            #     The height of the video in pixels. Must be an even integer.
            #     When not specified, the height is adjusted to match the specified width
            #     and input aspect ratio. If both are omitted, the input height is used.
            #
            #     For portrait videos that contain horizontal ASR and rotation metadata,
            #     provide the height, in pixels, per the horizontal ASR. The API calculates
            #     the width per the horizontal ASR. The API detects any rotation metadata
            #     and swaps the requested height and width for the output.
            # @!attribute [rw] frame_rate
            #   @return [::Float]
            #     Required. The target video frame rate in frames per second (FPS). Must be less than
            #     or equal to 120. 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.
            # @!attribute [rw] bitrate_bps
            #   @return [::Integer]
            #     Required. The video bitrate in bits per second. The minimum value is 1,000.
            #     The maximum value is 800,000,000.
            # @!attribute [rw] pixel_format
            #   @return [::String]
            #     Pixel format to use. The default is `yuv420p`.
            #
            #     Supported pixel formats:
            #
            #     - `yuv420p` pixel format
            #     - `yuv422p` pixel format
            #     - `yuv444p` pixel format
            #     - `yuv420p10` 10-bit HDR pixel format
            #     - `yuv422p10` 10-bit HDR pixel format
            #     - `yuv444p10` 10-bit HDR pixel format
            #     - `yuv420p12` 12-bit HDR pixel format
            #     - `yuv422p12` 12-bit HDR pixel format
            #     - `yuv444p12` 12-bit HDR pixel format
            # @!attribute [rw] rate_control_mode
            #   @return [::String]
            #     Specify the `rate_control_mode`. The default is `vbr`.
            #
            #     Supported rate control modes:
            #
            #     - `vbr` - variable bitrate
            #     - `crf` - constant rate factor
            # @!attribute [rw] crf_level
            #   @return [::Integer]
            #     Target CRF level. Must be between 10 and 36, where 10 is the highest
            #     quality and 36 is the most efficient compression. The default is 21.
            # @!attribute [rw] allow_open_gop
            #   @return [::Boolean]
            #     Specifies whether an open Group of Pictures (GOP) structure should be
            #     allowed or not. The default is `false`.
            # @!attribute [rw] gop_frame_count
            #   @return [::Integer]
            #     Select the GOP size based on the specified frame count. Must be greater
            #     than zero.
            # @!attribute [rw] gop_duration
            #   @return [::Google::Protobuf::Duration]
            #     Select the GOP size based on the specified duration. The default is
            #     `3s`. Note that `gopDuration` must be less than or equal to
            #     [`segmentDuration`](#SegmentSettings), and
            #     [`segmentDuration`](#SegmentSettings) must be divisible by
            #     `gopDuration`.
            # @!attribute [rw] enable_two_pass
            #   @return [::Boolean]
            #     Use two-pass encoding strategy to achieve better video quality.
            #     `VideoStream.rate_control_mode` must be `vbr`. The default is `false`.
            # @!attribute [rw] vbv_size_bits
            #   @return [::Integer]
            #     Size of the Video Buffering Verifier (VBV) buffer in bits. Must be
            #     greater than zero. The default is equal to `VideoStream.bitrate_bps`.
            # @!attribute [rw] vbv_fullness_bits
            #   @return [::Integer]
            #     Initial fullness of the Video Buffering Verifier (VBV) buffer in bits.
            #     Must be greater than zero. The default is equal to 90% of
            #     `VideoStream.vbv_size_bits`.
            # @!attribute [rw] b_pyramid
            #   @return [::Boolean]
            #     Allow B-pyramid for reference frame selection. This may not be supported
            #     on all decoders. The default is `false`.
            # @!attribute [rw] b_frame_count
            #   @return [::Integer]
            #     The number of consecutive B-frames. Must be greater than or equal to
            #     zero. Must be less than `VideoStream.gop_frame_count` if set. The default
            #     is 0.
            # @!attribute [rw] aq_strength
            #   @return [::Float]
            #     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.
            # @!attribute [rw] profile
            #   @return [::String]
            #     Enforces the specified codec profile. The following profiles are
            #     supported:
            #
            #     *   8-bit profiles
            #         *   `main` (default)
            #         *   `main-intra`
            #         *   `mainstillpicture`
            #     *   10-bit profiles
            #         *   `main10` (default)
            #         *   `main10-intra`
            #         *   `main422-10`
            #         *   `main422-10-intra`
            #         *   `main444-10`
            #         *   `main444-10-intra`
            #     *   12-bit profiles
            #         *   `main12` (default)
            #         *   `main12-intra`
            #         *   `main422-12`
            #         *   `main422-12-intra`
            #         *   `main444-12`
            #         *   `main444-12-intra`
            #
            #     The available options are
            #     [FFmpeg-compatible](https://x265.readthedocs.io/).
            #     Note that certain values for this field may cause the
            #     transcoder to override other fields you set in the `H265CodecSettings`
            #     message.
            # @!attribute [rw] tune
            #   @return [::String]
            #     Enforces the specified codec tune. The available options are
            #     [FFmpeg-compatible](https://trac.ffmpeg.org/wiki/Encode/H.265).
            #     Note that certain values for this field may cause the
            #     transcoder to override other fields you set in the `H265CodecSettings`
            #     message.
            # @!attribute [rw] preset
            #   @return [::String]
            #     Enforces the specified codec preset. The default is `veryfast`. The
            #     available options are
            #     [FFmpeg-compatible](https://trac.ffmpeg.org/wiki/Encode/H.265).
            #     Note that certain values for this field may cause the
            #     transcoder to override other fields you set in the `H265CodecSettings`
            #     message.
            class H265CodecSettings
              include ::Google::Protobuf::MessageExts
              extend ::Google::Protobuf::MessageExts::ClassMethods
            end

            # VP9 codec settings.
            # @!attribute [rw] width_pixels
            #   @return [::Integer]
            #     The width of the video in pixels. Must be an even integer.
            #     When not specified, the width is adjusted to match the specified height
            #     and input aspect ratio. If both are omitted, the input width is used.
            #
            #     For portrait videos that contain horizontal ASR and rotation metadata,
            #     provide the width, in pixels, per the horizontal ASR. The API calculates
            #     the height per the horizontal ASR. The API detects any rotation metadata
            #     and swaps the requested height and width for the output.
            # @!attribute [rw] height_pixels
            #   @return [::Integer]
            #     The height of the video in pixels. Must be an even integer.
            #     When not specified, the height is adjusted to match the specified width
            #     and input aspect ratio. If both are omitted, the input height is used.
            #
            #     For portrait videos that contain horizontal ASR and rotation metadata,
            #     provide the height, in pixels, per the horizontal ASR. The API calculates
            #     the width per the horizontal ASR. The API detects any rotation metadata
            #     and swaps the requested height and width for the output.
            # @!attribute [rw] frame_rate
            #   @return [::Float]
            #     Required. The target video frame rate in frames per second (FPS). Must be less than
            #     or equal to 120. 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.
            # @!attribute [rw] bitrate_bps
            #   @return [::Integer]
            #     Required. The video bitrate in bits per second. The minimum value is 1,000.
            #     The maximum value is 480,000,000.
            # @!attribute [rw] pixel_format
            #   @return [::String]
            #     Pixel format to use. The default is `yuv420p`.
            #
            #     Supported pixel formats:
            #
            #     - `yuv420p` pixel format
            #     - `yuv422p` pixel format
            #     - `yuv444p` pixel format
            #     - `yuv420p10` 10-bit HDR pixel format
            #     - `yuv422p10` 10-bit HDR pixel format
            #     - `yuv444p10` 10-bit HDR pixel format
            #     - `yuv420p12` 12-bit HDR pixel format
            #     - `yuv422p12` 12-bit HDR pixel format
            #     - `yuv444p12` 12-bit HDR pixel format
            # @!attribute [rw] rate_control_mode
            #   @return [::String]
            #     Specify the `rate_control_mode`. The default is `vbr`.
            #
            #     Supported rate control modes:
            #
            #     - `vbr` - variable bitrate
            # @!attribute [rw] crf_level
            #   @return [::Integer]
            #     Target CRF level. Must be between 10 and 36, where 10 is the highest
            #     quality and 36 is the most efficient compression. The default is 21.
            #
            #     **Note:** This field is not supported.
            # @!attribute [rw] gop_frame_count
            #   @return [::Integer]
            #     Select the GOP size based on the specified frame count. Must be greater
            #     than zero.
            # @!attribute [rw] gop_duration
            #   @return [::Google::Protobuf::Duration]
            #     Select the GOP size based on the specified duration. The default is
            #     `3s`. Note that `gopDuration` must be less than or equal to
            #     [`segmentDuration`](#SegmentSettings), and
            #     [`segmentDuration`](#SegmentSettings) must be divisible by
            #     `gopDuration`.
            # @!attribute [rw] profile
            #   @return [::String]
            #     Enforces the specified codec profile. The following profiles are
            #     supported:
            #
            #     *   `profile0` (default)
            #     *   `profile1`
            #     *   `profile2`
            #     *   `profile3`
            #
            #     The available options are
            #     [WebM-compatible](https://www.webmproject.org/vp9/profiles/).
            #     Note that certain values for this field may cause the
            #     transcoder to override other fields you set in the `Vp9CodecSettings`
            #     message.
            class Vp9CodecSettings
              include ::Google::Protobuf::MessageExts
              extend ::Google::Protobuf::MessageExts::ClassMethods
            end
          end

          # Audio stream resource.
          # @!attribute [rw] codec
          #   @return [::String]
          #     The codec for this audio stream. The default is `aac`.
          #
          #     Supported audio codecs:
          #
          #     - `aac`
          #     - `aac-he`
          #     - `aac-he-v2`
          #     - `mp3`
          #     - `ac3`
          #     - `eac3`
          # @!attribute [rw] bitrate_bps
          #   @return [::Integer]
          #     Required. Audio bitrate in bits per second. Must be between 1 and 10,000,000.
          # @!attribute [rw] channel_count
          #   @return [::Integer]
          #     Number of audio channels. Must be between 1 and 6. The default is 2.
          # @!attribute [rw] channel_layout
          #   @return [::Array<::String>]
          #     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
          # @!attribute [rw] mapping
          #   @return [::Array<::Google::Cloud::Video::Transcoder::V1::AudioStream::AudioMapping>]
          #     The mapping for the `Job.edit_list` atoms with audio `EditAtom.inputs`.
          # @!attribute [rw] sample_rate_hertz
          #   @return [::Integer]
          #     The audio sample rate in Hertz. The default is 48000 Hertz.
          class AudioStream
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods

            # The mapping for the `Job.edit_list` atoms with audio `EditAtom.inputs`.
            # @!attribute [rw] atom_key
            #   @return [::String]
            #     Required. The `EditAtom.key` that references the atom with audio inputs in the
            #     `Job.edit_list`.
            # @!attribute [rw] input_key
            #   @return [::String]
            #     Required. The `Input.key` that identifies the input file.
            # @!attribute [rw] input_track
            #   @return [::Integer]
            #     Required. The zero-based index of the track in the input file.
            # @!attribute [rw] input_channel
            #   @return [::Integer]
            #     Required. The zero-based index of the channel in the input audio stream.
            # @!attribute [rw] output_channel
            #   @return [::Integer]
            #     Required. The zero-based index of the channel in the output audio stream.
            # @!attribute [rw] gain_db
            #   @return [::Float]
            #     Audio volume control in dB. Negative values decrease volume,
            #     positive values increase. The default is 0.
            class AudioMapping
              include ::Google::Protobuf::MessageExts
              extend ::Google::Protobuf::MessageExts::ClassMethods
            end
          end

          # Encoding of a text stream. For example, closed captions or subtitles.
          # @!attribute [rw] codec
          #   @return [::String]
          #     The codec for this text stream. The default is `webvtt`.
          #
          #     Supported text codecs:
          #
          #     - `srt`
          #     - `ttml`
          #     - `cea608`
          #     - `cea708`
          #     - `webvtt`
          # @!attribute [rw] mapping
          #   @return [::Array<::Google::Cloud::Video::Transcoder::V1::TextStream::TextMapping>]
          #     The mapping for the `Job.edit_list` atoms with text `EditAtom.inputs`.
          class TextStream
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods

            # The mapping for the `Job.edit_list` atoms with text `EditAtom.inputs`.
            # @!attribute [rw] atom_key
            #   @return [::String]
            #     Required. The `EditAtom.key` that references atom with text inputs in the
            #     `Job.edit_list`.
            # @!attribute [rw] input_key
            #   @return [::String]
            #     Required. The `Input.key` that identifies the input file.
            # @!attribute [rw] input_track
            #   @return [::Integer]
            #     Required. The zero-based index of the track in the input file.
            class TextMapping
              include ::Google::Protobuf::MessageExts
              extend ::Google::Protobuf::MessageExts::ClassMethods
            end
          end

          # Segment settings for `ts`, `fmp4` and `vtt`.
          # @!attribute [rw] segment_duration
          #   @return [::Google::Protobuf::Duration]
          #     Duration of the segments in seconds. The default is `6.0s`. Note that
          #     `segmentDuration` must be greater than or equal to
          #     [`gopDuration`](#videostream), and `segmentDuration` must be divisible by
          #     [`gopDuration`](#videostream).
          # @!attribute [rw] individual_segments
          #   @return [::Boolean]
          #     Required. Create an individual segment file. The default is `false`.
          class SegmentSettings
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods
          end
        end
      end
    end
  end
end