aboutsummaryrefslogtreecommitdiff
path: root/emms-info-native.el
Commit message (Collapse)AuthorAgeFilesLines
* Fix byte compilationPetteri Hintsanen2021-02-271-147/+149
| | | | | | | - Add requires to load seq-... and string-trim-right functions during compilation. - Reorder code to fix warnings about free and undeclared variables.
* Match id3v1 genres in id3v2.4 framePetteri Hintsanen2021-02-261-5/+6
| | | | v2.4 does not enclose genre references in parentheses.
* Add support for id3v1 genresPetteri Hintsanen2021-02-241-1/+141
|
* Decode id3v2 user-defined text framesPetteri Hintsanen2021-02-241-59/+86
| | | | | Frames are assumed to be key/value pairs. If key is an info-field identifier, return the value for that info-field.
* Fix id3v2 frame id to info-field mappingPetteri Hintsanen2021-02-231-16/+24
| | | | | Use TDRC for info-date. Also add some more well-known tags so that id3v2 can provide the same info-fields than Vorbis.
* Replace curved quotes with ASCII quotesPetteri Hintsanen2021-02-231-46/+46
|
* Fix whitespace trimmingPetteri Hintsanen2021-02-231-6/+7
| | | | Don't try to trim nil.
* Trim trailing whitespace from all info-fieldsPetteri Hintsanen2021-02-211-6/+5
|
* Put some id3v2.4 frame data to info-date instead of info-yearPetteri Hintsanen2021-02-211-3/+3
| | | | | | | TDRC (‘Recording time’), TDRL (‘Release time’) and TDOR (‘Original release time’) frames in id3v2.4 are time stamps, not years, so they should go to info-date and info-originaldate fields instead of info-year and info-originalyear.
* Trim trailing whitespace from id3v2 stringsPetteri Hintsanen2021-02-211-5/+7
|
* Improve id3v2 validity checksPetteri Hintsanen2021-02-211-40/+48
| | | | | | | | | - Remove id3v2 size checks agains emms-info-native--max-peek-size. Decoded sizes do not guide memory reservation anymore so checks are in that sense redundant. Trigger errors on zero-sized elements though, because they are always wrong. - Verify frame identifiers.
* Improve id3v2 error handlingPetteri Hintsanen2021-02-191-41/+51
| | | | | | | | | | - Allow zero-sized frames; in practice they mean start of padding. - Do not try to read frame headers going over tag boundary. These cases also mean start of padding in practice. - Return nil from emms-info-native--decode-id3v2 in case of errors *or* if there were no useful metadata.
* Read and parse id3v2 frames individuallyPetteri Hintsanen2021-02-181-62/+72
| | | | | | | Instead of reading the whole tag and then parsing it, do reading and parsing one frame at a time, and skip uninteresting frames. This may conserve memory and give better performance in some cases.
* Add mappings for more id3v2 text framesPetteri Hintsanen2021-02-161-0/+6
| | | | | Extract "artistsort", "titlesort", "albumsort" and few more "year" and "originalyear" frames.
* Fix id3v2 bugsPetteri Hintsanen2021-02-151-50/+102
| | | | | | | | | | | | | - Tag-level id3v2 unsynchronization is now supported. Frame-level unsynchronization is still missing, and likely won’t be implemented at all. - Fix frame size decoding between different id3v2 versions. - Use correct id3v2.2 sizes during decoding. - Remove a terminating null byte from text strings only if there is one.
* Remove emms-info-native return valuePetteri Hintsanen2021-02-111-8/+3
| | | | The value was wrong and not used anyway.
* Reorder functions and constantsPetteri Hintsanen2021-02-101-77/+73
| | | | | Constructs are now ordered from generic to specific ("top-down") and are thus, hopefully, easier to follow.
* Simplify FLAC codePetteri Hintsanen2021-02-101-66/+42
| | | | Clean up block decoder and fix incorrect last-flag calculation.
* Fix Opus channel mapping decodingPetteri Hintsanen2021-02-101-4/+13
| | | | | | It seems that bindat specs cannot refer outside themselves, so use a special variable ‘emms-info-native--opus-channel-count’ with dynamic binding to keep track of channel count.
* Use lexical bindingPetteri Hintsanen2021-02-101-1/+1
|
* Fix typos in CommentaryPetteri Hintsanen2021-02-101-4/+4
|
* Clean up Opus codePetteri Hintsanen2021-02-101-11/+8
| | | | These are only stylistic changes.
* Clean up Vorbis codePetteri Hintsanen2021-02-101-22/+19
| | | | These are only stylistic changes.
* Simplify Ogg-related codePetteri Hintsanen2021-02-101-64/+89
| | | | | Split long functions to smaller functions that are easier to understand.
* Add id3v2 (MP3) support to emms-info-nativePetteri Hintsanen2021-02-101-68/+287
| | | | | Also adjust Ogg and FLAC decoders to return info fields in a unified format.
* Add native Emacs Lisp info methodPetteri Hintsanen2020-12-241-0/+491
This info method is a pure elisp implementation for Ogg Vorbis, Opus and FLAC file formats.