I tried using Internals.grabNextMediaStreamTrackFrame for a test. It relies on MediaSample::getRGBAImageData. MediaSampleAVFObjC::getRGBAImageData does try to convert the sample's underlying CVPixelBuffer to RGBA, but it doesn't seem to work, at least for the case I was trying. When the frame was using a YUV420 pixel format, the PixelBufferConformerCV failed to do a conversion and instead produced a new CVPixelBuffer with the same format. The result is that in the test, the ImageData object passed to the grabNextMediaStreamTrackFrame Promise callback contained planar YUV data pretending to be RGBA. I failed to trace into VTPixelBufferConformerCopyConformedPixelBuffer to work out why this wasn't working.
<rdar://problem/84400615>