mirror of
https://gitlab.com/mbunkus/mkvtoolnix.git
synced 2025-02-26 08:22:31 +00:00
MP4 reader: fixes for the COLR atom support
• don't emit warnings or errors on failures, just don't parse the data • fix structure size comparison (sizeof(structure), not sizeof(integer variable)) • update test suite checksums • update AUTHORS
This commit is contained in:
parent
7467d2d3ef
commit
cd742ed987
1
AUTHORS
1
AUTHORS
@ -53,6 +53,7 @@ Carvalho, pp <?>
|
||||
|
||||
Chen, Chao <tochenchao@gmail.com>
|
||||
* Support colour elements for video tracks
|
||||
* Support reading colour elements from "COLR" atoms in MP4 files
|
||||
* Support for Apple ProRes video
|
||||
|
||||
Chen, Mike <mike.chen82@googlemail.com>
|
||||
|
@ -2576,8 +2576,6 @@ qtmp4_demuxer_c::set_packetizer_colour_properties() {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void
|
||||
qtmp4_demuxer_c::handle_stsd_atom(uint64_t atom_size,
|
||||
int level) {
|
||||
@ -2715,27 +2713,22 @@ qtmp4_demuxer_c::handle_video_stsd_atom(uint64_t atom_size,
|
||||
if ((stsd_non_priv_struct_size + 8) < atom_size) {
|
||||
auto offset = stsd_non_priv_struct_size;
|
||||
auto atom_ptr = priv + offset;
|
||||
uint32_t size = get_uint32_be(atom_ptr);
|
||||
auto size = get_uint32_be(atom_ptr);
|
||||
fourcc_c ext_fourcc{atom_ptr + sizeof(uint32_t)};
|
||||
if (ext_fourcc == "colr") {
|
||||
if (size > atom_size) {
|
||||
mxerror(boost::format(Y("Quicktime/MP4 reader: Failed parsing colour atom for track ID %1%.\n")) % id);
|
||||
}
|
||||
|
||||
if ((ext_fourcc == "colr") && (size <= atom_size))
|
||||
handle_colr_atom(offset, size);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
qtmp4_demuxer_c::handle_colr_atom(uint64_t offset,
|
||||
uint64_t size) {
|
||||
colr_atom_t colr_atom;
|
||||
size_t color_atom_size = sizeof(colr_atom_t);
|
||||
if (sizeof(color_atom_size) > size) {
|
||||
mxwarn(boost::format(Y("Quicktime/MP4 reader: Could not read the colour atom for track ID %1%.\n")) % id);
|
||||
if (sizeof(colr_atom_t) > size)
|
||||
return;
|
||||
}
|
||||
memcpy(&colr_atom, stsd->get_buffer() + offset, color_atom_size);
|
||||
|
||||
colr_atom_t colr_atom;
|
||||
memcpy(&colr_atom, stsd->get_buffer() + offset, sizeof(colr_atom_t));
|
||||
fourcc_c colour_type{&colr_atom.colour_type};
|
||||
if (colour_type == "nclc") {
|
||||
v_colour_primaries = get_uint16_be(&colr_atom.colour_primaries);
|
||||
|
@ -62,7 +62,7 @@ T_212ssa_attachments:999a77e089a78cae86d546266c0f6898-9a5a5ed80808c9d448ca5b44b6
|
||||
T_213mp4_broken_pixel_dimensions:82cd619cff1f3ec446b9be16204c844c:passed:20050919-094831:0.167783191
|
||||
T_214one_frame_avi:683d26d5c30a903e4bfba86448fc3ec2:passed:20051004-192755:0.039489971
|
||||
T_215X_codec_extradata_avi:e8c0c4dad4908f20062be3c1f3b9ad85-74ac799ad899f703cbb6c6654e5f9f51:passed:20051004-194707:0.052219855
|
||||
T_216mp4_editlists:6be3d8f420f2601b5adc76563f69be38:passed:20051118-191453:0.106975045
|
||||
T_216mp4_editlists:bea53d8f0e626436e97fada22ce6ac0d:passed:20051118-191453:0.106975045
|
||||
T_217file_identification:7a2a506954a56f21739e7912897e07ad-903514f1cd84055d9b06ecff5e8d1ea1-07bcdabfac85ad1ec8daffbd3ec4d6b8-066048d39c245bbda03d357bec5b9593-279167d14c30edc4788cc066f22c941f-ccd6c289299801382b09a9bc13326092-44256b48783ae449ceca65e8419d72e8-cd6039be3553f8bf857c77c8bb99ad1b-55543e6744a979d4a3ffbf0e0bcc855c-d2389a900373adc4864fb3534e145fb0-7febbb46072c2b256735786471c02df4-e2853a83b5964834faa6aa34318aad9c-734e635a1b254319593e24ba89e2434c-1c31748e6eaabc9b84eb737124f457d3-f4bf52b0bf7c773ec337a9d29043b84c-ab8604871b63846cd7df9d5282db3f35-2b05e8b45ff5b8568be5f4aed1bd18bc-4efb23ae937e58377bf4cc00d93f85d0-3b9e8de7136f2fffa4e2bbf1b4aa38e0-db05f705a1e059b29f4db1ea3ee9d59e-e38a8502cd0c407d8ce517913a2db8c0-588d6dd39935990b73cbb2158cf960fe:passed:20051209-180815:1.882517588
|
||||
T_218theora:049c4b011a7269d1f9682f0eb673c451-6aa1d73668db13ac875f4325d8797c3f:passed:20060428-105054:0.392912102
|
||||
T_219srt_short_timecodes:4d58c1d5ddab6368080d54a7585b0f83:passed:20060926-112658:0.117747192
|
||||
@ -401,7 +401,7 @@ T_552chapter_generation_appending_file_name_variables:e245d6085507ee683e0dde15d6
|
||||
T_553ogg_kate:ad870277b84e9eb854e892efe7d492cc-31c5c4be58498e0253793ddc95800822-d9b01e2980db852b069d3d4c6f3d6224-14bd1a7b87e2cc73d7f75c8571e2b763-ad8a5c48f0319f96b0370b207fae0df7-ec201dc9b27a01944baccb743d13a93f-9417c13186b160c1ce0274ba334a14e1-6ef7cebe4b5d93e4b53ac756bbab2022-ca3b77660b2fcfbd42cbfc81fd619d73-78bd361482710aba3072b88eda44bd35-c1bd2d6384ae14ea374a4116eb227253-35b6b5fe2cbac95e3ef549e05259c587-b291fefb920aa32f3c919d90d3a2e855-47aee8a1306650e26d329cb8af014544-82eb3be3202ec5d000fa73da856f0165-7f2ca1b036a063d1da7b7bf11091ddfd:passed:20160729-134725:0.142644542
|
||||
T_554ogg_vp8:843834e486d4ee8ca971099a5cfc7ee3-769563129b815fcb24af9e4a630bf34b:passed:20160729-190454:0.02847642
|
||||
T_555appending_with_square_brackets:cd1bfe07d702f4729d40d7f4476dfc41-cd1bfe07d702f4729d40d7f4476dfc41-cd1bfe07d702f4729d40d7f4476dfc41-cd1bfe07d702f4729d40d7f4476dfc41-cd1bfe07d702f4729d40d7f4476dfc41-cd1bfe07d702f4729d40d7f4476dfc41:passed:20160730-115423:0.309106233
|
||||
T_556prores:1d7b4a1d91f113600237d89c03422619-5fbfaf0b69674d62d4edb2e3d1f05eb4-42d78339046f12ae6885ffa3a7b4ac4c-998485bfcc6568f68832707f88f17d33-36827931dbfa0097418745e669892fd1-36827931dbfa0097418745e669892fd1:passed:20160806-201730:0.656227356
|
||||
T_556prores:1d7b4a1d91f113600237d89c03422619-5fbfaf0b69674d62d4edb2e3d1f05eb4-42d78339046f12ae6885ffa3a7b4ac4c-998485bfcc6568f68832707f88f17d33-8576fb1f2bad7139fac67eb070151328-8576fb1f2bad7139fac67eb070151328:passed:20160806-201730:0.656227356
|
||||
T_557dts_hd_ma_xll_extension:96000-192000-7f61832d35165f4600c0ac06b3a109dc-7f61832d35165f4600c0ac06b3a109dc:passed:20160810-203155:1.196256604
|
||||
T_558segfaults_issue_1780_part_1:error-error-error-error-error:passed:20160906-210126:0.035867258
|
||||
T_559segfaults_issue_1780_part_2:error-error-error-error-error-error-error-error-error-error-error-error-error-error-error-error-error-error-error-error-error-error-error-error-error-error-error-error:passed:20160906-225430:0.206571838
|
||||
|
Loading…
Reference in New Issue
Block a user