diff --git a/videointelligence/docs/gapic/v1p2beta1/api.rst b/videointelligence/docs/gapic/v1p2beta1/api.rst
new file mode 100644
index 000000000000..0dafdd894ab6
--- /dev/null
+++ b/videointelligence/docs/gapic/v1p2beta1/api.rst
@@ -0,0 +1,6 @@
+Client for Cloud Video Intelligence API
+=======================================
+
+.. automodule:: google.cloud.videointelligence_v1p2beta1
+    :members:
+    :inherited-members:
\ No newline at end of file
diff --git a/videointelligence/docs/gapic/v1p2beta1/types.rst b/videointelligence/docs/gapic/v1p2beta1/types.rst
new file mode 100644
index 000000000000..4806fa77790e
--- /dev/null
+++ b/videointelligence/docs/gapic/v1p2beta1/types.rst
@@ -0,0 +1,5 @@
+Types for Cloud Video Intelligence API Client
+=============================================
+
+.. automodule:: google.cloud.videointelligence_v1p2beta1.types
+    :members:
\ No newline at end of file
diff --git a/videointelligence/docs/index.rst b/videointelligence/docs/index.rst
index 1a37c9409e3d..6c0ed5720270 100644
--- a/videointelligence/docs/index.rst
+++ b/videointelligence/docs/index.rst
@@ -94,7 +94,7 @@ API. By default, you will get ``v1``, the latest stable version.
     gapic/v1/types
 
 A new beta release with additional features over the current stable version,
-spelled ``v1p1beta1``, is provided to allow you to use these new features.
+spelled ``v1p2beta1``, is provided to allow you to use these new features.
 These are expected to move into the stable release soon; until then, the
 usual beta admonishment (changes are possible, etc.) applies.
 
@@ -103,12 +103,13 @@ An API and type reference is provided for this beta:
 .. toctree::
     :maxdepth: 2
 
-    gapic/v1p1beta1/api
-    gapic/v1p1beta1/types
+    gapic/v1p2beta1/api
+    gapic/v1p2beta1/types
 
-The previous beta releases, spelled ``v1beta1`` and ``v1beta2``, are provided to
-continue to support code previously written against them. In order to use this,
-you will want to import from ``google.cloud.videointelligence_v1beta2`` in lieu of
+The previous beta releases, spelled ``v1p1beta1``, ``v1beta1``, and
+``v1beta2``, are provided to continue to support code previously written
+against them. In order to use ththem, you will want to import from e.g.
+``google.cloud.videointelligence_v1beta2`` in lieu of
 ``google.cloud.videointelligence_v1``.
 
 An API and type reference is provided the these betas also:
@@ -116,6 +117,8 @@ An API and type reference is provided the these betas also:
 .. toctree::
     :maxdepth: 2
 
+    gapic/v1p1beta1/api
+    gapic/v1p1beta1/types
     gapic/v1beta1/api
     gapic/v1beta1/types
     gapic/v1beta2/api
