// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef MEDIA_BASE_WAITING_H_
#define MEDIA_BASE_WAITING_H_

#include "base/callback_forward.h"

namespace media {

// Here "waiting" refers to the state that media pipeline stalls waiting because
// of some reason, e.g. no decryption key. It could cause Javascript events like
// "waitingforkey" [1], but not necessarily.
// Note: this generally does not cause the "waiting" event on HTML5 media
// elements [2], which is tightly related to the buffering state change (see
// buffering_state.h).
// [1] https://www.w3.org/TR/encrypted-media/#dom-evt-waitingforkey
// [2]
// https://www.w3.org/TR/html5/semantics-embedded-content.html#eventdef-media-waiting

enum class WaitingReason {
  // The playback cannot proceed because some decryption key is not available.
  // This could happen when the license exchange is delayed or failed. The
  // playback will resume after the decryption key becomes available.
  kNoDecryptionKey,

  // The playback cannot proceed because the decoder has lost its state, e.g.
  // information about reference frames. Usually this only happens to hardware
  // decoders. To recover from this state, reset the decoder and start decoding
  // from a key frame, which can typically be accomplished by a pipeline seek.
  kDecoderStateLost,

  // Must be assigned with the last enum value above.
  kMaxValue = kDecoderStateLost,
};

// Callback to notify waiting state and the reason.
using WaitingCB = base::RepeatingCallback<void(WaitingReason)>;

}  // namespace media

#endif  // MEDIA_BASE_WAITING_H_
