Vp9FrameHeader.cs 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. using System.Runtime.InteropServices;
  2. namespace Ryujinx.Graphics.VDec
  3. {
  4. [StructLayout(LayoutKind.Sequential, Pack = 2)]
  5. struct Vp9FrameDimensions
  6. {
  7. public short Width;
  8. public short Height;
  9. public short SubsamplingX; //?
  10. public short SubsamplingY; //?
  11. }
  12. [StructLayout(LayoutKind.Sequential, Pack = 1)]
  13. struct Vp9FrameHeader
  14. {
  15. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
  16. public Vp9FrameDimensions[] RefFrames;
  17. public Vp9FrameDimensions CurrentFrame;
  18. public int Flags;
  19. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
  20. public byte[] RefFrameSignBias;
  21. public byte LoopFilterLevel;
  22. public byte LoopFilterSharpness;
  23. public byte BaseQIndex;
  24. public sbyte DeltaQYDc;
  25. public sbyte DeltaQUvDc;
  26. public sbyte DeltaQUvAc;
  27. [MarshalAs(UnmanagedType.I1)]
  28. public bool Lossless;
  29. public byte TxMode;
  30. [MarshalAs(UnmanagedType.I1)]
  31. public bool AllowHighPrecisionMv;
  32. public byte RawInterpolationFilter;
  33. public byte CompPredMode;
  34. public byte FixCompRef;
  35. public byte VarCompRef0;
  36. public byte VarCompRef1;
  37. public byte TileColsLog2;
  38. public byte TileRowsLog2;
  39. [MarshalAs(UnmanagedType.I1)]
  40. public bool SegmentationEnabled;
  41. [MarshalAs(UnmanagedType.I1)]
  42. public bool SegmentationUpdate;
  43. [MarshalAs(UnmanagedType.I1)]
  44. public bool SegmentationTemporalUpdate;
  45. [MarshalAs(UnmanagedType.I1)]
  46. public bool SegmentationAbsOrDeltaUpdate;
  47. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8 * 4, ArraySubType = UnmanagedType.I1)]
  48. public bool[] FeatureEnabled;
  49. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8 * 4)]
  50. public short[] FeatureData;
  51. [MarshalAs(UnmanagedType.I1)]
  52. public bool LoopFilterDeltaEnabled;
  53. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
  54. public sbyte[] LoopFilterRefDeltas;
  55. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
  56. public sbyte[] LoopFilterModeDeltas;
  57. }
  58. }