<!--
Copyright 2023 The Cobalt Authors. All Rights Reserved.

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

    http://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.
-->

<!--

This file describes the enumerations referenced by entries in histograms.xml for
this directory.

For best practices on writing enumerations descriptions, see
https://chromium.googlesource.com/chromium/src.git/+/HEAD/tools/metrics/histograms/README.md#Enum-Histograms
-->

<histogram-configuration>

<!-- Enum types -->

<enums>

<enum name="Boolean">
  <summary>
    A "True/False" enum for boolean histograms.
  </summary>
  <int value="0" label="False"/>
  <int value="1" label="True"/>
</enum>

<enum name="PipelineStatus">
  <summary>
   Possible status values reported by the Media Pipeline
  </summary>
  <int value="0" label="PIPELINE_OK"/>
  <int value="1" label="PIPELINE_ERROR_URL_NOT_FOUND"/>
  <int value="2" label="PIPELINE_ERROR_NETWORK"/>
  <int value="3" label="PIPELINE_ERROR_DECODE"/>
  <int value="5" label="PIPELINE_ERROR_ABORT"/>
  <int value="6" label="PIPELINE_ERROR_INITIALIZATION_FAILED"/>
  <int value="7" label="PIPELINE_ERROR_REQUIRED_FILTER_MISSING"/>
  <int value="8" label="PIPELINE_ERROR_COULD_NOT_RENDER"/>
  <int value="9" label="PIPELINE_ERROR_READ"/>
  <int value="10" label="PIPELINE_ERROR_OPERATION_PENDING"/>
  <int value="11" label="PIPELINE_ERROR_INVALID_STATE"/>
  <int value="12" label="DEMUXER_ERROR_COULD_NOT_OPEN"/>
  <int value="13" label="DEMUXER_ERROR_COULD_NOT_PARSE"/>
  <int value="14" label="DEMUXER_ERROR_NO_SUPPORTED_STREAMS"/>
  <int value="15" label="DECODER_ERROR_NOT_SUPPORTED"/>
  <int value="16" label="CHUNK_DEMUXER_ERROR_APPEND_FAILED"/>
  <int value="17" label="CHUNK_DEMUXER_ERROR_EOS_STATUS_DECODE_ERROR"/>
  <int value="18" label="CHUNK_DEMUXER_ERROR_EOS_STATUS_NETWORK_ERROR"/>
  <int value="19" label="AUDIO_RENDERER_ERROR"/>
  <int value="20" label="AUDIO_RENDERER_ERROR_SPLICE_FAILED"/>
  <int value="21" label="PIPELINE_ERROR_EXTERNAL_RENDERER_FAILED"/>
  <int value="22" label="DEMUXER_ERROR_DETECTED_HLS"/>
  <int value="23" label="PIPELINE_ERROR_HARDWARE_CONTEXT_RESET"/>
  <!-- Deprecated. Capability change errors are reported with
       PIPELINE_ERROR_DECODE  -->
  <int value="24" label="PLAYBACK_CAPABILITY_CHANGED (deprecated)"/>
</enum>

<enum name="CrashpadInstallationStatus">
  <summary>
   Possible status of Crashpad installation by the Loader App
  </summary>
  <int value="0" label="UNKNOWN"/>
  <int value="1" label="SUCCEEDED"/>
  <int value="2" label="FAILED_CRASHPAD_HANDLER_BINARY_NOT_FOUND"/>
  <int value="3" label="FAILED_DATABASE_INITIALIZATION_FAILED"/>
  <int value="4" label="FAILED_SIGNAL_HANDLER_INSTALLATION_FAILED"/>
</enum>

</enums>

</histogram-configuration>
