Blog Post

Linux and Open Source Blog
4 MIN READ

Announcing the Open-Source Release of ML Video Codec (MLVC)

Naba_Kumar's avatar
Naba_Kumar
Icon for Microsoft rankMicrosoft
Jul 24, 2026

We are excited to announce that ML Video Codec (MLVC) — a neural-network-based video codec developed at Microsoft — is being released to the open-source community under the MIT License.

 

Video codecs compress video for transmission or storage, reducing bandwidth and storage requirements. MLVC is a modern machine-learning-based codec that uses substantially less bandwidth than conventional codecs, improving streaming and video-call quality—especially on constrained or unreliable networks—while lowering delivery and storage costs.

MLVC is the product iteration of DCVC (Deep Contextual Video Compression) family of NVC (Neural Video Codec), open sourced by Microsoft Research since 2021, with improved compression efficiency, real-time performance on commodity Neural Processing Units (NPUs), and cross-platform support. We recently published this work in the paper MLVC: Multi-platform Learned Video Codec for Real-World Deployment. We are releasing the source code because we believe the next generation of video coding will be built openly, and we want the broader community — researchers, video codec engineers, platform vendors, product teams, as well as general developer community — to build it with us.

Why MLVC

Traditional video codecs (e.g., H.264/AVC, H.265/HEVC) have served the industry for a long time, but each generation requires enormous engineering effort for incremental gains and needs dedicated hardware which takes years to become commonly available. MLVC replaces conventional primitives — motion estimation, transforms, entropy modeling — with end-to-end learned neural compression, trained directly against rate-distortion objectives, and run on general-purpose NPU devices. 

The table below compares MLVC to popular video codecs, showing its lower bitrate and resulting savings in bandwidth and storage.

Resolution

vs H.264

vs H.265

360p

87.8%

75.5%

540p

82.7%

65.4%

 

For example, for 360p video at 30 fps, where H.264 requires 1 Mbps, MLVC requires roughly 122 kbps for equivalent quality — about one-eight the bitrate under real-time conditions. The inference compute was kept approximately equal for the 360p and 540p resolutions. These results are based on a P.910 subjective test and are based on the Video Conferencing Dataset (VCD) dataset that we developed and also recently released as an open-source project.

The following video demo illustrates the extent of quality enhancement achieved by MLVC relative to H.265/HEVC at the same bitrate of 200kbps (please watch by opening in a new window for better demonstration)

\

 

Beyond video compression efficiency, MLVC also offers:

  • NPU-first design. MLVC is built to run almost entirely on the AI accelerators already shipping in modern devices — Apple Neural Engine, Qualcomm and Intel NPUs — at no more than 50% NPU utilization, leaving NPU headroom for the rest of the system.
  • Real-time execution at the targeted operating points. Demonstrated 540p at 30 fps on Apple, Intel, and Qualcomm hardware.
  • A scaling-law trajectory. Empirically, MLVC's coding efficiency improves with increased model capacity and additional training compute.
  • Content-adaptive behavior out of the box, without hand-tuned Rate Distortion Optimization heuristics.

Already running in Microsoft Teams

MLVC is more than just a research concept for Microsoft. We are currently rolling it out in Microsoft Teams, where it is being validated on real peer-to-peer video calls with active telemetry and A/B testing. The integration runs alongside fallback to conventional video codecs for hardware or reliability constraints — the kind of mixed-environment deployment that real products need. The scaling and reliability insights from this rollout are shaping the codec and its roadmap.

We welcome your contributions

We can not cover every use case, every device class, or every content domain by ourselves. That is why we are open sourcing MLVC. If you work on:

  • Streaming, Video On Demand (VOD), or live broadcast
  • Real-time communication and conferencing
  • Cloud gaming or remote rendering
  • Surveillance, drones, or robotics
  • Mobile capture, Augmented Reality (AR) / Virtual Reality (VR), or volumetric video
  • Codec hardware, NPUs, or inference runtimes

We would love your help. Contributions of all kinds are welcome, including model improvements, training recipes, new platform ports and conversion targets, runtime backends, domain-specific fine-tunes, evaluation tooling, bug reports, and feedback on what is missing for your scenario. We particularly welcome platform ports that expand NPU coverage and efficiency improvements that push the rate-distortion frontier.

