@pavel It looks off - I'm afraid this is effectively an upscaled 524x778 stream. Your yuyv function throws half of the horizontal resolution away by duplicating the pixels' luminosity (and that's in addition to regular chroma subsampling that will happen there, which wouldn't be as noticeable on its own).
There's clearly more work to do. Re-starting app when starting recording is not great, nor is viewfinder limited to 1fps. Even more scary is what happens when I adjust viewfinder to 10fps...