Skip to content

Releases: n10v/id3v2

1.0.1

15 Aug 08:22
Compare
Choose a tag to compare
  • Fix parsing ID3v2.3 frame sizes. Earlier id3v2 didn't parse correctly v2.3 frame sizes. Huge thanks to @rstemmer for pointing to v2.3 size format #13, #34
  • Reduce memory allocations in encoding operations 211759e
  • Performance compared to v1.0.0:
name                   old time/op    new time/op    delta
ParseAllFrames-4         77.4µs ± 6%    77.1µs ± 5%   -0.36%  (p=0.690 n=5+5)
ParseAllFramesISO-4      78.7µs ± 3%    76.3µs ± 1%   -3.01%  (p=0.008 n=5+5)
ParseArtistAndTitle-4    2.40µs ±16%    2.45µs ±15%   +2.06%  (p=0.690 n=5+5)
Write-4                  6.89µs ± 4%    6.79µs ± 2%   -1.56%  (p=0.310 n=5+5)
WriteISO-4               11.0µs ± 0%     9.4µs ± 0%  -14.65%  (p=0.016 n=4+5)

name                   old alloc/op   new alloc/op   delta
ParseAllFrames-4          263kB ± 0%     263kB ± 0%   -0.01%  (p=0.095 n=5+5)
ParseAllFramesISO-4       264kB ± 0%     264kB ± 0%   -0.08%  (p=0.008 n=5+5)
ParseArtistAndTitle-4      732B ± 1%      734B ± 1%   +0.25%  (p=0.460 n=5+5)
Write-4                  2.55kB ± 0%    2.55kB ± 0%     ~     (all equal)
WriteISO-4               6.99kB ± 0%    6.39kB ± 0%   -8.58%  (p=0.000 n=5+4)

name                   old allocs/op  new allocs/op  delta
ParseAllFrames-4           62.0 ± 0%      61.0 ± 0%   -1.61%  (p=0.029 n=4+4)
ParseAllFramesISO-4        76.6 ± 1%      66.0 ± 0%  -13.84%  (p=0.008 n=5+5)
ParseArtistAndTitle-4      14.6 ±11%      14.6 ±11%     ~     (p=1.000 n=5+5)
Write-4                    35.0 ± 0%      35.0 ± 0%     ~     (all equal)
WriteISO-4                 80.0 ± 0%      50.0 ± 0%  -37.50%  (p=0.008 n=5+5)

1.0.0

07 Apr 14:37
Compare
Choose a tag to compare
  • id3v2 is exiting the beta and becoming stable, so the API will be changed only in major releases!
  • Major internal improvements: reduced code and improved performance.
  • Performance compared to v0.12.1:
name                   old time/op    new time/op    delta
ParseAllFrames-4          157µs ± 2%     155µs ± 2%   -1.12%  (p=0.008 n=8+9)
ParseAllFramesISO-4       161µs ± 4%     158µs ± 2%   -1.63%  (p=0.222 n=9+9)
ParseArtistAndTitle-4    37.6µs ±24%    37.7µs ±26%   +0.33%  (p=0.796 n=9+9)
Write-4                  10.8ms ± 7%     7.3ms ±12%  -32.77%  (p=0.000 n=9+9)
WriteISO-4               9.70ms ±37%    7.01ms ± 5%  -27.69%  (p=0.000 n=9+9)

name                   old alloc/op   new alloc/op   delta
ParseAllFrames-4          264kB ± 0%     264kB ± 0%   -0.08%  (p=0.000 n=8+7)
ParseAllFramesISO-4       264kB ± 0%     264kB ± 0%   -0.02%  (p=0.234 n=8+8)
ParseArtistAndTitle-4      811B ± 2%      807B ± 1%   -0.52%  (p=0.127 n=9+9)
Write-4                  4.54kB ± 1%    4.18kB ± 0%   -7.97%  (p=0.000 n=7+9)
WriteISO-4               8.63kB ± 4%    8.62kB ± 0%   -0.11%  (p=0.180 n=9+9)

name                   old allocs/op  new allocs/op  delta
ParseAllFrames-4           64.0 ± 0%      64.0 ± 0%     ~     (all equal)
ParseAllFramesISO-4        79.0 ± 0%      79.0 ± 0%     ~     (all equal)
ParseArtistAndTitle-4      17.0 ±12%      16.6 ± 9%   -2.61%  (p=0.519 n=9+9)
Write-4                    52.0 ± 0%      52.0 ± 0%     ~     (all equal)
WriteISO-4                 97.0 ± 0%      97.0 ± 0%     ~     (all equal)

0.12.1

