using Ryujinx.Common.Memory; using Ryujinx.Graphics.Video; namespace Ryujinx.Graphics.Nvdec.Types.Vp9 { struct BackwardUpdates { public Array7>> InterModeCounts; public Array4> YModeCounts; public Array10> UvModeCounts; public Array16> PartitionCounts; public Array4> SwitchableInterpsCount; public Array4> IntraInterCount; public Array5> CompInterCount; public Array5>> SingleRefCount; public Array5> CompRefCount; public Array2> Tx32x32; public Array2> Tx16x16; public Array2> Tx8x8; public Array3> MbSkipCount; public Array4 Joints; public Array2> Sign; public Array2> Classes; public Array2> Class0; public Array2>> Bits; public Array2>> Class0Fp; public Array2> Fp; public Array2> Class0Hp; public Array2> Hp; public Array4>>>>> CoefCounts; public Array4>>>> EobCounts; public BackwardUpdates(ref Vp9BackwardUpdates counts) { InterModeCounts = new Array7>>(); for (int i = 0; i < 7; i++) { InterModeCounts[i][0][0] = counts.InterMode[i][2]; InterModeCounts[i][0][1] = counts.InterMode[i][0] + counts.InterMode[i][1] + counts.InterMode[i][3]; InterModeCounts[i][1][0] = counts.InterMode[i][0]; InterModeCounts[i][1][1] = counts.InterMode[i][1] + counts.InterMode[i][3]; InterModeCounts[i][2][0] = counts.InterMode[i][1]; InterModeCounts[i][2][1] = counts.InterMode[i][3]; } YModeCounts = counts.YMode; UvModeCounts = counts.UvMode; PartitionCounts = counts.Partition; SwitchableInterpsCount = counts.SwitchableInterp; IntraInterCount = counts.IntraInter; CompInterCount = counts.CompInter; SingleRefCount = counts.SingleRef; CompRefCount = counts.CompRef; Tx32x32 = counts.Tx32x32; Tx16x16 = counts.Tx16x16; Tx8x8 = counts.Tx8x8; MbSkipCount = counts.Skip; Joints = counts.Joints; Sign = counts.Sign; Classes = counts.Classes; Class0 = counts.Class0; Bits = counts.Bits; Class0Fp = counts.Class0Fp; Fp = counts.Fp; Class0Hp = counts.Class0Hp; Hp = counts.Hp; CoefCounts = counts.Coef; EobCounts = counts.EobBranch; } } }