internal static void FixUIDS(Container c)
{
//Change UIDS to numeric ids.
//Fix Track IDS
List<EbmlGeneric> tracks = c.FindAll(Ids.MATROSKA_ID_TRACKENTRY);
List<EbmlGeneric> gg = c.FindAll(Ids.MATROSKA_ID_TAGTARGETS_TRACKUID);
List<EbmlGeneric> planes = c.FindAll(Ids.MATROSKA_ID_TRACKPLANEUID);
foreach (EbmlMaster j in tracks)
{
EbmlUint u = (EbmlUint)j.FindFirst(Ids.MATROSKA_ID_TRACKUID);
EbmlUint tn = (EbmlUint)j.FindFirst(Ids.MATROSKA_ID_TRACKNUMBER);
foreach (EbmlUint n in planes)
{
if (n.Value == u.Value)
{
n.Value = tn.Value;
break;
}
}
foreach (EbmlUint n in gg)
{
ulong nval = 0;
if (n.Value == u.Value)
{
n.Value = tn.Value;
break;
}
}
u.Value = tn.Value;
}
//Fix Chapters
List<EbmlGeneric> chapters = c.FindAll(Ids.MATROSKA_ID_EDITIONENTRY);
gg = c.FindAll(Ids.MATROSKA_ID_TAGTARGETS_CHAPTERUID);
ulong cnt = 1;
foreach (EbmlMaster j in chapters)
{
EbmlUint u = (EbmlUint)j.FindFirst(Ids.MATROSKA_ID_CHAPTERUID);
foreach (EbmlUint n in gg)
{
if (n.Value == u.Value)
{
n.Value = cnt;
break;
}
}
u.Value = cnt;
u = (EbmlUint)j.FindFirst(Ids.MATROSKA_ID_EDITIONUID);
if (u != null)
u.Value = cnt;
cnt++;
}
//Fix Attachments
List<EbmlGeneric> attachments = c.FindAll(Ids.MATROSKA_ID_ATTACHEDFILE);
gg = c.FindAll(Ids.MATROSKA_ID_TAGTARGETS_ATTACHUID);
cnt = 1;
foreach (EbmlMaster j in chapters)
{
EbmlUint u = (EbmlUint)j.FindFirst(Ids.MATROSKA_ID_FILEUID);
foreach (EbmlUint n in gg)
{
if (n.Value == u.Value)
{
n.Value = cnt;
break;
}
}
u.Value = cnt;
cnt++;
}
}