Commit Graph

159 Commits

Author SHA1 Message Date
Martchus efa67d6a1a Improve siblingById() and subelementByPath()
* Use 2 functions instead of flag parameter
* Support const correctness
2018-03-07 00:30:08 +01:00
Martchus 0e15c74103 Move everything into namespace TagParser 2018-03-06 23:09:15 +01:00
Martchus 36511fcc13 Add progress feedback and diagnostics replacing status provider 2018-03-06 22:44:01 +01:00
Martchus 652e4809b4 Use unordered_map in MatroskaCuePositionUpdater
std::unordered_map should be faster than std::map
2018-03-06 22:44:01 +01:00
Martchus e705de3704 Handle Mkv files with unknown element sizes correctly
Those elements are still assumed to fill the max available
space. However, if it turns out one "child" is more likely
a sibling, the wrong assumption is fixed.
2018-03-06 22:44:01 +01:00
Martchus 5ed20c7e8e Add function to determine Mkv element level by ID
Does not cover all element IDs but should be more
than sufficient for its purpose.
2018-03-06 22:44:01 +01:00
Martchus 038d30587c Uniform spelling of Matroska IDs 2018-03-06 22:44:01 +01:00
Martchus 7a02e8a325 Uniform/simplify typedefs in templates
* Begin type names with capital letter
* Remove typedefs for implementation type
* Remove useless/obsolete comments
* Simplify relevant code
2018-03-06 22:44:01 +01:00
Martchus 0daabba17a Use static polymorphism in FieldMapBasedTag 2018-03-06 22:44:01 +01:00
Martchus 138fa32f29 Restructure FieldMapBasedTag to use CRTP 2018-03-06 22:44:01 +01:00
Martchus b55d956b83 Fix some warnings 2018-02-05 14:51:21 +01:00
Martchus 6068bb09dc Improve coding style in determineElementPosition() 2018-02-05 00:59:34 +01:00
Martchus ae4e46869d Fix warning (signedness conversion) 2018-02-05 00:41:35 +01:00
Martchus 2c4b0abbea Use C++ random API 2018-02-05 00:40:11 +01:00
Martchus 74054e6e87 Fix default timecode scale in Matroska 2018-02-05 00:11:28 +01:00
Martchus e5c93e8293 Update 100 % percentage correctly 2017-10-30 08:21:17 +01:00
Martchus c9b961d6b4 Remove some TODOs in MatroskaContainer and reindent accordingly 2017-10-09 21:16:11 +02:00
Martchus 17c76a5f29 Allow to abort making Mkv file when calculating cues 2017-10-09 21:00:52 +02:00
Martchus b1f207303c Fix warnings in MatroskaContainer 2017-10-09 20:59:43 +02:00
Martchus d717913e99 Improve progress updates when making Mkv file 2017-09-21 23:30:35 +02:00
Martchus dc32ca77fb Use const in MatroskaCuePositionUpdater::updateSize 2017-09-21 23:30:35 +02:00
Martchus 7ffb83c4b2 Fix assigning child in MatroskaTagField::reparse 2017-09-21 23:30:35 +02:00
Martchus cbf63a68aa Compute all Mkv cluster before fixing invalidated cues
This should lead to less 'goto addCuesElementSize;' and
hence boost the time required to calculate sizes. With
the file I tested only one jump was still required after
the change.
2017-09-21 23:30:35 +02:00
Martchus a1547f9365 Fix some style issues 2017-09-14 18:19:30 +02:00
Martchus 9153e726d5 Fix EbmlElement::idToString() 2017-09-14 18:19:12 +02:00
Martchus a71ffd3fc5 Improve some notification when parsing Matroska files 2017-09-14 18:18:59 +02:00
Martchus ce92665848 Fix making TrackEntry element 2017-09-14 18:17:31 +02:00
Martchus a740f96875 Improve notifications when validating Matroska index 2017-08-18 00:19:54 +02:00
Martchus 395ccd50ed Add missing include for total file size 2017-08-18 00:18:16 +02:00
Martchus a45e199c02 Fix warnings in EbmlElement 2017-08-17 20:37:49 +02:00
Martchus 21dc376ad1 Improve documentation 2017-08-17 19:08:54 +02:00
Martchus a49c1cbbe9 Assume English as default language for Mkv tracks 2017-08-17 19:08:54 +02:00
Martchus 66532353c7 Read track statistics from Matroska tags 2017-06-27 00:36:32 +02:00
Martchus 6741e9ca0f Set Matroska track meta-data when element not present 2017-06-14 22:46:33 +02:00
Martchus 9b0d74b6ad Implement applying changed track meta-data for Mkv 2017-06-11 22:57:28 +02:00
Martchus 8d08314e3b Introduce MatroskaTrackHeaderMaker
First step to implement applying changed track
meta-data for Matroska
2017-06-11 01:21:56 +02:00
Martchus 2a808df3f5 Use argsToString() avoiding numberToString() 2017-06-08 01:26:34 +02:00
Martchus 98fc83af6a Make error skipping in EBML parser configurable 2017-05-29 14:33:28 +02:00
Martchus ee15e08dd9 Test parsing and rewriting nested Mkv tags 2017-05-19 00:05:57 +02:00
Martchus 6ff8a587ba Detect H.265 format in Matroska 2017-05-08 23:23:57 +02:00
Martchus 12f2c5169d Fix check for child EBML element 2017-05-07 21:46:12 +02:00
Martchus a334d6db0a Support Matroska field ID 'LANGUAGE' 2017-05-07 20:21:19 +02:00
Martchus 911026fb1c Add DVB subtitles format 2017-04-30 02:02:10 +02:00
Martchus c3394acdb2 Fix typos 2017-03-01 18:21:00 +01:00
Martchus b97192abd3 Use std::make_unique provided by C++14 2017-02-05 21:02:40 +01:00
Martchus 5037713071 Remove numberToString() where possible 2017-01-30 00:42:35 +01:00
Martchus 230a14fcf1 Use string builder rather than stringstream 2017-01-27 21:27:24 +01:00
Martchus 541f14039b Make use of string builder 2017-01-27 18:59:22 +01:00
Martchus b4e167bd71 Ease dealing with native field IDs
In particular, this allow conversion from native field IDs
to readible string representation and vice verca
2017-01-23 00:25:53 +01:00
Martchus 477ac9884b Use _wopen under Windows to support unicode filenames 2016-12-21 00:42:31 +01:00
Martchus b2ceb822fb Make implicit type conversion explicit 2016-11-26 12:33:38 +01:00
Martchus 554351810a Implement determine tag/index pos for MKV 2016-11-16 22:06:12 +01:00
Martchus a8dce14514 Allow checking index position
Only implemented for MP4 so far
2016-11-16 19:31:09 +01:00
Martchus 6717062ca2 Allow checking tag position
Only implemented for MP4 so far
2016-11-15 22:48:38 +01:00
Martchus 7e29d8aaad Fix indentation 2016-10-09 19:37:23 +02:00
Martchus 0cf30edbff Fix decoration for static builds 2016-08-29 15:43:05 +02:00
Martchus 549028c0cf Calculate AVC pic size as soon as possible
so the size is calculated when further parsing fails
2016-08-06 21:54:35 +02:00
Martchus b20e02ec29 Fix parsing/accessing Matroska editions/chapters 2016-08-06 20:51:57 +02:00
Martchus 817a8e25e6 Improve documentation and consistency 2016-08-04 00:16:19 +02:00
Martchus 8663dedf8c Fix misc issues 2016-07-30 22:35:46 +02:00
Martchus 1182cbeb85 Improve handling of binary Matroska tag fields 2016-07-22 01:37:25 +02:00
Martchus 58411bc8c5 Improve subtitle format names and media types 2016-07-11 20:58:12 +02:00
Martchus cf5b021180 Use workaround for GCC Bug 66145 2016-06-14 22:53:43 +02:00
Martchus 2c5d463a9f Improve API doc 2016-06-10 23:08:01 +02:00
Martchus 415e68972a Improve handling of targets 2016-05-26 01:59:22 +02:00
Martchus a84ac37dbe Add support for raw FLAC streams 2016-05-16 20:56:53 +02:00
Martchus 6c6ab0e301 improved file handling
- don't override backup files
- allow saving files at a different location
- reduce code duplication for restoring backups
2016-05-01 20:02:44 +02:00
Martchus 6cce90b106 overall code cleanup 2016-04-24 22:10:45 +02:00
Martchus 899e2a97fe small improvements
- fixed some mostly ID3/MP3 related bugs
- added convenience methods/operators
2016-03-18 21:43:09 +01:00
Martchus e0437c0a43 skip invalid bytes when parsing EBML 2016-03-13 22:00:23 +01:00
Martchus 56d13d326d use pixel size as display size if display size not specified 2016-03-13 18:23:13 +01:00
Martchus cc6e16e513 small improvements 2016-03-12 18:36:10 +01:00
Martchus 488fce3ab8 parsing AVC config 2016-02-17 20:19:05 +01:00
Martchus 098a0bdef8 added Opus 2016-01-16 17:41:52 +01:00
Martchus 949a88c678 improved document title / segment count API 2015-12-27 19:51:57 +01:00
Martchus 6f0adce661 make use of padding when applying changes to MP3 files 2015-12-22 23:54:35 +01:00
Martchus 47e7f4eea4 fixed misc bugs 2015-12-22 17:00:54 +01:00
Martchus ee09a50915 removed useless destructors 2015-12-21 18:35:47 +01:00
Martchus 3da8337c6c make use of padding when applying changes to MP4 files 2015-12-21 00:27:44 +01:00
Martchus 0c82c4c1fd allow precalculation of MP4 tag size 2015-12-10 13:50:46 +01:00
Martchus d9c197dcf2 improved project files 2015-12-08 08:38:26 +01:00
Martchus 736f8fc9a7 added simple CMake project file 2015-12-05 22:53:30 +01:00
Martchus 6dd2c7e774 updated make to use specified file layout 2015-11-26 14:40:35 +01:00
Martchus 4c8d1645a6 updated brief 2015-11-26 14:34:52 +01:00
Martchus 4d708b80d2 buffer required elements 2015-11-26 14:34:14 +01:00
Martchus 0d503e785b added method to buffer current attachments 2015-11-26 14:33:08 +01:00
Martchus 10bc8516ee option to set minimum number of bytes (makeSizeDenotation()) 2015-11-21 01:10:04 +01:00
Martchus a2673127fa check cluster offset / padding 2015-11-11 11:52:32 +01:00
Martchus e7bd2185d5 added properties to control position of tags when writing files 2015-11-07 21:25:37 +01:00
Martchus 4b13bac99c improved handling of "SegmentInfo"-element 2015-10-14 19:42:48 +02:00
Martchus 7aea0e2a50 allow specific targets to be created with createAppropriateTags() 2015-10-13 23:32:00 +02:00
Martchus 458ee45e81 fixed cues updater 2015-10-08 22:03:47 +02:00
Martchus ed10015b1a fixed reset() methods 2015-10-06 22:39:18 +02:00
Martchus 7ae0aee4f7 set extension channel config to stereo if PS is present 2015-09-24 01:15:27 +02:00
Martchus faa40944bf changed handling of SBR/PS AAC extension 2015-09-24 00:19:04 +02:00
Martchus e4a487cb73 fixed some warnings 2015-09-19 23:42:05 +02:00
Martchus 5ab22eb9d9 chrono API change 2015-09-16 17:26:20 +02:00
Martchus cdb649653c added VP9 2015-09-16 17:25:45 +02:00
Martchus aa50c2d8b3 fixed includes 2015-09-06 19:57:33 +02:00
Martchus b1eb6faba6 fixed includes 2015-09-06 15:42:18 +02:00