# frozen_string_literal: true

# 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
#
#     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 Stitcher
        module V1
          # Metadata for a VOD session.
          # @!attribute [r] name
          #   @return [::String]
          #     Output only. The name of the VOD session, in the form of
          #     `projects/{project_number}/locations/{location}/vodSessions/{id}`.
          # @!attribute [r] interstitials
          #   @return [::Google::Cloud::Video::Stitcher::V1::Interstitials]
          #     Output only. Metadata of what was stitched into the content.
          # @!attribute [r] play_uri
          #   @return [::String]
          #     Output only. The playback URI of the stitched content.
          # @!attribute [rw] source_uri
          #   @return [::String]
          #     Required. URI of the media to stitch.
          # @!attribute [rw] ad_tag_uri
          #   @return [::String]
          #     Required. Ad tag URI.
          # @!attribute [rw] ad_tag_macro_map
          #   @return [::Google::Protobuf::Map{::String => ::String}]
          #     Key value pairs for ad tag macro replacement. If the
          #     specified ad tag URI has macros, this field provides the mapping
          #     to the value that will replace the macro in the ad tag URI.
          #     Macros are designated by square brackets.
          #     For example:
          #
          #       Ad tag URI: `"https://doubleclick.google.com/ad/1?geo_id=[geoId]"`
          #
          #       Ad tag macro map: `{"geoId": "123"}`
          #
          #       Fully qualified ad tag:
          #       `"`https://doubleclick.google.com/ad/1?geo_id=123"`
          # @!attribute [rw] client_ad_tracking
          #   @return [::Boolean]
          #     Indicates whether client side ad tracking is enabled. If client
          #     side ad tracking is enabled, then the client player is expected
          #     to trigger playback and activity events itself.
          #     If this is set to false, server side ad tracking is enabled,
          #     causing the Video Stitcher service will trigger playback events
          #     on behalf of the client player.
          # @!attribute [rw] manifest_options
          #   @return [::Google::Cloud::Video::Stitcher::V1::ManifestOptions]
          #     Additional options that affect the output of the manifest.
          # @!attribute [r] asset_id
          #   @return [::String]
          #     Output only. The generated ID of the VodSession's source media.
          class VodSession
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods

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

          # Describes what was stitched into a VOD session's manifest.
          # @!attribute [rw] ad_breaks
          #   @return [::Array<::Google::Cloud::Video::Stitcher::V1::VodSessionAdBreak>]
          #     List of ad breaks ordered by time.
          # @!attribute [rw] session_content
          #   @return [::Google::Cloud::Video::Stitcher::V1::VodSessionContent]
          #     Information related to the content of the VOD session.
          class Interstitials
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods
          end

          # Metadata for an inserted ad in a VOD session.
          # @!attribute [rw] duration
          #   @return [::Google::Protobuf::Duration]
          #     Duration in seconds of the ad.
          # @!attribute [rw] companion_ads
          #   @return [::Google::Cloud::Video::Stitcher::V1::CompanionAds]
          #     Metadata of companion ads associated with the ad.
          # @!attribute [rw] activity_events
          #   @return [::Array<::Google::Cloud::Video::Stitcher::V1::Event>]
          #     The list of progress tracking events for the ad break. These can be of
          #     the following IAB types: `MUTE`, `UNMUTE`, `PAUSE`, `CLICK`,
          #     `CLICK_THROUGH`, `REWIND`, `RESUME`, `ERROR`, `FULLSCREEN`,
          #     `EXIT_FULLSCREEN`, `EXPAND`, `COLLAPSE`, `ACCEPT_INVITATION_LINEAR`,
          #     `CLOSE_LINEAR`, `SKIP`.
          class VodSessionAd
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods
          end

          # Metadata for the entire stitched content in a VOD session.
          # @!attribute [rw] duration
          #   @return [::Google::Protobuf::Duration]
          #     The total duration in seconds of the content including the ads stitched
          #     in.
          class VodSessionContent
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods
          end

          # Metadata for an inserted ad break.
          # @!attribute [rw] progress_events
          #   @return [::Array<::Google::Cloud::Video::Stitcher::V1::ProgressEvent>]
          #     List of events that are expected to be triggered, ordered by time.
          # @!attribute [rw] ads
          #   @return [::Array<::Google::Cloud::Video::Stitcher::V1::VodSessionAd>]
          #     Ordered list of ads stitched into the ad break.
          # @!attribute [rw] end_time_offset
          #   @return [::Google::Protobuf::Duration]
          #     Ad break end time in seconds relative to the start of the VOD asset.
          # @!attribute [rw] start_time_offset
          #   @return [::Google::Protobuf::Duration]
          #     Ad break start time in seconds relative to the start of the VOD asset.
          class VodSessionAdBreak
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods
          end

          # Metadata for a live session.
          # @!attribute [r] name
          #   @return [::String]
          #     Output only. The name of the live session, in the form of
          #     `projects/{project}/locations/{location}/liveSessions/{id}`.
          # @!attribute [r] play_uri
          #   @return [::String]
          #     Output only. The URI to play the live session's ad-stitched stream.
          # @!attribute [rw] source_uri
          #   @return [::String]
          #     The URI of the live session's source stream.
          # @!attribute [rw] default_ad_tag_id
          #   @return [::String]
          #     The default ad tag to use when no ad tag ids are specified in an ad break's
          #     SCTE-35 message.
          #
          #     default_ad_tag_id is necessary when `adTagMap` has more than one key. Its
          #     value must be present in the `adTagMap`.
          # @!attribute [rw] ad_tag_map
          #   @return [::Google::Protobuf::Map{::String => ::Google::Cloud::Video::Stitcher::V1::AdTag}]
          #     Key value pairs for ad tags. Ads parsed from ad tags must be MP4 videos
          #     each with at least one audio track.
          # @!attribute [rw] ad_tag_macros
          #   @return [::Google::Protobuf::Map{::String => ::String}]
          #     Key value pairs for ad tag macro replacement. If the
          #     specified ad tag URI has macros, this field provides the mapping
          #     to the value that will replace the macro in the ad tag URI.
          #     Macros are designated by square brackets.
          #
          #     For example:
          #
          #       Ad tag URI: "https://doubleclick.google.com/ad/1?geo_id=[geoId]"
          #
          #       Ad tag macros: `{"geoId": "123"}`
          #
          #       Fully qualified ad tag:
          #       `"https://doubleclick.google.com/ad/1?geo_id=123"`
          # @!attribute [rw] client_ad_tracking
          #   @return [::Boolean]
          #     Whether client side ad tracking is enabled. If enabled, the client player
          #     is expected to trigger playback and activity events itself. Otherwise,
          #     server side ad tracking is enabled and the Video Stitcher API will trigger
          #     playback events on behalf of the client player.
          # @!attribute [rw] default_slate_id
          #   @return [::String]
          #     The default slate to use when no slates are specified in an ad break's
          #     SCTE-35 message. When specified, this value must match the ID for a slate
          #     that has already been created via the
          #     [CreateSlate](projects.locations.slates/create) method.
          # @!attribute [rw] stitching_policy
          #   @return [::Google::Cloud::Video::Stitcher::V1::LiveSession::StitchingPolicy]
          #     Defines the stitcher behavior in case an ad does not align exactly with
          #     the ad break boundaries. If not specified, the default is `COMPLETE_AD`.
          # @!attribute [rw] manifest_options
          #   @return [::Google::Cloud::Video::Stitcher::V1::ManifestOptions]
          #     Additional options that affect the output of the manifest.
          # @!attribute [r] stream_id
          #   @return [::String]
          #     Output only. The generated ID of the LiveSession's source stream.
          class LiveSession
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods

            # @!attribute [rw] key
            #   @return [::String]
            # @!attribute [rw] value
            #   @return [::Google::Cloud::Video::Stitcher::V1::AdTag]
            class AdTagMapEntry
              include ::Google::Protobuf::MessageExts
              extend ::Google::Protobuf::MessageExts::ClassMethods
            end

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

            # Defines the stitcher behavior in case an ad does not align exactly with
            # the ad break boundaries. If not specified, the default is COMPLETE_AD.
            module StitchingPolicy
              # Stitching policy is not specified.
              STITCHING_POLICY_UNSPECIFIED = 0

              # Finishes stitching the current ad before returning to content.
              COMPLETE_AD = 1

              # Cuts an ad short and returns to content in the middle of the ad.
              CUT_CURRENT = 3
            end
          end

          # Metadata of an ad tag.
          # @!attribute [rw] uri
          #   @return [::String]
          #     Ad tag URI template.
          class AdTag
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods
          end

          # Options for manifest generation.
          # @!attribute [rw] include_renditions
          #   @return [::Array<::Google::Cloud::Video::Stitcher::V1::RenditionFilter>]
          #     If specified, the output manifest will only return renditions matching the
          #     specified filters.
          # @!attribute [rw] bitrate_order
          #   @return [::Google::Cloud::Video::Stitcher::V1::ManifestOptions::OrderPolicy]
          #     If specified, the output manifest will orders the video and muxed
          #     renditions by bitrate according to the ordering policy.
          class ManifestOptions
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods

            # Defines the ordering policy during manifest generation.
            module OrderPolicy
              # Ordering policy is not specified.
              ORDER_POLICY_UNSPECIFIED = 0

              # Order by ascending.
              ASCENDING = 1

              # Order by descending.
              DESCENDING = 2
            end
          end

          # Filters for a video or muxed redition.
          # @!attribute [rw] bitrate_bps
          #   @return [::Integer]
          #     Bitrate in bits per second for the rendition. If set, only renditions with
          #     the exact bitrate will match.
          # @!attribute [rw] codecs
          #   @return [::String]
          #     Codecs for the rendition. If set, only renditions with the exact value
          #     will match.
          class RenditionFilter
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods
          end
        end
      end
    end
  end
end