blob: 697563e876e29731650c519694005880f03105ac [file] [edit]
// Copyright 2023 The Chromium Authors
// Copyright 2024 The ChromiumOS Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef VPX_DECODER_DELEGATE_H_
#define VPX_DECODER_DELEGATE_H_
#include <va/va.h>
#include <memory>
#include "context_delegate.h"
struct vpx_codec_ctx;
namespace libvafake {
// Class used for libvpx software decoding.
class VpxDecoderDelegate : public ContextDelegate {
public:
VpxDecoderDelegate(int picture_width_hint,
int picture_height_hint,
VAProfile profile);
VpxDecoderDelegate(const VpxDecoderDelegate&) = delete;
VpxDecoderDelegate& operator=(const VpxDecoderDelegate&) = delete;
~VpxDecoderDelegate() override;
// ContextDelegate implementation.
void SetRenderTarget(const FakeSurface& surface) override;
void EnqueueWork(const std::vector<const FakeBuffer*>& buffers) override;
void Run() override;
private:
const FakeBuffer* encoded_data_buffer_ = nullptr;
const FakeSurface* render_target_ = nullptr;
std::unique_ptr<vpx_codec_ctx> vpx_codec_;
};
} // namespace libvafake
#endif // VPX_DECODER_DELEGATE_H_