vid_us_data_writer.dart 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. import 'dart:typed_data';
  2. ///Not used for now.
  3. class VidUsDataWriter {
  4. final BytesBuilder _builder = BytesBuilder();
  5. Uint8List get data => _builder.toBytes();
  6. void writeString(String value) {
  7. var data = value.codeUnits;
  8. var length = data.length * 2;
  9. writeInt(length);
  10. for (var codeUnit in data) {
  11. _builder.addByte(codeUnit & 0xff);
  12. _builder.addByte((codeUnit >> 8) & 0xff);
  13. }
  14. }
  15. void writeInt(int value) {
  16. var data = Uint8List(4);
  17. data.buffer.asByteData().setInt32(0, value, Endian.little);
  18. _builder.add(data);
  19. }
  20. void writeInt16(int value) {
  21. var data = Uint8List(2);
  22. data.buffer.asByteData().setInt16(0, value, Endian.little);
  23. _builder.add(data);
  24. }
  25. void writeInt64(int value) {
  26. var data = Uint8List(8);
  27. data.buffer.asByteData().setInt64(0, value, Endian.little);
  28. _builder.add(data);
  29. }
  30. void writeInt64V2(int value) {
  31. int low = value & 0xFFFFFFFF;
  32. int high = (value >> 32) & 0xFFFFFFFF;
  33. writeInt(low);
  34. writeInt(high);
  35. }
  36. void writeFloat(double value) {
  37. var data = Uint8List(4);
  38. data.buffer.asByteData().setFloat32(0, value, Endian.little);
  39. _builder.add(data);
  40. }
  41. void writeDouble(double value) {
  42. var data = Uint8List(8);
  43. data.buffer.asByteData().setFloat64(0, value, Endian.little);
  44. _builder.add(data);
  45. }
  46. void writeBool(bool value) {
  47. _builder.addByte(value ? 1 : 0);
  48. }
  49. void writeByte(int value) {
  50. _builder.addByte(value);
  51. }
  52. void writeBytes(Uint8List value) {
  53. writeInt(value.length);
  54. _builder.add(value);
  55. }
  56. void writeLongs(Int64List value) {
  57. _builder.add(value.buffer.asUint8List());
  58. }
  59. }