Zebediah says we can't simply add IYUV and RGB8 to wg_video_format. Then I think this method doesn't work because we need a wg_video_format to identify each type and convert it to subtype/bpp/compression.
Also, we can't simply make IYUV fails in GetOutputType(). Because there is high possibility that an application use type index to enumerate each output formats. If one format fails, the enumration will stop, formats behind the failed format will be ignored.
Sorry, I missed looking at the rest of this review.
Adding an IYUV format to winegstreamer to match this isn't the worst thing we can do, although in that case we should probably stop mapping IYUV to WG_VIDEO_FORMAT_I420 elsewhere.
Adding RGB8 without properly supporting it bothers me more. It probably wouldn't be the worst thing to create a WG_MAJOR_TYPE_RGB8 and not actually implement conversion, though.
But I also don't think it's that bad just to leave the structs as in v1, or v3.