minor changes

This commit is contained in:
Thibault Deckers 2020-12-28 21:51:49 +09:00
parent e127a5ebca
commit 13a8e23034
3 changed files with 21 additions and 3 deletions

View file

@ -144,6 +144,7 @@ class MetadataHandler(private val context: Context) : MethodCallHandler {
if (dir.getString(Mp4UuidBoxDirectory.TAG_UUID) == GSpherical.SPHERICAL_VIDEO_V1_UUID) {
val bytes = dir.getByteArray(Mp4UuidBoxDirectory.TAG_USER_DATA)
metadataMap["Spherical Video"] = HashMap(GSpherical(bytes).describe())
metadataMap.remove(dirName)
}
}
}

View file

@ -6,7 +6,8 @@ import deckers.thibault.aves.utils.LogUtils
import org.xmlpull.v1.XmlPullParser
import java.io.ByteArrayInputStream
class GSpherical(bytes: ByteArray) {
// `xmlBytes`: bytes representing the XML embedded in a MP4 `uuid` box, according to Spherical Video V1 spec
class GSpherical(xmlBytes: ByteArray) {
var spherical: Boolean = false
var stitched: Boolean = false
var stitchingSoftware: String = ""
@ -26,7 +27,7 @@ class GSpherical(bytes: ByteArray) {
init {
try {
ByteArrayInputStream(bytes).use {
ByteArrayInputStream(xmlBytes).use {
val parser = Xml.newPullParser().apply {
setInput(it, null)
nextTag()

View file

@ -51,9 +51,13 @@ class XmpMMNamespace extends XmpNamespace {
static final derivedFromPattern = RegExp(r'xmpMM:DerivedFrom/(.*)');
static final historyPattern = RegExp(r'xmpMM:History\[(\d+)\]/(.*)');
static final ingredientsPattern = RegExp(r'xmpMM:Ingredients\[(\d+)\]/(.*)');
static final pantryPattern = RegExp(r'xmpMM:Pantry\[(\d+)\]/(.*)');
final derivedFrom = <String, String>{};
final history = <int, Map<String, String>>{};
final ingredients = <int, Map<String, String>>{};
final pantry = <int, Map<String, String>>{};
XmpMMNamespace() : super(ns);
@ -63,7 +67,9 @@ class XmpMMNamespace extends XmpNamespace {
@override
bool extractData(XmpProp prop) {
final hasStructs = extractStruct(prop, derivedFromPattern, derivedFrom);
final hasIndexedStructs = extractIndexedStruct(prop, historyPattern, history);
var hasIndexedStructs = extractIndexedStruct(prop, historyPattern, history);
hasIndexedStructs |= extractIndexedStruct(prop, ingredientsPattern, ingredients);
hasIndexedStructs |= extractIndexedStruct(prop, pantryPattern, pantry);
return hasStructs || hasIndexedStructs;
}
@ -79,6 +85,16 @@ class XmpMMNamespace extends XmpNamespace {
title: 'History',
structByIndex: history,
),
if (ingredients.isNotEmpty)
XmpStructArrayCard(
title: 'Ingredients',
structByIndex: ingredients,
),
if (pantry.isNotEmpty)
XmpStructArrayCard(
title: 'Pantry',
structByIndex: pantry,
),
];
@override