Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 52 additions & 0 deletions src/main/java/com/netflix/imflibrary/JPEG2000.java
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,58 @@ public static boolean isIMF4KProfile(UL pictureEssenceCoding) {
return false;
}

public static boolean isIMF8KProfile(UL pictureEssenceCoding) {
if (!pictureEssenceCoding.equalsWithMask(J2K_NODE_UL, 0b1111111011111100))
return false;


if (pictureEssenceCoding.getByte(14) == 0x04) {
/* lossy profile */

if (pictureEssenceCoding.getByte(15) < 0x02 || pictureEssenceCoding.getByte(15) > 0x31) {
/* Only Mainlevel 1-10 are allowed */
return false;
}

/* Sublevel 0 is not allowed */
switch (pictureEssenceCoding.getByte(15)) {
case 0x02: /* J2K_8KIMF_SingleTileLossyProfile_M1S0 */
case 0x04: /* J2K_8KIMF_SingleTileLossyProfile_M2S0 */
case 0x06: /* J2K_8KIMF_SingleTileLossyProfile_M3S0 */
case 0x08: /* J2K_8KIMF_SingleTileLossyProfile_M4S0 */
case 0x00: /* J2K_8KIMF_SingleTileLossyProfile_M5S0 */
case 0x0f: /* J2K_8KIMF_SingleTileLossyProfile_M6S0 */
case 0x14: /* J2K_8KIMF_SingleTileLossyProfile_M7S0 */
case 0x1a: /* J2K_8KIMF_SingleTileLossyProfile_M8S0 */
case 0x21: /* J2K_8KIMF_SingleTileLossyProfile_M9S0 */
case 0x29: /* J2K_8KIMF_SingleTileLossyProfile_M10S0 */
return false;
}

return true;

} else if (pictureEssenceCoding.getByte(14) == 0x07) {
/* lossless profile */

switch (pictureEssenceCoding.getByte(15)) {
case 0x02: /* J2K_8KIMF_SingleMultiTileReversibleProfile_M1S0 */
case 0x04: /* J2K_8KIMF_SingleMultiTileReversibleProfile_M2S0 */
case 0x06: /* J2K_8KIMF_SingleMultiTileReversibleProfile_M3S0 */
case 0x08: /* J2K_8KIMF_SingleMultiTileReversibleProfile_M4S0 */
case 0x0b: /* J2K_8KIMF_SingleMultiTileReversibleProfile_M5S0 */
case 0x0f: /* J2K_8KIMF_SingleMultiTileReversibleProfile_M6S0 */
case 0x14: /* J2K_8KIMF_SingleMultiTileReversibleProfile_M7S0 */
case 0x1a: /* J2K_8KIMF_SingleMultiTileReversibleProfile_M8S0 */
case 0x21: /* J2K_8KIMF_SingleMultiTileReversibleProfile_M8S0 */
case 0x29: /* J2K_8KIMF_SingleMultiTileReversibleProfile_M8S0 */
return true;
}
}

return false;
}


public static boolean isAPP2HT(UL pictureEssenceCoding) {
return pictureEssenceCoding.equalsIgnoreVersion(HTJ2K_UL);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
import java.util.Collections;
import java.util.List;

import com.netflix.imflibrary.validation.IMFApp2E5EDConstraintsValidator;

public final class CoreConstraints
{
private CoreConstraints() {} // Prevent instantiation. This class is constants and utilities only
Expand All @@ -27,7 +29,9 @@ private CoreConstraints() {} // Prevent instantiation. This class is constants a
{
// NOTE- When adding new namespaces or core constraint versions, be sure that the most recent core constraints
// are checked first. That way if there are multiple ApplicationIdentifications, the newest version is returned.
if (applicationIds.contains("http://www.smpte-ra.org/ns/2067-21/2020") || (applicationIds.contains("http://www.smpte-ra.org/ns/2067-21/2021")))
if (applicationIds.contains("http://www.smpte-ra.org/ns/2067-21/2020") ||
applicationIds.contains("http://www.smpte-ra.org/ns/2067-21/2021") ||
applicationIds.contains(IMFApp2E5EDConstraintsValidator.applicationIdentification))
{
return CoreConstraints.NAMESPACE_IMF_2020;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ public class ConstraintsValidatorFactory {
registerValidator("http://www.smpte-ra.org/schemas/2067-3/2016", IMFCPL2016Validator::new);

// IMF App #2E
registerValidator(IMFApp2E5EDConstraintsValidator.applicationIdentification, IMFApp2E5EDConstraintsValidator::new);
registerValidator("http://www.smpte-ra.org/ns/2067-21/2021", IMFApp2E2021ConstraintsValidator::new);
registerValidator("http://www.smpte-ra.org/ns/2067-21/2020", IMFApp2E2020ConstraintsValidator::new);
registerValidator("http://www.smpte-ra.org/schemas/2067-21/2016", IMFApp2E2016ConstraintsValidator::new);
Expand Down
Loading
Loading