using Ryujinx.Common.Memory; using Ryujinx.Graphics.Video; namespace Ryujinx.Graphics.Nvdec.Types.Vp8 { struct PictureInfo { #pragma warning disable CS0649 public Array13 Unknown0; public uint GpTimerTimeoutValue; public ushort FrameWidth; public ushort FrameHeight; public byte KeyFrame; // 1: key frame - 0: not public byte Version; public byte Flags0; // TileFormat : 2 // 0: TBL; 1: KBL; // GobHeight : 3 // Set GOB height, 0: GOB_2, 1: GOB_4, 2: GOB_8, 3: GOB_16, 4: GOB_32 (NVDEC3 onwards) // ReserverdSurfaceFormat : 3 public byte ErrorConcealOn; // 1: error conceal on - 0: off public uint FirstPartSize; // the size of first partition (frame header and mb header partition) public uint HistBufferSize; // in units of 256 public uint VLDBufferSize; // in units of 1 public Array2 FrameStride; // [y_c] public uint LumaTopOffset; // offset of luma top field in units of 256 public uint LumaBotOffset; // offset of luma bottom field in units of 256 public uint LumaFrameOffset; // offset of luma frame in units of 256 public uint ChromaTopOffset; // offset of chroma top field in units of 256 public uint ChromaBotOffset; // offset of chroma bottom field in units of 256 public uint ChromaFrameOffset; // offset of chroma frame in units of 256 public uint Flags1; // EnableTFOutput : 1; // =1, enable dbfdma to output the display surface; if disable, then the following configure on tf is useless. // Remap for VC1 // VC1MapYFlag : 1 // MapYValue : 3 // VC1MapUVFlag : 1 // MapUVValue : 3 // TF // OutStride : 8 // TilingFormat : 3; // OutputStructure : 1 // 0:frame, 1:field // Reserved0 : 11 public Array2 OutputTop; // in units of 256 public Array2 OutputBottom; // in units of 256 // Histogram public uint Flags2; // EnableHistogram : 1 // enable histogram info collection // HistogramStartX : 12 // start X of Histogram window // HistogramStartY : 12 // start Y of Histogram window // Reserved1 : 7 // HistogramEndX : 12 // end X of Histogram window // HistogramEndY : 12 // end y of Histogram window // Reserved2 : 8 // Decode picture buffer related public sbyte CurrentOutputMemoryLayout; public Array3 OutputMemoryLayout; // output NV12/NV24 setting. item 0:golden - 1: altref - 2: last public byte SegmentationFeatureDataUpdate; public Array3 Reserved3; public uint ResultValue; // ucode return result public Array8 PartitionOffset; public Array3 Reserved4; #pragma warning restore CS0649 public Vp8PictureInfo Convert() { return new Vp8PictureInfo() { KeyFrame = KeyFrame != 0, FirstPartSize = FirstPartSize, Version = Version, FrameWidth = FrameWidth, FrameHeight = FrameHeight }; } } }