選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

59 行
1.5 KiB

  1. using JT1078.FMp4.Enums;
  2. using JT1078.FMp4.Interfaces;
  3. using JT1078.FMp4.MessagePack;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Text;
  7. namespace JT1078.FMp4
  8. {
  9. /// <summary>
  10. /// hdlr
  11. /// </summary>
  12. public class HandlerBox : FullBox, IFMp4MessagePackFormatter
  13. {
  14. /// <summary>
  15. /// hdlr
  16. /// </summary>
  17. /// <param name="version"></param>
  18. /// <param name="flags"></param>
  19. public HandlerBox(byte version=0, uint flags=0) : base("hdlr", version, flags)
  20. {
  21. }
  22. public uint PreDefined { get; set; }
  23. public HandlerType HandlerType { get; set; }
  24. public uint[] Reserved { get; set; } = new uint[3];
  25. public string Name { get; set; }
  26. public void ToBuffer(ref FMp4MessagePackWriter writer)
  27. {
  28. Start(ref writer);
  29. WriterFullBoxToBuffer(ref writer);
  30. writer.WriteUInt32(PreDefined);
  31. if(HandlerType== HandlerType.none)
  32. {
  33. writer.WriteASCII("null");
  34. }
  35. else
  36. {
  37. writer.WriteASCII(HandlerType.ToString());
  38. }
  39. foreach(var r in Reserved)
  40. {
  41. writer.WriteUInt32(r);
  42. }
  43. if (!string.IsNullOrEmpty(Name))
  44. {
  45. writer.WriteUTF8(Name);
  46. writer.WriteUTF8("\0");
  47. }
  48. else
  49. {
  50. writer.WriteUTF8("\0");
  51. }
  52. End(ref writer);
  53. }
  54. }
  55. }