Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

Convert MXF to XML: RegXML (SMPTE ST 2001-1) tools and libraries

License

NotificationsYou must be signed in to change notification settings

sandflow/regxmllib

Repository files navigation

 __   ___  __                        __  |__) |__  / _` \_/ |\/| |    |    | |__) |  \ |___ \__> / \ |  | |___ |___ | |__) INTRODUCTION============regxmllib is a collection of tools and libraries for the creation of RegXML (SMPTE ST 2001-1) representations of MXF header metadata(SMPTE ST 377-1). A RegXML Fragment example can be found at [1][1] src/test/resources/reference-filesTwo implementations of regxmllib are provided:* regxmllibj, which is implemented in pure Java; and* regxmllibc, which is implemented in C++03.KNOWN ISSUES AND LIMITATIONS============================regxmllib relies on SMPTE Metadata Registers that conform to SMPTE ST 335, ST 395, ST 400, ST 2003. These registers are published at [1].[1]https://smpte-ra.org/smpte-metadata-registryregxmllib deviates from ST 2001-1:2013 in a few narrow instances. Such deviations are noted in the source code and are expected to be submitted for consideration at the next revision of ST 2001-1. In particular:  * no baseline metadictionary is used, instead one extension metadictionary per  namespace is usedBugs are tracked at [2][2]https://github.com/sandflow/regxmllib/issuesREGXMLLIBJ==========Prerequisites-------------Java 8 language and SDKMaven(recommended) Git(recommended) SMPTE Metadata Registers (Types, Elements, Groups and Labels) Quick Start-----------The following outputs to path PATH_TO_FRAGMENT an XML representationof the header metadata of the MXF file at path PATH_TO_MXF_FILE * build the 'jar' target using Maven 'package' goal* choose one of the following:    * OPTION 1        * retrieve the four SMPTE Metadata Registers (see [1] above)            * build the metadictionaries from the SMPTE registers            java -cp <PATH_TO_JAR> com.sandflow.smpte.tools.XMLRegistersToDict -e <PATH_TO_ELEMENTS_REG>            -l <PATH_TO_LABELS_REG> -g <PATH_TO_GROUPS_REG> -t <PATH_TO_TYPES_REG> PATH_TO_DICT_DIR                    * OPTION 2            * retrieve metadictionaries from [3]                    [3]https://github.com/sandflow/IMF/tree/master/dict  * generate the RegXML fragment        run java -cp <PATH_TO_JAR> com.sandflow.smpte.tools.RegXMLDump -all -d <PATH_TO_DICT1> <PATH_TO_DICT2> ...    -i <PATH_TO_MXF_FILE> > <PATH_TO_FRAGMENT>* (optional) generate XSDs for RegXML Fragments    run java -cp <PATH_TO_JAR> com.sandflow.smpte.tools.GenerateDictionaryXMLSchema -d <PATH_TO_DICT1> <PATH_TO_DICT2> ...    -o <PATH_TO_OUTPUT_DIR>* (optional) generate XSDs for SMPTE registers    run java -cp <PATH_TO_JAR> com.sandflow.smpte.tools.GenerateXMLSchemaDocuments -cp <CLASS_PATH_TO_REGISTER_MODEL>    -d  <PATH_TO_OUTPUT_DIR>    where <CLASS_PATH_TO_REGISTER_MODEL> is equal to com.sandflow.smpte.register.catsup.TypesRegisterModel, etc.Architecture------------At the heart of regxmllib is the FragmentBuilder.fragmentFromTriplet() methodthat creates an XML fragment from a KLV group given aa RegXML metadictionary and a collection of KLV groups from which strongreferences are resolved. The rules engine implemented in FragmentBuilder.fragmentFromTriplet() is intended to follow the rules specifiedin ST 2001-1 as closely as possible. A sister method, XMLSchemaBuilder.fromDictionary(),creates a matching XML Schema that can be used to validate RegXML fragments.Metadictionaries can be imported and exported from XML documents that conformto the schema specified in SMPTE ST 2001-1. They can also be createdfrom SMPTE Metadata Registers published in XML form.regxmllib includes a minimal MXF and KLV parser library.Packages--------com.sandflow.smpte.klv : Classes for processing SMPTE KLV triplets (ST 336)    com.sandflow.smpte.mxf: Classes for processing SMPTE MXF structures (ST 377-1)com.sandflow.smpte.register: Classes for processing SMPTE metadata registers    (ST 335, ST 395, ST 400, ST 2003)    com.sandfow.smpte.regxml: Classes for managing RegXML metadictionaries and    creating RegXML representations of MXF structures    com.sandfow.smpte.tools: Application-level tools    com.sandfow.smpte.util: Utilities classesTools-----RegXMLDump: dumps either the first essence descriptor or the entire header            metadata of an MXF file as a RegXML structure            XMLRegistersToDict: converts XML-based SMPTE metadata registers to a RegXML metadictionariesGenerateXMLSchemaDocuments: generates XSDs for the SMPTE metadata registers                            GenerateDictionaryXMLSchema: generate XSDs for RegXML Fragments from the RegXML metadictionaries    Unit Test---------Unit testing is performed by generating RegXML fragments from sample files locatedat [1] and registers located at [2]. The resulting RegXML fragments are comparedto reference RegXML fragments located at [3].[1] src/test/mxf-files[2] src/test/registers[3] src/test/regxml-files Reference RegXML fragments can regenerated by running the package goal with the build-reference-test-files profile:    mvn package -Pbuild-reference-files    Maven Artifacts---------------* GroupId        com.sandflow* ArtifactId     regxmllibSnapshots are deployed athttps://oss.sonatype.org/content/repositories/snapshots/Releases are deployed at the central repositoryREGXMLLIBC==========Prerequisites-------------C++03 toolchainMetadictionaries generated by regxmllibj (see _Building Metadictionaries_ above)Xerces-C++ Version 3.1.4 (or above) [1](recommended) CMake[1]https://xerces.apache.org/xerces-c/    Architecture------------regxmllibc generally follows the architecture and idioms of regxmllibj.Applications will typically call FragmentBuilder::fromTriplet() orMXFFragmentBuilder::fromInputStream(), and the unit test at [1] provides an example.[1] src/test/cpp/com/sandflow/smpte/dict/MetaDictionaryTest.cppregxmllibc does not however support the conversion of the SMPTE Metadata Registers toRegXML metadictionaries, and instead relies on the metadictionaries generated byregxmllibj (see _Building Metadictionaries_ above).Unit Test---------As with regxmllibj, unit testing is performed by generating RegXML fragments from sample files locatedat [1] and reference metadictionaries located at [2]. The resulting RegXML fragments are comparedto reference RegXML fragments located at [3].[1] src/test/mxf-files[2] src/test/regxml-dicts[3] src/test/regxml-files DIRECTORIES AND NOTABLE FILES=============================build.xml                   Helper script (Ant)pom.xml                     Maven POM fileCMakeLists.txt              CMake build filetarget                      Output of the Maven build process, including the JAR                                        src/java                    regxmllibj codebasesrc/cpp                     regxmllibc codebasesrc/main/config/repoversion.properties                            Template Java properties file used to host the                             a unique source code version generated using                            git by the build systemsrc/main/resources/reg.xsd                            Common XML Schema definitions used when generating                            XML Schemas for RegXML Fragments                                        src/test/resources/regxml-files                            Reference RegXML fragment used for unit testingsrc/test/resources/registers                            Reference SMPTE registers used for unit testingsrc/test/resources/mxf-files                            Sample MXF files used for unit testing  src/test/resources/regxml-dicts                            Reference metadictionaries used for unit testing

[8]ページ先頭

©2009-2025 Movatter.jp