18 Nov 14:45
Compare
Choose a tag to compare
  • Now WriteTo methods return correct n values.
  • Significant performance improvements by writing:
  • Performance compared to v0.12:
name                   old time/op    new time/op    delta
ParseAllFrames-4          284µs ± 6%     225µs ± 1%  -20.86%  (p=0.003 n=7+5)
ParseArtistAndTitle-4    26.1µs ±23%    21.8µs ±30%     ~     (p=0.097 n=7+7)
AddTextFrame-4           1.29µs ± 2%    1.03µs ± 4%  -20.39%  (p=0.001 n=7+7)
AddEncodedTextFrame-4    2.43µs ± 1%    2.04µs ± 1%  -15.99%  (p=0.001 n=7+7)
ParseAndWrite-4          10.5ms ± 3%     8.7ms ±10%  -17.38%  (p=0.002 n=6+6)
ReuseTag-4               3.42µs ± 0%    3.39µs ± 8%     ~     (p=0.508 n=6+7)
WriteBytesSize-4         28.9ns ± 3%    29.9ns ±15%     ~     (p=0.466 n=6+7)
ParseSize-4              8.36ns ± 2%    8.37ns ± 3%     ~     (p=0.876 n=7+7)

name                   old alloc/op   new alloc/op   delta
ParseAllFrames-4          527kB ± 0%     525kB ± 0%   -0.46%  (p=0.001 n=7+7)
ParseArtistAndTitle-4      810B ± 1%      808B ± 1%     ~     (p=0.686 n=7+7)
AddTextFrame-4             419B ± 0%      418B ± 0%   -0.24%  (p=0.001 n=7+7)
AddEncodedTextFrame-4    1.35kB ± 0%    1.35kB ± 0%   -0.21%  (p=0.001 n=7+7)
ParseAndWrite-4           269kB ± 0%     269kB ± 1%     ~     (p=0.902 n=7+7)
ReuseTag-4               2.29kB ± 0%    2.29kB ± 0%     ~     (all equal)
WriteBytesSize-4          10.0B ± 0%     10.0B ± 0%     ~     (all equal)
ParseSize-4               0.00B          0.00B          ~     (all equal)

name                   old allocs/op  new allocs/op  delta
ParseAllFrames-4           98.6 ± 1%      95.4 ± 1%   -3.19%  (p=0.001 n=7+7)
ParseArtistAndTitle-4      17.0 ±12%      16.7 ±14%     ~     (p=0.848 n=7+7)
AddTextFrame-4             5.00 ± 0%      5.00 ± 0%     ~     (all equal)
AddEncodedTextFrame-4      20.0 ± 0%      20.0 ± 0%     ~     (all equal)
ParseAndWrite-4             103 ± 0%        98 ± 1%   -4.44%  (p=0.000 n=6+7)
ReuseTag-4                 20.0 ± 0%      20.0 ± 0%     ~     (all equal)
WriteBytesSize-4           0.00           0.00          ~     (all equal)
ParseSize-4                0.00           0.00          ~     (all equal)

0.12

07 Nov 11:26
Compare
Choose a tag to compare
  • Add full encoding conversion support. More in README #27
  • Get rid of subpackages. Now id3v2 is only one flat package!
  • Restore 32bit systems support #28
  • Major performance improvement by parsing with set Options.ParseFrames 2378552
  • Performance compared to v0.11:
name                   old time/op    new time/op    delta
ParseAllFrames-4          219µs ± 1%     222µs ± 2%     ~     (p=0.051 n=7+6)
ParseArtistAndTitle-4    66.3µs ± 2%    18.9µs ±23%  -71.51%  (p=0.001 n=7+7)
ParseAndWrite-4          10.2ms ± 7%    10.2ms ± 3%     ~     (p=0.805 n=7+7)
ReuseTag-4               3.13µs ± 1%    3.33µs ± 1%   +6.35%  (p=0.001 n=6+7)

name                   old alloc/op   new alloc/op   delta
ParseAllFrames-4          525kB ± 0%     525kB ± 0%   +0.08%  (p=0.001 n=7+7)
ParseArtistAndTitle-4      763B ± 0%      810B ± 1%   +6.14%  (p=0.001 n=7+7)
ParseAndWrite-4           267kB ± 0%     267kB ± 0%   +0.30%  (p=0.007 n=7+7)
ReuseTag-4               2.16kB ± 0%    2.29kB ± 0%   +5.93%  (p=0.001 n=7+7)

name                   old allocs/op  new allocs/op  delta
ParseAllFrames-4           95.6 ± 1%      96.0 ± 0%     ~     (p=0.192 n=7+7)
ParseArtistAndTitle-4      25.0 ± 0%      17.0 ±12%  -32.00%  (p=0.001 n=7+7)
ParseAndWrite-4             101 ± 1%       102 ± 0%   +0.71%  (p=0.021 n=7+7)
ReuseTag-4                 20.0 ± 0%      20.0 ± 0%     ~     (all equal)

