From f4f496cb48a59aae36e3252baa90396e1bfadd2e Mon Sep 17 00:00:00 2001 From: gdkchan Date: Tue, 28 Sep 2021 19:43:40 -0300 Subject: NVDEC (H264): Use separate contexts per channel and decode frames in DTS order (#2671) * Use separate NVDEC contexts per channel (for FFMPEG) * Remove NVDEC -> VIC frame override hack * Add missing bottom_field_pic_order_in_frame_present_flag * Make FFMPEG logging static * nit: Remove empty lines * New FFMPEG decoding approach -- call h264_decode_frame directly, trim surface cache to reduce memory usage * Fix case * Silence warnings * PR feedback * Per-decoder rather than per-codec ownership of surfaces on the cache --- Ryujinx.Graphics.Nvdec/NvdecDecoderContext.cs | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 Ryujinx.Graphics.Nvdec/NvdecDecoderContext.cs (limited to 'Ryujinx.Graphics.Nvdec/NvdecDecoderContext.cs') diff --git a/Ryujinx.Graphics.Nvdec/NvdecDecoderContext.cs b/Ryujinx.Graphics.Nvdec/NvdecDecoderContext.cs new file mode 100644 index 00000000..90da0bee --- /dev/null +++ b/Ryujinx.Graphics.Nvdec/NvdecDecoderContext.cs @@ -0,0 +1,21 @@ +using Ryujinx.Graphics.Nvdec.H264; +using System; + +namespace Ryujinx.Graphics.Nvdec +{ + class NvdecDecoderContext : IDisposable + { + private Decoder _decoder; + + public Decoder GetDecoder() + { + return _decoder ??= new Decoder(); + } + + public void Dispose() + { + _decoder?.Dispose(); + _decoder = null; + } + } +} \ No newline at end of file -- cgit v1.2.3