code: def video_augmentation(features, hue=False, saturate=False, contrast=False):
    
    inputs, targets = features["inputs"], features["targets"]
    in_steps = common_layers.shape_list(inputs)[0]
  
    # makes sure that the same augmentation is applied to both input and targets.
    # if input is 4-D, then tf.image applies the same transform across the batch.
    video = tf.concat((inputs, targets), axis=0)
    if hue:
      video = tf.image.random_hue(video, max_delta=0.2)
    if saturate:
      video = tf.image.random_saturation(video, lower=0.5, upper=1.5)
    if contrast:
      video = tf.image.random_contrast(video, lower=0.5, upper=1.5)
    features["inputs"], features["targets"] = video[:in_steps], video[in_steps:]
    return features
docs: Augments video with optional hue, saturation and constrast.
  
    Args:
      features: dict, with keys "inputs", "targets".
                features["inputs"], 4-D Tensor, shape=(THWC)
                features["targets"], 4-D Tensor, shape=(THWC)
      hue: bool, apply hue_transform.
      saturate: bool, apply saturation transform.
      contrast: bool, apply constrast transform.
    Returns:
      augment_features: dict with transformed "inputs" and "targets".