Handling some formats differently than other only makes things more complicated than they need to be, and it still breaks every application that uses a format which we haven't added yet. It also doesn't address point 4 at all, hardware video conversion is not easily possible if it's done on GStreamer side and there's still unnecessary buffer copies present in the code. It also doesn't address point 3 either for any application that want to play arbitrary video stream and output D3D buffers.
Instead, my solution is future proof and supports every compressed format the same way Windows would. I don't think we can even define a meaningful set of Windows supported formats BTW, why would it even be bounded? For many cases we do not even need to expose the actual Windows codec format information, because most of the time apps don't care, and we only need to implement the ones that apps actually care about. So far I've only seen them care about the formats we already map specifically.