diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c
index e5e6116..47d056c 100644
|
a
|
b
|
static int mkv_write_header(AVFormatContext *s)
|
| 1096 | 1096 | AVIOContext *pb = s->pb; |
| 1097 | 1097 | ebml_master ebml_header, segment_info; |
| 1098 | 1098 | AVDictionaryEntry *tag; |
| 1099 | | int ret, i; |
| | 1099 | int ret, i, version = 2; |
| 1100 | 1100 | |
| 1101 | 1101 | if (!strcmp(s->oformat->name, "webm")) mkv->mode = MODE_WEBM; |
| 1102 | 1102 | else mkv->mode = MODE_MATROSKAv2; |
| … |
… |
static int mkv_write_header(AVFormatContext *s)
|
| 1104 | 1104 | if (s->avoid_negative_ts < 0) |
| 1105 | 1105 | s->avoid_negative_ts = 1; |
| 1106 | 1106 | |
| 1107 | | for (i = 0; i < s->nb_streams; i++) |
| | 1107 | if (mkv->mode != MODE_WEBM || |
| | 1108 | av_dict_get(s->metadata, "stereo_mode", NULL, 0) || |
| | 1109 | av_dict_get(s->metadata, "alpha_mode", NULL, 0)) |
| | 1110 | version = 4; |
| | 1111 | |
| | 1112 | for (i = 0; i < s->nb_streams; i++) { |
| 1108 | 1113 | if (s->streams[i]->codec->codec_id == AV_CODEC_ID_ATRAC3 || |
| 1109 | 1114 | s->streams[i]->codec->codec_id == AV_CODEC_ID_COOK || |
| 1110 | 1115 | s->streams[i]->codec->codec_id == AV_CODEC_ID_RA_288 || |
| … |
… |
static int mkv_write_header(AVFormatContext *s)
|
| 1116 | 1121 | avcodec_get_name(s->streams[i]->codec->codec_id)); |
| 1117 | 1122 | return AVERROR_PATCHWELCOME; |
| 1118 | 1123 | } |
| | 1124 | if (s->streams[i]->codec->codec_id == AV_CODEC_ID_OPUS || |
| | 1125 | av_dict_get(s->streams[i]->metadata, "stereo_mode", NULL, 0) || |
| | 1126 | av_dict_get(s->streams[i]->metadata, "alpha_mode", NULL, 0)) |
| | 1127 | version = 4; |
| | 1128 | } |
| 1119 | 1129 | |
| 1120 | 1130 | mkv->tracks = av_mallocz(s->nb_streams * sizeof(*mkv->tracks)); |
| 1121 | 1131 | if (!mkv->tracks) |
| … |
… |
static int mkv_write_header(AVFormatContext *s)
|
| 1127 | 1137 | put_ebml_uint (pb, EBML_ID_EBMLMAXIDLENGTH , 4); |
| 1128 | 1138 | put_ebml_uint (pb, EBML_ID_EBMLMAXSIZELENGTH , 8); |
| 1129 | 1139 | put_ebml_string (pb, EBML_ID_DOCTYPE , s->oformat->name); |
| 1130 | | put_ebml_uint (pb, EBML_ID_DOCTYPEVERSION , 4); |
| | 1140 | put_ebml_uint (pb, EBML_ID_DOCTYPEVERSION , version); |
| 1131 | 1141 | put_ebml_uint (pb, EBML_ID_DOCTYPEREADVERSION , 2); |
| 1132 | 1142 | end_ebml_master(pb, ebml_header); |
| 1133 | 1143 | |