blob: 7346d3309f2710112b8a9c783c6f0d65e9761139 [file] [log] [blame]
// Copyright 2013 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_CDM_LIBRARY_CDM_CLEAR_KEY_CDM_CDM_VIDEO_DECODER_H_
#define MEDIA_CDM_LIBRARY_CDM_CLEAR_KEY_CDM_CDM_VIDEO_DECODER_H_
#include <stdint.h>
#include <memory>
#include "base/memory/ref_counted.h"
#include "media/base/decoder_buffer.h"
#include "media/base/status.h"
#include "media/cdm/api/content_decryption_module.h"
namespace media {
class CdmHostProxy;
class CdmVideoDecoder {
public:
using CdmVideoFrame = cdm::VideoFrame_2;
virtual ~CdmVideoDecoder() {}
virtual Status Initialize(const cdm::VideoDecoderConfig_3& config) = 0;
virtual void Deinitialize() = 0;
virtual void Reset() = 0;
virtual cdm::Status Decode(scoped_refptr<DecoderBuffer> buffer,
CdmVideoFrame* decoded_frame) = 0;
};
// Creates a CdmVideoDecoder based on the |config|. Returns nullptr if no
// decoder can be created.
std::unique_ptr<CdmVideoDecoder> CreateVideoDecoder(
CdmHostProxy* cdm_host_proxy,
const cdm::VideoDecoderConfig_3& config);
} // namespace media
#endif // MEDIA_CDM_LIBRARY_CDM_CLEAR_KEY_CDM_CDM_VIDEO_DECODER_H_