diff --git a/videointelligence/google/cloud/videointelligence_v1p2beta1/__init__.py b/videointelligence/google/cloud/videointelligence_v1p2beta1/__init__.py
new file mode 100644
index 000000000000..d4a4f156b3be
--- /dev/null
+++ b/videointelligence/google/cloud/videointelligence_v1p2beta1/__init__.py
@@ -0,0 +1,34 @@
+# -*- coding: utf-8 -*-
+#
+# Copyright 2018 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.
+
+from __future__ import absolute_import
+
+from google.cloud.videointelligence_v1p2beta1 import types
+from google.cloud.videointelligence_v1p2beta1.gapic import enums
+from google.cloud.videointelligence_v1p2beta1.gapic import video_intelligence_service_client
+
+
+class VideoIntelligenceServiceClient(
+        video_intelligence_service_client.VideoIntelligenceServiceClient):
+    __doc__ = video_intelligence_service_client.VideoIntelligenceServiceClient.__doc__
+    enums = enums
+
+
+__all__ = (
+    'enums',
+    'types',
+    'VideoIntelligenceServiceClient',
+)
diff --git a/videointelligence/google/cloud/videointelligence_v1p2beta1/gapic/__init__.py b/videointelligence/google/cloud/videointelligence_v1p2beta1/gapic/__init__.py
new file mode 100644
index 000000000000..e69de29bb2d1
diff --git a/videointelligence/google/cloud/videointelligence_v1p2beta1/gapic/enums.py b/videointelligence/google/cloud/videointelligence_v1p2beta1/gapic/enums.py
new file mode 100644
index 000000000000..69f19b8f6d44
--- /dev/null
+++ b/videointelligence/google/cloud/videointelligence_v1p2beta1/gapic/enums.py
@@ -0,0 +1,74 @@
+# -*- coding: utf-8 -*-
+#
+# Copyright 2018 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.
+"""Wrappers for protocol buffer enum types."""
+
+import enum
+
+
+class Feature(enum.IntEnum):
+    """
+    Video annotation feature.
+
+    Attributes:
+      FEATURE_UNSPECIFIED (int): Unspecified.
+      LABEL_DETECTION (int): Label detection. Detect objects, such as dog or flower.
+      SHOT_CHANGE_DETECTION (int): Shot change detection.
+      EXPLICIT_CONTENT_DETECTION (int): Explicit content detection.
+      TEXT_DETECTION (int): OCR text detection and tracking.
+      OBJECT_TRACKING (int): Object detection and tracking.
+    """
+    FEATURE_UNSPECIFIED = 0
+    LABEL_DETECTION = 1
+    SHOT_CHANGE_DETECTION = 2
+    EXPLICIT_CONTENT_DETECTION = 3
+    TEXT_DETECTION = 7
+    OBJECT_TRACKING = 9
+
+
+class LabelDetectionMode(enum.IntEnum):
+    """
+    Label detection mode.
+
+    Attributes:
+      LABEL_DETECTION_MODE_UNSPECIFIED (int): Unspecified.
+      SHOT_MODE (int): Detect shot-level labels.
+      FRAME_MODE (int): Detect frame-level labels.
+      SHOT_AND_FRAME_MODE (int): Detect both shot-level and frame-level labels.
+    """
+    LABEL_DETECTION_MODE_UNSPECIFIED = 0
+    SHOT_MODE = 1
+    FRAME_MODE = 2
+    SHOT_AND_FRAME_MODE = 3
+
+
+class Likelihood(enum.IntEnum):
+    """
+    Bucketized representation of likelihood.
+
+    Attributes:
+      LIKELIHOOD_UNSPECIFIED (int): Unspecified likelihood.
+      VERY_UNLIKELY (int): Very unlikely.
+      UNLIKELY (int): Unlikely.
+      POSSIBLE (int): Possible.
+      LIKELY (int): Likely.
+      VERY_LIKELY (int): Very likely.
+    """
+    LIKELIHOOD_UNSPECIFIED = 0
+    VERY_UNLIKELY = 1
+    UNLIKELY = 2
+    POSSIBLE = 3
+    LIKELY = 4
+    VERY_LIKELY = 5
diff --git a/videointelligence/google/cloud/videointelligence_v1p2beta1/gapic/transports/__init__.py b/videointelligence/google/cloud/videointelligence_v1p2beta1/gapic/transports/__init__.py
new file mode 100644
index 000000000000..e69de29bb2d1
diff --git a/videointelligence/google/cloud/videointelligence_v1p2beta1/gapic/transports/video_intelligence_service_grpc_transport.py b/videointelligence/google/cloud/videointelligence_v1p2beta1/gapic/transports/video_intelligence_service_grpc_transport.py
new file mode 100644
index 000000000000..3bf8d56c2afa
--- /dev/null
+++ b/videointelligence/google/cloud/videointelligence_v1p2beta1/gapic/transports/video_intelligence_service_grpc_transport.py
@@ -0,0 +1,116 @@
+# -*- coding: utf-8 -*-
+#
+# Copyright 2018 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.
+
+import google.api_core.grpc_helpers
+import google.api_core.operations_v1
+
+from google.cloud.videointelligence_v1p2beta1.proto import video_intelligence_pb2_grpc
+
+
+class VideoIntelligenceServiceGrpcTransport(object):
+    """gRPC transport class providing stubs for
+    google.cloud.videointelligence.v1p2beta1 VideoIntelligenceService API.
+
+    The transport provides access to the raw gRPC stubs,
+    which can be used to take advantage of advanced
+    features of gRPC.
+    """
+    # The scopes needed to make gRPC calls to all of the methods defined
+    # in this service.
+    _OAUTH_SCOPES = ('https://www.googleapis.com/auth/cloud-platform', )
+
+    def __init__(self,
+                 channel=None,
+                 credentials=None,
+                 address='videointelligence.googleapis.com:443'):
+        """Instantiate the transport class.
+
+        Args:
+            channel (grpc.Channel): A ``Channel`` instance through
+                which to make calls. This argument is mutually exclusive
+                with ``credentials``; providing both will raise an exception.
+            credentials (google.auth.credentials.Credentials): The
+                authorization credentials to attach to requests. These
+                credentials identify this application to the service. If none
+                are specified, the client will attempt to ascertain the
+                credentials from the environment.
+            address (str): The address where the service is hosted.
+        """
+        # If both `channel` and `credentials` are specified, raise an
+        # exception (channels come with credentials baked in already).
+        if channel is not None and credentials is not None:
+            raise ValueError(
+                'The `channel` and `credentials` arguments are mutually '
+                'exclusive.', )
+
+        # Create the channel.
+        if channel is None:
+            channel = self.create_channel(
+                address=address,
+                credentials=credentials,
+            )
+
+        # gRPC uses objects called "stubs" that are bound to the
+        # channel and provide a basic method for each RPC.
+        self._stubs = {
+            'video_intelligence_service_stub':
+            video_intelligence_pb2_grpc.VideoIntelligenceServiceStub(channel),
+        }
+
+        # Because this API includes a method that returns a
+        # long-running operation (proto: google.longrunning.Operation),
+        # instantiate an LRO client.
+        self._operations_client = google.api_core.operations_v1.OperationsClient(
+            channel)
+
+    @classmethod
+    def create_channel(cls,
+                       address='videointelligence.googleapis.com:443',
+                       credentials=None):
+        """Create and return a gRPC channel object.
+
+        Args:
+            address (str): The host for the channel to use.
+            credentials (~.Credentials): The
+                authorization credentials to attach to requests. These
+                credentials identify this application to the service. If
+                none are specified, the client will attempt to ascertain
+                the credentials from the environment.
+
+        Returns:
+            grpc.Channel: A gRPC channel object.
+        """
+        return google.api_core.grpc_helpers.create_channel(
+            address,
+            credentials=credentials,
+            scopes=cls._OAUTH_SCOPES,
+        )
+
+    @property
+    def annotate_video(self):
+        """Return the gRPC stub for {$apiMethod.name}.
+
+        Performs asynchronous video annotation. Progress and results can be
+        retrieved through the ``google.longrunning.Operations`` interface.
+        ``Operation.metadata`` contains ``AnnotateVideoProgress`` (progress).
+        ``Operation.response`` contains ``AnnotateVideoResponse`` (results).
+
+        Returns:
+            Callable: A callable which accepts the appropriate
+                deserialized request object and returns a
+                deserialized response object.
+        """
+        return self._stubs['video_intelligence_service_stub'].AnnotateVideo
diff --git a/videointelligence/google/cloud/videointelligence_v1p2beta1/gapic/video_intelligence_service_client.py b/videointelligence/google/cloud/videointelligence_v1p2beta1/gapic/video_intelligence_service_client.py
new file mode 100644
index 000000000000..fefa13d8918a
--- /dev/null
+++ b/videointelligence/google/cloud/videointelligence_v1p2beta1/gapic/video_intelligence_service_client.py
@@ -0,0 +1,269 @@
+# -*- coding: utf-8 -*-
+#
+# Copyright 2018 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.
+"""Accesses the google.cloud.videointelligence.v1p2beta1 VideoIntelligenceService API."""
+
+import pkg_resources
+import warnings
+
+from google.oauth2 import service_account
+import google.api_core.gapic_v1.client_info
+import google.api_core.gapic_v1.config
+import google.api_core.gapic_v1.method
+import google.api_core.grpc_helpers
+import google.api_core.operation
+import google.api_core.operations_v1
+import grpc
+
+from google.cloud.videointelligence_v1p2beta1.gapic import enums
+from google.cloud.videointelligence_v1p2beta1.gapic import video_intelligence_service_client_config
+from google.cloud.videointelligence_v1p2beta1.gapic.transports import video_intelligence_service_grpc_transport
+from google.cloud.videointelligence_v1p2beta1.proto import video_intelligence_pb2
+from google.cloud.videointelligence_v1p2beta1.proto import video_intelligence_pb2_grpc
+from google.longrunning import operations_pb2
+
+_GAPIC_LIBRARY_VERSION = pkg_resources.get_distribution(
+    'google-cloud-videointelligence', ).version
+
+
+class VideoIntelligenceServiceClient(object):
+    """Service that implements Google Cloud Video Intelligence API."""
+
+    SERVICE_ADDRESS = 'videointelligence.googleapis.com:443'
+    """The default address of the service."""
+
+    # The name of the interface for this client. This is the key used to
+    # find the method configuration in the client_config dictionary.
+    _INTERFACE_NAME = 'google.cloud.videointelligence.v1p2beta1.VideoIntelligenceService'
+
+    @classmethod
+    def from_service_account_file(cls, filename, *args, **kwargs):
+        """Creates an instance of this client using the provided credentials
+        file.
+
+        Args:
+            filename (str): The path to the service account private key json
+                file.
+            args: Additional arguments to pass to the constructor.
+            kwargs: Additional arguments to pass to the constructor.
+
+        Returns:
+            VideoIntelligenceServiceClient: The constructed client.
+        """
+        credentials = service_account.Credentials.from_service_account_file(
+            filename)
+        kwargs['credentials'] = credentials
+        return cls(*args, **kwargs)
+
+    from_service_account_json = from_service_account_file
+
+    def __init__(self,
+                 transport=None,
+                 channel=None,
+                 credentials=None,
+                 client_config=video_intelligence_service_client_config.config,
+                 client_info=None):
+        """Constructor.
+
+        Args:
+            transport (Union[~.VideoIntelligenceServiceGrpcTransport,
+                    Callable[[~.Credentials, type], ~.VideoIntelligenceServiceGrpcTransport]): A transport
+                instance, responsible for actually making the API calls.
+                The default transport uses the gRPC protocol.
+                This argument may also be a callable which returns a
+                transport instance. Callables will be sent the credentials
+                as the first argument and the default transport class as
+                the second argument.
+            channel (grpc.Channel): DEPRECATED. A ``Channel`` instance
+                through which to make calls. This argument is mutually exclusive
+                with ``credentials``; providing both will raise an exception.
+            credentials (google.auth.credentials.Credentials): The
+                authorization credentials to attach to requests. These
+                credentials identify this application to the service. If none
+                are specified, the client will attempt to ascertain the
+                credentials from the environment.
+                This argument is mutually exclusive with providing a
+                transport instance to ``transport``; doing so will raise
+                an exception.
+            client_config (dict): DEPRECATED. A dictionary of call options for
+                each method. If not specified, the default configuration is used.
+            client_info (google.api_core.gapic_v1.client_info.ClientInfo):
+                The client info used to send a user-agent string along with
+                API requests. If ``None``, then default info will be used.
+                Generally, you only need to set this if you're developing
+                your own client library.
+        """
+        # Raise deprecation warnings for things we want to go away.
+        if client_config:
+            warnings.warn('The `client_config` argument is deprecated.',
+                          PendingDeprecationWarning)
+        if channel:
+            warnings.warn(
+                'The `channel` argument is deprecated; use '
+                '`transport` instead.', PendingDeprecationWarning)
+
+        # Instantiate the transport.
+        # The transport is responsible for handling serialization and
+        # deserialization and actually sending data to the service.
+        if transport:
+            if callable(transport):
+                self.transport = transport(
+                    credentials=credentials,
+                    default_class=video_intelligence_service_grpc_transport.
+                    VideoIntelligenceServiceGrpcTransport,
+                )
+            else:
+                if credentials:
+                    raise ValueError(
+                        'Received both a transport instance and '
+                        'credentials; these are mutually exclusive.')
+                self.transport = transport
+        else:
+            self.transport = video_intelligence_service_grpc_transport.VideoIntelligenceServiceGrpcTransport(
+                address=self.SERVICE_ADDRESS,
+                channel=channel,
+                credentials=credentials,
+            )
+
+        if client_info is None:
+            client_info = (
+                google.api_core.gapic_v1.client_info.DEFAULT_CLIENT_INFO)
+        client_info.gapic_version = _GAPIC_LIBRARY_VERSION
+        self._client_info = client_info
+
+        # Parse out the default settings for retry and timeout for each RPC
+        # from the client configuration.
+        # (Ordinarily, these are the defaults specified in the `*_config.py`
+        # file next to this one.)
+        self._method_configs = google.api_core.gapic_v1.config.parse_method_configs(
+            client_config['interfaces'][self._INTERFACE_NAME], )
+
+        # Save a dictionary of cached API call functions.
+        # These are the actual callables which invoke the proper
+        # transport methods, wrapped with `wrap_method` to add retry,
+        # timeout, and the like.
+        self._inner_api_calls = {}
+
+    # Service calls
+    def annotate_video(self,
+                       input_uri=None,
+                       input_content=None,
+                       features=None,
+                       video_context=None,
+                       output_uri=None,
+                       location_id=None,
+                       retry=google.api_core.gapic_v1.method.DEFAULT,
+                       timeout=google.api_core.gapic_v1.method.DEFAULT,
+                       metadata=None):
+        """
+        Performs asynchronous video annotation. Progress and results can be
+        retrieved through the ``google.longrunning.Operations`` interface.
+        ``Operation.metadata`` contains ``AnnotateVideoProgress`` (progress).
+        ``Operation.response`` contains ``AnnotateVideoResponse`` (results).
+
+        Example:
+            >>> from google.cloud import videointelligence_v1p2beta1
+            >>> from google.cloud.videointelligence_v1p2beta1 import enums
+            >>>
+            >>> client = videointelligence_v1p2beta1.VideoIntelligenceServiceClient()
+            >>>
+            >>> input_uri = 'gs://demomaker/cat.mp4'
+            >>> features_element = enums.Feature.LABEL_DETECTION
+            >>> features = [features_element]
+            >>>
+            >>> response = client.annotate_video(input_uri=input_uri, features=features)
+            >>>
+            >>> def callback(operation_future):
+            ...     # Handle result.
+            ...     result = operation_future.result()
+            >>>
+            >>> response.add_done_callback(callback)
+            >>>
+            >>> # Handle metadata.
+            >>> metadata = response.metadata()
+
+        Args:
+            input_uri (str): Input video location. Currently, only
+                `Google Cloud Storage <https://cloud.google.com/storage/>`_ URIs are
+                supported, which must be specified in the following format:
+                ``gs://bucket-id/object-id`` (other URI formats return
+                ``google.rpc.Code.INVALID_ARGUMENT``). For more information, see
+                `Request URIs <https://cloud.google.com/storage/docs/reference-uris>`_.
+                A video URI may include wildcards in ``object-id``, and thus identify
+                multiple videos. Supported wildcards: '*' to match 0 or more characters;
+                '?' to match 1 character. If unset, the input video should be embedded
+                in the request as ``input_content``. If set, ``input_content`` should be unset.
+            input_content (bytes): The video data bytes.
+                If unset, the input video(s) should be specified via ``input_uri``.
+                If set, ``input_uri`` should be unset.
+            features (list[~google.cloud.videointelligence_v1p2beta1.types.Feature]): Requested video annotation features.
+            video_context (Union[dict, ~google.cloud.videointelligence_v1p2beta1.types.VideoContext]): Additional video context and/or feature-specific parameters.
+                If a dict is provided, it must be of the same form as the protobuf
+                message :class:`~google.cloud.videointelligence_v1p2beta1.types.VideoContext`
+            output_uri (str): Optional location where the output (in JSON format) should be stored.
+                Currently, only `Google Cloud Storage <https://cloud.google.com/storage/>`_
+                URIs are supported, which must be specified in the following format:
+                ``gs://bucket-id/object-id`` (other URI formats return
+                ``google.rpc.Code.INVALID_ARGUMENT``). For more information, see
+                `Request URIs <https://cloud.google.com/storage/docs/reference-uris>`_.
+            location_id (str): Optional cloud region where annotation should take place. Supported cloud
+                regions: ``us-east1``, ``us-west1``, ``europe-west1``, ``asia-east1``. If no region
+                is specified, a region will be determined based on video file location.
+            retry (Optional[google.api_core.retry.Retry]):  A retry object used
+                to retry requests. If ``None`` is specified, requests will not
+                be retried.
+            timeout (Optional[float]): The amount of time, in seconds, to wait
+                for the request to complete. Note that if ``retry`` is
+                specified, the timeout applies to each individual attempt.
+            metadata (Optional[Sequence[Tuple[str, str]]]): Additional metadata
+                that is provided to the method.
+
+        Returns:
+            A :class:`~google.cloud.videointelligence_v1p2beta1.types._OperationFuture` instance.
+
+        Raises:
+            google.api_core.exceptions.GoogleAPICallError: If the request
+                    failed for any reason.
+            google.api_core.exceptions.RetryError: If the request failed due
+                    to a retryable error and retry attempts failed.
+            ValueError: If the parameters are invalid.
+        """
+        # Wrap the transport method to add retry and timeout logic.
+        if 'annotate_video' not in self._inner_api_calls:
+            self._inner_api_calls[
+                'annotate_video'] = google.api_core.gapic_v1.method.wrap_method(
+                    self.transport.annotate_video,
+                    default_retry=self._method_configs['AnnotateVideo'].retry,
+                    default_timeout=self._method_configs['AnnotateVideo'].
+                    timeout,
+                    client_info=self._client_info,
+                )
+
+        request = video_intelligence_pb2.AnnotateVideoRequest(
+            input_uri=input_uri,
+            input_content=input_content,
+            features=features,
+            video_context=video_context,
+            output_uri=output_uri,
+            location_id=location_id,
+        )
+        operation = self._inner_api_calls['annotate_video'](
+            request, retry=retry, timeout=timeout, metadata=metadata)
+        return google.api_core.operation.from_gapic(
+            operation,
+            self.transport._operations_client,
+            video_intelligence_pb2.AnnotateVideoResponse,
+            metadata_type=video_intelligence_pb2.AnnotateVideoProgress,
+        )
diff --git a/videointelligence/google/cloud/videointelligence_v1p2beta1/gapic/video_intelligence_service_client_config.py b/videointelligence/google/cloud/videointelligence_v1p2beta1/gapic/video_intelligence_service_client_config.py
new file mode 100644
index 000000000000..6168bd2066de
--- /dev/null
+++ b/videointelligence/google/cloud/videointelligence_v1p2beta1/gapic/video_intelligence_service_client_config.py
@@ -0,0 +1,28 @@
+config = {
+    "interfaces": {
+        "google.cloud.videointelligence.v1p2beta1.VideoIntelligenceService": {
+            "retry_codes": {
+                "idempotent": ["DEADLINE_EXCEEDED", "UNAVAILABLE"],
+                "non_idempotent": []
+            },
+            "retry_params": {
+                "default": {
+                    "initial_retry_delay_millis": 1000,
+                    "retry_delay_multiplier": 2.5,
+                    "max_retry_delay_millis": 120000,
+                    "initial_rpc_timeout_millis": 120000,
+                    "rpc_timeout_multiplier": 1.0,
+                    "max_rpc_timeout_millis": 120000,
+                    "total_timeout_millis": 600000
+                }
+            },
+            "methods": {
+                "AnnotateVideo": {
+                    "timeout_millis": 60000,
+                    "retry_codes_name": "idempotent",
+                    "retry_params_name": "default"
+                }
+            }
+        }
+    }
+}
diff --git a/videointelligence/google/cloud/videointelligence_v1p2beta1/proto/__init__.py b/videointelligence/google/cloud/videointelligence_v1p2beta1/proto/__init__.py
new file mode 100644
index 000000000000..e69de29bb2d1
diff --git a/videointelligence/google/cloud/videointelligence_v1p2beta1/proto/video_intelligence_pb2.py b/videointelligence/google/cloud/videointelligence_v1p2beta1/proto/video_intelligence_pb2.py
new file mode 100644
index 000000000000..1ea652e45257
--- /dev/null
+++ b/videointelligence/google/cloud/videointelligence_v1p2beta1/proto/video_intelligence_pb2.py
@@ -0,0 +1,1879 @@
+# Generated by the protocol buffer compiler.  DO NOT EDIT!
+# source: google/cloud/videointelligence_v1p2beta1/proto/video_intelligence.proto
+
+import sys
+_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1'))
+from google.protobuf.internal import enum_type_wrapper
+from google.protobuf import descriptor as _descriptor
+from google.protobuf import message as _message
+from google.protobuf import reflection as _reflection
+from google.protobuf import symbol_database as _symbol_database
+from google.protobuf import descriptor_pb2
+# @@protoc_insertion_point(imports)
+
+_sym_db = _symbol_database.Default()
+
+
+from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2
+from google.longrunning import operations_pb2 as google_dot_longrunning_dot_operations__pb2
+from google.protobuf import duration_pb2 as google_dot_protobuf_dot_duration__pb2
+from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2
+from google.rpc import status_pb2 as google_dot_rpc_dot_status__pb2
+
+
+DESCRIPTOR = _descriptor.FileDescriptor(
+  name='google/cloud/videointelligence_v1p2beta1/proto/video_intelligence.proto',
+  package='google.cloud.videointelligence.v1p2beta1',
+  syntax='proto3',
+  serialized_pb=_b('\nGgoogle/cloud/videointelligence_v1p2beta1/proto/video_intelligence.proto\x12(google.cloud.videointelligence.v1p2beta1\x1a\x1cgoogle/api/annotations.proto\x1a#google/longrunning/operations.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x17google/rpc/status.proto\"\xfd\x01\n\x14\x41nnotateVideoRequest\x12\x11\n\tinput_uri\x18\x01 \x01(\t\x12\x15\n\rinput_content\x18\x06 \x01(\x0c\x12\x43\n\x08\x66\x65\x61tures\x18\x02 \x03(\x0e\x32\x31.google.cloud.videointelligence.v1p2beta1.Feature\x12M\n\rvideo_context\x18\x03 \x01(\x0b\x32\x36.google.cloud.videointelligence.v1p2beta1.VideoContext\x12\x12\n\noutput_uri\x18\x04 \x01(\t\x12\x13\n\x0blocation_id\x18\x05 \x01(\t\"\xf6\x03\n\x0cVideoContext\x12H\n\x08segments\x18\x01 \x03(\x0b\x32\x36.google.cloud.videointelligence.v1p2beta1.VideoSegment\x12^\n\x16label_detection_config\x18\x02 \x01(\x0b\x32>.google.cloud.videointelligence.v1p2beta1.LabelDetectionConfig\x12i\n\x1cshot_change_detection_config\x18\x03 \x01(\x0b\x32\x43.google.cloud.videointelligence.v1p2beta1.ShotChangeDetectionConfig\x12s\n!explicit_content_detection_config\x18\x04 \x01(\x0b\x32H.google.cloud.videointelligence.v1p2beta1.ExplicitContentDetectionConfig\x12\\\n\x15text_detection_config\x18\x08 \x01(\x0b\x32=.google.cloud.videointelligence.v1p2beta1.TextDetectionConfig\"\x9c\x01\n\x14LabelDetectionConfig\x12Z\n\x14label_detection_mode\x18\x01 \x01(\x0e\x32<.google.cloud.videointelligence.v1p2beta1.LabelDetectionMode\x12\x19\n\x11stationary_camera\x18\x02 \x01(\x08\x12\r\n\x05model\x18\x03 \x01(\t\"*\n\x19ShotChangeDetectionConfig\x12\r\n\x05model\x18\x01 \x01(\t\"/\n\x1e\x45xplicitContentDetectionConfig\x12\r\n\x05model\x18\x01 \x01(\t\"-\n\x13TextDetectionConfig\x12\x16\n\x0elanguage_hints\x18\x01 \x03(\t\"x\n\x0cVideoSegment\x12\x34\n\x11start_time_offset\x18\x01 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x32\n\x0f\x65nd_time_offset\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration\"k\n\x0cLabelSegment\x12G\n\x07segment\x18\x01 \x01(\x0b\x32\x36.google.cloud.videointelligence.v1p2beta1.VideoSegment\x12\x12\n\nconfidence\x18\x02 \x01(\x02\"P\n\nLabelFrame\x12.\n\x0btime_offset\x18\x01 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x12\n\nconfidence\x18\x02 \x01(\x02\"G\n\x06\x45ntity\x12\x11\n\tentity_id\x18\x01 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x02 \x01(\t\x12\x15\n\rlanguage_code\x18\x03 \x01(\t\"\xb0\x02\n\x0fLabelAnnotation\x12@\n\x06\x65ntity\x18\x01 \x01(\x0b\x32\x30.google.cloud.videointelligence.v1p2beta1.Entity\x12K\n\x11\x63\x61tegory_entities\x18\x02 \x03(\x0b\x32\x30.google.cloud.videointelligence.v1p2beta1.Entity\x12H\n\x08segments\x18\x03 \x03(\x0b\x32\x36.google.cloud.videointelligence.v1p2beta1.LabelSegment\x12\x44\n\x06\x66rames\x18\x04 \x03(\x0b\x32\x34.google.cloud.videointelligence.v1p2beta1.LabelFrame\"\x9c\x01\n\x14\x45xplicitContentFrame\x12.\n\x0btime_offset\x18\x01 \x01(\x0b\x32\x19.google.protobuf.Duration\x12T\n\x16pornography_likelihood\x18\x02 \x01(\x0e\x32\x34.google.cloud.videointelligence.v1p2beta1.Likelihood\"k\n\x19\x45xplicitContentAnnotation\x12N\n\x06\x66rames\x18\x01 \x03(\x0b\x32>.google.cloud.videointelligence.v1p2beta1.ExplicitContentFrame\"Q\n\x15NormalizedBoundingBox\x12\x0c\n\x04left\x18\x01 \x01(\x02\x12\x0b\n\x03top\x18\x02 \x01(\x02\x12\r\n\x05right\x18\x03 \x01(\x02\x12\x0e\n\x06\x62ottom\x18\x04 \x01(\x02\"\xcb\x05\n\x16VideoAnnotationResults\x12\x11\n\tinput_uri\x18\x01 \x01(\t\x12\\\n\x19segment_label_annotations\x18\x02 \x03(\x0b\x32\x39.google.cloud.videointelligence.v1p2beta1.LabelAnnotation\x12Y\n\x16shot_label_annotations\x18\x03 \x03(\x0b\x32\x39.google.cloud.videointelligence.v1p2beta1.LabelAnnotation\x12Z\n\x17\x66rame_label_annotations\x18\x04 \x03(\x0b\x32\x39.google.cloud.videointelligence.v1p2beta1.LabelAnnotation\x12P\n\x10shot_annotations\x18\x06 \x03(\x0b\x32\x36.google.cloud.videointelligence.v1p2beta1.VideoSegment\x12`\n\x13\x65xplicit_annotation\x18\x07 \x01(\x0b\x32\x43.google.cloud.videointelligence.v1p2beta1.ExplicitContentAnnotation\x12R\n\x10text_annotations\x18\x0c \x03(\x0b\x32\x38.google.cloud.videointelligence.v1p2beta1.TextAnnotation\x12^\n\x12object_annotations\x18\x0e \x03(\x0b\x32\x42.google.cloud.videointelligence.v1p2beta1.ObjectTrackingAnnotation\x12!\n\x05\x65rror\x18\t \x01(\x0b\x32\x12.google.rpc.Status\"u\n\x15\x41nnotateVideoResponse\x12\\\n\x12\x61nnotation_results\x18\x01 \x03(\x0b\x32@.google.cloud.videointelligence.v1p2beta1.VideoAnnotationResults\"\xa7\x01\n\x17VideoAnnotationProgress\x12\x11\n\tinput_uri\x18\x01 \x01(\t\x12\x18\n\x10progress_percent\x18\x02 \x01(\x05\x12.\n\nstart_time\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12/\n\x0bupdate_time\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"w\n\x15\x41nnotateVideoProgress\x12^\n\x13\x61nnotation_progress\x18\x01 \x03(\x0b\x32\x41.google.cloud.videointelligence.v1p2beta1.VideoAnnotationProgress\"(\n\x10NormalizedVertex\x12\t\n\x01x\x18\x01 \x01(\x02\x12\t\n\x01y\x18\x02 \x01(\x02\"f\n\x16NormalizedBoundingPoly\x12L\n\x08vertices\x18\x01 \x03(\x0b\x32:.google.cloud.videointelligence.v1p2beta1.NormalizedVertex\"V\n\x0bTextSegment\x12G\n\x07segment\x18\x01 \x01(\x0b\x32\x36.google.cloud.videointelligence.v1p2beta1.VideoSegment\"\x9b\x01\n\tTextFrame\x12^\n\x14rotated_bounding_box\x18\x01 \x01(\x0b\x32@.google.cloud.videointelligence.v1p2beta1.NormalizedBoundingPoly\x12.\n\x0btime_offset\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration\"\xc0\x01\n\x0eTextAnnotation\x12\x0c\n\x04text\x18\x01 \x01(\t\x12\x12\n\nconfidence\x18\x02 \x01(\x02\x12\x43\n\x06\x66rames\x18\x03 \x03(\x0b\x32\x33.google.cloud.videointelligence.v1p2beta1.TextFrame\x12G\n\x08segments\x18\x04 \x03(\x0b\x32\x35.google.cloud.videointelligence.v1p2beta1.TextSegment\"\xa7\x01\n\x13ObjectTrackingFrame\x12`\n\x17normalized_bounding_box\x18\x01 \x01(\x0b\x32?.google.cloud.videointelligence.v1p2beta1.NormalizedBoundingBox\x12.\n\x0btime_offset\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration\"\x88\x02\n\x18ObjectTrackingAnnotation\x12@\n\x06\x65ntity\x18\x01 \x01(\x0b\x32\x30.google.cloud.videointelligence.v1p2beta1.Entity\x12\x12\n\nconfidence\x18\x04 \x01(\x02\x12M\n\x06\x66rames\x18\x02 \x03(\x0b\x32=.google.cloud.videointelligence.v1p2beta1.ObjectTrackingFrame\x12G\n\x07segment\x18\x03 \x01(\x0b\x32\x36.google.cloud.videointelligence.v1p2beta1.VideoSegment*\x9b\x01\n\x07\x46\x65\x61ture\x12\x17\n\x13\x46\x45\x41TURE_UNSPECIFIED\x10\x00\x12\x13\n\x0fLABEL_DETECTION\x10\x01\x12\x19\n\x15SHOT_CHANGE_DETECTION\x10\x02\x12\x1e\n\x1a\x45XPLICIT_CONTENT_DETECTION\x10\x03\x12\x12\n\x0eTEXT_DETECTION\x10\x07\x12\x13\n\x0fOBJECT_TRACKING\x10\t*r\n\x12LabelDetectionMode\x12$\n LABEL_DETECTION_MODE_UNSPECIFIED\x10\x00\x12\r\n\tSHOT_MODE\x10\x01\x12\x0e\n\nFRAME_MODE\x10\x02\x12\x17\n\x13SHOT_AND_FRAME_MODE\x10\x03*t\n\nLikelihood\x12\x1a\n\x16LIKELIHOOD_UNSPECIFIED\x10\x00\x12\x11\n\rVERY_UNLIKELY\x10\x01\x12\x0c\n\x08UNLIKELY\x10\x02\x12\x0c\n\x08POSSIBLE\x10\x03\x12\n\n\x06LIKELY\x10\x04\x12\x0f\n\x0bVERY_LIKELY\x10\x05\x32\xb2\x01\n\x18VideoIntelligenceService\x12\x95\x01\n\rAnnotateVideo\x12>.google.cloud.videointelligence.v1p2beta1.AnnotateVideoRequest\x1a\x1d.google.longrunning.Operation\"%\x82\xd3\xe4\x93\x02\x1f\"\x1a/v1p2beta1/videos:annotate:\x01*B\x80\x02\n,com.google.cloud.videointelligence.v1p2beta1B\x1dVideoIntelligenceServiceProtoP\x01ZYgoogle.golang.org/genproto/googleapis/cloud/videointelligence/v1p2beta1;videointelligence\xaa\x02(Google.Cloud.VideoIntelligence.V1P2Beta1\xca\x02(Google\\Cloud\\VideoIntelligence\\V1p2beta1b\x06proto3')
+  ,
+  dependencies=[google_dot_api_dot_annotations__pb2.DESCRIPTOR,google_dot_longrunning_dot_operations__pb2.DESCRIPTOR,google_dot_protobuf_dot_duration__pb2.DESCRIPTOR,google_dot_protobuf_dot_timestamp__pb2.DESCRIPTOR,google_dot_rpc_dot_status__pb2.DESCRIPTOR,])
+
+_FEATURE = _descriptor.EnumDescriptor(
+  name='Feature',
+  full_name='google.cloud.videointelligence.v1p2beta1.Feature',
+  filename=None,
+  file=DESCRIPTOR,
+  values=[
+    _descriptor.EnumValueDescriptor(
+      name='FEATURE_UNSPECIFIED', index=0, number=0,
+      options=None,
+      type=None),
+    _descriptor.EnumValueDescriptor(
+      name='LABEL_DETECTION', index=1, number=1,
+      options=None,
+      type=None),
+    _descriptor.EnumValueDescriptor(
+      name='SHOT_CHANGE_DETECTION', index=2, number=2,
+      options=None,
+      type=None),
+    _descriptor.EnumValueDescriptor(
+      name='EXPLICIT_CONTENT_DETECTION', index=3, number=3,
+      options=None,
+      type=None),
+    _descriptor.EnumValueDescriptor(
+      name='TEXT_DETECTION', index=4, number=7,
+      options=None,
+      type=None),
+    _descriptor.EnumValueDescriptor(
+      name='OBJECT_TRACKING', index=5, number=9,
+      options=None,
+      type=None),
+  ],
+  containing_type=None,
+  options=None,
+  serialized_start=4531,
+  serialized_end=4686,
+)
+_sym_db.RegisterEnumDescriptor(_FEATURE)
+
+Feature = enum_type_wrapper.EnumTypeWrapper(_FEATURE)
+_LABELDETECTIONMODE = _descriptor.EnumDescriptor(
+  name='LabelDetectionMode',
+  full_name='google.cloud.videointelligence.v1p2beta1.LabelDetectionMode',
+  filename=None,
+  file=DESCRIPTOR,
+  values=[
+    _descriptor.EnumValueDescriptor(
+      name='LABEL_DETECTION_MODE_UNSPECIFIED', index=0, number=0,
+      options=None,
+      type=None),
+    _descriptor.EnumValueDescriptor(
+      name='SHOT_MODE', index=1, number=1,
+      options=None,
+      type=None),
+    _descriptor.EnumValueDescriptor(
+      name='FRAME_MODE', index=2, number=2,
+      options=None,
+      type=None),
+    _descriptor.EnumValueDescriptor(
+      name='SHOT_AND_FRAME_MODE', index=3, number=3,
+      options=None,
+      type=None),
+  ],
+  containing_type=None,
+  options=None,
+  serialized_start=4688,
+  serialized_end=4802,
+)
+_sym_db.RegisterEnumDescriptor(_LABELDETECTIONMODE)
+
+LabelDetectionMode = enum_type_wrapper.EnumTypeWrapper(_LABELDETECTIONMODE)
+_LIKELIHOOD = _descriptor.EnumDescriptor(
+  name='Likelihood',
+  full_name='google.cloud.videointelligence.v1p2beta1.Likelihood',
+  filename=None,
+  file=DESCRIPTOR,
+  values=[
+    _descriptor.EnumValueDescriptor(
+      name='LIKELIHOOD_UNSPECIFIED', index=0, number=0,
+      options=None,
+      type=None),
+    _descriptor.EnumValueDescriptor(
+      name='VERY_UNLIKELY', index=1, number=1,
+      options=None,
+      type=None),
+    _descriptor.EnumValueDescriptor(
+      name='UNLIKELY', index=2, number=2,
+      options=None,
+      type=None),
+    _descriptor.EnumValueDescriptor(
+      name='POSSIBLE', index=3, number=3,
+      options=None,
+      type=None),
+    _descriptor.EnumValueDescriptor(
+      name='LIKELY', index=4, number=4,
+      options=None,
+      type=None),
+    _descriptor.EnumValueDescriptor(
+      name='VERY_LIKELY', index=5, number=5,
+      options=None,
+      type=None),
+  ],
+  containing_type=None,
+  options=None,
+  serialized_start=4804,
+  serialized_end=4920,
+)
+_sym_db.RegisterEnumDescriptor(_LIKELIHOOD)
+
+Likelihood = enum_type_wrapper.EnumTypeWrapper(_LIKELIHOOD)
+FEATURE_UNSPECIFIED = 0
+LABEL_DETECTION = 1
+SHOT_CHANGE_DETECTION = 2
+EXPLICIT_CONTENT_DETECTION = 3
+TEXT_DETECTION = 7
+OBJECT_TRACKING = 9
+LABEL_DETECTION_MODE_UNSPECIFIED = 0
+SHOT_MODE = 1
+FRAME_MODE = 2
+SHOT_AND_FRAME_MODE = 3
+LIKELIHOOD_UNSPECIFIED = 0
+VERY_UNLIKELY = 1
+UNLIKELY = 2
+POSSIBLE = 3
+LIKELY = 4
+VERY_LIKELY = 5
+
+
+
+_ANNOTATEVIDEOREQUEST = _descriptor.Descriptor(
+  name='AnnotateVideoRequest',
+  full_name='google.cloud.videointelligence.v1p2beta1.AnnotateVideoRequest',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='input_uri', full_name='google.cloud.videointelligence.v1p2beta1.AnnotateVideoRequest.input_uri', index=0,
+      number=1, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=_b("").decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='input_content', full_name='google.cloud.videointelligence.v1p2beta1.AnnotateVideoRequest.input_content', index=1,
+      number=6, type=12, cpp_type=9, label=1,
+      has_default_value=False, default_value=_b(""),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='features', full_name='google.cloud.videointelligence.v1p2beta1.AnnotateVideoRequest.features', index=2,
+      number=2, type=14, cpp_type=8, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='video_context', full_name='google.cloud.videointelligence.v1p2beta1.AnnotateVideoRequest.video_context', index=3,
+      number=3, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='output_uri', full_name='google.cloud.videointelligence.v1p2beta1.AnnotateVideoRequest.output_uri', index=4,
+      number=4, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=_b("").decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='location_id', full_name='google.cloud.videointelligence.v1p2beta1.AnnotateVideoRequest.location_id', index=5,
+      number=5, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=_b("").decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=275,
+  serialized_end=528,
+)
+
+
+_VIDEOCONTEXT = _descriptor.Descriptor(
+  name='VideoContext',
+  full_name='google.cloud.videointelligence.v1p2beta1.VideoContext',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='segments', full_name='google.cloud.videointelligence.v1p2beta1.VideoContext.segments', index=0,
+      number=1, type=11, cpp_type=10, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='label_detection_config', full_name='google.cloud.videointelligence.v1p2beta1.VideoContext.label_detection_config', index=1,
+      number=2, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='shot_change_detection_config', full_name='google.cloud.videointelligence.v1p2beta1.VideoContext.shot_change_detection_config', index=2,
+      number=3, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='explicit_content_detection_config', full_name='google.cloud.videointelligence.v1p2beta1.VideoContext.explicit_content_detection_config', index=3,
+      number=4, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='text_detection_config', full_name='google.cloud.videointelligence.v1p2beta1.VideoContext.text_detection_config', index=4,
+      number=8, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=531,
+  serialized_end=1033,
+)
+
+
+_LABELDETECTIONCONFIG = _descriptor.Descriptor(
+  name='LabelDetectionConfig',
+  full_name='google.cloud.videointelligence.v1p2beta1.LabelDetectionConfig',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='label_detection_mode', full_name='google.cloud.videointelligence.v1p2beta1.LabelDetectionConfig.label_detection_mode', index=0,
+      number=1, type=14, cpp_type=8, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='stationary_camera', full_name='google.cloud.videointelligence.v1p2beta1.LabelDetectionConfig.stationary_camera', index=1,
+      number=2, type=8, cpp_type=7, label=1,
+      has_default_value=False, default_value=False,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='model', full_name='google.cloud.videointelligence.v1p2beta1.LabelDetectionConfig.model', index=2,
+      number=3, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=_b("").decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=1036,
+  serialized_end=1192,
+)
+
+
+_SHOTCHANGEDETECTIONCONFIG = _descriptor.Descriptor(
+  name='ShotChangeDetectionConfig',
+  full_name='google.cloud.videointelligence.v1p2beta1.ShotChangeDetectionConfig',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='model', full_name='google.cloud.videointelligence.v1p2beta1.ShotChangeDetectionConfig.model', index=0,
+      number=1, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=_b("").decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=1194,
+  serialized_end=1236,
+)
+
+
+_EXPLICITCONTENTDETECTIONCONFIG = _descriptor.Descriptor(
+  name='ExplicitContentDetectionConfig',
+  full_name='google.cloud.videointelligence.v1p2beta1.ExplicitContentDetectionConfig',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='model', full_name='google.cloud.videointelligence.v1p2beta1.ExplicitContentDetectionConfig.model', index=0,
+      number=1, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=_b("").decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=1238,
+  serialized_end=1285,
+)
+
+
+_TEXTDETECTIONCONFIG = _descriptor.Descriptor(
+  name='TextDetectionConfig',
+  full_name='google.cloud.videointelligence.v1p2beta1.TextDetectionConfig',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='language_hints', full_name='google.cloud.videointelligence.v1p2beta1.TextDetectionConfig.language_hints', index=0,
+      number=1, type=9, cpp_type=9, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=1287,
+  serialized_end=1332,
+)
+
+
+_VIDEOSEGMENT = _descriptor.Descriptor(
+  name='VideoSegment',
+  full_name='google.cloud.videointelligence.v1p2beta1.VideoSegment',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='start_time_offset', full_name='google.cloud.videointelligence.v1p2beta1.VideoSegment.start_time_offset', index=0,
+      number=1, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='end_time_offset', full_name='google.cloud.videointelligence.v1p2beta1.VideoSegment.end_time_offset', index=1,
+      number=2, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=1334,
+  serialized_end=1454,
+)
+
+
+_LABELSEGMENT = _descriptor.Descriptor(
+  name='LabelSegment',
+  full_name='google.cloud.videointelligence.v1p2beta1.LabelSegment',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='segment', full_name='google.cloud.videointelligence.v1p2beta1.LabelSegment.segment', index=0,
+      number=1, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='confidence', full_name='google.cloud.videointelligence.v1p2beta1.LabelSegment.confidence', index=1,
+      number=2, type=2, cpp_type=6, label=1,
+      has_default_value=False, default_value=float(0),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=1456,
+  serialized_end=1563,
+)
+
+
+_LABELFRAME = _descriptor.Descriptor(
+  name='LabelFrame',
+  full_name='google.cloud.videointelligence.v1p2beta1.LabelFrame',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='time_offset', full_name='google.cloud.videointelligence.v1p2beta1.LabelFrame.time_offset', index=0,
+      number=1, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='confidence', full_name='google.cloud.videointelligence.v1p2beta1.LabelFrame.confidence', index=1,
+      number=2, type=2, cpp_type=6, label=1,
+      has_default_value=False, default_value=float(0),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=1565,
+  serialized_end=1645,
+)
+
+
+_ENTITY = _descriptor.Descriptor(
+  name='Entity',
+  full_name='google.cloud.videointelligence.v1p2beta1.Entity',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='entity_id', full_name='google.cloud.videointelligence.v1p2beta1.Entity.entity_id', index=0,
+      number=1, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=_b("").decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='description', full_name='google.cloud.videointelligence.v1p2beta1.Entity.description', index=1,
+      number=2, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=_b("").decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='language_code', full_name='google.cloud.videointelligence.v1p2beta1.Entity.language_code', index=2,
+      number=3, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=_b("").decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=1647,
+  serialized_end=1718,
+)
+
+
+_LABELANNOTATION = _descriptor.Descriptor(
+  name='LabelAnnotation',
+  full_name='google.cloud.videointelligence.v1p2beta1.LabelAnnotation',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='entity', full_name='google.cloud.videointelligence.v1p2beta1.LabelAnnotation.entity', index=0,
+      number=1, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='category_entities', full_name='google.cloud.videointelligence.v1p2beta1.LabelAnnotation.category_entities', index=1,
+      number=2, type=11, cpp_type=10, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='segments', full_name='google.cloud.videointelligence.v1p2beta1.LabelAnnotation.segments', index=2,
+      number=3, type=11, cpp_type=10, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='frames', full_name='google.cloud.videointelligence.v1p2beta1.LabelAnnotation.frames', index=3,
+      number=4, type=11, cpp_type=10, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=1721,
+  serialized_end=2025,
+)
+
+
+_EXPLICITCONTENTFRAME = _descriptor.Descriptor(
+  name='ExplicitContentFrame',
+  full_name='google.cloud.videointelligence.v1p2beta1.ExplicitContentFrame',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='time_offset', full_name='google.cloud.videointelligence.v1p2beta1.ExplicitContentFrame.time_offset', index=0,
+      number=1, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='pornography_likelihood', full_name='google.cloud.videointelligence.v1p2beta1.ExplicitContentFrame.pornography_likelihood', index=1,
+      number=2, type=14, cpp_type=8, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=2028,
+  serialized_end=2184,
+)
+
+
+_EXPLICITCONTENTANNOTATION = _descriptor.Descriptor(
+  name='ExplicitContentAnnotation',
+  full_name='google.cloud.videointelligence.v1p2beta1.ExplicitContentAnnotation',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='frames', full_name='google.cloud.videointelligence.v1p2beta1.ExplicitContentAnnotation.frames', index=0,
+      number=1, type=11, cpp_type=10, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=2186,
+  serialized_end=2293,
+)
+
+
+_NORMALIZEDBOUNDINGBOX = _descriptor.Descriptor(
+  name='NormalizedBoundingBox',
+  full_name='google.cloud.videointelligence.v1p2beta1.NormalizedBoundingBox',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='left', full_name='google.cloud.videointelligence.v1p2beta1.NormalizedBoundingBox.left', index=0,
+      number=1, type=2, cpp_type=6, label=1,
+      has_default_value=False, default_value=float(0),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='top', full_name='google.cloud.videointelligence.v1p2beta1.NormalizedBoundingBox.top', index=1,
+      number=2, type=2, cpp_type=6, label=1,
+      has_default_value=False, default_value=float(0),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='right', full_name='google.cloud.videointelligence.v1p2beta1.NormalizedBoundingBox.right', index=2,
+      number=3, type=2, cpp_type=6, label=1,
+      has_default_value=False, default_value=float(0),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='bottom', full_name='google.cloud.videointelligence.v1p2beta1.NormalizedBoundingBox.bottom', index=3,
+      number=4, type=2, cpp_type=6, label=1,
+      has_default_value=False, default_value=float(0),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=2295,
+  serialized_end=2376,
+)
+
+
+_VIDEOANNOTATIONRESULTS = _descriptor.Descriptor(
+  name='VideoAnnotationResults',
+  full_name='google.cloud.videointelligence.v1p2beta1.VideoAnnotationResults',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='input_uri', full_name='google.cloud.videointelligence.v1p2beta1.VideoAnnotationResults.input_uri', index=0,
+      number=1, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=_b("").decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='segment_label_annotations', full_name='google.cloud.videointelligence.v1p2beta1.VideoAnnotationResults.segment_label_annotations', index=1,
+      number=2, type=11, cpp_type=10, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='shot_label_annotations', full_name='google.cloud.videointelligence.v1p2beta1.VideoAnnotationResults.shot_label_annotations', index=2,
+      number=3, type=11, cpp_type=10, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='frame_label_annotations', full_name='google.cloud.videointelligence.v1p2beta1.VideoAnnotationResults.frame_label_annotations', index=3,
+      number=4, type=11, cpp_type=10, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='shot_annotations', full_name='google.cloud.videointelligence.v1p2beta1.VideoAnnotationResults.shot_annotations', index=4,
+      number=6, type=11, cpp_type=10, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='explicit_annotation', full_name='google.cloud.videointelligence.v1p2beta1.VideoAnnotationResults.explicit_annotation', index=5,
+      number=7, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='text_annotations', full_name='google.cloud.videointelligence.v1p2beta1.VideoAnnotationResults.text_annotations', index=6,
+      number=12, type=11, cpp_type=10, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='object_annotations', full_name='google.cloud.videointelligence.v1p2beta1.VideoAnnotationResults.object_annotations', index=7,
+      number=14, type=11, cpp_type=10, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='error', full_name='google.cloud.videointelligence.v1p2beta1.VideoAnnotationResults.error', index=8,
+      number=9, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=2379,
+  serialized_end=3094,
+)
+
+
+_ANNOTATEVIDEORESPONSE = _descriptor.Descriptor(
+  name='AnnotateVideoResponse',
+  full_name='google.cloud.videointelligence.v1p2beta1.AnnotateVideoResponse',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='annotation_results', full_name='google.cloud.videointelligence.v1p2beta1.AnnotateVideoResponse.annotation_results', index=0,
+      number=1, type=11, cpp_type=10, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=3096,
+  serialized_end=3213,
+)
+
+
+_VIDEOANNOTATIONPROGRESS = _descriptor.Descriptor(
+  name='VideoAnnotationProgress',
+  full_name='google.cloud.videointelligence.v1p2beta1.VideoAnnotationProgress',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='input_uri', full_name='google.cloud.videointelligence.v1p2beta1.VideoAnnotationProgress.input_uri', index=0,
+      number=1, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=_b("").decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='progress_percent', full_name='google.cloud.videointelligence.v1p2beta1.VideoAnnotationProgress.progress_percent', index=1,
+      number=2, type=5, cpp_type=1, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='start_time', full_name='google.cloud.videointelligence.v1p2beta1.VideoAnnotationProgress.start_time', index=2,
+      number=3, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='update_time', full_name='google.cloud.videointelligence.v1p2beta1.VideoAnnotationProgress.update_time', index=3,
+      number=4, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=3216,
+  serialized_end=3383,
+)
+
+
+_ANNOTATEVIDEOPROGRESS = _descriptor.Descriptor(
+  name='AnnotateVideoProgress',
+  full_name='google.cloud.videointelligence.v1p2beta1.AnnotateVideoProgress',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='annotation_progress', full_name='google.cloud.videointelligence.v1p2beta1.AnnotateVideoProgress.annotation_progress', index=0,
+      number=1, type=11, cpp_type=10, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=3385,
+  serialized_end=3504,
+)
+
+
+_NORMALIZEDVERTEX = _descriptor.Descriptor(
+  name='NormalizedVertex',
+  full_name='google.cloud.videointelligence.v1p2beta1.NormalizedVertex',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='x', full_name='google.cloud.videointelligence.v1p2beta1.NormalizedVertex.x', index=0,
+      number=1, type=2, cpp_type=6, label=1,
+      has_default_value=False, default_value=float(0),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='y', full_name='google.cloud.videointelligence.v1p2beta1.NormalizedVertex.y', index=1,
+      number=2, type=2, cpp_type=6, label=1,
+      has_default_value=False, default_value=float(0),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=3506,
+  serialized_end=3546,
+)
+
+
+_NORMALIZEDBOUNDINGPOLY = _descriptor.Descriptor(
+  name='NormalizedBoundingPoly',
+  full_name='google.cloud.videointelligence.v1p2beta1.NormalizedBoundingPoly',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='vertices', full_name='google.cloud.videointelligence.v1p2beta1.NormalizedBoundingPoly.vertices', index=0,
+      number=1, type=11, cpp_type=10, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=3548,
+  serialized_end=3650,
+)
+
+
+_TEXTSEGMENT = _descriptor.Descriptor(
+  name='TextSegment',
+  full_name='google.cloud.videointelligence.v1p2beta1.TextSegment',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='segment', full_name='google.cloud.videointelligence.v1p2beta1.TextSegment.segment', index=0,
+      number=1, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=3652,
+  serialized_end=3738,
+)
+
+
+_TEXTFRAME = _descriptor.Descriptor(
+  name='TextFrame',
+  full_name='google.cloud.videointelligence.v1p2beta1.TextFrame',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='rotated_bounding_box', full_name='google.cloud.videointelligence.v1p2beta1.TextFrame.rotated_bounding_box', index=0,
+      number=1, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='time_offset', full_name='google.cloud.videointelligence.v1p2beta1.TextFrame.time_offset', index=1,
+      number=2, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=3741,
+  serialized_end=3896,
+)
+
+
+_TEXTANNOTATION = _descriptor.Descriptor(
+  name='TextAnnotation',
+  full_name='google.cloud.videointelligence.v1p2beta1.TextAnnotation',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='text', full_name='google.cloud.videointelligence.v1p2beta1.TextAnnotation.text', index=0,
+      number=1, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=_b("").decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='confidence', full_name='google.cloud.videointelligence.v1p2beta1.TextAnnotation.confidence', index=1,
+      number=2, type=2, cpp_type=6, label=1,
+      has_default_value=False, default_value=float(0),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='frames', full_name='google.cloud.videointelligence.v1p2beta1.TextAnnotation.frames', index=2,
+      number=3, type=11, cpp_type=10, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='segments', full_name='google.cloud.videointelligence.v1p2beta1.TextAnnotation.segments', index=3,
+      number=4, type=11, cpp_type=10, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=3899,
+  serialized_end=4091,
+)
+
+
+_OBJECTTRACKINGFRAME = _descriptor.Descriptor(
+  name='ObjectTrackingFrame',
+  full_name='google.cloud.videointelligence.v1p2beta1.ObjectTrackingFrame',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='normalized_bounding_box', full_name='google.cloud.videointelligence.v1p2beta1.ObjectTrackingFrame.normalized_bounding_box', index=0,
+      number=1, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='time_offset', full_name='google.cloud.videointelligence.v1p2beta1.ObjectTrackingFrame.time_offset', index=1,
+      number=2, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=4094,
+  serialized_end=4261,
+)
+
+
+_OBJECTTRACKINGANNOTATION = _descriptor.Descriptor(
+  name='ObjectTrackingAnnotation',
+  full_name='google.cloud.videointelligence.v1p2beta1.ObjectTrackingAnnotation',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='entity', full_name='google.cloud.videointelligence.v1p2beta1.ObjectTrackingAnnotation.entity', index=0,
+      number=1, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='confidence', full_name='google.cloud.videointelligence.v1p2beta1.ObjectTrackingAnnotation.confidence', index=1,
+      number=4, type=2, cpp_type=6, label=1,
+      has_default_value=False, default_value=float(0),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='frames', full_name='google.cloud.videointelligence.v1p2beta1.ObjectTrackingAnnotation.frames', index=2,
+      number=2, type=11, cpp_type=10, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='segment', full_name='google.cloud.videointelligence.v1p2beta1.ObjectTrackingAnnotation.segment', index=3,
+      number=3, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=4264,
+  serialized_end=4528,
+)
+
+_ANNOTATEVIDEOREQUEST.fields_by_name['features'].enum_type = _FEATURE
+_ANNOTATEVIDEOREQUEST.fields_by_name['video_context'].message_type = _VIDEOCONTEXT
+_VIDEOCONTEXT.fields_by_name['segments'].message_type = _VIDEOSEGMENT
+_VIDEOCONTEXT.fields_by_name['label_detection_config'].message_type = _LABELDETECTIONCONFIG
+_VIDEOCONTEXT.fields_by_name['shot_change_detection_config'].message_type = _SHOTCHANGEDETECTIONCONFIG
+_VIDEOCONTEXT.fields_by_name['explicit_content_detection_config'].message_type = _EXPLICITCONTENTDETECTIONCONFIG
+_VIDEOCONTEXT.fields_by_name['text_detection_config'].message_type = _TEXTDETECTIONCONFIG
+_LABELDETECTIONCONFIG.fields_by_name['label_detection_mode'].enum_type = _LABELDETECTIONMODE
+_VIDEOSEGMENT.fields_by_name['start_time_offset'].message_type = google_dot_protobuf_dot_duration__pb2._DURATION
+_VIDEOSEGMENT.fields_by_name['end_time_offset'].message_type = google_dot_protobuf_dot_duration__pb2._DURATION
+_LABELSEGMENT.fields_by_name['segment'].message_type = _VIDEOSEGMENT
+_LABELFRAME.fields_by_name['time_offset'].message_type = google_dot_protobuf_dot_duration__pb2._DURATION
+_LABELANNOTATION.fields_by_name['entity'].message_type = _ENTITY
+_LABELANNOTATION.fields_by_name['category_entities'].message_type = _ENTITY
+_LABELANNOTATION.fields_by_name['segments'].message_type = _LABELSEGMENT
+_LABELANNOTATION.fields_by_name['frames'].message_type = _LABELFRAME
+_EXPLICITCONTENTFRAME.fields_by_name['time_offset'].message_type = google_dot_protobuf_dot_duration__pb2._DURATION
+_EXPLICITCONTENTFRAME.fields_by_name['pornography_likelihood'].enum_type = _LIKELIHOOD
+_EXPLICITCONTENTANNOTATION.fields_by_name['frames'].message_type = _EXPLICITCONTENTFRAME
+_VIDEOANNOTATIONRESULTS.fields_by_name['segment_label_annotations'].message_type = _LABELANNOTATION
+_VIDEOANNOTATIONRESULTS.fields_by_name['shot_label_annotations'].message_type = _LABELANNOTATION
+_VIDEOANNOTATIONRESULTS.fields_by_name['frame_label_annotations'].message_type = _LABELANNOTATION
+_VIDEOANNOTATIONRESULTS.fields_by_name['shot_annotations'].message_type = _VIDEOSEGMENT
+_VIDEOANNOTATIONRESULTS.fields_by_name['explicit_annotation'].message_type = _EXPLICITCONTENTANNOTATION
+_VIDEOANNOTATIONRESULTS.fields_by_name['text_annotations'].message_type = _TEXTANNOTATION
+_VIDEOANNOTATIONRESULTS.fields_by_name['object_annotations'].message_type = _OBJECTTRACKINGANNOTATION
+_VIDEOANNOTATIONRESULTS.fields_by_name['error'].message_type = google_dot_rpc_dot_status__pb2._STATUS
+_ANNOTATEVIDEORESPONSE.fields_by_name['annotation_results'].message_type = _VIDEOANNOTATIONRESULTS
+_VIDEOANNOTATIONPROGRESS.fields_by_name['start_time'].message_type = google_dot_protobuf_dot_timestamp__pb2._TIMESTAMP
+_VIDEOANNOTATIONPROGRESS.fields_by_name['update_time'].message_type = google_dot_protobuf_dot_timestamp__pb2._TIMESTAMP
+_ANNOTATEVIDEOPROGRESS.fields_by_name['annotation_progress'].message_type = _VIDEOANNOTATIONPROGRESS
+_NORMALIZEDBOUNDINGPOLY.fields_by_name['vertices'].message_type = _NORMALIZEDVERTEX
+_TEXTSEGMENT.fields_by_name['segment'].message_type = _VIDEOSEGMENT
+_TEXTFRAME.fields_by_name['rotated_bounding_box'].message_type = _NORMALIZEDBOUNDINGPOLY
+_TEXTFRAME.fields_by_name['time_offset'].message_type = google_dot_protobuf_dot_duration__pb2._DURATION
+_TEXTANNOTATION.fields_by_name['frames'].message_type = _TEXTFRAME
+_TEXTANNOTATION.fields_by_name['segments'].message_type = _TEXTSEGMENT
+_OBJECTTRACKINGFRAME.fields_by_name['normalized_bounding_box'].message_type = _NORMALIZEDBOUNDINGBOX
+_OBJECTTRACKINGFRAME.fields_by_name['time_offset'].message_type = google_dot_protobuf_dot_duration__pb2._DURATION
+_OBJECTTRACKINGANNOTATION.fields_by_name['entity'].message_type = _ENTITY
+_OBJECTTRACKINGANNOTATION.fields_by_name['frames'].message_type = _OBJECTTRACKINGFRAME
+_OBJECTTRACKINGANNOTATION.fields_by_name['segment'].message_type = _VIDEOSEGMENT
+DESCRIPTOR.message_types_by_name['AnnotateVideoRequest'] = _ANNOTATEVIDEOREQUEST
+DESCRIPTOR.message_types_by_name['VideoContext'] = _VIDEOCONTEXT
+DESCRIPTOR.message_types_by_name['LabelDetectionConfig'] = _LABELDETECTIONCONFIG
+DESCRIPTOR.message_types_by_name['ShotChangeDetectionConfig'] = _SHOTCHANGEDETECTIONCONFIG
+DESCRIPTOR.message_types_by_name['ExplicitContentDetectionConfig'] = _EXPLICITCONTENTDETECTIONCONFIG
+DESCRIPTOR.message_types_by_name['TextDetectionConfig'] = _TEXTDETECTIONCONFIG
+DESCRIPTOR.message_types_by_name['VideoSegment'] = _VIDEOSEGMENT
+DESCRIPTOR.message_types_by_name['LabelSegment'] = _LABELSEGMENT
+DESCRIPTOR.message_types_by_name['LabelFrame'] = _LABELFRAME
+DESCRIPTOR.message_types_by_name['Entity'] = _ENTITY
+DESCRIPTOR.message_types_by_name['LabelAnnotation'] = _LABELANNOTATION
+DESCRIPTOR.message_types_by_name['ExplicitContentFrame'] = _EXPLICITCONTENTFRAME
+DESCRIPTOR.message_types_by_name['ExplicitContentAnnotation'] = _EXPLICITCONTENTANNOTATION
+DESCRIPTOR.message_types_by_name['NormalizedBoundingBox'] = _NORMALIZEDBOUNDINGBOX
+DESCRIPTOR.message_types_by_name['VideoAnnotationResults'] = _VIDEOANNOTATIONRESULTS
+DESCRIPTOR.message_types_by_name['AnnotateVideoResponse'] = _ANNOTATEVIDEORESPONSE
+DESCRIPTOR.message_types_by_name['VideoAnnotationProgress'] = _VIDEOANNOTATIONPROGRESS
+DESCRIPTOR.message_types_by_name['AnnotateVideoProgress'] = _ANNOTATEVIDEOPROGRESS
+DESCRIPTOR.message_types_by_name['NormalizedVertex'] = _NORMALIZEDVERTEX
+DESCRIPTOR.message_types_by_name['NormalizedBoundingPoly'] = _NORMALIZEDBOUNDINGPOLY
+DESCRIPTOR.message_types_by_name['TextSegment'] = _TEXTSEGMENT
+DESCRIPTOR.message_types_by_name['TextFrame'] = _TEXTFRAME
+DESCRIPTOR.message_types_by_name['TextAnnotation'] = _TEXTANNOTATION
+DESCRIPTOR.message_types_by_name['ObjectTrackingFrame'] = _OBJECTTRACKINGFRAME
+DESCRIPTOR.message_types_by_name['ObjectTrackingAnnotation'] = _OBJECTTRACKINGANNOTATION
+DESCRIPTOR.enum_types_by_name['Feature'] = _FEATURE
+DESCRIPTOR.enum_types_by_name['LabelDetectionMode'] = _LABELDETECTIONMODE
+DESCRIPTOR.enum_types_by_name['Likelihood'] = _LIKELIHOOD
+_sym_db.RegisterFileDescriptor(DESCRIPTOR)
+
+AnnotateVideoRequest = _reflection.GeneratedProtocolMessageType('AnnotateVideoRequest', (_message.Message,), dict(
+  DESCRIPTOR = _ANNOTATEVIDEOREQUEST,
+  __module__ = 'google.cloud.videointelligence_v1p2beta1.proto.video_intelligence_pb2'
+  ,
+  __doc__ = """Video annotation request.
+  
+  
+  Attributes:
+      input_uri:
+          Input video location. Currently, only `Google Cloud Storage
+          <https://cloud.google.com/storage/>`__ URIs are supported,
+          which must be specified in the following format:
+          ``gs://bucket-id/object-id`` (other URI formats return [google
+          .rpc.Code.INVALID\_ARGUMENT][google.rpc.Code.INVALID\_ARGUMENT
+          ]). For more information, see `Request URIs
+          </storage/docs/reference-uris>`__. A video URI may include
+          wildcards in ``object-id``, and thus identify multiple videos.
+          Supported wildcards: '\*' to match 0 or more characters; '?'
+          to match 1 character. If unset, the input video should be
+          embedded in the request as ``input_content``. If set,
+          ``input_content`` should be unset.
+      input_content:
+          The video data bytes. If unset, the input video(s) should be
+          specified via ``input_uri``. If set, ``input_uri`` should be
+          unset.
+      features:
+          Requested video annotation features.
+      video_context:
+          Additional video context and/or feature-specific parameters.
+      output_uri:
+          Optional location where the output (in JSON format) should be
+          stored. Currently, only `Google Cloud Storage
+          <https://cloud.google.com/storage/>`__ URIs are supported,
+          which must be specified in the following format:
+          ``gs://bucket-id/object-id`` (other URI formats return [google
+          .rpc.Code.INVALID\_ARGUMENT][google.rpc.Code.INVALID\_ARGUMENT
+          ]). For more information, see `Request URIs
+          </storage/docs/reference-uris>`__.
+      location_id:
+          Optional cloud region where annotation should take place.
+          Supported cloud regions: ``us-east1``, ``us-west1``, ``europe-
+          west1``, ``asia-east1``. If no region is specified, a region
+          will be determined based on video file location.
+  """,
+  # @@protoc_insertion_point(class_scope:google.cloud.videointelligence.v1p2beta1.AnnotateVideoRequest)
+  ))
+_sym_db.RegisterMessage(AnnotateVideoRequest)
+
+VideoContext = _reflection.GeneratedProtocolMessageType('VideoContext', (_message.Message,), dict(
+  DESCRIPTOR = _VIDEOCONTEXT,
+  __module__ = 'google.cloud.videointelligence_v1p2beta1.proto.video_intelligence_pb2'
+  ,
+  __doc__ = """Video context and/or feature-specific parameters.
+  
+  
+  Attributes:
+      segments:
+          Video segments to annotate. The segments may overlap and are
+          not required to be contiguous or span the whole video. If
+          unspecified, each video is treated as a single segment.
+      label_detection_config:
+          Config for LABEL\_DETECTION.
+      shot_change_detection_config:
+          Config for SHOT\_CHANGE\_DETECTION.
+      explicit_content_detection_config:
+          Config for EXPLICIT\_CONTENT\_DETECTION.
+      text_detection_config:
+          Config for TEXT\_DETECTION.
+  """,
+  # @@protoc_insertion_point(class_scope:google.cloud.videointelligence.v1p2beta1.VideoContext)
+  ))
+_sym_db.RegisterMessage(VideoContext)
+
+LabelDetectionConfig = _reflection.GeneratedProtocolMessageType('LabelDetectionConfig', (_message.Message,), dict(
+  DESCRIPTOR = _LABELDETECTIONCONFIG,
+  __module__ = 'google.cloud.videointelligence_v1p2beta1.proto.video_intelligence_pb2'
+  ,
+  __doc__ = """Config for LABEL\_DETECTION.
+  
+  
+  Attributes:
+      label_detection_mode:
+          What labels should be detected with LABEL\_DETECTION, in
+          addition to video-level labels or segment-level labels. If
+          unspecified, defaults to ``SHOT_MODE``.
+      stationary_camera:
+          Whether the video has been shot from a stationary (i.e. non-
+          moving) camera. When set to true, might improve detection
+          accuracy for moving objects. Should be used with
+          ``SHOT_AND_FRAME_MODE`` enabled.
+      model:
+          Model to use for label detection. Supported values:
+          "builtin/stable" (the default if unset) and "builtin/latest".
+  """,
+  # @@protoc_insertion_point(class_scope:google.cloud.videointelligence.v1p2beta1.LabelDetectionConfig)
+  ))
+_sym_db.RegisterMessage(LabelDetectionConfig)
+
+ShotChangeDetectionConfig = _reflection.GeneratedProtocolMessageType('ShotChangeDetectionConfig', (_message.Message,), dict(
+  DESCRIPTOR = _SHOTCHANGEDETECTIONCONFIG,
+  __module__ = 'google.cloud.videointelligence_v1p2beta1.proto.video_intelligence_pb2'
+  ,
+  __doc__ = """Config for SHOT\_CHANGE\_DETECTION.
+  
+  
+  Attributes:
+      model:
+          Model to use for shot change detection. Supported values:
+          "builtin/stable" (the default if unset) and "builtin/latest".
+  """,
+  # @@protoc_insertion_point(class_scope:google.cloud.videointelligence.v1p2beta1.ShotChangeDetectionConfig)
+  ))
+_sym_db.RegisterMessage(ShotChangeDetectionConfig)
+
+ExplicitContentDetectionConfig = _reflection.GeneratedProtocolMessageType('ExplicitContentDetectionConfig', (_message.Message,), dict(
+  DESCRIPTOR = _EXPLICITCONTENTDETECTIONCONFIG,
+  __module__ = 'google.cloud.videointelligence_v1p2beta1.proto.video_intelligence_pb2'
+  ,
+  __doc__ = """Config for EXPLICIT\_CONTENT\_DETECTION.
+  
+  
+  Attributes:
+      model:
+          Model to use for explicit content detection. Supported values:
+          "builtin/stable" (the default if unset) and "builtin/latest".
+  """,
+  # @@protoc_insertion_point(class_scope:google.cloud.videointelligence.v1p2beta1.ExplicitContentDetectionConfig)
+  ))
+_sym_db.RegisterMessage(ExplicitContentDetectionConfig)
+
+TextDetectionConfig = _reflection.GeneratedProtocolMessageType('TextDetectionConfig', (_message.Message,), dict(
+  DESCRIPTOR = _TEXTDETECTIONCONFIG,
+  __module__ = 'google.cloud.videointelligence_v1p2beta1.proto.video_intelligence_pb2'
+  ,
+  __doc__ = """Config for TEXT\_DETECTION.
+  
+  
+  Attributes:
+      language_hints:
+          Language hint can be specified if the language to be detected
+          is known a priori. It can increase the accuracy of the
+          detection. Language hint must be language code in BCP-47
+          format.  Automatic language detection is performed if no hint
+          is provided.
+  """,
+  # @@protoc_insertion_point(class_scope:google.cloud.videointelligence.v1p2beta1.TextDetectionConfig)
+  ))
+_sym_db.RegisterMessage(TextDetectionConfig)
+
+VideoSegment = _reflection.GeneratedProtocolMessageType('VideoSegment', (_message.Message,), dict(
+  DESCRIPTOR = _VIDEOSEGMENT,
+  __module__ = 'google.cloud.videointelligence_v1p2beta1.proto.video_intelligence_pb2'
+  ,
+  __doc__ = """Video segment.
+  
+  
+  Attributes:
+      start_time_offset:
+          Time-offset, relative to the beginning of the video,
+          corresponding to the start of the segment (inclusive).
+      end_time_offset:
+          Time-offset, relative to the beginning of the video,
+          corresponding to the end of the segment (inclusive).
+  """,
+  # @@protoc_insertion_point(class_scope:google.cloud.videointelligence.v1p2beta1.VideoSegment)
+  ))
+_sym_db.RegisterMessage(VideoSegment)
+
+LabelSegment = _reflection.GeneratedProtocolMessageType('LabelSegment', (_message.Message,), dict(
+  DESCRIPTOR = _LABELSEGMENT,
+  __module__ = 'google.cloud.videointelligence_v1p2beta1.proto.video_intelligence_pb2'
+  ,
+  __doc__ = """Video segment level annotation results for label detection.
+  
+  
+  Attributes:
+      segment:
+          Video segment where a label was detected.
+      confidence:
+          Confidence that the label is accurate. Range: [0, 1].
+  """,
+  # @@protoc_insertion_point(class_scope:google.cloud.videointelligence.v1p2beta1.LabelSegment)
+  ))
+_sym_db.RegisterMessage(LabelSegment)
+
+LabelFrame = _reflection.GeneratedProtocolMessageType('LabelFrame', (_message.Message,), dict(
+  DESCRIPTOR = _LABELFRAME,
+  __module__ = 'google.cloud.videointelligence_v1p2beta1.proto.video_intelligence_pb2'
+  ,
+  __doc__ = """Video frame level annotation results for label detection.
+  
+  
+  Attributes:
+      time_offset:
+          Time-offset, relative to the beginning of the video,
+          corresponding to the video frame for this location.
+      confidence:
+          Confidence that the label is accurate. Range: [0, 1].
+  """,
+  # @@protoc_insertion_point(class_scope:google.cloud.videointelligence.v1p2beta1.LabelFrame)
+  ))
+_sym_db.RegisterMessage(LabelFrame)
+
+Entity = _reflection.GeneratedProtocolMessageType('Entity', (_message.Message,), dict(
+  DESCRIPTOR = _ENTITY,
+  __module__ = 'google.cloud.videointelligence_v1p2beta1.proto.video_intelligence_pb2'
+  ,
+  __doc__ = """Detected entity from video analysis.
+  
+  
+  Attributes:
+      entity_id:
+          Opaque entity ID. Some IDs may be available in `Google
+          Knowledge Graph Search API
+          <https://developers.google.com/knowledge-graph/>`__.
+      description:
+          Textual description, e.g. ``Fixed-gear bicycle``.
+      language_code:
+          Language code for ``description`` in BCP-47 format.
+  """,
+  # @@protoc_insertion_point(class_scope:google.cloud.videointelligence.v1p2beta1.Entity)
+  ))
+_sym_db.RegisterMessage(Entity)
+
+LabelAnnotation = _reflection.GeneratedProtocolMessageType('LabelAnnotation', (_message.Message,), dict(
+  DESCRIPTOR = _LABELANNOTATION,
+  __module__ = 'google.cloud.videointelligence_v1p2beta1.proto.video_intelligence_pb2'
+  ,
+  __doc__ = """Label annotation.
+  
+  
+  Attributes:
+      entity:
+          Detected entity.
+      category_entities:
+          Common categories for the detected entity. E.g. when the label
+          is ``Terrier`` the category is likely ``dog``. And in some
+          cases there might be more than one categories e.g. ``Terrier``
+          could also be a ``pet``.
+      segments:
+          All video segments where a label was detected.
+      frames:
+          All video frames where a label was detected.
+  """,
+  # @@protoc_insertion_point(class_scope:google.cloud.videointelligence.v1p2beta1.LabelAnnotation)
+  ))
+_sym_db.RegisterMessage(LabelAnnotation)
+
+ExplicitContentFrame = _reflection.GeneratedProtocolMessageType('ExplicitContentFrame', (_message.Message,), dict(
+  DESCRIPTOR = _EXPLICITCONTENTFRAME,
+  __module__ = 'google.cloud.videointelligence_v1p2beta1.proto.video_intelligence_pb2'
+  ,
+  __doc__ = """Video frame level annotation results for explicit content.
+  
+  
+  Attributes:
+      time_offset:
+          Time-offset, relative to the beginning of the video,
+          corresponding to the video frame for this location.
+      pornography_likelihood:
+          Likelihood of the pornography content..
+  """,
+  # @@protoc_insertion_point(class_scope:google.cloud.videointelligence.v1p2beta1.ExplicitContentFrame)
+  ))
+_sym_db.RegisterMessage(ExplicitContentFrame)
+
+ExplicitContentAnnotation = _reflection.GeneratedProtocolMessageType('ExplicitContentAnnotation', (_message.Message,), dict(
+  DESCRIPTOR = _EXPLICITCONTENTANNOTATION,
+  __module__ = 'google.cloud.videointelligence_v1p2beta1.proto.video_intelligence_pb2'
+  ,
+  __doc__ = """Explicit content annotation (based on per-frame visual signals only). If
+  no explicit content has been detected in a frame, no annotations are
+  present for that frame.
+  
+  
+  Attributes:
+      frames:
+          All video frames where explicit content was detected.
+  """,
+  # @@protoc_insertion_point(class_scope:google.cloud.videointelligence.v1p2beta1.ExplicitContentAnnotation)
+  ))
+_sym_db.RegisterMessage(ExplicitContentAnnotation)
+
+NormalizedBoundingBox = _reflection.GeneratedProtocolMessageType('NormalizedBoundingBox', (_message.Message,), dict(
+  DESCRIPTOR = _NORMALIZEDBOUNDINGBOX,
+  __module__ = 'google.cloud.videointelligence_v1p2beta1.proto.video_intelligence_pb2'
+  ,
+  __doc__ = """Normalized bounding box. The normalized vertex coordinates are relative
+  to the original image. Range: [0, 1].
+  
+  
+  Attributes:
+      left:
+          Left X coordinate.
+      top:
+          Top Y coordinate.
+      right:
+          Right X coordinate.
+      bottom:
+          Bottom Y coordinate.
+  """,
+  # @@protoc_insertion_point(class_scope:google.cloud.videointelligence.v1p2beta1.NormalizedBoundingBox)
+  ))
+_sym_db.RegisterMessage(NormalizedBoundingBox)
+
+VideoAnnotationResults = _reflection.GeneratedProtocolMessageType('VideoAnnotationResults', (_message.Message,), dict(
+  DESCRIPTOR = _VIDEOANNOTATIONRESULTS,
+  __module__ = 'google.cloud.videointelligence_v1p2beta1.proto.video_intelligence_pb2'
+  ,
+  __doc__ = """Annotation results for a single video.
+  
+  
+  Attributes:
+      input_uri:
+          Video file location in `Google Cloud Storage
+          <https://cloud.google.com/storage/>`__.
+      segment_label_annotations:
+          Label annotations on video level or user specified segment
+          level. There is exactly one element for each unique label.
+      shot_label_annotations:
+          Label annotations on shot level. There is exactly one element
+          for each unique label.
+      frame_label_annotations:
+          Label annotations on frame level. There is exactly one element
+          for each unique label.
+      shot_annotations:
+          Shot annotations. Each shot is represented as a video segment.
+      explicit_annotation:
+          Explicit content annotation.
+      text_annotations:
+          OCR text detection and tracking. Annotations for list of
+          detected text snippets. Each will have list of frame
+          information associated with it.
+      object_annotations:
+          Annotations for list of objects detected and tracked in video.
+      error:
+          If set, indicates an error. Note that for a single
+          ``AnnotateVideoRequest`` some videos may succeed and some may
+          fail.
+  """,
+  # @@protoc_insertion_point(class_scope:google.cloud.videointelligence.v1p2beta1.VideoAnnotationResults)
+  ))
+_sym_db.RegisterMessage(VideoAnnotationResults)
+
+AnnotateVideoResponse = _reflection.GeneratedProtocolMessageType('AnnotateVideoResponse', (_message.Message,), dict(
+  DESCRIPTOR = _ANNOTATEVIDEORESPONSE,
+  __module__ = 'google.cloud.videointelligence_v1p2beta1.proto.video_intelligence_pb2'
+  ,
+  __doc__ = """Video annotation response. Included in the ``response`` field of the
+  ``Operation`` returned by the ``GetOperation`` call of the
+  ``google::longrunning::Operations`` service.
+  
+  
+  Attributes:
+      annotation_results:
+          Annotation results for all videos specified in
+          ``AnnotateVideoRequest``.
+  """,
+  # @@protoc_insertion_point(class_scope:google.cloud.videointelligence.v1p2beta1.AnnotateVideoResponse)
+  ))
+_sym_db.RegisterMessage(AnnotateVideoResponse)
+
+VideoAnnotationProgress = _reflection.GeneratedProtocolMessageType('VideoAnnotationProgress', (_message.Message,), dict(
+  DESCRIPTOR = _VIDEOANNOTATIONPROGRESS,
+  __module__ = 'google.cloud.videointelligence_v1p2beta1.proto.video_intelligence_pb2'
+  ,
+  __doc__ = """Annotation progress for a single video.
+  
+  
+  Attributes:
+      input_uri:
+          Video file location in `Google Cloud Storage
+          <https://cloud.google.com/storage/>`__.
+      progress_percent:
+          Approximate percentage processed thus far. Guaranteed to be
+          100 when fully processed.
+      start_time:
+          Time when the request was received.
+      update_time:
+          Time of the most recent update.
+  """,
+  # @@protoc_insertion_point(class_scope:google.cloud.videointelligence.v1p2beta1.VideoAnnotationProgress)
+  ))
+_sym_db.RegisterMessage(VideoAnnotationProgress)
+
+AnnotateVideoProgress = _reflection.GeneratedProtocolMessageType('AnnotateVideoProgress', (_message.Message,), dict(
+  DESCRIPTOR = _ANNOTATEVIDEOPROGRESS,
+  __module__ = 'google.cloud.videointelligence_v1p2beta1.proto.video_intelligence_pb2'
+  ,
+  __doc__ = """Video annotation progress. Included in the ``metadata`` field of the
+  ``Operation`` returned by the ``GetOperation`` call of the
+  ``google::longrunning::Operations`` service.
+  
+  
+  Attributes:
+      annotation_progress:
+          Progress metadata for all videos specified in
+          ``AnnotateVideoRequest``.
+  """,
+  # @@protoc_insertion_point(class_scope:google.cloud.videointelligence.v1p2beta1.AnnotateVideoProgress)
+  ))
+_sym_db.RegisterMessage(AnnotateVideoProgress)
+
+NormalizedVertex = _reflection.GeneratedProtocolMessageType('NormalizedVertex', (_message.Message,), dict(
+  DESCRIPTOR = _NORMALIZEDVERTEX,
+  __module__ = 'google.cloud.videointelligence_v1p2beta1.proto.video_intelligence_pb2'
+  ,
+  __doc__ = """X coordinate.
+  
+  
+  Attributes:
+      y:
+          Y coordinate.
+  """,
+  # @@protoc_insertion_point(class_scope:google.cloud.videointelligence.v1p2beta1.NormalizedVertex)
+  ))
+_sym_db.RegisterMessage(NormalizedVertex)
+
+NormalizedBoundingPoly = _reflection.GeneratedProtocolMessageType('NormalizedBoundingPoly', (_message.Message,), dict(
+  DESCRIPTOR = _NORMALIZEDBOUNDINGPOLY,
+  __module__ = 'google.cloud.videointelligence_v1p2beta1.proto.video_intelligence_pb2'
+  ,
+  __doc__ = """Normalized bounding polygon for text (that might not be aligned with
+  axis). Contains list of the corner points in clockwise order starting
+  from top-left corner. For example, for a rectangular bounding box: When
+  the text is horizontal it might look like: 0----1 \| \| 3----2
+  
+  When it's clockwise rotated 180 degrees around the top-left corner it
+  becomes: 2----3 \| \| 1----0
+  
+  and the vertex order will still be (0, 1, 2, 3). Note that values can be
+  less than 0, or greater than 1 due to trignometric calculations for
+  location of the box.
+  
+  
+  Attributes:
+      vertices:
+          Normalized vertices of the bounding polygon.
+  """,
+  # @@protoc_insertion_point(class_scope:google.cloud.videointelligence.v1p2beta1.NormalizedBoundingPoly)
+  ))
+_sym_db.RegisterMessage(NormalizedBoundingPoly)
+
+TextSegment = _reflection.GeneratedProtocolMessageType('TextSegment', (_message.Message,), dict(
+  DESCRIPTOR = _TEXTSEGMENT,
+  __module__ = 'google.cloud.videointelligence_v1p2beta1.proto.video_intelligence_pb2'
+  ,
+  __doc__ = """Video segment level annotation results for text detection.
+  
+  
+  Attributes:
+      segment:
+          Video segment where a text snippet was detected.
+  """,
+  # @@protoc_insertion_point(class_scope:google.cloud.videointelligence.v1p2beta1.TextSegment)
+  ))
+_sym_db.RegisterMessage(TextSegment)
+
+TextFrame = _reflection.GeneratedProtocolMessageType('TextFrame', (_message.Message,), dict(
+  DESCRIPTOR = _TEXTFRAME,
+  __module__ = 'google.cloud.videointelligence_v1p2beta1.proto.video_intelligence_pb2'
+  ,
+  __doc__ = """Video frame level annotation results for text annotation (OCR). Contains
+  information regarding timestamp and bounding box locations for the
+  frames containing detected OCR text snippets.
+  
+  
+  Attributes:
+      rotated_bounding_box:
+          Bounding polygon of the detected text for this frame.
+      time_offset:
+          Timestamp of this frame.
+  """,
+  # @@protoc_insertion_point(class_scope:google.cloud.videointelligence.v1p2beta1.TextFrame)
+  ))
+_sym_db.RegisterMessage(TextFrame)
+
+TextAnnotation = _reflection.GeneratedProtocolMessageType('TextAnnotation', (_message.Message,), dict(
+  DESCRIPTOR = _TEXTANNOTATION,
+  __module__ = 'google.cloud.videointelligence_v1p2beta1.proto.video_intelligence_pb2'
+  ,
+  __doc__ = """Annotations related to one detected OCR text snippet. This will contain
+  the corresponding text, confidence value, and frame level information
+  for each detection.
+  
+  
+  Attributes:
+      text:
+          The detected text.
+      confidence:
+          Confidence for the track of detected text. It is calculated as
+          the highest over all frames where OCR detected text appears.
+      frames:
+          Information related to the frames where OCR detected text
+          appears.
+      segments:
+          All video segments where OCR detected text appears.
+  """,
+  # @@protoc_insertion_point(class_scope:google.cloud.videointelligence.v1p2beta1.TextAnnotation)
+  ))
+_sym_db.RegisterMessage(TextAnnotation)
+
+ObjectTrackingFrame = _reflection.GeneratedProtocolMessageType('ObjectTrackingFrame', (_message.Message,), dict(
+  DESCRIPTOR = _OBJECTTRACKINGFRAME,
+  __module__ = 'google.cloud.videointelligence_v1p2beta1.proto.video_intelligence_pb2'
+  ,
+  __doc__ = """Video frame level annotations for object detection and tracking. This
+  field stores per frame location, time offset, and confidence.
+  
+  
+  Attributes:
+      normalized_bounding_box:
+          The normalized bounding box location of this object track for
+          the frame.
+      time_offset:
+          The timestamp of the frame in microseconds.
+  """,
+  # @@protoc_insertion_point(class_scope:google.cloud.videointelligence.v1p2beta1.ObjectTrackingFrame)
+  ))
+_sym_db.RegisterMessage(ObjectTrackingFrame)
+
+ObjectTrackingAnnotation = _reflection.GeneratedProtocolMessageType('ObjectTrackingAnnotation', (_message.Message,), dict(
+  DESCRIPTOR = _OBJECTTRACKINGANNOTATION,
+  __module__ = 'google.cloud.videointelligence_v1p2beta1.proto.video_intelligence_pb2'
+  ,
+  __doc__ = """Annotations corresponding to one tracked object.
+  
+  
+  Attributes:
+      entity:
+          Entity to specify the object category that this track is
+          labeled as.
+      confidence:
+          Object category's labeling confidence of this track.
+      frames:
+          Information corresponding to all frames where this object
+          track appears.
+      segment:
+          Each object track corresponds to one video segment where it
+          appears.
+  """,
+  # @@protoc_insertion_point(class_scope:google.cloud.videointelligence.v1p2beta1.ObjectTrackingAnnotation)
+  ))
+_sym_db.RegisterMessage(ObjectTrackingAnnotation)
+
+
+DESCRIPTOR.has_options = True
+DESCRIPTOR._options = _descriptor._ParseOptions(descriptor_pb2.FileOptions(), _b('\n,com.google.cloud.videointelligence.v1p2beta1B\035VideoIntelligenceServiceProtoP\001ZYgoogle.golang.org/genproto/googleapis/cloud/videointelligence/v1p2beta1;videointelligence\252\002(Google.Cloud.VideoIntelligence.V1P2Beta1\312\002(Google\\Cloud\\VideoIntelligence\\V1p2beta1'))
+
+_VIDEOINTELLIGENCESERVICE = _descriptor.ServiceDescriptor(
+  name='VideoIntelligenceService',
+  full_name='google.cloud.videointelligence.v1p2beta1.VideoIntelligenceService',
+  file=DESCRIPTOR,
+  index=0,
+  options=None,
+  serialized_start=4923,
+  serialized_end=5101,
+  methods=[
+  _descriptor.MethodDescriptor(
+    name='AnnotateVideo',
+    full_name='google.cloud.videointelligence.v1p2beta1.VideoIntelligenceService.AnnotateVideo',
+    index=0,
+    containing_service=None,
+    input_type=_ANNOTATEVIDEOREQUEST,
+    output_type=google_dot_longrunning_dot_operations__pb2._OPERATION,
+    options=_descriptor._ParseOptions(descriptor_pb2.MethodOptions(), _b('\202\323\344\223\002\037\"\032/v1p2beta1/videos:annotate:\001*')),
+  ),
+])
+_sym_db.RegisterServiceDescriptor(_VIDEOINTELLIGENCESERVICE)
+
+DESCRIPTOR.services_by_name['VideoIntelligenceService'] = _VIDEOINTELLIGENCESERVICE
+
+# @@protoc_insertion_point(module_scope)
diff --git a/videointelligence/google/cloud/videointelligence_v1p2beta1/proto/video_intelligence_pb2_grpc.py b/videointelligence/google/cloud/videointelligence_v1p2beta1/proto/video_intelligence_pb2_grpc.py
new file mode 100644
index 000000000000..e7b602b2cb72
--- /dev/null
+++ b/videointelligence/google/cloud/videointelligence_v1p2beta1/proto/video_intelligence_pb2_grpc.py
@@ -0,0 +1,50 @@
+# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
+import grpc
+
+from google.cloud.videointelligence_v1p2beta1.proto import video_intelligence_pb2 as google_dot_cloud_dot_videointelligence__v1p2beta1_dot_proto_dot_video__intelligence__pb2
+from google.longrunning import operations_pb2 as google_dot_longrunning_dot_operations__pb2
+
+
+class VideoIntelligenceServiceStub(object):
+  """Service that implements Google Cloud Video Intelligence API.
+  """
+
+  def __init__(self, channel):
+    """Constructor.
+
+    Args:
+      channel: A grpc.Channel.
+    """
+    self.AnnotateVideo = channel.unary_unary(
+        '/google.cloud.videointelligence.v1p2beta1.VideoIntelligenceService/AnnotateVideo',
+        request_serializer=google_dot_cloud_dot_videointelligence__v1p2beta1_dot_proto_dot_video__intelligence__pb2.AnnotateVideoRequest.SerializeToString,
+        response_deserializer=google_dot_longrunning_dot_operations__pb2.Operation.FromString,
+        )
+
+
+class VideoIntelligenceServiceServicer(object):
+  """Service that implements Google Cloud Video Intelligence API.
+  """
+
+  def AnnotateVideo(self, request, context):
+    """Performs asynchronous video annotation. Progress and results can be
+    retrieved through the `google.longrunning.Operations` interface.
+    `Operation.metadata` contains `AnnotateVideoProgress` (progress).
+    `Operation.response` contains `AnnotateVideoResponse` (results).
+    """
+    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
+    context.set_details('Method not implemented!')
+    raise NotImplementedError('Method not implemented!')
+
+
+def add_VideoIntelligenceServiceServicer_to_server(servicer, server):
+  rpc_method_handlers = {
+      'AnnotateVideo': grpc.unary_unary_rpc_method_handler(
+          servicer.AnnotateVideo,
+          request_deserializer=google_dot_cloud_dot_videointelligence__v1p2beta1_dot_proto_dot_video__intelligence__pb2.AnnotateVideoRequest.FromString,
+          response_serializer=google_dot_longrunning_dot_operations__pb2.Operation.SerializeToString,
+      ),
+  }
+  generic_handler = grpc.method_handlers_generic_handler(
+      'google.cloud.videointelligence.v1p2beta1.VideoIntelligenceService', rpc_method_handlers)
+  server.add_generic_rpc_handlers((generic_handler,))
diff --git a/videointelligence/google/cloud/videointelligence_v1p2beta1/types.py b/videointelligence/google/cloud/videointelligence_v1p2beta1/types.py
new file mode 100644
index 000000000000..e7d35d987fa5
--- /dev/null
+++ b/videointelligence/google/cloud/videointelligence_v1p2beta1/types.py
@@ -0,0 +1,59 @@
+# -*- coding: utf-8 -*-
+#
+# Copyright 2018 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.
+
+from __future__ import absolute_import
+import sys
+
+from google.api_core.protobuf_helpers import get_messages
+
+from google.api import http_pb2
+from google.cloud.videointelligence_v1p2beta1.proto import video_intelligence_pb2
+from google.longrunning import operations_pb2
+from google.protobuf import any_pb2
+from google.protobuf import descriptor_pb2
+from google.protobuf import duration_pb2
+from google.protobuf import empty_pb2
+from google.protobuf import timestamp_pb2
+from google.rpc import status_pb2
+
+_shared_modules = [
+    http_pb2,
+    operations_pb2,
+    any_pb2,
+    descriptor_pb2,
+    duration_pb2,
+    empty_pb2,
+    timestamp_pb2,
+    status_pb2,
+]
+
+_local_modules = [
+    video_intelligence_pb2,
+]
+
+names = []
+
+for module in _shared_modules:
+    for name, message in get_messages(module).items():
+        setattr(sys.modules[__name__], name, message)
+        names.append(name)
+for module in _local_modules:
+    for name, message in get_messages(module).items():
+        message.__module__ = 'google.cloud.videointelligence_v1p2beta1.types'
+        setattr(sys.modules[__name__], name, message)
+        names.append(name)
+
+__all__ = tuple(sorted(names))
diff --git a/videointelligence/synth.py b/videointelligence/synth.py
index 6da0ce4e6277..c4c907f8c003 100644
--- a/videointelligence/synth.py
+++ b/videointelligence/synth.py
@@ -19,7 +19,7 @@
 
 gapic = gcp.GAPICGenerator()
 
-versions = ['v1beta1', 'v1beta2', 'v1p1beta1', 'v1']
+versions = ['v1beta1', 'v1beta2', 'v1p1beta1', 'v1p2beta1', 'v1']
 
 
 for version in versions:
