Initiated as part of the MonteVIDEO Tech Summer Camp 2024, the CMAF HAM project was sponsored by Alex Zambelli, Senior Product Manager at Dolby. It emerged as an innovative solution to address the complexities of converting and manipulating video formats between HLS and DASH, two of the most widely used streaming technologies in the industry. Despite the existence of similar initiatives and interoperability specifications, the lack of open-source tools to simplify these tasks drove the creation of CMAF HAM.

Challenge

The primary challenge was to develop a tool capable of effectively managing HLS and DASH manifests, supporting format conversion, and enabling programmatic editing to add, remove, or modify elements. This had to be achieved while maintaining fidelity to the Common Media Application Format (CMAF) specifications and promoting the adoption of these practices among video developers.

Architecture and Logical Model of CMAF HAM
To tackle this challenge, CMAF HAM was built upon the ISO/IEC 23000-19 standard, focusing on the logical model of CMAF. This model incorporates elements such as Presentation, Selection Set, Aligned Switching Set, Switching Set, and Track, creating a cohesive framework for mapping and managing manifests between DASH MPD and HLS M3U8.

Specifications and Standards
CMAF HAM aligns with several key specifications, including CMAF (ISO/IEC 23000-19), DASH-HLS Interoperability Spec. (CTA-5005-A), MPEG-DASH Spec (ISO/IEC 23009-1 ed.5), and HLS Spec (IETF RFC 8216). These standards ensure broad compatibility and encourage industry-wide adoption.

Process

The development of CMAF HAM followed a collaborative approach, starting with an analysis of existing challenges in HLS and DASH interoperability. This analysis involved identifying common pain points developers face when handling manifests, such as the complexity of programmatic editing and the lack of standardized tools.

The project began with weekly meetings led by tech sponsor Alex Zambelli, where contributors from the Qualabs team and other industry experts defined clear objectives and prioritized tasks. Initial steps included designing the library's architecture based on the ISO/IEC 23000-19 standard and aligning it with the Hypothetical Application Model (HAM) framework.

Implementation was carried out in TypeScript as part of the Common Media Library (CML), ensuring seamless integration with existing tools. Throughout the process, the team conducted:

  • Code Reviews: To ensure high-quality, reusable, and maintainable code.
  • Unit and Integration Tests: To validate functionality and ensure the library met technical specifications.
  • Proof-of-Concept Demos: To showcase the library's ability to convert between VOD HLS and DASH manifests.

To further demonstrate the library's capabilities, an example project, cmaf-ham-conversion, was published as part of CML. Collaboration tools like Slack and GitHub facilitated seamless communication, enabling transparent workflows and effective issue tracking

Solution

CMAF HAM was developed as a library providing an extensible API for importing, editing, and exporting HLS and DASH manifests programmatically. Built on the Hypothetical Application Model (HAM) defined in CMAF, the library abstracts both formats into an intermediate media presentation object model, streamlining format conversion and enabling use cases ranging from basic conversions to complex media manipulations. Explore the library’s capabilities: NPM Package | Example Project.

Results

The implementation of CMAF HAM has significantly impacted the video development ecosystem by improving interoperability and flexibility in video content delivery. A proof-of-concept demo conducted at the MonteVIDEO Tech Summer Camp 2024 showcased its ability to seamlessly convert VOD HLS and DASH manifests. Watch the demo here.

Feedback and Next Steps

The CMAF HAM project, led by contributors like Alex Zambelli, and supported by experts including Zachary Cava, Casey Occhialini, Christian Pillsbury, Walker Griggs, Gabriel Dávila Revelo, Dan Sparacio, Barry Owen, Scott Kellicker, and the Qualabs team, invites feedback from the community. Suggestions for features and use cases can be shared directly through the GitHub repository.