Part of #920 (rank 3). Effort S, risk low.
Problem
- Screen and webcam are encoded as H.264 Constrained Baseline, 1 reference frame, CAVLC (measured with
ffprobe). mf_encoder.cpp never sets MF_MT_MPEG2_PROFILE, so the Media Foundation encoder picks Baseline.
- Re-encoding the same recordings through the same hardware MFT (NVENC,
h264_mf -hw_encoding 1) at equal bitrate:
- screen: +1.7 dB PSNR (45.31 → 46.98 dB at 4 Mbit/s);
- webcam: +1.9 VMAF (89.11 → 91.05 at 4 Mbit/s).
Proposal
- Ask for
eAVEncH264VProfile_High on the output type (and CODECAPI_AVEncMPVProfile where the MFT reads it), with a fallback to the current behaviour if the encoder refuses it.
- No B-frames: they broke the fragmented writer on macOS (negative offsets). Keep the GOP as is.
Verify
ffprobe reads profile=High on both tracks, hardware and software encoder paths.
- Fragmented MP4 still plays and seeks; the compositor decodes and exports it.
Part of #920 (rank 3). Effort S, risk low.
Problem
ffprobe).mf_encoder.cppnever setsMF_MT_MPEG2_PROFILE, so the Media Foundation encoder picks Baseline.h264_mf -hw_encoding 1) at equal bitrate:Proposal
eAVEncH264VProfile_Highon the output type (andCODECAPI_AVEncMPVProfilewhere the MFT reads it), with a fallback to the current behaviour if the encoder refuses it.Verify
ffprobereadsprofile=Highon both tracks, hardware and software encoder paths.