Commit Graph

43 Commits

Author SHA1 Message Date
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 6eab8b8718 Log the mismatching sizes when XING header mismatches real size 2023-05-18 00:37:59 +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
Martchus 111d6190cb Avoid some of the warnings from MSVC 2023-05-07 21:45:15 +02:00
Martchus cb52a1521e Fix compilation with libc++ 2021-12-05 17:49:36 +01:00
Jonas Kvinge ea23d71e8a Fix spelling and typos 2021-07-02 11:12:39 +02:00
Martchus 0a041f6ad2 Fix warnings 2021-03-20 21:26:25 +01:00
Martchus 65597fd71e Add API to allow aborting overall/expensive parsing functions
* Not really implemented within the various code paths of the parsers at
  this point; this commit mainly adds the API.
* Adjust example in README
2021-02-04 23:21:50 +01:00
Martchus 78439e2e3f Fix returning nullptr where now a std::string_view is required 2021-02-01 17:10:01 +01:00
Martchus 64d98f5530 Use std::string_view where it makes sense 2021-01-30 21:53:06 +01:00
Martchus 761e3ee44b Mark all "final" tag, track and container classes as such 2020-12-18 21:13:52 +01:00
Martchus 40031b8ddf Be more error resilient when checking the container and MP3 frames
Most players/tools can cope with MP3 files which have some bytes of junk
after the ID3v2 tag just fine, e.g. ffmpeg shows just
```
[mp3 @ 0x559e1f4cbd80] Skipping 1670 bytes of junk at 1165.
```
and most players can play the file just fine.

This change makes the tag editor also more resilient, allowing it to skip
a certain amount of junk bytes before a known container is detected. It
will also skip a certain amount of junk MPEG audio frames.
2020-11-27 00:13:26 +01:00
Martchus 9569065fb4 Improve reading MPEG audio info
* Skip empty frames
* Improve error messages
2020-11-14 22:58:40 +01:00
Martchus 32e3cd9593 Fix computing MPEG audio frame size 2020-11-14 22:56:47 +01:00
Martchus c583b3984f Take slot size into account when calculating MPEG audio frame size 2020-11-14 22:54:33 +01:00
Martchus 5ad00a083c Adapt to changes in c++utilities 2019-06-10 23:11:39 +02:00
Martchus c17db5f2f6 Apply cmake-format and clang-format 2019-05-04 21:03:09 +02:00
Martchus 7efa7a0d5a Adapt to c++utilities v5 2019-05-04 16:04:21 +02:00
Martchus f1a3f5cbce Fix warnings in MpegAudioFrame 2018-07-28 21:20:02 +02:00
Martchus c4adad4297 Detect AV1 in IVF stream 2018-07-28 14:56:00 +02:00
Martchus 9361e0bc13 Use constexpr where possible 2018-07-12 12:34:38 +02:00
Martchus 3265e0bea4 Fix documentation which was still using the old namespace 2018-06-03 20:38:32 +02:00
Martchus 0a640c9f7f Fix warnings, mostly about implicit int conversions
This should fix all non-erros, leaving only warnings which
are indeed potential problems.

The following warnings should be safe to ignore:

* Conversions of various offsets from uint64 to
  std::streamoff/int64 are safe because such offsets have
  been obtained via tellg() and other functions
  returning std::streamoff in the first place.
* It also works vice-versa since tellg() should not
  return negative offsets with exceptions enabled.
* Conversions from char to unsigned char are also ok.
* Unused diag arguments can be ignored (those might be
  useful later).
* Annotate all intended fallthoughs.
2018-06-02 23:04:53 +02:00
Martchus c0336ed4bb Apply clang-format 2018-03-07 01:17:50 +01:00
Martchus a0986ad4a9 Fix style issues 2018-03-07 01:11:42 +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 0cf30edbff Fix decoration for static builds 2016-08-29 15:43:05 +02:00
Martchus e9a204777d fixed calculation of duration of MPEG 1/2 audio streams 2016-01-31 00:02:23 +01:00
Martchus e4a487cb73 fixed some warnings 2015-09-19 23:42:05 +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
Martchus 8b91b41801 updated readme 2015-08-26 20:01:32 +02:00
Martchus 3d6c7f33d9 parse audio specific config for AAC tracks in MKV container (exposed API
in Mp4Track to do that)
renamed sampleRate to samplingFrequency
2015-08-13 03:23:28 +02:00
Martchus 9f12607a0d added channel config to AbstractTrack and the implementations 2015-07-31 01:09:41 +02:00
Martchus 1f4800c9be added detection of ADTS files 2015-07-15 00:11:09 +02:00
Martchus 045f2bb14b fixed spelling mistake 2015-07-07 03:00:23 +02:00
Martchus 9664eb04f5 fixed spelling mistake 2015-07-07 03:00:08 +02:00
Martchus 43c33adedf improved detection of format of MP4 audio tracks 2015-06-10 01:28:22 +02:00
Martchus c452b009ae improved media format detection; other minor improvements 2015-06-07 00:18:28 +02:00
Martchus 033e313c74 First commit 2015-04-22 19:22:01 +02:00