From c86aacde76b5f8e503e2b412385c8491ecc86b3b Mon Sep 17 00:00:00 2001 From: gdkchan Date: Mon, 3 Dec 2018 00:38:47 -0200 Subject: NVDEC implementation using FFmpeg (#443) * Initial nvdec implementation using FFmpeg * Fix swapped channels on the video decoder and the G8R8 texture format * Fix texture samplers not being set properly (regression) * Rebased * Remove unused code introduced on the rebase * Add support for RGBA8 output format on the video image composer * Correct spacing * Some fixes for rebase and other tweaks * Allow size mismatch on frame copy * Get rid of GetHostAddress calls on VDec --- Ryujinx.Graphics/VDec/VpxBitStreamWriter.cs | 38 +++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 Ryujinx.Graphics/VDec/VpxBitStreamWriter.cs (limited to 'Ryujinx.Graphics/VDec/VpxBitStreamWriter.cs') diff --git a/Ryujinx.Graphics/VDec/VpxBitStreamWriter.cs b/Ryujinx.Graphics/VDec/VpxBitStreamWriter.cs new file mode 100644 index 00000000..0c712d2c --- /dev/null +++ b/Ryujinx.Graphics/VDec/VpxBitStreamWriter.cs @@ -0,0 +1,38 @@ +using System.IO; + +namespace Ryujinx.Graphics.VDec +{ + class VpxBitStreamWriter : BitStreamWriter + { + public VpxBitStreamWriter(Stream BaseStream) : base(BaseStream) { } + + public void WriteU(int Value, int ValueSize) + { + WriteBits(Value, ValueSize); + } + + public void WriteS(int Value, int ValueSize) + { + bool Sign = Value < 0; + + if (Sign) + { + Value = -Value; + } + + WriteBits((Value << 1) | (Sign ? 1 : 0), ValueSize + 1); + } + + public void WriteDeltaQ(int Value) + { + bool DeltaCoded = Value != 0; + + WriteBit(DeltaCoded); + + if (DeltaCoded) + { + WriteBits(Value, 4); + } + } + } +} \ No newline at end of file -- cgit v1.2.3