diff --git a/src/box-codecs.js b/src/box-codecs.js index b9a19aed..057b978b 100644 --- a/src/box-codecs.js +++ b/src/box-codecs.js @@ -165,7 +165,7 @@ BoxParser.stxtSampleEntry.prototype.getCodec = function() { if(this.mime_format) { return baseCodec + "." + this.mime_format; } else { - return baseCodec + return baseCodec; } } @@ -181,4 +181,28 @@ BoxParser.av01SampleEntry.prototype.getCodec = function() { return baseCodec+"."+this.av1C.seq_profile+"."+this.av1C.seq_level_idx_0+(this.av1C.seq_tier_0?"H":"M")+"."+bitdepth+"."+this.av1C.monochrome+"."+this.av1C.chroma_subsampling_x+""+this.av1C.chroma_subsampling_y+""+this.av1C.chroma_sample_position; } +BoxParser.encvSampleEntry.prototype.getCodec = function() { + var baseCodec = BoxParser.SampleEntry.prototype.getCodec.call(this); + var transBox = (this.sinfs || this.rinfs)[0]; + if (transBox && + transBox.frma && transBox.frma.data_format && + transBox.schm && transBox.schm.scheme_type && + BoxParser[transBox.frma.data_format + "SampleEntry"]) { + var backupType = this.type; + this.type = transBox.frma.data_format; + var scheme = transBox.schm.scheme_type; + var fullCodec = baseCodec+"."+scheme+"."+BoxParser[this.type + "SampleEntry"].prototype.getCodec.call(this); + this.type = backupType; + return fullCodec; + } else { + return baseCodec; + } +} + +BoxParser.encaSampleEntry.prototype.getCodec = BoxParser.encvSampleEntry.prototype.getCodec; +BoxParser.encuSampleEntry.prototype.getCodec = BoxParser.encvSampleEntry.prototype.getCodec; +BoxParser.encsSampleEntry.prototype.getCodec = BoxParser.encvSampleEntry.prototype.getCodec; +BoxParser.enctSampleEntry.prototype.getCodec = BoxParser.encvSampleEntry.prototype.getCodec; +BoxParser.encmSampleEntry.prototype.getCodec = BoxParser.encvSampleEntry.prototype.getCodec; +BoxParser.resvSampleEntry.prototype.getCodec = BoxParser.encvSampleEntry.prototype.getCodec; diff --git a/src/box.js b/src/box.js index e64fef44..9e3c343a 100644 --- a/src/box.js +++ b/src/box.js @@ -149,6 +149,9 @@ var BoxParser = { createEncryptedSampleEntryCtor: function(mediaType, type, parseMethod) { BoxParser.createSampleEntryCtor.call(this, mediaType, type, parseMethod, ["sinf"]); }, + createRestrictedSampleEntryCtor: function(mediaType, type, parseMethod) { + BoxParser.createSampleEntryCtor.call(this, mediaType, type, parseMethod, ["rinf"]); + }, createSampleGroupCtor: function(type, parseMethod) { //BoxParser.sampleGroupEntryCodes.push(type); BoxParser[type+"SampleGroupEntry"] = function(size) { diff --git a/src/parsing/sampleentries/sampleentry.js b/src/parsing/sampleentries/sampleentry.js index 2671c746..bf674342 100644 --- a/src/parsing/sampleentries/sampleentry.js +++ b/src/parsing/sampleentries/sampleentry.js @@ -85,4 +85,6 @@ BoxParser.createEncryptedSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_SYSTEM, "e BoxParser.createEncryptedSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_TEXT, "enct"); BoxParser.createEncryptedSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_METADATA, "encm"); +// Restricted sample entries +BoxParser.createRestrictedSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL, "resv");