aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Graphics.Nvdec/NvdecDecoderContext.cs
diff options
context:
space:
mode:
authorgdkchan <gab.dark.100@gmail.com>2021-09-28 19:43:40 -0300
committerGitHub <noreply@github.com>2021-09-29 00:43:40 +0200
commitf4f496cb48a59aae36e3252baa90396e1bfadd2e (patch)
tree5594d76b3f1b552f1fecdeda37bd2f6667781a56 /Ryujinx.Graphics.Nvdec/NvdecDecoderContext.cs
parent0d23504e30395ba20d1704da464b41f3fe539062 (diff)
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
Diffstat (limited to 'Ryujinx.Graphics.Nvdec/NvdecDecoderContext.cs')
-rw-r--r--Ryujinx.Graphics.Nvdec/NvdecDecoderContext.cs21
1 files changed, 21 insertions, 0 deletions
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