Why can't we handle this the way that d2d1.idl does? It doesn't include wincodec.idl, but it declares the interfaces it uses from there.
I know the Windows SDK doesn't do that, but that's probably because the SDK headers are weird and don't declare the d2d1 interfaces in an idl.