//
// Copyright (C) 2020 The Android Open Source Project
//
// 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.

// @generated by protoc-gen-es v2.2.2 with parameter "target=ts"
// @generated from file protos/perfetto/trace/android/frame_timeline_event.proto (package perfetto.protos, syntax proto2)
/* eslint-disable */

import type { GenEnum, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1";
import { enumDesc, fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1";
import type { Message } from "@bufbuild/protobuf";

/**
 * Describes the file protos/perfetto/trace/android/frame_timeline_event.proto.
 */
export const file_protos_perfetto_trace_android_frame_timeline_event: GenFile = /*@__PURE__*/
  fileDesc("Cjhwcm90b3MvcGVyZmV0dG8vdHJhY2UvYW5kcm9pZC9mcmFtZV90aW1lbGluZV9ldmVudC5wcm90bxIPcGVyZmV0dG8ucHJvdG9zIpURChJGcmFtZVRpbWVsaW5lRXZlbnQSZQocZXhwZWN0ZWRfZGlzcGxheV9mcmFtZV9zdGFydBgBIAEoCzI9LnBlcmZldHRvLnByb3Rvcy5GcmFtZVRpbWVsaW5lRXZlbnQuRXhwZWN0ZWREaXNwbGF5RnJhbWVTdGFydEgAEmEKGmFjdHVhbF9kaXNwbGF5X2ZyYW1lX3N0YXJ0GAIgASgLMjsucGVyZmV0dG8ucHJvdG9zLkZyYW1lVGltZWxpbmVFdmVudC5BY3R1YWxEaXNwbGF5RnJhbWVTdGFydEgAEmUKHGV4cGVjdGVkX3N1cmZhY2VfZnJhbWVfc3RhcnQYAyABKAsyPS5wZXJmZXR0by5wcm90b3MuRnJhbWVUaW1lbGluZUV2ZW50LkV4cGVjdGVkU3VyZmFjZUZyYW1lU3RhcnRIABJhChphY3R1YWxfc3VyZmFjZV9mcmFtZV9zdGFydBgEIAEoCzI7LnBlcmZldHRvLnByb3Rvcy5GcmFtZVRpbWVsaW5lRXZlbnQuQWN0dWFsU3VyZmFjZUZyYW1lU3RhcnRIABJBCglmcmFtZV9lbmQYBSABKAsyLC5wZXJmZXR0by5wcm90b3MuRnJhbWVUaW1lbGluZUV2ZW50LkZyYW1lRW5kSAAaeAoZRXhwZWN0ZWRTdXJmYWNlRnJhbWVTdGFydBIOCgZjb29raWUYASABKAMSDQoFdG9rZW4YAiABKAMSGwoTZGlzcGxheV9mcmFtZV90b2tlbhgDIAEoAxILCgNwaWQYBCABKAUSEgoKbGF5ZXJfbmFtZRgFIAEoCRqzAwoXQWN0dWFsU3VyZmFjZUZyYW1lU3RhcnQSDgoGY29va2llGAEgASgDEg0KBXRva2VuGAIgASgDEhsKE2Rpc3BsYXlfZnJhbWVfdG9rZW4YAyABKAMSCwoDcGlkGAQgASgFEhIKCmxheWVyX25hbWUYBSABKAkSRQoMcHJlc2VudF90eXBlGAYgASgOMi8ucGVyZmV0dG8ucHJvdG9zLkZyYW1lVGltZWxpbmVFdmVudC5QcmVzZW50VHlwZRIWCg5vbl90aW1lX2ZpbmlzaBgHIAEoCBIXCg9ncHVfY29tcG9zaXRpb24YCCABKAgSEQoJamFua190eXBlGAkgASgFEksKD3ByZWRpY3Rpb25fdHlwZRgKIAEoDjIyLnBlcmZldHRvLnByb3Rvcy5GcmFtZVRpbWVsaW5lRXZlbnQuUHJlZGljdGlvblR5cGUSEQoJaXNfYnVmZmVyGAsgASgIElAKEmphbmtfc2V2ZXJpdHlfdHlwZRgMIAEoDjI0LnBlcmZldHRvLnByb3Rvcy5GcmFtZVRpbWVsaW5lRXZlbnQuSmFua1NldmVyaXR5VHlwZRpHChlFeHBlY3RlZERpc3BsYXlGcmFtZVN0YXJ0Eg4KBmNvb2tpZRgBIAEoAxINCgV0b2tlbhgCIAEoAxILCgNwaWQYAyABKAUa7wIKF0FjdHVhbERpc3BsYXlGcmFtZVN0YXJ0Eg4KBmNvb2tpZRgBIAEoAxINCgV0b2tlbhgCIAEoAxILCgNwaWQYAyABKAUSRQoMcHJlc2VudF90eXBlGAQgASgOMi8ucGVyZmV0dG8ucHJvdG9zLkZyYW1lVGltZWxpbmVFdmVudC5QcmVzZW50VHlwZRIWCg5vbl90aW1lX2ZpbmlzaBgFIAEoCBIXCg9ncHVfY29tcG9zaXRpb24YBiABKAgSEQoJamFua190eXBlGAcgASgFEksKD3ByZWRpY3Rpb25fdHlwZRgIIAEoDjIyLnBlcmZldHRvLnByb3Rvcy5GcmFtZVRpbWVsaW5lRXZlbnQuUHJlZGljdGlvblR5cGUSUAoSamFua19zZXZlcml0eV90eXBlGAkgASgOMjQucGVyZmV0dG8ucHJvdG9zLkZyYW1lVGltZWxpbmVFdmVudC5KYW5rU2V2ZXJpdHlUeXBlGhoKCEZyYW1lRW5kEg4KBmNvb2tpZRgBIAEoAyKwAgoISmFua1R5cGUSFAoQSkFOS19VTlNQRUNJRklFRBAAEg0KCUpBTktfTk9ORRABEhYKEkpBTktfU0ZfU0NIRURVTElORxACEhkKFUpBTktfUFJFRElDVElPTl9FUlJPUhAEEhQKEEpBTktfRElTUExBWV9IQUwQCBIfChtKQU5LX1NGX0NQVV9ERUFETElORV9NSVNTRUQQEBIfChtKQU5LX1NGX0dQVV9ERUFETElORV9NSVNTRUQQIBIcChhKQU5LX0FQUF9ERUFETElORV9NSVNTRUQQQBIZChRKQU5LX0JVRkZFUl9TVFVGRklORxCAARIRCgxKQU5LX1VOS05PV04QgAISFQoQSkFOS19TRl9TVFVGRklORxCABBIRCgxKQU5LX0RST1BQRUQQgAgiZAoQSmFua1NldmVyaXR5VHlwZRIUChBTRVZFUklUWV9VTktOT1dOEAASEQoNU0VWRVJJVFlfTk9ORRABEhQKEFNFVkVSSVRZX1BBUlRJQUwQAhIRCg1TRVZFUklUWV9GVUxMEAMiigEKC1ByZXNlbnRUeXBlEhcKE1BSRVNFTlRfVU5TUEVDSUZJRUQQABITCg9QUkVTRU5UX09OX1RJTUUQARIQCgxQUkVTRU5UX0xBVEUQAhIRCg1QUkVTRU5UX0VBUkxZEAMSEwoPUFJFU0VOVF9EUk9QUEVEEAQSEwoPUFJFU0VOVF9VTktOT1dOEAUicgoOUHJlZGljdGlvblR5cGUSGgoWUFJFRElDVElPTl9VTlNQRUNJRklFRBAAEhQKEFBSRURJQ1RJT05fVkFMSUQQARIWChJQUkVESUNUSU9OX0VYUElSRUQQAhIWChJQUkVESUNUSU9OX1VOS05PV04QA0IHCgVldmVudA");

/**
 * Generated by SurfaceFlinger's FrameTimeline (go/adaptive-scheduling-fr).
 * Used in comparing the expected timeline of a frame to the actual timeline.
 * Key terms:
 *    1) DisplayFrame - represents SurfaceFlinger's work on a frame(composited)
 *    2) SurfaceFrame - represents App's work on its frame
 *    3) Timeline = start to end of a component's(app/SF) work on a frame.
 * SurfaceFlinger composites frames from many apps together, so
 *    One DisplayFrame can map to N SurfaceFrame(s)
 * This relationship can be reconstructed by using
 *    DisplayFrame.token = SurfaceFrame.display_frame_token
 *
 * @generated from message perfetto.protos.FrameTimelineEvent
 */
export type FrameTimelineEvent = Message<"perfetto.protos.FrameTimelineEvent"> & {
  /**
   * @generated from oneof perfetto.protos.FrameTimelineEvent.event
   */
  event: {
    /**
     * @generated from field: perfetto.protos.FrameTimelineEvent.ExpectedDisplayFrameStart expected_display_frame_start = 1;
     */
    value: FrameTimelineEvent_ExpectedDisplayFrameStart;
    case: "expectedDisplayFrameStart";
  } | {
    /**
     * @generated from field: perfetto.protos.FrameTimelineEvent.ActualDisplayFrameStart actual_display_frame_start = 2;
     */
    value: FrameTimelineEvent_ActualDisplayFrameStart;
    case: "actualDisplayFrameStart";
  } | {
    /**
     * @generated from field: perfetto.protos.FrameTimelineEvent.ExpectedSurfaceFrameStart expected_surface_frame_start = 3;
     */
    value: FrameTimelineEvent_ExpectedSurfaceFrameStart;
    case: "expectedSurfaceFrameStart";
  } | {
    /**
     * @generated from field: perfetto.protos.FrameTimelineEvent.ActualSurfaceFrameStart actual_surface_frame_start = 4;
     */
    value: FrameTimelineEvent_ActualSurfaceFrameStart;
    case: "actualSurfaceFrameStart";
  } | {
    /**
     * @generated from field: perfetto.protos.FrameTimelineEvent.FrameEnd frame_end = 5;
     */
    value: FrameTimelineEvent_FrameEnd;
    case: "frameEnd";
  } | { case: undefined; value?: undefined };
};

/**
 * Describes the message perfetto.protos.FrameTimelineEvent.
 * Use `create(FrameTimelineEventSchema)` to create a new message.
 */
export const FrameTimelineEventSchema: GenMessage<FrameTimelineEvent> = /*@__PURE__*/
  messageDesc(file_protos_perfetto_trace_android_frame_timeline_event, 0);

/**
 * Indicates the start of expected timeline slice for SurfaceFrames.
 *
 * @generated from message perfetto.protos.FrameTimelineEvent.ExpectedSurfaceFrameStart
 */
export type FrameTimelineEvent_ExpectedSurfaceFrameStart = Message<"perfetto.protos.FrameTimelineEvent.ExpectedSurfaceFrameStart"> & {
  /**
   * Cookie used to correlate between the start and end messages of the same
   * frame. Since all values except the ts are same for start and end, cookie
   * helps in preventing redundant data transmission.
   * The same cookie is used only by start and end messages of a single frame
   * and is otherwise unique.
   *
   * @generated from field: optional int64 cookie = 1;
   */
  cookie: bigint;

  /**
   * Token received by the app for its work. Can be shared between multiple
   * layers of the same app (example: pip mode).
   *
   * @generated from field: optional int64 token = 2;
   */
  token: bigint;

  /**
   * The corresponding DisplayFrame token is required to link the App's work
   * with SurfaceFlinger's work. Many SurfaceFrames can be mapped to a single
   * DisplayFrame.
   * this.display_frame_token = DisplayFrame.token
   *
   * @generated from field: optional int64 display_frame_token = 3;
   */
  displayFrameToken: bigint;

  /**
   * Pid of the app. Used in creating the timeline tracks (and slices) inside
   * the respective process track group.
   *
   * @generated from field: optional int32 pid = 4;
   */
  pid: number;

  /**
   * @generated from field: optional string layer_name = 5;
   */
  layerName: string;
};

/**
 * Describes the message perfetto.protos.FrameTimelineEvent.ExpectedSurfaceFrameStart.
 * Use `create(FrameTimelineEvent_ExpectedSurfaceFrameStartSchema)` to create a new message.
 */
export const FrameTimelineEvent_ExpectedSurfaceFrameStartSchema: GenMessage<FrameTimelineEvent_ExpectedSurfaceFrameStart> = /*@__PURE__*/
  messageDesc(file_protos_perfetto_trace_android_frame_timeline_event, 0, 0);

/**
 * Indicates the start of actual timeline slice for SurfaceFrames. Also
 * includes the jank information.
 *
 * @generated from message perfetto.protos.FrameTimelineEvent.ActualSurfaceFrameStart
 */
export type FrameTimelineEvent_ActualSurfaceFrameStart = Message<"perfetto.protos.FrameTimelineEvent.ActualSurfaceFrameStart"> & {
  /**
   * Cookie used to correlate between the start and end messages of the same
   * frame. Since all values except the ts are same for start and end, cookie
   * helps in preventing redundant data transmission.
   * The same cookie is used only by start and end messages of a single frame
   * and is otherwise unique.
   *
   * @generated from field: optional int64 cookie = 1;
   */
  cookie: bigint;

  /**
   * Token received by the app for its work. Can be shared between multiple
   * layers of the same app (example: pip mode).
   *
   * @generated from field: optional int64 token = 2;
   */
  token: bigint;

  /**
   * The corresponding DisplayFrame token is required to link the App's work
   * with SurfaceFlinger's work. Many SurfaceFrames can be mapped to a single
   * DisplayFrame.
   * this.display_frame_token = DisplayFrame.token
   *
   * @generated from field: optional int64 display_frame_token = 3;
   */
  displayFrameToken: bigint;

  /**
   * Pid of the app. Used in creating the timeline tracks (and slices) inside
   * the respective process track group.
   *
   * @generated from field: optional int32 pid = 4;
   */
  pid: number;

  /**
   * @generated from field: optional string layer_name = 5;
   */
  layerName: string;

  /**
   * @generated from field: optional perfetto.protos.FrameTimelineEvent.PresentType present_type = 6;
   */
  presentType: FrameTimelineEvent_PresentType;

  /**
   * @generated from field: optional bool on_time_finish = 7;
   */
  onTimeFinish: boolean;

  /**
   * @generated from field: optional bool gpu_composition = 8;
   */
  gpuComposition: boolean;

  /**
   * A bitmask of JankType. More than one reason can be attributed to a janky
   * frame.
   *
   * @generated from field: optional int32 jank_type = 9;
   */
  jankType: number;

  /**
   * @generated from field: optional perfetto.protos.FrameTimelineEvent.PredictionType prediction_type = 10;
   */
  predictionType: FrameTimelineEvent_PredictionType;

  /**
   * @generated from field: optional bool is_buffer = 11;
   */
  isBuffer: boolean;

  /**
   * @generated from field: optional perfetto.protos.FrameTimelineEvent.JankSeverityType jank_severity_type = 12;
   */
  jankSeverityType: FrameTimelineEvent_JankSeverityType;
};

/**
 * Describes the message perfetto.protos.FrameTimelineEvent.ActualSurfaceFrameStart.
 * Use `create(FrameTimelineEvent_ActualSurfaceFrameStartSchema)` to create a new message.
 */
export const FrameTimelineEvent_ActualSurfaceFrameStartSchema: GenMessage<FrameTimelineEvent_ActualSurfaceFrameStart> = /*@__PURE__*/
  messageDesc(file_protos_perfetto_trace_android_frame_timeline_event, 0, 1);

/**
 * Indicates the start of expected timeline slice for DisplayFrames.
 *
 * @generated from message perfetto.protos.FrameTimelineEvent.ExpectedDisplayFrameStart
 */
export type FrameTimelineEvent_ExpectedDisplayFrameStart = Message<"perfetto.protos.FrameTimelineEvent.ExpectedDisplayFrameStart"> & {
  /**
   * Cookie used to correlate between the start and end messages of the same
   * frame. Since all values except the ts are same for start and end, cookie
   * helps in preventing redundant data transmission.
   * The same cookie is used only by start and end messages of a single frame
   * and is otherwise unique.
   *
   * @generated from field: optional int64 cookie = 1;
   */
  cookie: bigint;

  /**
   * Token received by SurfaceFlinger for its work
   * this.token = SurfaceFrame.display_frame_token
   *
   * @generated from field: optional int64 token = 2;
   */
  token: bigint;

  /**
   * Pid of SurfaceFlinger. Used in creating the timeline tracks (and slices)
   * inside the SurfaceFlinger process group.
   *
   * @generated from field: optional int32 pid = 3;
   */
  pid: number;
};

/**
 * Describes the message perfetto.protos.FrameTimelineEvent.ExpectedDisplayFrameStart.
 * Use `create(FrameTimelineEvent_ExpectedDisplayFrameStartSchema)` to create a new message.
 */
export const FrameTimelineEvent_ExpectedDisplayFrameStartSchema: GenMessage<FrameTimelineEvent_ExpectedDisplayFrameStart> = /*@__PURE__*/
  messageDesc(file_protos_perfetto_trace_android_frame_timeline_event, 0, 2);

/**
 * Indicates the start of actual timeline slice for DisplayFrames. Also
 * includes the jank information.
 *
 * @generated from message perfetto.protos.FrameTimelineEvent.ActualDisplayFrameStart
 */
export type FrameTimelineEvent_ActualDisplayFrameStart = Message<"perfetto.protos.FrameTimelineEvent.ActualDisplayFrameStart"> & {
  /**
   * Cookie used to correlate between the start and end messages of the same
   * frame. Since all values except the ts are same for start and end, cookie
   * helps in preventing redundant data transmission.
   * The same cookie is used only by start and end messages of a single frame
   * and is otherwise unique.
   *
   * @generated from field: optional int64 cookie = 1;
   */
  cookie: bigint;

  /**
   * Token received by SurfaceFlinger for its work
   * this.token = SurfaceFrame.display_frame_token
   *
   * @generated from field: optional int64 token = 2;
   */
  token: bigint;

  /**
   * Pid of SurfaceFlinger. Used in creating the timeline tracks (and slices)
   * inside the SurfaceFlinger process group.
   *
   * @generated from field: optional int32 pid = 3;
   */
  pid: number;

  /**
   * @generated from field: optional perfetto.protos.FrameTimelineEvent.PresentType present_type = 4;
   */
  presentType: FrameTimelineEvent_PresentType;

  /**
   * @generated from field: optional bool on_time_finish = 5;
   */
  onTimeFinish: boolean;

  /**
   * @generated from field: optional bool gpu_composition = 6;
   */
  gpuComposition: boolean;

  /**
   * A bitmask of JankType. More than one reason can be attributed to a janky
   * frame.
   *
   * @generated from field: optional int32 jank_type = 7;
   */
  jankType: number;

  /**
   * @generated from field: optional perfetto.protos.FrameTimelineEvent.PredictionType prediction_type = 8;
   */
  predictionType: FrameTimelineEvent_PredictionType;

  /**
   * @generated from field: optional perfetto.protos.FrameTimelineEvent.JankSeverityType jank_severity_type = 9;
   */
  jankSeverityType: FrameTimelineEvent_JankSeverityType;
};

/**
 * Describes the message perfetto.protos.FrameTimelineEvent.ActualDisplayFrameStart.
 * Use `create(FrameTimelineEvent_ActualDisplayFrameStartSchema)` to create a new message.
 */
export const FrameTimelineEvent_ActualDisplayFrameStartSchema: GenMessage<FrameTimelineEvent_ActualDisplayFrameStart> = /*@__PURE__*/
  messageDesc(file_protos_perfetto_trace_android_frame_timeline_event, 0, 3);

/**
 * FrameEnd just sends the cookie to indicate that the corresponding
 * <display/surface>frame slice's end.
 *
 * @generated from message perfetto.protos.FrameTimelineEvent.FrameEnd
 */
export type FrameTimelineEvent_FrameEnd = Message<"perfetto.protos.FrameTimelineEvent.FrameEnd"> & {
  /**
   * @generated from field: optional int64 cookie = 1;
   */
  cookie: bigint;
};

/**
 * Describes the message perfetto.protos.FrameTimelineEvent.FrameEnd.
 * Use `create(FrameTimelineEvent_FrameEndSchema)` to create a new message.
 */
export const FrameTimelineEvent_FrameEndSchema: GenMessage<FrameTimelineEvent_FrameEnd> = /*@__PURE__*/
  messageDesc(file_protos_perfetto_trace_android_frame_timeline_event, 0, 4);

/**
 * Specifies the reason(s) most likely to have caused the jank.
 * Used as a bitmask.
 *
 * @generated from enum perfetto.protos.FrameTimelineEvent.JankType
 */
export enum FrameTimelineEvent_JankType {
  /**
   * @generated from enum value: JANK_UNSPECIFIED = 0;
   */
  JANK_UNSPECIFIED = 0,

  /**
   * @generated from enum value: JANK_NONE = 1;
   */
  JANK_NONE = 1,

  /**
   * @generated from enum value: JANK_SF_SCHEDULING = 2;
   */
  JANK_SF_SCHEDULING = 2,

  /**
   * @generated from enum value: JANK_PREDICTION_ERROR = 4;
   */
  JANK_PREDICTION_ERROR = 4,

  /**
   * @generated from enum value: JANK_DISPLAY_HAL = 8;
   */
  JANK_DISPLAY_HAL = 8,

  /**
   * @generated from enum value: JANK_SF_CPU_DEADLINE_MISSED = 16;
   */
  JANK_SF_CPU_DEADLINE_MISSED = 16,

  /**
   * @generated from enum value: JANK_SF_GPU_DEADLINE_MISSED = 32;
   */
  JANK_SF_GPU_DEADLINE_MISSED = 32,

  /**
   * @generated from enum value: JANK_APP_DEADLINE_MISSED = 64;
   */
  JANK_APP_DEADLINE_MISSED = 64,

  /**
   * @generated from enum value: JANK_BUFFER_STUFFING = 128;
   */
  JANK_BUFFER_STUFFING = 128,

  /**
   * @generated from enum value: JANK_UNKNOWN = 256;
   */
  JANK_UNKNOWN = 256,

  /**
   * @generated from enum value: JANK_SF_STUFFING = 512;
   */
  JANK_SF_STUFFING = 512,

  /**
   * @generated from enum value: JANK_DROPPED = 1024;
   */
  JANK_DROPPED = 1024,
}

/**
 * Describes the enum perfetto.protos.FrameTimelineEvent.JankType.
 */
export const FrameTimelineEvent_JankTypeSchema: GenEnum<FrameTimelineEvent_JankType> = /*@__PURE__*/
  enumDesc(file_protos_perfetto_trace_android_frame_timeline_event, 0, 0);

/**
 * Specifies the severity of a jank.
 *
 * @generated from enum perfetto.protos.FrameTimelineEvent.JankSeverityType
 */
export enum FrameTimelineEvent_JankSeverityType {
  /**
   * @generated from enum value: SEVERITY_UNKNOWN = 0;
   */
  SEVERITY_UNKNOWN = 0,

  /**
   * @generated from enum value: SEVERITY_NONE = 1;
   */
  SEVERITY_NONE = 1,

  /**
   * @generated from enum value: SEVERITY_PARTIAL = 2;
   */
  SEVERITY_PARTIAL = 2,

  /**
   * @generated from enum value: SEVERITY_FULL = 3;
   */
  SEVERITY_FULL = 3,
}

/**
 * Describes the enum perfetto.protos.FrameTimelineEvent.JankSeverityType.
 */
export const FrameTimelineEvent_JankSeverityTypeSchema: GenEnum<FrameTimelineEvent_JankSeverityType> = /*@__PURE__*/
  enumDesc(file_protos_perfetto_trace_android_frame_timeline_event, 0, 1);

/**
 * Specifies how a frame was presented on screen w.r.t. timing.
 * Can be different for SurfaceFrame and DisplayFrame.
 *
 * @generated from enum perfetto.protos.FrameTimelineEvent.PresentType
 */
export enum FrameTimelineEvent_PresentType {
  /**
   * @generated from enum value: PRESENT_UNSPECIFIED = 0;
   */
  PRESENT_UNSPECIFIED = 0,

  /**
   * @generated from enum value: PRESENT_ON_TIME = 1;
   */
  PRESENT_ON_TIME = 1,

  /**
   * @generated from enum value: PRESENT_LATE = 2;
   */
  PRESENT_LATE = 2,

  /**
   * @generated from enum value: PRESENT_EARLY = 3;
   */
  PRESENT_EARLY = 3,

  /**
   * @generated from enum value: PRESENT_DROPPED = 4;
   */
  PRESENT_DROPPED = 4,

  /**
   * @generated from enum value: PRESENT_UNKNOWN = 5;
   */
  PRESENT_UNKNOWN = 5,
}

/**
 * Describes the enum perfetto.protos.FrameTimelineEvent.PresentType.
 */
export const FrameTimelineEvent_PresentTypeSchema: GenEnum<FrameTimelineEvent_PresentType> = /*@__PURE__*/
  enumDesc(file_protos_perfetto_trace_android_frame_timeline_event, 0, 2);

/**
 * Specifies if the predictions for the frame are still valid, expired or
 * unknown.
 *
 * @generated from enum perfetto.protos.FrameTimelineEvent.PredictionType
 */
export enum FrameTimelineEvent_PredictionType {
  /**
   * @generated from enum value: PREDICTION_UNSPECIFIED = 0;
   */
  PREDICTION_UNSPECIFIED = 0,

  /**
   * @generated from enum value: PREDICTION_VALID = 1;
   */
  PREDICTION_VALID = 1,

  /**
   * @generated from enum value: PREDICTION_EXPIRED = 2;
   */
  PREDICTION_EXPIRED = 2,

  /**
   * @generated from enum value: PREDICTION_UNKNOWN = 3;
   */
  PREDICTION_UNKNOWN = 3,
}

/**
 * Describes the enum perfetto.protos.FrameTimelineEvent.PredictionType.
 */
export const FrameTimelineEvent_PredictionTypeSchema: GenEnum<FrameTimelineEvent_PredictionType> = /*@__PURE__*/
  enumDesc(file_protos_perfetto_trace_android_frame_timeline_event, 0, 3);

