diff options
Diffstat (limited to 'src/video_core/host1x/nvdec.h')
-rw-r--r-- | src/video_core/host1x/nvdec.h | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/src/video_core/host1x/nvdec.h b/src/video_core/host1x/nvdec.h new file mode 100644 index 000000000..41ba1f7a0 --- /dev/null +++ b/src/video_core/host1x/nvdec.h @@ -0,0 +1,38 @@ +// SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include <memory> +#include <vector> +#include "common/common_types.h" +#include "video_core/host1x/codecs/codec.h" + +namespace Tegra { +class GPU; + +namespace Host1x { + +class Nvdec { +public: + explicit Nvdec(GPU& gpu); + ~Nvdec(); + + /// Writes the method into the state, Invoke Execute() if encountered + void ProcessMethod(u32 method, u32 argument); + + /// Return most recently decoded frame + [[nodiscard]] AVFramePtr GetFrame(); + +private: + /// Invoke codec to decode a frame + void Execute(); + + GPU& gpu; + NvdecCommon::NvdecRegisters state; + std::unique_ptr<Codec> codec; +}; + +} // namespace Host1x + +} // namespace Tegra |