Selaa lähdekoodia

添加fmp4所需要的盒子编码器

tags/v1.1.0
SmallChi(Koike) 4 vuotta sitten
vanhempi
commit
560ffeaef0
5 muutettua tiedostoa jossa 70 lisäystä ja 17 poistoa
  1. +0
    -1
      src/JT1078.FMp4/Boxs/SampleDependencyTypeBox.cs
  2. +0
    -1
      src/JT1078.FMp4/Boxs/TrackFragmentHeaderBox.cs
  3. +55
    -10
      src/JT1078.FMp4/Boxs/TrackFragmentRandomAccessBox.cs
  4. +5
    -1
      src/JT1078.FMp4/Boxs/TrackRunBox.cs
  5. +10
    -4
      src/JT1078.FMp4/JT1078.FMp4.xml

+ 0
- 1
src/JT1078.FMp4/Boxs/SampleDependencyTypeBox.cs Näytä tiedosto

@@ -30,7 +30,6 @@ namespace JT1078.FMp4
WriterFullBoxToBuffer(ref writer);
if(SampleDependencyTypes!=null && SampleDependencyTypes.Count > 0)
{
//todo: wait ref doc
foreach(var item in SampleDependencyTypes)
{
writer.WriteByte(item.IsLeading);


+ 0
- 1
src/JT1078.FMp4/Boxs/TrackFragmentHeaderBox.cs Näytä tiedosto

@@ -41,7 +41,6 @@ namespace JT1078.FMp4
Start(ref writer);
WriterFullBoxToBuffer(ref writer);
writer.WriteUInt32(TrackID);
//todo:all the following are optional fields
End(ref writer);
}
}


+ 55
- 10
src/JT1078.FMp4/Boxs/TrackFragmentRandomAccessBox.cs Näytä tiedosto

@@ -21,21 +21,21 @@ namespace JT1078.FMp4
}
public uint TrackID { get; set; }
/// <summary>
/// 4byte 32-26
/// 26bit
/// </summary>
public uint Reserved { get; set; } = 26;
private uint Reserved { get; set; } = 0;
/// <summary>
/// 4byte 32-28
/// 2bit
/// </summary>
public uint LengthSizeOfTrafNum { get; set; }
public byte LengthSizeOfTrafNum { get; set; }
/// <summary>
/// 4byte 32-30
/// 2bit
/// </summary>
public uint LengthSizeOfTrunNum { get; set; }
public byte LengthSizeOfTrunNum { get; set; }
/// <summary>
/// 4byte 32-32
/// 2bit
/// </summary>
public uint LengthSizeOfSampleNum { get; set; }
public byte LengthSizeOfSampleNum { get; set; }
public uint NumberOfEntry { get; set; }
public List<TrackFragmentRandomAccessInfo> TrackFragmentRandomAccessInfos { get; set; }

@@ -43,11 +43,56 @@ namespace JT1078.FMp4
{
Start(ref writer);
WriterFullBoxToBuffer(ref writer);

//todo:tfra
writer.WriteUInt32(TrackID);
writer.WriteUInt32((uint)(LengthSizeOfSampleNum | (LengthSizeOfTrunNum << 2) | (LengthSizeOfTrafNum << 4)));
if(TrackFragmentRandomAccessInfos!=null && TrackFragmentRandomAccessInfos.Count > 0)
{
foreach (var item in TrackFragmentRandomAccessInfos)
{
if (Version == 1)
{
writer.WriteUInt64(item.Time);
writer.WriteUInt64(item.MoofOffset);
}
else
{
writer.WriteUInt32((uint)item.Time);
writer.WriteUInt32((uint)item.MoofOffset);
}
var length_size_of_traf_num = LengthSizeOfTrafNum + 1;
ControlSizeOf(ref writer, item.TrafNumber, length_size_of_traf_num);
var length_size_of_trun_num = LengthSizeOfTrunNum + 1;
ControlSizeOf(ref writer, item.TrunNumber, length_size_of_trun_num);
var length_size_of_sample_num = LengthSizeOfSampleNum + 1;
ControlSizeOf(ref writer, item.SampleNumber, length_size_of_sample_num);
}
}
else
{
writer.WriteUInt32(0);
}
End(ref writer);
}

private void ControlSizeOf(ref FMp4MessagePackWriter writer,uint value,int length)
{
switch (length)
{
case 1:
writer.WriteByte((byte)value);
break;
case 2:
writer.WriteUInt16((ushort)value);
break;
case 3:
writer.WriteUInt24(value);
break;
case 4:
writer.WriteUInt32(value);
break;
}
}

public class TrackFragmentRandomAccessInfo
{
public ulong Time { get; set; }


+ 5
- 1
src/JT1078.FMp4/Boxs/TrackRunBox.cs Näytä tiedosto

@@ -25,8 +25,12 @@ namespace JT1078.FMp4
/// 可选的
/// </summary>
public int DataOffset { get; set; }
/// <summary>
/// 可选的
/// </summary>
public uint FirstSampleFlags { get; set; }
/// <summary>
/// 可选的
/// length:SampleCount
/// </summary>
public List<TrackRunInfo> TrackRunInfos { get; set; }
@@ -35,7 +39,7 @@ namespace JT1078.FMp4
{
Start(ref writer);
WriterFullBoxToBuffer(ref writer);
//todo: TrackRunBox
writer.WriteUInt32(SampleCount);
End(ref writer);
}



+ 10
- 4
src/JT1078.FMp4/JT1078.FMp4.xml Näytä tiedosto

@@ -824,22 +824,22 @@
</member>
<member name="P:JT1078.FMp4.TrackFragmentRandomAccessBox.Reserved">
<summary>
4byte 32-26
26bit
</summary>
</member>
<member name="P:JT1078.FMp4.TrackFragmentRandomAccessBox.LengthSizeOfTrafNum">
<summary>
4byte 32-28
2bit
</summary>
</member>
<member name="P:JT1078.FMp4.TrackFragmentRandomAccessBox.LengthSizeOfTrunNum">
<summary>
4byte 32-30
2bit
</summary>
</member>
<member name="P:JT1078.FMp4.TrackFragmentRandomAccessBox.LengthSizeOfSampleNum">
<summary>
4byte 32-32
2bit
</summary>
</member>
<member name="T:JT1078.FMp4.TrackHeaderBox">
@@ -871,8 +871,14 @@
可选的
</summary>
</member>
<member name="P:JT1078.FMp4.TrackRunBox.FirstSampleFlags">
<summary>
可选的
</summary>
</member>
<member name="P:JT1078.FMp4.TrackRunBox.TrackRunInfos">
<summary>
可选的
length:SampleCount
</summary>
</member>


Ladataan…
Peruuta
Tallenna