No need to call a method on yourself, you can just access impl->output_info.
Fixed.
but we also don't actually handle this case
The negative stride tests pass, and erroring out here causes the first to fail and crash.
As far as I can tell both the callers and the function expect the size of the entire frame, not just (the first) plane.
Renamed.
So the length we set is supposed to _exclude_ padding? But it doesn't exclude the padding that the sample has according to normal YUV rules?
No, it includes padding according to the frame size set with MF_MT_FRAME_SIZE, which can have extra width. Without extra width, it's padded according to normal YUV rules. This is covered in tests.
Rebased, changed commit message prefixes to "mf/test:" where needed, and got rid of an extra test commit which crept in somewhere and is now upstream anyway.