diff options
| author | bunnei <bunneidev@gmail.com> | 2020-10-26 23:02:42 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-10-26 23:02:42 -0700 |
| commit | d33399e1f46a10490b586196c6d0db0f04be4206 (patch) | |
| tree | 8b2e1d98bf832049936ab931fc3a120e70bc36c2 /src/video_core/command_classes/nvdec.h | |
| parent | c7f32931ee46ef18ed8f9d432a687ca1fa1e974e (diff) | |
| parent | eb67a45ca82bc01ac843c853fd3c17f2a90e0250 (diff) | |
Merge pull request #4729 from ameerj/nvdec-prod
video_core: NVDEC Implementation
Diffstat (limited to 'src/video_core/command_classes/nvdec.h')
| -rw-r--r-- | src/video_core/command_classes/nvdec.h | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/src/video_core/command_classes/nvdec.h b/src/video_core/command_classes/nvdec.h new file mode 100644 index 000000000..c1a9d843e --- /dev/null +++ b/src/video_core/command_classes/nvdec.h @@ -0,0 +1,39 @@ +// Copyright 2020 yuzu Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#pragma once + +#include <vector> +#include "common/common_funcs.h" +#include "common/common_types.h" +#include "video_core/command_classes/codecs/codec.h" + +namespace Tegra { +class GPU; + +class Nvdec { +public: + enum class Method : u32 { + SetVideoCodec = 0x80, + Execute = 0xc0, + }; + + explicit Nvdec(GPU& gpu); + ~Nvdec(); + + /// Writes the method into the state, Invoke Execute() if encountered + void ProcessMethod(Nvdec::Method method, const std::vector<u32>& arguments); + + /// Return most recently decoded frame + AVFrame* GetFrame(); + const AVFrame* GetFrame() const; + +private: + /// Invoke codec to decode a frame + void Execute(); + + GPU& gpu; + std::unique_ptr<Tegra::Codec> codec; +}; +} // namespace Tegra |
