From 7a47b15c75abcd8f82268f1ce60d2cc8ecaecef7 Mon Sep 17 00:00:00 2001 From: Thomas Heritage Date: Sat, 6 Jun 2026 18:08:42 +0100 Subject: [PATCH 1/3] Fix web links esp for SMPTE documents --- README.md | 22 +++++++++++----------- deps/libMXF/README.md | 2 +- deps/libMXFpp/README.md | 4 ++-- docs/imf_audio_track_files.md | 2 +- docs/imf_jpeg_2000_track_files.md | 6 +++--- docs/imf_prores_track_files.md | 6 +++--- docs/imf_track_files.md | 6 +++--- meta/rdd6_xml_creator/README.md | 4 ++-- 8 files changed, 26 insertions(+), 26 deletions(-) diff --git a/README.md b/README.md index db8d0d60..e51986c7 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ # bmx Library and Utilities -bmx is a library and set of utilities to read and write the [SMPTE ST 377-1 MXF file format](https://ieeexplore.ieee.org/document/7292073). +bmx is a library and set of utilities to read and write the [SMPTE ST 377-1 MXF file format](https://doi.org/10.5594/SMPTE.ST377-1). bmx is used to support standardisation efforts in the broadcast industry. It provides utilities for creating standard compliant sample files. It serves as an example implementation for MXF file format standards. @@ -32,29 +32,29 @@ The following input and output wrapper formats and flavours are supported: * [AMWA AS-02](https://www.amwa.tv/specifications) MXF Versioning * [AMWA AS-10](https://www.amwa.tv/specifications) MXF for Production * [AMWA AS-11](https://www.amwa.tv/specifications) Media Contribution File Formats (MXF) -* [SMPTE ST 378](https://ieeexplore.ieee.org/document/7291764) MXF OP1a -* [SMPTE RDD 9](https://ieeexplore.ieee.org/document/7290714) MXF MPEG Long GOP (Sony XDCAM) -* [SMPTE ST 386](https://ieeexplore.ieee.org/document/7291350) MXF D-10 (Sony MPEG IMX) -* [SMPTE ST 2067-5](https://ieeexplore.ieee.org/document/9099734) Interoperable Master Format (IMF) - Essence Component +* [SMPTE ST 378](https://doi.org/10.5594/SMPTE.ST378.2004) MXF OP1a +* [SMPTE RDD 9](https://doi.org/10.5594/SMPTE.RDD9.2013) MXF MPEG Long GOP (Sony XDCAM) +* [SMPTE ST 386](https://doi.org/10.5594/SMPTE.ST386.2004) MXF D-10 (Sony MPEG IMX) +* [SMPTE ST 2067-5](https://doi.org/10.5594/SMPTE.ST2067-5) Interoperable Master Format (IMF) - Essence Component * [Avid native MXF OPAtom](https://www.avid.com/static/resources/common/documents/mxf.pdf) * [WAV](https://en.wikipedia.org/wiki/WAV) The following essence formats are supported: -* [SMPTE RP 2027](https://ieeexplore.ieee.org/document/7290936) AVC-Intra video, class 50 / 100 / 200 -* [SMPTE ST 356](https://ieeexplore.ieee.org/document/7290684) D-10 video, 30 / 40 / 50 MBit/s +* [SMPTE RP 2027](https://doi.org/10.5594/SMPTE.RP2027.2012) AVC-Intra video, class 50 / 100 / 200 +* [SMPTE ST 356](https://doi.org/10.5594/SMPTE.ST356.2001) D-10 video, 30 / 40 / 50 MBit/s * [DV](https://en.wikipedia.org/wiki/DV) video, 25 / 50 / 100 MBit/s * [MPEG-2](https://www.itu.int/rec/T-REC-H.262) Long GOP video, 422P@HL, MP@HL (1920 and 1440) and MP@H14 * [JPEG 2000](https://www.itu.int/rec/T-REC-T.800) video * [JPEG XS](https://jpeg.org/jpegxs/) video * [H.264](https://www.itu.int/rec/T-REC-H.264) video -* [SMPTE ST 2019](https://ieeexplore.ieee.org/document/7291983) VC-3 video (Avid DNxHD) -* [SMPTE ST 2042](https://ieeexplore.ieee.org/document/7967896) VC-2 video -* [SMPTE RDD 36](https://ieeexplore.ieee.org/document/7438722) video (Apple ProRes) +* [SMPTE ST 2019](https://pub.smpte.org/doc/2019/) VC-3 video (Avid DNxHD) +* [SMPTE ST 2042](https://pub.smpte.org/doc/2042/) VC-2 video +* [SMPTE RDD 36](https://doi.org/10.5594/SMPTE.RDD36.2022) video (Apple ProRes) * Uncompressed video, UYVY / v210 * Avid [MJPEG](https://en.wikipedia.org/wiki/Motion_JPEG) video * [WAV](https://en.wikipedia.org/wiki/WAV) PCM audio -* [SMPTE ST 436](https://ieeexplore.ieee.org/document/7290051) encapsulated ANC and VBI data +* [SMPTE ST 436](https://doi.org/10.5594/SMPTE.ST436-1.2013) encapsulated ANC and VBI data * [IMSC 1 Timed Text](https://www.w3.org/TR/ttml-imsc1.0.1/) ## Topics diff --git a/deps/libMXF/README.md b/deps/libMXF/README.md index dda4eda7..691a6cca 100644 --- a/deps/libMXF/README.md +++ b/deps/libMXF/README.md @@ -1,6 +1,6 @@ # libMXF -libMXF is a low-level C library for reading and writing the [SMPTE ST 377-1 MXF file format](https://ieeexplore.ieee.org/document/7292073). +libMXF is a low-level C library for reading and writing the [SMPTE ST 377-1 MXF file format](https://doi.org/10.5594/SMPTE.ST377-1). libMXF was originally developed as part of the [Ingex Project](http://ingex.sourceforge.net/) where it supported MXF transfer, playback and storage applications. libMXF was also used in the [BBC Archive Preservation Project](https://www.bbc.co.uk/rd/publications/whitepaper275) to migrate BBC archive content from video tapes to files. diff --git a/deps/libMXFpp/README.md b/deps/libMXFpp/README.md index 8947b413..367e7c32 100644 --- a/deps/libMXFpp/README.md +++ b/deps/libMXFpp/README.md @@ -1,6 +1,6 @@ # libMXF++ -libMXF++ is a C++ wrapper library for [libMXF](../libMXF/) that supports reading and writing the [SMPTE ST 377-1 MXF file format](https://ieeexplore.ieee.org/document/7292073). +libMXF++ is a C++ wrapper library for [libMXF](../libMXF/) that supports reading and writing the [SMPTE ST 377-1 MXF file format](https://doi.org/10.5594/SMPTE.ST377-1). libMXF++ and [libMXF](../libMXF/) are used in the [bmx](../../) project. @@ -10,7 +10,7 @@ libMXF++ was originally developed as part of the [Ingex Project](http://ingex.so A number of examples can be found in the [examples](./examples) directory. These are not part of the core library and are not required to build [bmx](../../). -* [D10MXFOP1AWriter](./examples/D10MXFOP1AWriter): library code used in the [Ingex Project](http://ingex.sourceforge.net/) for writing [SMPTE ST 386](https://ieeexplore.ieee.org/document/7291350) MXF D-10 (Sony MPEG IMX) files. +* [D10MXFOP1AWriter](./examples/D10MXFOP1AWriter): library code used in the [Ingex Project](http://ingex.sourceforge.net/) for writing [SMPTE ST 386](https://doi.org/10.5594/SMPTE.ST386.2004) MXF D-10 (Sony MPEG IMX) files. * [OPAtomReader](./examples/OPAtomReader): library code used in the [Ingex Project](http://ingex.sourceforge.net/) for recovering Avid MXF OP-Atom files after a system failure. ## Build, Test and Install diff --git a/docs/imf_audio_track_files.md b/docs/imf_audio_track_files.md index 9a78ac2e..85c19038 100644 --- a/docs/imf_audio_track_files.md +++ b/docs/imf_audio_track_files.md @@ -1,6 +1,6 @@ # IMF Audio Track Files -The following examples demonstrate how the [IMF Flavour](./imf_track_files.md) of raw2bmx can be used to create Audio Track Files, from multichannel WAV files, that conform to version 1.2 of the [BBC UHD Delivery Document](https://www.dropbox.com/s/tkvwxksgy3izpca/TechnicalDeliveryStandardsBBCUHDiPlayerSupplement.pdf?dl=0). They have wide general applicability as they follow [IMF User Group Best Practice](https://www.imfug.com/TR/audio-track-files/). +The following examples demonstrate how the [IMF Flavour](./imf_track_files.md) of raw2bmx can be used to create Audio Track Files, from multichannel WAV files, that conform to version 1.2 of the [BBC UHD Delivery Document](https://www.bbc.co.uk/delivery/technical-requirements). They have wide general applicability as they follow [IMF User Group Best Practice](https://www.imfug.com/TR/audio-track-files/). ```bash raw2bmx -o {Type}_{fp_uuid}.mxf \ diff --git a/docs/imf_jpeg_2000_track_files.md b/docs/imf_jpeg_2000_track_files.md index c1eab106..5ff53a03 100644 --- a/docs/imf_jpeg_2000_track_files.md +++ b/docs/imf_jpeg_2000_track_files.md @@ -1,10 +1,10 @@ # IMF JPEG 2000 Track Files -The [IMF Flavour](./imf_track_files.md) of `bmxtranswrap` and `raw2bmx` can be used to create Image Track Files conforming to [IMF Application #2E](https://ieeexplore.ieee.org/document/9097487) and [IMF Application #2E Amendment 1](https://ieeexplore.ieee.org/document/9286959). +The [IMF Flavour](./imf_track_files.md) of `bmxtranswrap` and `raw2bmx` can be used to create Image Track Files conforming to [IMF Application #2E](https://doi.org/10.5594/SMPTE.ST2067-21.2023). JPEG 2000 is a video compression standard. It is a successor to the JPEG standard that uses a Discrete Wavelet Transform (DWT) rather than a Discrete Cosine Transform (DCT). The JPEG 2000 core video compression is specified in [ISO/IEC 15444-1](http://www.iso.org/iso/catalogue_detail.htm?csnumber=37674) / [ITU T.800](https://www.itu.int/rec/T-REC-T.800). -The wrapping of JPEG 2000 codestreams in MXF is specified in [SMPTE ST 422](https://ieeexplore.ieee.org/document/8984770). +The wrapping of JPEG 2000 codestreams in MXF is specified in [SMPTE ST 422](https://doi.org/10.5594/SMPTE.ST422.2022). The implementation currently supports MXF OP1a (IMF or vanilla flavour), YCbCr and RGB component video using a progressive frame layout. @@ -48,7 +48,7 @@ Below is an example commandline for generating an IMF Track File containing [ITU The JPEG 2000 codestream does not include a frame rate and that's why the `-f 25` option is used to specify 25 Hz. The same applies to the other options that are there to provide metadata that does not exist in the codestream. -This example also includes mastering display color volume metadata (`--display-xxx`) as specified in [IMF Application #2E Amendment 1](https://ieeexplore.ieee.org/document/9286959). +This example also includes mastering display color volume metadata (`--display-xxx`) as specified in [IMF Application #2E](https://doi.org/10.5594/SMPTE.ST2067-21.2023). A similar commandline for RGB is shown below, where the main difference is the use of component reference levels and scanning direction options. diff --git a/docs/imf_prores_track_files.md b/docs/imf_prores_track_files.md index 0c50fff3..8682b0d9 100644 --- a/docs/imf_prores_track_files.md +++ b/docs/imf_prores_track_files.md @@ -1,8 +1,8 @@ # IMF ProRes Track Files -The [IMF Flavour](./imf_track_files.md) of `bmxtranswrap` and `raw2bmx` can be used to create Image Track Files conforming to [SMPTE RDD 45](https://ieeexplore.ieee.org/document/8233487) Application ProRes or [SMPTE RDD 59-1](https://ieeexplore.ieee.org/document/9999622) Application DPP (ProRes) (which is based on RDD 45). +The [IMF Flavour](./imf_track_files.md) of `bmxtranswrap` and `raw2bmx` can be used to create Image Track Files conforming to [SMPTE RDD 45](https://doi.org/10.5594/SMPTE.RDD45.2022) Application ProRes or [SMPTE RDD 59-1](https://doi.org/10.5594/SMPTE.RDD59-1.2022) Application DPP (ProRes) (which is based on RDD 45). -RDD 45 specifies certain [SMPTE RDD 36](https://ieeexplore.ieee.org/document/7438722) ProRes bitstream parameters that must be set. bmx will populate the Essence Descriptor from the bitstream and other values supplied on the command line or as defaults. +RDD 45 specifies certain [SMPTE RDD 36](https://doi.org/10.5594/SMPTE.RDD36.2022) ProRes bitstream parameters that must be set. bmx will populate the Essence Descriptor from the bitstream and other values supplied on the command line or as defaults. Here is a snippet of `rdd36dump` output for a suitable [ITU-R BT.2100](https://www.itu.int/rec/R-REC-BT.2100) UHD, HLG transfer function, 25Hz, YCbCr video source bitstream, showing the parameters that are mentioned in RDD 45: @@ -21,7 +21,7 @@ alpha_channel_type: 0 (Not present) Note that RDD 45 specifies that `aspect_ratio_information` and `frame_rate_code` be ignored by readers, but despite this, if they are not set to "Unknown" they should be the correct values to avoid confusion. -The following example creates an Image Track File, from a bitstream formatted as above, that conforms to version 1.2 of the [BBC UHD Delivery Document](https://www.dropbox.com/s/tkvwxksgy3izpca/TechnicalDeliveryStandardsBBCUHDiPlayerSupplement.pdf?dl=0): +The following example creates an Image Track File, from a bitstream formatted as above, that conforms to version 1.2 of the [BBC UHD Delivery Document](https://www.bbc.co.uk/delivery/technical-requirements): ```bash raw2bmx -o {Type}_{fp_uuid}.mxf \ diff --git a/docs/imf_track_files.md b/docs/imf_track_files.md index cb65f33b..d44b4f13 100644 --- a/docs/imf_track_files.md +++ b/docs/imf_track_files.md @@ -1,6 +1,6 @@ # IMF Track Files -The MXF OP1a writer has an Interoperable Master Format (IMF) flavour that helps with the creation of IMF Track Files (as defined in [SMPTE ST 2067-2](https://ieeexplore.ieee.org/document/9097478)). The flavour makes it easier to create IMF Track Files by pre-selecting certain required options. However, it does not have knowledge of all the Track Files defined for IMF (across SMPTE ST 2067-2, the IMF Applications, the IMF Plug-ins, etc) and it does not enforce compliance. For example, it does not check that the input essence and metadata will result in a compliant Track File. +The MXF OP1a writer has an Interoperable Master Format (IMF) flavour that helps with the creation of IMF Track Files (as defined in [SMPTE ST 2067-2](https://doi.org/10.5594/SMPTE.ST2067-2)). The flavour makes it easier to create IMF Track Files by pre-selecting certain required options. However, it does not have knowledge of all the Track Files defined for IMF (across SMPTE ST 2067-2, the IMF Applications, the IMF Plug-ins, etc) and it does not enforce compliance. For example, it does not check that the input essence and metadata will result in a compliant Track File. The IMF flavour is enabled using the `-t imf` clip type option in bmxtranswrap and raw2bmx. This results in the following settings for OP1a, @@ -20,7 +20,7 @@ IMF Track Files contain only a single essence component. bmx provides support fo A number of topics related to creating complete IMF Track Files can be found in the [docs/](./) directory, including Multi-channel Audio Labels, Timed Text, JPEG 2000 and ProRes. -The bmxtranswrap and raw2bmx tools allow setting metadata defined in [SMPTE ST 2067-2](https://ieeexplore.ieee.org/document/9097478), +The bmxtranswrap and raw2bmx tools allow setting metadata defined in [SMPTE ST 2067-2](https://doi.org/10.5594/SMPTE.ST2067-2): * Reference Image Edit Rate (`--ref-image-edit-rate`) * Reference Audio Alignment Level (`--ref-audio-align-level`) @@ -30,7 +30,7 @@ The bmxtranswrap and raw2bmx tools allow setting metadata defined in [SMPTE ST 2 * Active Y Offset (`--active-y-offset`) * Alternative Center Cuts (`--center-cut-4-3` and `--center-cut-14-9`) -and [SMPTE ST 2067-21 - Application #2E](https://ieeexplore.ieee.org/document/9097487), +and [SMPTE ST 2067-21 - Application #2E](https://doi.org/10.5594/SMPTE.ST2067-21.2023): * Mastering Display Primaries (`--display-primaries`) * Mastering Display White Point Chromaticity (`--display-white-point`) diff --git a/meta/rdd6_xml_creator/README.md b/meta/rdd6_xml_creator/README.md index 01fb9337..a50b7266 100644 --- a/meta/rdd6_xml_creator/README.md +++ b/meta/rdd6_xml_creator/README.md @@ -1,8 +1,8 @@ # RDD 6 XML Creator -The [SMPTE RDD 6](https://ieeexplore.ieee.org/document/7290141) (Dolby E Audio Metadata) XML Creator is a basic HTML web page application that creates an XML file suitable for `bmxtranswrap` to embed a static RDD 6 serial bitstream in an MXF file. +The [SMPTE RDD 6](https://doi.org/10.5594/SMPTE.RDD6.2008) (Dolby E Audio Metadata) XML Creator is a basic HTML web page application that creates an XML file suitable for `bmxtranswrap` to embed a static RDD 6 serial bitstream in an MXF file. -The [RDD 6 XML Creator](https://bbc.github.io/bmx/meta/rdd6_xml_creator/) can be found online in github.io. It can also be run locally by coping the [index.html](./index.html) and supporting directories ([css](./css) and [js](./js)) to a local file system, or by using a clone of this Git repository. +The [RDD 6 XML Creator](https://bbc.github.io/bmx/meta/rdd6_xml_creator/) can be found online in github.io. It can also be run locally by copying the [index.html](./index.html) and supporting directories ([css](./css) and [js](./js)) to a local file system, or by using a clone of this Git repository. Open [RDD 6 XML Creator](https://bbc.github.io/bmx/meta/rdd6_xml_creator/) or `index.html` in a web browser and fill-in the RDD 6 metadata. Select "Save XML" to export to a local file. From f3ce38fc15c447eae1544f380633210d2df11f07 Mon Sep 17 00:00:00 2001 From: Thomas Heritage Date: Sat, 6 Jun 2026 18:11:17 +0100 Subject: [PATCH 2/3] ADM docs: updates & improvements * ST 2131/ST 2067-204 are now published * Make corrections * Add further explanation e.g. to close https://github.com/ebu/bmx/issues/29 --- README.md | 2 +- apps/raw2bmx/raw2bmx.cpp | 2 +- docs/audio_definition_model.md | 53 +++++++++++++++++++++++++--------- 3 files changed, 41 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index e51986c7..abf6f5d6 100644 --- a/README.md +++ b/README.md @@ -69,7 +69,7 @@ including the following: * [IMF JPEG 2000 Track Files](./docs/imf_jpeg_2000_track_files.md) * [IMF Audio Track Files](./docs/imf_audio_track_files.md) * [IMF ProRes Image Track Files](./docs/imf_prores_track_files.md) -* [(Beta) Audio Definition Model (ADM) & metadata RIFF chunks](./docs/audio_definition_model.md) +* [Audio Definition Model (ADM) & metadata RIFF chunks](./docs/audio_definition_model.md) ## Build, Test and Install diff --git a/apps/raw2bmx/raw2bmx.cpp b/apps/raw2bmx/raw2bmx.cpp index d786035b..b13d2637 100644 --- a/apps/raw2bmx/raw2bmx.cpp +++ b/apps/raw2bmx/raw2bmx.cpp @@ -744,7 +744,7 @@ static void usage(const char *cmd) printf(" The is a comma separated list of chunk IDs. Spaces are automatically appended to IDs if they are less than 4 letters\n"); printf(" The built-in WAVE chunk IDs are: %s\n", WaveReader::GetBuiltinChunkListString().c_str()); printf(" --adm-wave-chunk [,