camera_metadata: update high speed video recording API

* Update high speed video recording API to support batch mode recording.
* Update the cropRegion doc for sensor cropped output case.
* Add Enum type deprecation codegen support

Bug: 21442271
Bug: 21025492
Change-Id: I62de6067c75fcfbe6320dd987cce65843d810021
diff --git a/camera/docs/metadata_model.py b/camera/docs/metadata_model.py
index e4e1810..315c97c 100644
--- a/camera/docs/metadata_model.py
+++ b/camera/docs/metadata_model.py
@@ -943,14 +943,16 @@
   Attributes (Read-Only):
     name: A string,                 e.g. 'ON' or 'OFF'
     id: An optional numeric string, e.g. '0' or '0xFF'
+    deprecated: A boolean, True if the enum should be deprecated.
     optional: A boolean
     hidden: A boolean, True if the enum should be hidden.
     notes: A string describing the notes, or None.
     parent: An edge to the parent, always an Enum instance.
   """
-  def __init__(self, name, parent, id=None, optional=False, hidden=False, notes=None):
+  def __init__(self, name, parent, id=None, deprecated=False, optional=False, hidden=False, notes=None):
     self._name = name                    # str, e.g. 'ON' or 'OFF'
     self._id = id                        # int, e.g. '0'
+    self._deprecated = deprecated        # bool
     self._optional = optional            # bool
     self._hidden = hidden                # bool
     self._notes = notes                  # None or str
@@ -961,6 +963,10 @@
     return self._id
 
   @property
+  def deprecated(self):
+    return self._deprecated
+
+  @property
   def optional(self):
     return self._optional
 
@@ -985,9 +991,9 @@
     has_values_with_id: A boolean representing if any of the children have a
         non-empty id property.
   """
-  def __init__(self, parent, values, ids={}, optionals=[], hiddens=[], notes={}):
+  def __init__(self, parent, values, ids={}, deprecateds=[], optionals=[], hiddens=[], notes={}):
     self._values =                                                             \
-      [ EnumValue(val, self, ids.get(val), val in optionals, val in hiddens,   \
+      [ EnumValue(val, self, ids.get(val), val in deprecateds, val in optionals, val in hiddens,  \
                   notes.get(val))                                              \
         for val in values ]
 
@@ -1237,6 +1243,7 @@
 
     # access these via the 'enum' prop
     enum_values = kwargs.get('enum_values')
+    enum_deprecateds = kwargs.get('enum_deprecateds')
     enum_optionals = kwargs.get('enum_optionals')
     enum_hiddens = kwargs.get('enum_hiddens')
     enum_notes = kwargs.get('enum_notes')  # { value => notes }
@@ -1257,7 +1264,7 @@
     self._typedef = None # Filled in by Metadata::_construct_types
 
     if kwargs.get('enum', False):
-      self._enum = Enum(self, enum_values, enum_ids, enum_optionals,
+      self._enum = Enum(self, enum_values, enum_ids, enum_deprecateds, enum_optionals,
                         enum_hiddens, enum_notes)
     else:
       self._enum = None