Server Version#: 1.42.2.10156
Player Version#: 10.30.7.4190
This is happening on a TCL QM8K running Android 14. The device appears to support VC1, but it’s transcoding. The works on Shield TV. My assumption is that Plex is looking for video/wvc1 which is what Nvidia exposes. This appears to be causing the audio to transcode as well, which is also support and usually passes through.
I am an Android developer, so I can side-load an alpha or provide any other detailed info you may need.
119.xml.zip (20.4 KB)
Update (12/23/25):
I noticed the same issue on my HiSense ATV as well. It also exposes VC1 as video/VC1.
Well, didn’t get a lot of replies to this, so I pulled the latest Media3 (ExoPlayer) and I believe I found the issue. From MimeTypes.java
public static final String VIDEO_VC1 = BASE_TYPE_VIDEO + "/wvc1";
But from the Android source code and the official iana.org it’s supposed to be video/vc1, so guess I’ll do a PR to change it to … + “/VC1” and break all the Shield TVs. 
Kidding. I’m going to hack up a version of ExoPlayer with video/VC1 and see if it will play those MKVs on my TCL and Hisense. If that works out, I’ll see if I can wedge support for both codecs into ExoPlayer.
So, spent a bunch of time with this and found some issues. While my TCL QM8K decodes VC1 perfectly, my Hisense 4K stutters. This was also the case with another ATV device I tested. Fixing ExoPlayer would lead to a better ExoPlayer experience as it would play VC1 on more devices. Unfortunately, it would lead to a worse experience on for Plex users on some devices.
At this point, I think the best option would be to ask TCL to expose their VC1 codec as video/wvc1, but that doesn’t seem likely to happen.
Anyway, here is the code I came up with for MimeTypes.java. It looks through the MediaCodecList looking for video/vc1 or video/wvc1 and sets the constant appropriately.
private static final String VIDEO_VC1_NVIDIA = BASE_TYPE_VIDEO + "/wvc1";
private static final String VIDEO_VC1_IANA = BASE_TYPE_VIDEO + "/vc1";
public static final String VIDEO_VC1;
static {
MediaCodecInfo[] mediaCodecInfos = new MediaCodecList(MediaCodecList.REGULAR_CODECS).getCodecInfos();
final String[] vc1MimeTypes = {VIDEO_VC1_IANA, VIDEO_VC1_NVIDIA};
String vc1Type = VIDEO_VC1_NVIDIA;
for (MediaCodecInfo mediaCodecInfo : mediaCodecInfos) {
if (mediaCodecInfo.isEncoder()) {
continue;
}
for (String mimeType : mediaCodecInfo.getSupportedTypes()) {
for (String vc1MimeType : vc1MimeTypes) {
if (vc1MimeType.equalsIgnoreCase(mimeType)) {
vc1Type = vc1MimeType;
break;
}
}
}
}
VIDEO_VC1 = vc1Type;
}
FYI: The two codecs that worked for me are “c2.mtk.vc1.decoder” and “OMX.Nvidia.vc1.decode”.