mirror of
https://gitlab.com/mbunkus/mkvtoolnix.git
synced 2024-12-24 20:01:53 +00:00
Added support for the missing tags: KaxTagMultiComment, KaxTagMultiCommentName, KaxTagMultiCommentComments and KaxTagMultiCommentLanguage.
This commit is contained in:
parent
c9b60d2b73
commit
5a77526f23
@ -1,3 +1,10 @@
|
|||||||
|
2003-07-07 Moritz Bunkus <moritz@bunkus.org>
|
||||||
|
|
||||||
|
* mkvinfo: Added support for the rest of the tags:
|
||||||
|
KaxTagMultiComment, KaxTagMultiCommentName,
|
||||||
|
KaxTagMultiCommentComments and KaxTagMultiCommentLanguage. Almost
|
||||||
|
all tags have been successfully tested.
|
||||||
|
|
||||||
2003-07-06 Moritz Bunkus <moritz@bunkus.org>
|
2003-07-06 Moritz Bunkus <moritz@bunkus.org>
|
||||||
|
|
||||||
* Added a RealMedia demuxer that can handle both RealVideo and
|
* Added a RealMedia demuxer that can handle both RealVideo and
|
||||||
|
339
mkvinfo.cpp
339
mkvinfo.cpp
@ -215,14 +215,70 @@ void parse_args(int argc, char **argv, char *&file_name, bool &use_gui) {
|
|||||||
file_name = argv[i];
|
file_name = argv[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
int is_ebmlvoid(EbmlElement *l, int level) {
|
bool is_ebmlvoid(EbmlElement *l, int level) {
|
||||||
if (EbmlId(*l) == EbmlVoid::ClassInfos.GlobalId) {
|
if (EbmlId(*l) == EbmlVoid::ClassInfos.GlobalId) {
|
||||||
show_element(l, level, "EbmlVoid");
|
show_element(l, level, "EbmlVoid");
|
||||||
|
|
||||||
return 1;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool parse_multicomment(EbmlStream *es, EbmlElement *l0, int level,
|
||||||
|
int &upper_lvl_el, EbmlElement *&l_upper) {
|
||||||
|
EbmlElement *l1;
|
||||||
|
|
||||||
|
if (EbmlId(*l0) == KaxTagMultiComment::ClassInfos.GlobalId) {
|
||||||
|
show_element(l0, level, "MultiComment");
|
||||||
|
|
||||||
|
l1 = es->FindNextElement(l0->Generic().Context, upper_lvl_el,
|
||||||
|
0xFFFFFFFFL, true, 1);
|
||||||
|
while (l1 != NULL) {
|
||||||
|
if (upper_lvl_el != 0) {
|
||||||
|
l_upper = l1;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (EbmlId(*l1) == KaxTagMultiCommentName::ClassInfos.GlobalId) {
|
||||||
|
KaxTagMultiCommentName &c_name =
|
||||||
|
*static_cast<KaxTagMultiCommentName *>(l1);
|
||||||
|
c_name.ReadData(es->I_O());
|
||||||
|
show_element(l1, level + 1, "Name: %s", string(c_name).c_str());
|
||||||
|
|
||||||
|
} else if (EbmlId(*l1) ==
|
||||||
|
KaxTagMultiCommentComments::ClassInfos.GlobalId) {
|
||||||
|
char *str;
|
||||||
|
|
||||||
|
KaxTagMultiCommentComments &c_comments =
|
||||||
|
*static_cast<KaxTagMultiCommentComments *>(l1);
|
||||||
|
c_comments.ReadData(es->I_O());
|
||||||
|
str = UTFstring_to_cstr(UTFstring(c_comments));
|
||||||
|
show_element(l1, level + 1, "Comments: %s", str);
|
||||||
|
safefree(str);
|
||||||
|
|
||||||
|
} else if (EbmlId(*l1) ==
|
||||||
|
KaxTagMultiCommentLanguage::ClassInfos.GlobalId) {
|
||||||
|
KaxTagMultiCommentLanguage &c_language =
|
||||||
|
*static_cast<KaxTagMultiCommentLanguage *>(l1);
|
||||||
|
c_language.ReadData(es->I_O());
|
||||||
|
show_element(l1, level + 1, "Language: %s",
|
||||||
|
string(c_language).c_str());
|
||||||
|
|
||||||
|
} else if (!is_ebmlvoid(l1, level + 1))
|
||||||
|
show_unknown_element(l1, level + 1);
|
||||||
|
|
||||||
|
l1->SkipData(*es, l1->Generic().Context);
|
||||||
|
delete l1;
|
||||||
|
l1 = es->FindNextElement(l0->Generic().Context, upper_lvl_el,
|
||||||
|
0xFFFFFFFFL, true, 1);
|
||||||
|
} // while (l1 != NULL)
|
||||||
|
|
||||||
|
return true;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(COMP_MSC) || defined(COMP_MINGW)
|
#if defined(COMP_MSC) || defined(COMP_MINGW)
|
||||||
@ -249,7 +305,7 @@ bool process_file(const char *file_name) {
|
|||||||
int upper_lvl_el, i;
|
int upper_lvl_el, i;
|
||||||
// Elements for different levels
|
// Elements for different levels
|
||||||
EbmlElement *l0 = NULL, *l1 = NULL, *l2 = NULL, *l3 = NULL, *l4 = NULL;
|
EbmlElement *l0 = NULL, *l1 = NULL, *l2 = NULL, *l3 = NULL, *l4 = NULL;
|
||||||
EbmlElement *l5 = NULL, *l6 = NULL;
|
EbmlElement *l5 = NULL, *l6 = NULL, *l7 = NULL;
|
||||||
EbmlStream *es;
|
EbmlStream *es;
|
||||||
KaxCluster *cluster;
|
KaxCluster *cluster;
|
||||||
uint64_t cluster_tc, tc_scale = TIMECODE_SCALE, file_size;
|
uint64_t cluster_tc, tc_scale = TIMECODE_SCALE, file_size;
|
||||||
@ -1207,13 +1263,24 @@ bool process_file(const char *file_name) {
|
|||||||
show_element(l4, 4, "Chapter UID: %llu",
|
show_element(l4, 4, "Chapter UID: %llu",
|
||||||
uint64(chapteruid));
|
uint64(chapteruid));
|
||||||
|
|
||||||
} else if (!is_ebmlvoid(l4, 4))
|
} else if (!is_ebmlvoid(l4, 4) &&
|
||||||
|
!parse_multicomment(es, l4, 4, upper_lvl_el, l5))
|
||||||
show_unknown_element(l4, 4);
|
show_unknown_element(l4, 4);
|
||||||
|
|
||||||
l4->SkipData(*es, l4->Generic().Context);
|
if (upper_lvl_el > 0) { // we're coming from l5
|
||||||
delete l4;
|
upper_lvl_el--;
|
||||||
l4 = es->FindNextElement(l3->Generic().Context, upper_lvl_el,
|
delete l4;
|
||||||
0xFFFFFFFFL, true, 1);
|
l4 = l5;
|
||||||
|
if (upper_lvl_el > 0)
|
||||||
|
break;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
l4->SkipData(*es, l4->Generic().Context);
|
||||||
|
delete l4;
|
||||||
|
l4 = es->FindNextElement(l3->Generic().Context,
|
||||||
|
upper_lvl_el, 0xFFFFFFFFL, true,
|
||||||
|
1);
|
||||||
|
}
|
||||||
|
|
||||||
} // while (l4 != NULL)
|
} // while (l4 != NULL)
|
||||||
|
|
||||||
@ -1391,13 +1458,24 @@ bool process_file(const char *file_name) {
|
|||||||
show_element(l4, 4, "Popularimeter: %lld",
|
show_element(l4, 4, "Popularimeter: %lld",
|
||||||
int64(popularimeter));
|
int64(popularimeter));
|
||||||
|
|
||||||
} else if (!is_ebmlvoid(l4, 4))
|
} else if (!is_ebmlvoid(l4, 4) &&
|
||||||
|
!parse_multicomment(es, l4, 4, upper_lvl_el, l5))
|
||||||
show_unknown_element(l4, 4);
|
show_unknown_element(l4, 4);
|
||||||
|
|
||||||
l4->SkipData(*es, l4->Generic().Context);
|
if (upper_lvl_el > 0) { // we're coming from l5
|
||||||
delete l4;
|
upper_lvl_el--;
|
||||||
l4 = es->FindNextElement(l3->Generic().Context, upper_lvl_el,
|
delete l4;
|
||||||
0xFFFFFFFFL, true, 1);
|
l4 = l5;
|
||||||
|
if (upper_lvl_el > 0)
|
||||||
|
break;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
l4->SkipData(*es, l4->Generic().Context);
|
||||||
|
delete l4;
|
||||||
|
l4 = es->FindNextElement(l3->Generic().Context,
|
||||||
|
upper_lvl_el, 0xFFFFFFFFL, true,
|
||||||
|
1);
|
||||||
|
}
|
||||||
|
|
||||||
} // while (l4 != NULL)
|
} // while (l4 != NULL)
|
||||||
|
|
||||||
@ -1442,13 +1520,25 @@ bool process_file(const char *file_name) {
|
|||||||
show_element(l4, 4, "Sub genre: %s",
|
show_element(l4, 4, "Sub genre: %s",
|
||||||
string(sub_genre).c_str());
|
string(sub_genre).c_str());
|
||||||
|
|
||||||
} else if (!is_ebmlvoid(l4, 4))
|
} else if (!is_ebmlvoid(l4, 4) &&
|
||||||
|
!parse_multicomment(es, l4, 4, upper_lvl_el, l5))
|
||||||
show_unknown_element(l4, 4);
|
show_unknown_element(l4, 4);
|
||||||
|
|
||||||
l4->SkipData(*es, l4->Generic().Context);
|
if (upper_lvl_el > 0) { // we're coming from l5
|
||||||
delete l4;
|
upper_lvl_el--;
|
||||||
l4 = es->FindNextElement(l3->Generic().Context, upper_lvl_el,
|
delete l4;
|
||||||
0xFFFFFFFFL, true, 1);
|
l4 = l5;
|
||||||
|
if (upper_lvl_el > 0)
|
||||||
|
break;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
l4->SkipData(*es, l4->Generic().Context);
|
||||||
|
delete l4;
|
||||||
|
l4 = es->FindNextElement(l3->Generic().Context,
|
||||||
|
upper_lvl_el, 0xFFFFFFFFL, true,
|
||||||
|
1);
|
||||||
|
}
|
||||||
|
|
||||||
} // while (l4 != NULL)
|
} // while (l4 != NULL)
|
||||||
|
|
||||||
} else if (EbmlId(*l3) ==
|
} else if (EbmlId(*l3) ==
|
||||||
@ -1553,13 +1643,25 @@ bool process_file(const char *file_name) {
|
|||||||
show_element(l4, 4, "Official audio source URL: %s",
|
show_element(l4, 4, "Official audio source URL: %s",
|
||||||
string(official_source_url).c_str());
|
string(official_source_url).c_str());
|
||||||
|
|
||||||
} else if (!is_ebmlvoid(l4, 4))
|
} else if (!is_ebmlvoid(l4, 4) &&
|
||||||
|
!parse_multicomment(es, l4, 4, upper_lvl_el, l5))
|
||||||
show_unknown_element(l4, 4);
|
show_unknown_element(l4, 4);
|
||||||
|
|
||||||
l4->SkipData(*es, l4->Generic().Context);
|
if (upper_lvl_el > 0) { // we're coming from l5
|
||||||
delete l4;
|
upper_lvl_el--;
|
||||||
l4 = es->FindNextElement(l3->Generic().Context, upper_lvl_el,
|
delete l4;
|
||||||
0xFFFFFFFFL, true, 1);
|
l4 = l5;
|
||||||
|
if (upper_lvl_el > 0)
|
||||||
|
break;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
l4->SkipData(*es, l4->Generic().Context);
|
||||||
|
delete l4;
|
||||||
|
l4 = es->FindNextElement(l3->Generic().Context,
|
||||||
|
upper_lvl_el, 0xFFFFFFFFL, true,
|
||||||
|
1);
|
||||||
|
}
|
||||||
|
|
||||||
} // while (l4 != NULL)
|
} // while (l4 != NULL)
|
||||||
|
|
||||||
} else if (EbmlId(*l3) ==
|
} else if (EbmlId(*l3) ==
|
||||||
@ -1638,13 +1740,25 @@ bool process_file(const char *file_name) {
|
|||||||
show_element(l4, 4, "Original dimensions: %s",
|
show_element(l4, 4, "Original dimensions: %s",
|
||||||
string(original_dimensions).c_str());
|
string(original_dimensions).c_str());
|
||||||
|
|
||||||
} else if (!is_ebmlvoid(l4, 4))
|
} else if (!is_ebmlvoid(l4, 4) &&
|
||||||
|
!parse_multicomment(es, l4, 4, upper_lvl_el, l5))
|
||||||
show_unknown_element(l4, 4);
|
show_unknown_element(l4, 4);
|
||||||
|
|
||||||
l4->SkipData(*es, l4->Generic().Context);
|
if (upper_lvl_el > 0) { // we're coming from l5
|
||||||
delete l4;
|
upper_lvl_el--;
|
||||||
l4 = es->FindNextElement(l3->Generic().Context, upper_lvl_el,
|
delete l4;
|
||||||
0xFFFFFFFFL, true, 1);
|
l4 = l5;
|
||||||
|
if (upper_lvl_el > 0)
|
||||||
|
break;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
l4->SkipData(*es, l4->Generic().Context);
|
||||||
|
delete l4;
|
||||||
|
l4 = es->FindNextElement(l3->Generic().Context,
|
||||||
|
upper_lvl_el, 0xFFFFFFFFL, true,
|
||||||
|
1);
|
||||||
|
}
|
||||||
|
|
||||||
} // while (l4 != NULL)
|
} // while (l4 != NULL)
|
||||||
|
|
||||||
} else if (EbmlId(*l3) ==
|
} else if (EbmlId(*l3) ==
|
||||||
@ -1758,18 +1872,31 @@ bool process_file(const char *file_name) {
|
|||||||
show_element(l6, 6, "Price date (invalid, "
|
show_element(l6, 6, "Price date (invalid, "
|
||||||
"value: %d)", temptime);
|
"value: %d)", temptime);
|
||||||
|
|
||||||
} else if (!is_ebmlvoid(l6, 6))
|
} else if (!is_ebmlvoid(l6, 6) &&
|
||||||
|
!parse_multicomment(es, l6, 6,
|
||||||
|
upper_lvl_el, l7))
|
||||||
show_unknown_element(l6, 6);
|
show_unknown_element(l6, 6);
|
||||||
|
|
||||||
l6->SkipData(*es, l6->Generic().Context);
|
if (upper_lvl_el > 0) { // we're coming from l7
|
||||||
delete l6;
|
upper_lvl_el--;
|
||||||
l6 = es->FindNextElement(l5->Generic().Context,
|
delete l6;
|
||||||
upper_lvl_el, 0xFFFFFFFFL,
|
l6 = l7;
|
||||||
true, 1);
|
if (upper_lvl_el > 0)
|
||||||
|
break;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
l6->SkipData(*es, l6->Generic().Context);
|
||||||
|
delete l6;
|
||||||
|
l6 = es->FindNextElement(l5->Generic().Context,
|
||||||
|
upper_lvl_el, 0xFFFFFFFFL,
|
||||||
|
true, 1);
|
||||||
|
}
|
||||||
|
|
||||||
} // while (l6 != NULL)
|
} // while (l6 != NULL)
|
||||||
|
|
||||||
} else if (!is_ebmlvoid(l5, 5))
|
} else if (!is_ebmlvoid(l5, 5) &&
|
||||||
|
!parse_multicomment(es, l5, 5, upper_lvl_el,
|
||||||
|
l6))
|
||||||
show_unknown_element(l5, 5);
|
show_unknown_element(l5, 5);
|
||||||
|
|
||||||
if (upper_lvl_el > 0) { // we're coming from l6
|
if (upper_lvl_el > 0) { // we're coming from l6
|
||||||
@ -1788,7 +1915,8 @@ bool process_file(const char *file_name) {
|
|||||||
}
|
}
|
||||||
} // while (l5 != NULL)
|
} // while (l5 != NULL)
|
||||||
|
|
||||||
} else if (!is_ebmlvoid(l4, 4))
|
} else if (!is_ebmlvoid(l4, 4) &&
|
||||||
|
!parse_multicomment(es, l4, 4, upper_lvl_el, l5))
|
||||||
show_unknown_element(l4, 4);
|
show_unknown_element(l4, 4);
|
||||||
|
|
||||||
if (upper_lvl_el > 0) { // we're coming from l5
|
if (upper_lvl_el > 0) { // we're coming from l5
|
||||||
@ -1847,7 +1975,7 @@ bool process_file(const char *file_name) {
|
|||||||
time_t temptime;
|
time_t temptime;
|
||||||
char buffer[40];
|
char buffer[40];
|
||||||
KaxTagMultiDateDateBegin &d_begin =
|
KaxTagMultiDateDateBegin &d_begin =
|
||||||
*static_cast<KaxTagMultiDateDateBegin *>(l6);
|
*static_cast<KaxTagMultiDateDateBegin *>(l5);
|
||||||
d_begin.ReadData(es->I_O());
|
d_begin.ReadData(es->I_O());
|
||||||
|
|
||||||
temptime = d_begin.GetEpochDate();
|
temptime = d_begin.GetEpochDate();
|
||||||
@ -1865,7 +1993,7 @@ bool process_file(const char *file_name) {
|
|||||||
time_t temptime;
|
time_t temptime;
|
||||||
char buffer[40];
|
char buffer[40];
|
||||||
KaxTagMultiDateDateEnd &d_end =
|
KaxTagMultiDateDateEnd &d_end =
|
||||||
*static_cast<KaxTagMultiDateDateEnd *>(l6);
|
*static_cast<KaxTagMultiDateDateEnd *>(l5);
|
||||||
d_end.ReadData(es->I_O());
|
d_end.ReadData(es->I_O());
|
||||||
|
|
||||||
temptime = d_end.GetEpochDate();
|
temptime = d_end.GetEpochDate();
|
||||||
@ -1877,17 +2005,29 @@ bool process_file(const char *file_name) {
|
|||||||
show_element(l5, 5, "End (invalid, value: %d)",
|
show_element(l5, 5, "End (invalid, value: %d)",
|
||||||
temptime);
|
temptime);
|
||||||
|
|
||||||
} else if (!is_ebmlvoid(l5, 5))
|
} else if (!is_ebmlvoid(l5, 5) &&
|
||||||
|
!parse_multicomment(es, l5, 5, upper_lvl_el,
|
||||||
|
l6))
|
||||||
show_unknown_element(l5, 5);
|
show_unknown_element(l5, 5);
|
||||||
|
|
||||||
l5->SkipData(*es, l5->Generic().Context);
|
if (upper_lvl_el > 0) { // we're coming from l6
|
||||||
delete l5;
|
upper_lvl_el--;
|
||||||
l5 = es->FindNextElement(l4->Generic().Context,
|
delete l5;
|
||||||
upper_lvl_el, 0xFFFFFFFFL,
|
l5 = l6;
|
||||||
true, 1);
|
if (upper_lvl_el > 0)
|
||||||
|
break;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
l5->SkipData(*es, l5->Generic().Context);
|
||||||
|
delete l5;
|
||||||
|
l5 = es->FindNextElement(l4->Generic().Context,
|
||||||
|
upper_lvl_el, 0xFFFFFFFFL,
|
||||||
|
true, 1);
|
||||||
|
}
|
||||||
} // while (l5 != NULL)
|
} // while (l5 != NULL)
|
||||||
|
|
||||||
} else if (!is_ebmlvoid(l4, 4))
|
} else if (!is_ebmlvoid(l4, 4) &&
|
||||||
|
!parse_multicomment(es, l4, 4, upper_lvl_el, l5))
|
||||||
show_unknown_element(l4, 4);
|
show_unknown_element(l4, 4);
|
||||||
|
|
||||||
if (upper_lvl_el > 0) { // we're coming from l5
|
if (upper_lvl_el > 0) { // we're coming from l5
|
||||||
@ -1973,17 +2113,29 @@ bool process_file(const char *file_name) {
|
|||||||
show_element(l5, 5, "Email: %s",
|
show_element(l5, 5, "Email: %s",
|
||||||
string(e_email).c_str());
|
string(e_email).c_str());
|
||||||
|
|
||||||
} else if (!is_ebmlvoid(l5, 5))
|
} else if (!is_ebmlvoid(l5, 5) &&
|
||||||
|
!parse_multicomment(es, l5, 5, upper_lvl_el,
|
||||||
|
l6))
|
||||||
show_unknown_element(l5, 5);
|
show_unknown_element(l5, 5);
|
||||||
|
|
||||||
l5->SkipData(*es, l5->Generic().Context);
|
if (upper_lvl_el > 0) { // we're coming from l6
|
||||||
delete l5;
|
upper_lvl_el--;
|
||||||
l5 = es->FindNextElement(l4->Generic().Context,
|
delete l5;
|
||||||
upper_lvl_el, 0xFFFFFFFFL,
|
l5 = l6;
|
||||||
true, 1);
|
if (upper_lvl_el > 0)
|
||||||
|
break;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
l5->SkipData(*es, l5->Generic().Context);
|
||||||
|
delete l5;
|
||||||
|
l5 = es->FindNextElement(l4->Generic().Context,
|
||||||
|
upper_lvl_el, 0xFFFFFFFFL,
|
||||||
|
true, 1);
|
||||||
|
}
|
||||||
} // while (l5 != NULL)
|
} // while (l5 != NULL)
|
||||||
|
|
||||||
} else if (!is_ebmlvoid(l4, 4))
|
} else if (!is_ebmlvoid(l4, 4) &&
|
||||||
|
!parse_multicomment(es, l4, 4, upper_lvl_el, l5))
|
||||||
show_unknown_element(l4, 4);
|
show_unknown_element(l4, 4);
|
||||||
|
|
||||||
if (upper_lvl_el > 0) { // we're coming from l5
|
if (upper_lvl_el > 0) { // we're coming from l5
|
||||||
@ -2063,17 +2215,29 @@ bool process_file(const char *file_name) {
|
|||||||
show_element(l5, 5, "String: %s", str);
|
show_element(l5, 5, "String: %s", str);
|
||||||
safefree(str);
|
safefree(str);
|
||||||
|
|
||||||
} else if (!is_ebmlvoid(l5, 5))
|
} else if (!is_ebmlvoid(l5, 5) &&
|
||||||
|
!parse_multicomment(es, l5, 5, upper_lvl_el,
|
||||||
|
l6))
|
||||||
show_unknown_element(l5, 5);
|
show_unknown_element(l5, 5);
|
||||||
|
|
||||||
l5->SkipData(*es, l5->Generic().Context);
|
if (upper_lvl_el > 0) { // we're coming from l6
|
||||||
delete l5;
|
upper_lvl_el--;
|
||||||
l5 = es->FindNextElement(l4->Generic().Context,
|
delete l5;
|
||||||
upper_lvl_el, 0xFFFFFFFFL,
|
l5 = l6;
|
||||||
true, 1);
|
if (upper_lvl_el > 0)
|
||||||
|
break;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
l5->SkipData(*es, l5->Generic().Context);
|
||||||
|
delete l5;
|
||||||
|
l5 = es->FindNextElement(l4->Generic().Context,
|
||||||
|
upper_lvl_el, 0xFFFFFFFFL,
|
||||||
|
true, 1);
|
||||||
|
}
|
||||||
} // while (l5 != NULL)
|
} // while (l5 != NULL)
|
||||||
|
|
||||||
} else if (!is_ebmlvoid(l4, 4))
|
} else if (!is_ebmlvoid(l4, 4) &&
|
||||||
|
!parse_multicomment(es, l4, 4, upper_lvl_el, l5))
|
||||||
show_unknown_element(l4, 4);
|
show_unknown_element(l4, 4);
|
||||||
|
|
||||||
if (upper_lvl_el > 0) { // we're coming from l5
|
if (upper_lvl_el > 0) { // we're coming from l5
|
||||||
@ -2142,17 +2306,29 @@ bool process_file(const char *file_name) {
|
|||||||
l_URL.ReadData(es->I_O());
|
l_URL.ReadData(es->I_O());
|
||||||
show_element(l5, 5, "URL: %s", string(l_URL).c_str());
|
show_element(l5, 5, "URL: %s", string(l_URL).c_str());
|
||||||
|
|
||||||
} else if (!is_ebmlvoid(l5, 5))
|
} else if (!is_ebmlvoid(l5, 5) &&
|
||||||
|
!parse_multicomment(es, l5, 5, upper_lvl_el,
|
||||||
|
l6))
|
||||||
show_unknown_element(l5, 5);
|
show_unknown_element(l5, 5);
|
||||||
|
|
||||||
l5->SkipData(*es, l5->Generic().Context);
|
if (upper_lvl_el > 0) { // we're coming from l6
|
||||||
delete l5;
|
upper_lvl_el--;
|
||||||
l5 = es->FindNextElement(l4->Generic().Context,
|
delete l5;
|
||||||
upper_lvl_el, 0xFFFFFFFFL,
|
l5 = l6;
|
||||||
true, 1);
|
if (upper_lvl_el > 0)
|
||||||
|
break;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
l5->SkipData(*es, l5->Generic().Context);
|
||||||
|
delete l5;
|
||||||
|
l5 = es->FindNextElement(l4->Generic().Context,
|
||||||
|
upper_lvl_el, 0xFFFFFFFFL,
|
||||||
|
true, 1);
|
||||||
|
}
|
||||||
} // while (l5 != NULL)
|
} // while (l5 != NULL)
|
||||||
|
|
||||||
} else if (!is_ebmlvoid(l4, 4))
|
} else if (!is_ebmlvoid(l4, 4) &&
|
||||||
|
!parse_multicomment(es, l4, 4, upper_lvl_el, l5))
|
||||||
show_unknown_element(l4, 4);
|
show_unknown_element(l4, 4);
|
||||||
|
|
||||||
if (upper_lvl_el > 0) { // we're coming from l5
|
if (upper_lvl_el > 0) { // we're coming from l5
|
||||||
@ -2267,17 +2443,29 @@ bool process_file(const char *file_name) {
|
|||||||
show_element(l5, 5, "Language: %s",
|
show_element(l5, 5, "Language: %s",
|
||||||
string(t_language).c_str());
|
string(t_language).c_str());
|
||||||
|
|
||||||
} else if (!is_ebmlvoid(l5, 5))
|
} else if (!is_ebmlvoid(l5, 5) &&
|
||||||
|
!parse_multicomment(es, l5, 5, upper_lvl_el,
|
||||||
|
l6))
|
||||||
show_unknown_element(l5, 5);
|
show_unknown_element(l5, 5);
|
||||||
|
|
||||||
l5->SkipData(*es, l5->Generic().Context);
|
if (upper_lvl_el > 0) { // we're coming from l6
|
||||||
delete l5;
|
upper_lvl_el--;
|
||||||
l5 = es->FindNextElement(l4->Generic().Context,
|
delete l5;
|
||||||
upper_lvl_el, 0xFFFFFFFFL,
|
l5 = l6;
|
||||||
true, 1);
|
if (upper_lvl_el > 0)
|
||||||
|
break;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
l5->SkipData(*es, l5->Generic().Context);
|
||||||
|
delete l5;
|
||||||
|
l5 = es->FindNextElement(l4->Generic().Context,
|
||||||
|
upper_lvl_el, 0xFFFFFFFFL,
|
||||||
|
true, 1);
|
||||||
|
}
|
||||||
} // while (l5 != NULL)
|
} // while (l5 != NULL)
|
||||||
|
|
||||||
} else if (!is_ebmlvoid(l4, 4))
|
} else if (!is_ebmlvoid(l4, 4) &&
|
||||||
|
!parse_multicomment(es, l4, 4, upper_lvl_el, l5))
|
||||||
show_unknown_element(l4, 4);
|
show_unknown_element(l4, 4);
|
||||||
|
|
||||||
if (upper_lvl_el > 0) { // we're coming from l5
|
if (upper_lvl_el > 0) { // we're coming from l5
|
||||||
@ -2297,7 +2485,8 @@ bool process_file(const char *file_name) {
|
|||||||
|
|
||||||
} // while (l4 != NULL)
|
} // while (l4 != NULL)
|
||||||
|
|
||||||
} else if (!is_ebmlvoid(l3, 3))
|
} else if (!is_ebmlvoid(l3, 3) &&
|
||||||
|
!parse_multicomment(es, l3, 3, upper_lvl_el, l4))
|
||||||
show_unknown_element(l3, 3);
|
show_unknown_element(l3, 3);
|
||||||
|
|
||||||
if (upper_lvl_el > 0) { // we're coming from l4
|
if (upper_lvl_el > 0) { // we're coming from l4
|
||||||
|
Loading…
Reference in New Issue
Block a user