What's in the release

The MLVC repository is available at https://github.com/microsoft/mlvc and shared under the MIT License. It includes:

  • MLVC model source code of the full network architecture.
  • Trained model weights ready to run.
  • Training scripts used to produce shipping models.
  • Training data collection documentation to help reproduce and improve MLVC.
  • Platform conversion scripts to target different NPUs and runtimes.

Issues and pull requests will be open from day one.

A follow-up release will add a C++ codec library, simplifying integration into real-world applications.

Where we're heading

Our long-term goal with MLVC is to create an open, learned video codec that meets or exceeds the coding efficiency of the best conventional codecs across the full range of video content, runs efficiently on the AI hardware already shipping in client and cloud devices, scales with compute the way modern ML systems do, and evolves in the open at the pace of the ML community rather than the pace of standardization cycles.

In the near term that means stabilizing 540p real-time performance, expanding hardware coverage, and improving loss resilience. In the medium term: higher resolution, e.g., 1080p, and broader streaming scenarios. In the long term: an open video codec ecosystem that meaningfully replaces legacy stacks where it makes sense to.

We can't create the future of MLVC alone. We're glad you're here, and we are looking forward to building the next-generation video codec with you.

Who are we

MLVC is brought to you by the following awesome folks working on the project at Microsoft: Ross Cutler, Ando Saabas, Tanel Pärnamaa, Ardi Loot, Haiyan Xie, Lauri Ehrenpreis, Andrei Znobishchev, Martin Lumiste, Evgenii Indenbom, Yan Lu, Bin Li, Jiahao Li, Naba Kumar, Babak Naderi, Juhee Cho, Badal Yadav, Jinxin Zhou, Tianyu Ding, Patrick Gregory.

 

— The MLVC Team, Microsoft

Updated Jul 24, 2026
Version 6.0

5 Comments

  • Hello everyone,
    I would like to share the news that we have also open sourced the MLVC C++ codec library just recently, as promised in the original post. The C++ codec library encapsulates the MLVC model and makes it easy to integrate it into your applications without having to deal with model development. You can find it on Github at microsoft/libmlvc: C++ codec library for MLVC, the Multi-platform Learned Video Codec for real-world deployment. Hopefully, this helps people trying out MLVC in their projects and encourage participating in its development.

  • Hello BlueRaja​ , please see below for your answers:

    1. The codec model can be configured for different resolutions. The resolutions cited in the blog post are typical examples used in multi-party video conferencing scenarios, where both encoding and decoding must run in real time while using limited NPU capacity. Higher resolutions can be achieved by allocating more compute to the model if you are flexible with the system constraints. For example, running only the decoder (a streaming scenario) or utilizing the full NPU capacity when no other workloads are competing for it could allow the model to run at a higher resolution. I encourage you to try it out and raise an issue to discuss the possibility of running it in the manner you are interested in.
    2. The above examples run at 30 fps on Mac and Intel Lunar Lake and Panther Lake NPUs, utilizing about 50% of the NPU capacity. The compute cost is the same for encoding and decoding in the current design, so this should give you an idea of how much compute each requires.
    3. Model sizes are listed on the GitHub page. The large version is approximately 18 MB, and the small version is approximately 5.4 MB, plus the C++ library.
    4. Currently, both encoding and decoding require the same model version, so some form of versioning is needed to maintain stream compatibility within an application. We welcome efforts to standardize this aspect so that interoperability can be achieved across the board.
  • BlueRaja's avatar
    BlueRaja
    Copper Contributor

    This article doesn't answer many of my biggest questions

    • Is the codec able to handle arbitrary resolutions/framerates, or only those two? If so, how do the compression rates compare for more realistic resolutions?
    • What is the compute cost for decoding? What sort of hardware is required to decode in real time?
    • What is the size of the codec itself compared to existing solutions? 
    • If the codec is updated with new model weights in the future, will it still be able to decode video that was encoded using an older model? Or does this technology require keeping copies of every model ever on our PCs?
    • ClemCa's avatar
      ClemCa
      Copper Contributor

      If the NVIDIA one is anything to go by, the embeddings will stay relatively consistent between versions, so it shouldn't lead to a lot of artifacts between different versions, but there's no guarantee.

      Decoding is supposedly not very expensive, though we'll have to see in application.