FFmpeg adds H.264 MVC decoding for Blu-ray 3D multiview
Dom Cobley's series brings Annex H stereo streams to h264dec with the same view selection interface already used for MV-HEVC.
Dom Cobley has posted an 18-part patch series to the FFmpeg development list that adds decoding of H.264 Multiview Video Coding (MVC, Annex H) to the existing H.264 decoder. The target material is Blu-ray 3D and consumer camcorder recordings that use the same coding. The work puts h264dec on the same footing as hevcdec, which already handles multiview HEVC.
Only the base view is decoded by default, so callers that never ask for more see no behaviour change. When extra views are wanted, the decoder reuses the view_ids, view_ids_available, and view_pos_available options already defined for MV-HEVC. Because the ffmpeg CLI reaches those options by name, existing view map specifiers work for both codecs without tool changes. H.264 has no equivalent of MV-HEVC's 3D reference-display SEI, so reported view positions stay unspecified.
An MVC access unit is strictly ordered (base view, then each dependent view) and can yield more than one frame from a single packet. The series therefore moves the decoder onto the receive_frame path and queues finished pictures for paired output. Per-view state that actually differs (picture order counts and reference lists) is held in a small view context and swapped at view boundaries, rather than threading a layer index through the hundreds of sites that would otherwise need it. The decoded picture buffer remains a single shared pool.
Hardware accelerators still build their picture lists from temporal short and long references only. Inter-view references live outside those lists and need not be temporal references at all, so a dependent-view slice would name a surface the accelerator was never given. When multiview output is requested under a hwaccel, the decoder warns and decodes the base view only.
Container support covers the MVCDecoderConfigurationRecord used by some MP4 tracks, merging its subset parameter sets into the track extradata so dependent views are not dropped when those sets are not carried in band. Cobley reports the series is bisectable, passes the H.264 FATE suite, matches JMVC reference reconstructions on a freely redistributable sample, and has been tried in public LibreELEC builds on Raspberry Pi. He says the work was significantly helped by Claude Opus 5, and that he will own the changes and help with future issues.