From time to time we work on other things beyond DVB broadcast encoding where Open Source can be used to transform closed broadcast workflows. The file delivery specification from the Digital Production Partnership (DPP) is one such area. However, the AVC-Intra codec used in DPP is effectively a proprietary codec with implementation in the real world being more complex than the SMPTE RP2027 that AS-11 recommends and in a number of areas implemented incorrectly. However, we have now successfully reverse engineered AVC-Intra from available samples which allows a fully open source DPP creation workflow. Leveraging existing Open Source projects for manipulation and creation of mxf files, a fully compliant DPP file can be delivered to UK broadcasters. Tests at interoperability events have showed that this implementation has no interoperability issues.

1: x264

x264 is a best-in-class MPEG-4/AVC encoder that’s used for a variety of uses such as web video, Blu-ray disc and broadcast television encoding. It supports 10-bit 4:2:2 as required by DPP. A 10-bit build of x264 is required to make AVC-Intra files. x264 will warn you if you encode AVC-Intra using an 8-bit build. x264 can be downloaded from:  (choose the latest and remember to get a 10-bit build) or better still, compiled from scratch.

x264.exe input.file –colorprim “bt709” –transfer “bt709” –colormatrix “bt709” –tune psnr –fps 25/1 –interlaced –force-cfr –avcintra-class 100 –output-csp i422 -o out.h264

If you get errors about avcintra-class it means your x264 is too old.

2: BMXlib

BMXlib is a library from BBC R&D that is designed to manipulate mxf files. It was used to create the reference DPP files.

raw2bmx.exe -y 09:58:00:00 -t as11op1a -o out.mxf --avci100_1080i out.h264 --wave in.wav --wave in.wav

In this instance two input stereo wave files are used, which is the minimum DPP requirement. These wave files have a bit-depth of 24-bits per sample.

3: DPP Metadata Application

Alas, you say, the DPP Metadata Application isn’t Open Source! This is true, however the metadata application itself uses BMXlib and it’s also possible to add the metadata manually using BMXlib but it’s rather tedious. Import the output mxf into the application and it should be possible to fill in each tab and pass validation.


And after transwrapping, you have a DPP compliant file. Want to know more? Use the chat box in the bottom right to ask more questions.

About OBE