- if (st->disposition & AV_DISPOSITION_CAPTIONS) {
- codec_id = "D_WEBVTT/CAPTIONS";
- native_id = MATROSKA_TRACK_TYPE_SUBTITLE;
- } else if (st->disposition & AV_DISPOSITION_DESCRIPTIONS) {
- codec_id = "D_WEBVTT/DESCRIPTIONS";
- native_id = MATROSKA_TRACK_TYPE_METADATA;
- } else if (st->disposition & AV_DISPOSITION_METADATA) {
- codec_id = "D_WEBVTT/METADATA";
- native_id = MATROSKA_TRACK_TYPE_METADATA;
- } else {
- codec_id = "D_WEBVTT/SUBTITLES";
- native_id = MATROSKA_TRACK_TYPE_SUBTITLE;
+ if (par->codec_type != AVMEDIA_TYPE_SUBTITLE) {
+ for (j = 0; ff_webm_codec_tags[j].id != AV_CODEC_ID_NONE; j++) {
+ if (ff_webm_codec_tags[j].id == par->codec_id) {
+ codec_id = ff_webm_codec_tags[j].str;
+ native_id = 1;
+ break;
+ }
+ }
+ } else if (par->codec_id == AV_CODEC_ID_WEBVTT) {
+ if (st->disposition & AV_DISPOSITION_CAPTIONS) {
+ codec_id = "D_WEBVTT/CAPTIONS";
+ native_id = MATROSKA_TRACK_TYPE_SUBTITLE;
+ } else if (st->disposition & AV_DISPOSITION_DESCRIPTIONS) {
+ codec_id = "D_WEBVTT/DESCRIPTIONS";
+ native_id = MATROSKA_TRACK_TYPE_METADATA;
+ } else if (st->disposition & AV_DISPOSITION_METADATA) {
+ codec_id = "D_WEBVTT/METADATA";
+ native_id = MATROSKA_TRACK_TYPE_METADATA;
+ } else {
+ codec_id = "D_WEBVTT/SUBTITLES";
+ native_id = MATROSKA_TRACK_TYPE_SUBTITLE;
+ }
+ }
+
+ if (!native_id) {
+ av_log(s, AV_LOG_ERROR,
+ "Only VP8 or VP9 or AV1 video and Vorbis or Opus audio and WebVTT subtitles are supported for WebM.\n");
+ return AVERROR(EINVAL);