VpxBitStreamWriter.cs 800 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. using System.IO;
  2. namespace Ryujinx.Graphics.VDec
  3. {
  4. class VpxBitStreamWriter : BitStreamWriter
  5. {
  6. public VpxBitStreamWriter(Stream baseStream) : base(baseStream) { }
  7. public void WriteU(int value, int valueSize)
  8. {
  9. WriteBits(value, valueSize);
  10. }
  11. public void WriteS(int value, int valueSize)
  12. {
  13. bool sign = value < 0;
  14. if (sign)
  15. {
  16. value = -value;
  17. }
  18. WriteBits((value << 1) | (sign ? 1 : 0), valueSize + 1);
  19. }
  20. public void WriteDeltaQ(int value)
  21. {
  22. bool deltaCoded = value != 0;
  23. WriteBit(deltaCoded);
  24. if (deltaCoded)
  25. {
  26. WriteBits(value, 4);
  27. }
  28. }
  29. }
  30. }