Commit Graph

846 Commits

Author SHA1 Message Date
Martchus 986b92bc0e Show padding found in Ogg files after tags 2024-06-16 22:08:28 +02:00
Martchus 75c2bc20b6 Fix typo in documentation of OggPage 2024-06-16 21:36:34 +02:00
Martchus ece59d54a9 Improve warnings in Ogg parser further
* Improve wording
* Check all pages the tag is contained by
* Check "continued"-flag as well
2024-06-16 21:36:10 +02:00
Martchus 43fac8cb67 Adapt tests to recent changes 2024-06-16 20:08:22 +02:00
Martchus 37bab4f353 Fix condition for code specific to `libstdc++` 2024-06-16 01:18:26 +02:00
Martchus 8c27ac0996 Make message about bytes left in segment after Vorbis comment just an info
Mp3tag produces such files and supposedly there's nothing problematic
about it (although also ffmpeg prints a message about it).
2024-06-16 00:48:13 +02:00
Martchus b6b7ab25c2 Fix setting "continued packet" flag of Ogg pages 2024-06-16 00:45:23 +02:00
Martchus e9306c3226 Write cover field as last field in Vorbis comments
This is also how Mp3tag does it.
2024-06-15 23:24:35 +02:00
Martchus 6f61730809 Extend documentation of `OggIterator::nextSegment()` 2024-06-15 22:57:07 +02:00
Martchus 494416f086 Write preferred padding also when making Ogg files 2024-06-15 22:56:39 +02:00
Martchus fcc6dee569 Use correct abs granule pos for OGG pages that don't finish packets
A special value of '-1' (in two's complement) indicates that no packets
finish on a page. Ignoring this does not seem to lead to any real problems
but `oggz-validate` complains about it.
2024-06-15 22:17:49 +02:00
Martchus 0a40932c9b Print warning if abs granule position of pages containing tags is wrong 2024-06-15 20:57:19 +02:00
Martchus e9b11b8d5e Apply clang-format 2024-06-15 19:32:40 +02:00
Martchus 2a340fc880 Write code for adding OggStream in a more compact way 2024-06-15 19:31:24 +02:00
Martchus acfb9ef219 Handle TRACKTOTAL/DISCTOTAL/PARTTOTAL fields in Vorbis Comments
* Move those fields into their corresponding
  TRACKNUMBER/DISCNUMBER/PARTNUMBER fields after parsing so they are
  accessible via just one field as PositionInSet which is in line with
  other tag formats and also how other software like VLC expect the total
  to be specified
* NOT implemented yet: Move those fields optionally back into separate
  fields when serializing
2024-02-28 21:36:06 +01:00
Martchus 351e953b83 Avoid empty documentation entry for `EvpMdCtx` 2024-02-28 21:36:06 +01:00
Martchus 8204b2dfde Apply change of `global.h` template 2024-02-27 01:57:17 +01:00
Martchus 8246d30ec5 Update `global.h` via updated template in c++utilities 2024-01-30 23:32:35 +01:00
Martchus d48722f26c Fix unity builds
* Define `CHRONO_UTILITIES_TIMESPAN_INTEGER_SCALE_OVERLOADS` consistently
  with all necassary changes
* Avoid ambiguity between enum members and certain class/struct names
2024-01-30 23:31:15 +01:00
Martchus 45ab6b17b9 Improve various details of documentation 2024-01-23 00:29:11 +01:00
Martchus 6fb34ec3b3 Update copyright date 2024-01-23 00:28:19 +01:00
Martchus 33327390e9 Add Vorbis comment IDs for total number of tracks/disks/parts 2023-12-29 17:12:20 +01:00
Martchus 7f3d4c5751 Add ID3v2 frame definitions for publisher web page and user defined URLs 2023-12-29 17:07:14 +01:00
Martchus b1bca85ef4 Support publisher webpage in Vorbis comments 2023-12-29 16:50:41 +01:00
Martchus 0f669c88a7 Bump minor version 2023-12-29 16:50:19 +01:00
Martchus 1df871870b Map the publisher field for Vorbis comments 2023-12-29 15:57:51 +01:00
Martchus 909a3ee98a Improve comments in Matroska container code 2023-10-31 21:27:17 +01:00
Martchus 5aef3f84ee Bump patch version 2023-10-31 20:07:02 +01:00
Martchus 56ccd3da80 Use auto-syntax in places touched by previous commit consistently 2023-10-31 20:06:38 +01:00
Martchus 9f41c30443 Silence/fix GCC's maybe-uninitialized warnings
* The warning about `bsEnvCount` is actually correct.
* The warning about `lastAtomToBeWritten` might be correct.
* The warning about `relPos` is definitely unjustified because `relPos` is
  only used when `cueRelativePositionElement` is not `nullptr` and `relPos`
  is initialized in that case.
* The warnings about `pos`, `nextPageOffset` and `startOfLastMetaDataBlock`
  are also wrong for similar reasons.
2023-10-31 20:05:13 +01:00
Martchus ef0ab3d8c3 Avoid GCC's stringop-truncation warning
Not copying the termination character here is wanted. Just use
`std::memcpy` to avoid it as the special behavior of `std::strncpy` is not
needed here anyways.
2023-10-31 19:36:12 +01:00
Martchus 0827002183 Fix duration and bitrate calculation of MP3 files via XING header
* Calculate the duration independently of the bitrate which is supposedly
  more accurate
* Fix conversion factor for computing bitrate
* Use real size if it differs from size specified in Xing header; this way
  the bitrate is consistent with MediaInfo and other tools (there is
  possibly still a bug in the way the size is read from the Xing header,
  though)
2023-08-21 12:09:07 +02:00
Martchus f2e97b9899 Fix skipping TOC field of Xing header 2023-08-19 01:09:22 +02:00
Martchus db5e1f2c8c Fix check for presence of frame field in Xing header 2023-08-19 00:44:43 +02:00
Martchus 04795f957f Fix setting writing app name after allowing to preserve it 2023-08-09 23:26:34 +02:00
Martchus c0e9f9bf83 Fix condition for preserving muxing/writing app 2023-08-09 23:17:26 +02:00
Martchus e6bb98d6e6 Improve dealing with muxing/writing application of Matroska files
* Allow reading the current muxing/writing application
* Allow to preserve the original muxing/writing application instead of
  always overriding
2023-08-08 17:18:02 +02:00
Martchus f5497fb300 Allow setting position/total of PositionInSet 2023-08-01 00:24:28 +02:00
Martchus f7941d442f Fix typo 2023-07-30 14:40:15 +02:00
Martchus 03f9698269 Expose tagDataTypeString() 2023-07-29 16:02:14 +02:00
Martchus 8a6cffad95 Bump minor version 2023-07-29 16:02:14 +02:00
Martchus 54a87cd32c Avoid CMake deprecation warning by bumping version 2023-07-23 20:59:19 +02:00
Martchus 92345027fb Use generic `toInt()` function which relies less on compiler optimizations 2023-05-18 00:52:28 +02:00
Martchus 90cace1e95 Fix computation of effective size when APE tag is present at end of file 2023-05-18 00:41:35 +02:00
Martchus 6eab8b8718 Log the mismatching sizes when XING header mismatches real size 2023-05-18 00:37:59 +02:00
Martchus a5ab3ed1b2 Avoid abusing OggPage header flags to store whether last segment unconcluded 2023-05-16 23:18:27 +02:00
Martchus 5745632af7 Move `maxFullParseSize()` to `MediaFileInfo` as non-static member 2023-05-16 23:11:53 +02:00
Martchus 6f321b7b00 Fix typo in ContainerFormat enum 2023-05-16 23:00:32 +02:00
Martchus 60385aa347 Generalize copy functions in GenericFileElement to eventually use sendfile64()
Since we're still using `container().stream()` in `copyInternal()` this change
is still not really effective.
2023-05-16 22:58:04 +02:00
Martchus c5cd20682d Determine "effective size" via file info instead of track implementations
This allows removing duplicated code from the track implementations to take
APE tags into account.
2023-05-16 22:39:26 +02:00