Skip to content

Commit

Permalink
Merge pull request #332 from bradh/group_props
Browse files Browse the repository at this point in the history
improve group and property handling
  • Loading branch information
cconcolato committed Jun 28, 2023
2 parents af09885 + 916981e commit f0cd15c
Show file tree
Hide file tree
Showing 3 changed files with 64 additions and 9 deletions.
34 changes: 25 additions & 9 deletions src/isofile-item-processing.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
ISOFile.prototype.items = [];
ISOFile.prototype.entity_groups = [];
/* size of the buffers allocated for samples */
ISOFile.prototype.itemsDataSize = 0;

ISOFile.prototype.flattenItemInfo = function() {
var items = this.items;
var entity_groups = this.entity_groups;
var i, j;
var item;
var meta = this.meta;
Expand All @@ -27,6 +29,15 @@ ISOFile.prototype.flattenItemInfo = function() {
item.content_type = meta.iinf.item_infos[i].content_type;
item.content_encoding = meta.iinf.item_infos[i].content_encoding;
}
if (meta.grpl) {
for (i = 0; i < meta.grpl.boxes.length; i++) {
entity_group = {};
entity_group.id = meta.grpl.boxes[i].group_id;
entity_group.entity_ids = meta.grpl.boxes[i].entity_ids;
entity_group.type = meta.grpl.boxes[i].type;
entity_groups[entity_group.id] = entity_group;
}
}
if (meta.iloc) {
for(i = 0; i < meta.iloc.items.length; i++) {
var offset;
Expand Down Expand Up @@ -74,16 +85,21 @@ ISOFile.prototype.flattenItemInfo = function() {
for (i = 0; i < ipma.associations.length; i++) {
var association = ipma.associations[i];
item = items[association.id];
if (item.properties === undefined) {
item.properties = {};
item.properties.boxes = [];
if (!item) {
item = entity_groups[association.id];
}
for (j = 0; j < association.props.length; j++) {
var propEntry = association.props[j];
if (propEntry.property_index > 0 && propEntry.property_index-1 < meta.iprp.ipco.boxes.length) {
var propbox = meta.iprp.ipco.boxes[propEntry.property_index-1];
item.properties[propbox.type] = propbox;
item.properties.boxes.push(propbox);
if (item) {
if (item.properties === undefined) {
item.properties = {};
item.properties.boxes = [];
}
for (j = 0; j < association.props.length; j++) {
var propEntry = association.props[j];
if (propEntry.property_index > 0 && propEntry.property_index-1 < meta.iprp.ipco.boxes.length) {
var propbox = meta.iprp.ipco.boxes[propEntry.property_index-1];
item.properties[propbox.type] = propbox;
item.properties.boxes.push(propbox);
}
}
}
}
Expand Down
4 changes: 4 additions & 0 deletions test/filereader.html
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,9 @@ <h3>MP4Box.js / ISOBMFF Box Structure Viewer (see <a href="../#demos">other demo
<li><a href="#boxview">Box View</a></li>
<li><a href="#sampleview">Sample View</a></li>
<li><a href="#itemview">Item View</a></li>
<li><a href="#entitygroupview">Entity Group View</a></li>
<li><a href="#segmentview">Segment View</a></li>

</ul>
<div id="movieview">
</div>
Expand Down Expand Up @@ -201,6 +203,8 @@ <h3>MP4Box.js / ISOBMFF Box Structure Viewer (see <a href="../#demos">other demo
</div>
<div id="itemview">
</div>
<div id="entitygroupview">
</div>
<div id="segmentview">
<label>View type:<select name="segmentviewselector" id="segmentviewselector">
<option selected="selected">Segment Table</option>
Expand Down
35 changes: 35 additions & 0 deletions test/filereader.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,12 +28,14 @@ function finalizeAnalyzerUI(fileobj, loadbutton, success) {
buildSampleView();
displayMovieInfo(fileobj.mp4boxfile.getInfo(), document.getElementById("movieview"), false);
buildSegmentView(fileobj);
buildEntityGroupTable(fileobj.mp4boxfile.entity_groups);
} else {
resetBoxView();
$("#itemview").html('');
resetSampleView();
$("#movieview").html('');
resetSegmentView();
$("#entitygroupview").html('');
}
}

Expand Down Expand Up @@ -419,6 +421,39 @@ function buildSegmentView(fileobj) {
buildSegmentGraph(sidx, startSeg, endSeg);
}

function buildEntityGroupTable(entity_groups) {
var html;
var i, j;
html = "<table>";
html += "<thead>";
html += "<tr>";
html += "<th>Entity Group ID</th>";
html += "<th>Type</th>";
html += "<th>Entities [item ID]</th>";
html += "<th>Properties [type]</th>";
html += "</tr>";
html += "</thead>";
html += "<tbody>";
for (i in entity_groups) {
var entity_group = entity_groups[i];
html += "<td>" + entity_group.id + "</td>";
html += "<td>" + entity_group.type + "</td>";
html += "<td>" + entity_group.entity_ids.join() + "</td>";
html += "<td>";
if (entity_group.properties) {
for (j = 0; j < entity_group.properties.boxes.length; j++) {
html += "" + entity_group.properties.boxes[j].type + " ";
}
}
html += "</td>";
html += "</tr>";
}
html += "</tbody>";
html += "</table>";
$("#entitygroupview").html(html);
}


window.onload = function () {

createLoadBar($('#menubar'), "File", "file", file, finalizeAnalyzerUI);
Expand Down

0 comments on commit f0cd15c

Please sign in to comment.