Commit Graph

61 Commits

Author SHA1 Message Date
Martchus 6b469f1c26 Add Locale class to deal with differently specified languages/countries
Different media/tag formats specify languages and countries
differently. This change introduces a Locale class to keep track
of the format being used. So far there are no automatic conversions
implemented so it is entirely up to the user to pass valid values using
a format which matches the one required by the media/tag format.

This change also adds support for Matroska's IETF elements so at least the
raw value can be read, written and is preserved.
2020-12-16 17:48:08 +01:00
Martchus e7ce9e7ced Improve documentation 2020-11-05 19:52:09 +01:00
Martchus 6c8f237087 Show warning when reading/writing ID3v2 frames not matching the tag version 2020-04-22 19:48:27 +02:00
Martchus 0af4044a50 Remove deprecated functions of Id3v2Frame 2019-06-16 17:43:58 +02:00
Martchus 5ad00a083c Adapt to changes in c++utilities 2019-06-10 23:11:39 +02:00
Martchus a4665456d6 Fix warnings in Id3v2Frame 2019-06-01 22:26:16 +02:00
Martchus 69c72909e8 Fix some Doxygen warnings 2019-06-01 15:07:48 +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 dbce74444a Deprecate unused methods in Id3v2Frame 2019-02-13 21:44:19 +01:00
Martchus e93a7c53b3 Fix warnings in ID3v2Frame 2019-02-13 21:43:56 +01:00
Martchus 3d3bc94e39 Prevent warning "Cannot make an empty frame" 2019-02-13 20:19:46 +01:00
Martchus f1382bd286 Make message about empty frames only a warning
Empty frames don't cause any trouble in general. They only
*might* indicate that something went wrong.
2018-11-15 22:09:10 +01:00
Martchus a775ee61a2 Remove debug messages that the padding has been reached
This is true for most MP3 files and therefore not really helpful.
2018-11-15 22:07:07 +01:00
Martchus 8d89954cd3 Remove frameIdString() 2018-07-12 12:34:38 +02:00
Martchus 1a97d91b27 Preserve multiple strings in ID3v2 text frames 2018-07-12 12:34:38 +02:00
Martchus f27dbd8934 Update documentation 2018-07-09 12:42:14 +02:00
Martchus d64084ec78 Refactor formatting list of values 2018-07-01 22:11:34 +02:00
Martchus 943123afa1 Warn about ID3v2 text frame with multiple strings
First step to support multiple strings within ID3v2 text
frame.

See
* https://github.com/Martchus/tagparser/issues/10
* https://github.com/Martchus/tageditor/issues/38
2018-07-01 02:04:29 +02:00
Martchus 3265e0bea4 Fix documentation which was still using the old namespace 2018-06-03 20:38:32 +02:00
Martchus a065412d98 Add support for disk position in ID3v2.0 2018-06-02 23:08:38 +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 404e4f751f Improve comments and accessing the value in Id3v2FrameMaker 2018-06-02 19:34:07 +02:00
Martchus 710b7b420a Prevent writing float/e-notation to Id3v2 duration field 2018-06-02 19:31:39 +02:00
Martchus 878b3a3c4e Make diag msg on conversion error in Id3v2FrameMaker more specific 2018-06-02 19:29:43 +02:00
Martchus 047e9f7fd0 ID3v2: Warn if specified string is no valid position 2018-05-31 00:23:01 +02:00
Martchus ca0b8e4d8c Improve coding style 2018-03-11 22:28:15 +01:00
Martchus 59024a66a0 Don't clear field before parsing by default 2018-03-11 22:27:12 +01:00
Martchus b35fc2ff0d Improve some structure layouts 2018-03-11 16:14:42 +01:00
Martchus 0215b89057 Improve Id3v2Frame 2018-03-11 16:03:22 +01:00
Martchus c0336ed4bb Apply clang-format 2018-03-07 01:17:50 +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 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 6a62ef7fc2 Fix typo 2018-01-29 16:33:55 +01:00
Martchus f65b90885a Improve coding style 2017-10-09 21:49:04 +02:00
Martchus 6b705d5652 Mind encoding when converting TagValue to pos 2017-06-03 21:00:26 +02:00
Martchus 0d39a70b5f Improve making picture/comment frames 2017-05-29 14:05:15 +02:00
Martchus 8f5f61c85e Fix finding termination in ID3v2 description
This check is only to prevent writing bad frame
when given description contains termination
2017-05-21 00:09:09 +02:00
Martchus e925e15533 Improve handling of Unicode and BOM in ID3v2
* Convert UTF-8 text fields automatically to UTF-16
  when version is ID3v2.3 or below
  -> so conversion from ID3v2.4 to ID3v2.3 or below
     doesn't require manual conversion of possibly
     UTF-8 encoded fields
* Don't use magic numbers for ID3v2 encoding byte
* Don't warn about UTF-16 Big Endian with BOM
2017-05-20 23:34:45 +02:00
Martchus 23e84886d4 Id3v2Frame: Write BOM explicitely
* Instead of leaving this up to the application
* So the BOM isn't missing anymore when using
  CLI of Tag Editor
2017-05-18 02:27:08 +02:00
Martchus c3394acdb2 Fix typos 2017-03-01 18:21:00 +01:00
Martchus 424b238539 Make context static const where possible 2017-02-06 18:53:09 +01:00
Martchus add833f87f Fix conversion of ID3v2 length frame using UTF-16 2017-02-05 22:51:27 +01:00
Martchus b97192abd3 Use std::make_unique provided by C++14 2017-02-05 21:02:40 +01:00
Martchus 541f14039b Make use of string builder 2017-01-27 18:59:22 +01:00
Martchus 1ddaa4f693 Fix indentation in id3v2frame.cpp 2016-11-13 23:57:59 +01:00
Martchus 633d68f4c9 Ensure parseWideString() returns host byte order 2016-11-13 23:56:49 +01:00
Martchus 1e17bf47d3 Fix size calculation of ID3v2.2 frames 2016-08-05 01:30:46 +02:00
Martchus 7e058f289c Improve API doc 2016-06-15 22:53:39 +02:00