avformat/matroskaenc: Write additional mappings for webm
The elements written in mkv_write_blockadditionmapping (MaxBlockAdditionID, BlockAddIDType and BlockAddIDValue) are all allowed in WebM as well. Move them out of the "if (!IS_WEBM)" block. Matroska spec: https://www.matroska.org/technical/elements.html#MaxBlockAdditionID (See column with title "W" which shows WebM availability). WebM spec: https://www.webmproject.org/docs/container/#MaxBlockAdditionID Signed-off-by: Vignesh Venkat <vigneshv@google.com>
This commit is contained in:
+18
-21
@@ -2145,8 +2145,7 @@ static int mkv_write_track(AVFormatContext *s, MatroskaMuxContext *mkv,
|
||||
return AVERROR(EINVAL);
|
||||
}
|
||||
|
||||
if (!IS_WEBM(mkv))
|
||||
mkv_write_blockadditionmapping(s, mkv, par, pb, track, st);
|
||||
mkv_write_blockadditionmapping(s, mkv, par, pb, track, st);
|
||||
|
||||
if (!IS_WEBM(mkv) || par->codec_id != AV_CODEC_ID_WEBVTT) {
|
||||
uint8_t *codecpriv;
|
||||
@@ -3372,30 +3371,28 @@ after_cues:
|
||||
|
||||
if (mkv->track.bc) {
|
||||
// write Tracks master
|
||||
if (!IS_WEBM(mkv)) {
|
||||
AVIOContext *track_bc = mkv->track.bc;
|
||||
AVIOContext *track_bc = mkv->track.bc;
|
||||
|
||||
for (unsigned i = 0; i < s->nb_streams; i++) {
|
||||
const mkv_track *track = &mkv->tracks[i];
|
||||
for (unsigned i = 0; i < s->nb_streams; i++) {
|
||||
const mkv_track *track = &mkv->tracks[i];
|
||||
|
||||
if (!track->max_blockaddid)
|
||||
continue;
|
||||
if (!track->max_blockaddid)
|
||||
continue;
|
||||
|
||||
// We reserved a single byte to write this value.
|
||||
av_assert0(track->max_blockaddid <= 0xFF);
|
||||
// We reserved a single byte to write this value.
|
||||
av_assert0(track->max_blockaddid <= 0xFF);
|
||||
|
||||
avio_seek(track_bc, track->blockadditionmapping_offset, SEEK_SET);
|
||||
avio_seek(track_bc, track->blockadditionmapping_offset, SEEK_SET);
|
||||
|
||||
put_ebml_uint(track_bc, MATROSKA_ID_TRACKMAXBLKADDID,
|
||||
track->max_blockaddid);
|
||||
if (track->max_blockaddid == MATROSKA_BLOCK_ADD_ID_ITU_T_T35) {
|
||||
ebml_master mapping_master = start_ebml_master(track_bc, MATROSKA_ID_TRACKBLKADDMAPPING, 8);
|
||||
put_ebml_uint(track_bc, MATROSKA_ID_BLKADDIDTYPE,
|
||||
MATROSKA_BLOCK_ADD_ID_TYPE_ITU_T_T35);
|
||||
put_ebml_uint(track_bc, MATROSKA_ID_BLKADDIDVALUE,
|
||||
MATROSKA_BLOCK_ADD_ID_ITU_T_T35);
|
||||
end_ebml_master(track_bc, mapping_master);
|
||||
}
|
||||
put_ebml_uint(track_bc, MATROSKA_ID_TRACKMAXBLKADDID,
|
||||
track->max_blockaddid);
|
||||
if (track->max_blockaddid == MATROSKA_BLOCK_ADD_ID_ITU_T_T35) {
|
||||
ebml_master mapping_master = start_ebml_master(track_bc, MATROSKA_ID_TRACKBLKADDMAPPING, 8);
|
||||
put_ebml_uint(track_bc, MATROSKA_ID_BLKADDIDTYPE,
|
||||
MATROSKA_BLOCK_ADD_ID_TYPE_ITU_T_T35);
|
||||
put_ebml_uint(track_bc, MATROSKA_ID_BLKADDIDVALUE,
|
||||
MATROSKA_BLOCK_ADD_ID_ITU_T_T35);
|
||||
end_ebml_master(track_bc, mapping_master);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
dc7593b977b092e522018de7e0d12681 *tests/data/fate/webm-av1-extradata-update.webm
|
||||
23047 tests/data/fate/webm-av1-extradata-update.webm
|
||||
4be8d56dd9c4c94b704d41c8b354f3e7 *tests/data/fate/webm-av1-extradata-update.webm
|
||||
23062 tests/data/fate/webm-av1-extradata-update.webm
|
||||
#extradata 0: 35, 0x527207cd
|
||||
#tb 0: 1/1000
|
||||
#media_type 0: video
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
e2d3d812e6d9cf05a36eaefe02801a99 *tests/data/fate/webm-dash-chapters.webm
|
||||
111149 tests/data/fate/webm-dash-chapters.webm
|
||||
d3146d0817d9f3471b4bda4fa61cc090 *tests/data/fate/webm-dash-chapters.webm
|
||||
111153 tests/data/fate/webm-dash-chapters.webm
|
||||
#extradata 0: 3469, 0xc6769ddc
|
||||
#tb 0: 1/1000
|
||||
#media_type 0: audio
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
7c5ae91189589c07f92aa97cb9b3d9e1 *tests/data/fate/webm-hdr10-plus-remux.webm
|
||||
13842 tests/data/fate/webm-hdr10-plus-remux.webm
|
||||
4bd2b26ae7c25c3e873ee76229ecbe7c *tests/data/fate/webm-hdr10-plus-remux.webm
|
||||
13857 tests/data/fate/webm-hdr10-plus-remux.webm
|
||||
#tb 0: 1/1000
|
||||
#media_type 0: video
|
||||
#codec_id 0: vp9
|
||||
@@ -16,7 +16,7 @@ dts_time=0.000000
|
||||
duration=40
|
||||
duration_time=0.040000
|
||||
size=13350
|
||||
pos=392
|
||||
pos=407
|
||||
flags=K__
|
||||
[SIDE_DATA]
|
||||
side_data_type=HDR10+ Dynamic Metadata (SMPTE 2094-40)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
c372c76c062d368f1d17373c19f83579 *tests/data/fate/webm-webvtt-remux.webm
|
||||
6524 tests/data/fate/webm-webvtt-remux.webm
|
||||
22d1105067d2ac031ecc21542750255e *tests/data/fate/webm-webvtt-remux.webm
|
||||
6540 tests/data/fate/webm-webvtt-remux.webm
|
||||
#tb 0: 1/1000
|
||||
#media_type 0: subtitle
|
||||
#codec_id 0: webvtt
|
||||
|
||||
Reference in New Issue
Block a user