25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

59 lines
1.8 KiB

  1. using JT1078.FMp4.Interfaces;
  2. using JT1078.FMp4.MessagePack;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Text;
  6. namespace JT1078.FMp4
  7. {
  8. /// <summary>
  9. /// mdhd
  10. /// </summary>
  11. public class MediaHeaderBox : FullBox, IFMp4MessagePackFormatter
  12. {
  13. /// <summary>
  14. /// mdhd
  15. /// </summary>
  16. /// <param name="version"></param>
  17. /// <param name="flags"></param>
  18. public MediaHeaderBox(byte version=1, uint flags=0) : base("mdhd", version, flags)
  19. {
  20. }
  21. public ulong CreationTime { get; set; }
  22. public ulong ModificationTime { get; set; }
  23. public uint Timescale { get; set; }
  24. public ulong Duration { get; set; } = 1;
  25. //public bool Pad { get; set; }
  26. /// <summary>
  27. /// ISO-639-2/T language code
  28. /// ref:doc\fmp4\ISO Language Codes.txt
  29. /// und-undetermined
  30. /// </summary>
  31. public string Language { get; set; } = "und";
  32. public ushort PreDefined { get; set; }
  33. public void ToBuffer(ref FMp4MessagePackWriter writer)
  34. {
  35. Start(ref writer);
  36. WriterFullBoxToBuffer(ref writer);
  37. if (Version == 1)
  38. {
  39. writer.WriteUInt64(CreationTime);
  40. writer.WriteUInt64(ModificationTime);
  41. writer.WriteUInt32(Timescale);
  42. writer.WriteUInt64(Duration);
  43. }
  44. else
  45. {
  46. writer.WriteUInt32((uint)CreationTime);
  47. writer.WriteUInt32((uint)ModificationTime);
  48. writer.WriteUInt32(Timescale);
  49. writer.WriteUInt32((uint)Duration);
  50. }
  51. writer.WriteIso639(Language);
  52. writer.WriteUInt16(PreDefined);
  53. End(ref writer);
  54. }
  55. }
  56. }