0.11

18 Jul 08:08
Compare
Choose a tag to compare
  • Rename all encodings. E.g. ENISOEncodingISO
  • Add NewEmptyTag constructor. Thanks to @corneldamian! #22
  • Return compatibility with old versions of Go. Thanks to @mro for report! #25
  • Fix race condition in util.FormSize d911cfa
  • Add tag.Reset function 2ccdfea
  • Performance compared to v0.10:
name                   old time/op    new time/op    delta
ParseAllFrames-4          201µs ± 1%     212µs ± 2%   +5.44%  (p=0.001 n=6+7)
ParseArtistAndTitle-4    76.9µs ± 4%    56.9µs ± 2%  -25.97%  (p=0.001 n=7+7)
ParseAndWrite-4          10.1ms ± 1%    10.2ms ± 4%   +0.68%  (p=0.945 n=6+7)

name                   old alloc/op   new alloc/op   delta
ParseAllFrames-4          526kB ± 0%     525kB ± 0%   -0.32%  (p=0.001 n=7+7)
ParseArtistAndTitle-4      683B ± 0%      716B ± 0%   +4.75%  (p=0.001 n=7+7)
ParseAndWrite-4           299kB ± 0%     267kB ± 0%  -10.65%  (p=0.001 n=7+7)

name                   old allocs/op  new allocs/op  delta
ParseAllFrames-4           95.0 ± 0%      95.0 ± 0%     ~     (all equal)
ParseArtistAndTitle-4      24.0 ± 0%      25.0 ± 0%   +4.17%  (p=0.001 n=7+7)
ParseAndWrite-4             101 ± 1%       102 ± 1%   +0.99%  (p=0.012 n=7+7)

0.10

12 May 08:55
Compare
Choose a tag to compare
  • Added possibility to read tag from io.Reader (#20). Thanks to @corneldamian for his contribution!
  • Removed OpenFile as we have ParseReader now. They work same.

0.9

01 May 15:02
Compare
Choose a tag to compare
0.9

I'm glad to introduce new minor release of id3v2! There is new feature, what is very useful for high-performance tag parsing. And it is id3v2.Options! You can specify, which frames do you want to parse, so id3v2 will not spend time and resources of your computer to parse frames, that you don't need. Or maybe you don't want to parse tags at all, when you can tag, err := id3v2.Open("file.mp3", id3v2.Options{Parse: false}) and that's it!

Also I made possible id3v2 to use in multiple goroutines! Earlier id3v2 had some global elements, so the usage of id3v2 in concurrent programs wasn't possible because of data races to these global elements.

0.8.10

12 Apr 19:22
Compare
Choose a tag to compare

Many memory consumption reduces. I can't attach benchcmp, because I also updated benchmark code to make them more honest, so the results are strongly different. Code of benchmarks is here. Here is benchmark results on my PC (MacBook Air 13" 2014 / 1,4 GHz Intel Core i5 / 4 GB 1600 MHz DDR3):

BenchmarkParseAllFrames-4            	   10000	    252955 ns/op	  525784 B/op	      94 allocs/op
BenchmarkParseAndWriteCommonCase-4   	     200	   9974345 ns/op	  296208 B/op	      61 allocs/op
BenchmarkParseAndWriteManyFrames-4   	     100	  10037205 ns/op	  297792 B/op	      99 allocs/op

0.8.9

17 Feb 08:49
Compare
Choose a tag to compare
  • Memory consumption and parsing performance improvements:
benchmark                              old ns/op     new ns/op     delta
BenchmarkParseAllFrames-4              226969        203528        -10.33%
BenchmarkParseAndWriteCommonCase-4     10028518      10054538      +0.26%
BenchmarkParseAndWriteManyFrames-4     10130233      10911758      +7.71%

benchmark                              old allocs     new allocs     delta
BenchmarkParseAllFrames-4              125            107            -14.40%
BenchmarkParseAndWriteCommonCase-4     89             84             -5.62%
BenchmarkParseAndWriteManyFrames-4     147            134            -8.84%

benchmark                              old bytes     new bytes     delta
BenchmarkParseAllFrames-4              546643        528189        -3.38%
BenchmarkParseAndWriteCommonCase-4     420651        414435        -1.48%
BenchmarkParseAndWriteManyFrames-4     434129        419882        -3.28%

  • Remove Body method from Framer

0.8.8.1

10 Feb 10:47
Compare
Choose a tag to compare
  • Fix signature of tag.WriteTo