Skip to main content

Notice

Please note that most of the software linked on this forum is likely to be safe to use. If you are unsure, feel free to ask in the relevant topics, or send a private message to an administrator or moderator. To help curb the problems of false positives, or in the event that you do find actual malware, you can contribute through the article linked here.
Topic: ogg vorbis tag incompatibility with iriver B20 (Clix2) (Read 2941 times) previous topic - next topic
0 Members and 1 Guest are viewing this topic.

ogg vorbis tag incompatibility with iriver B20 (Clix2)

The iriver B20 is specific to Europe and Asia, but is similar in features and performance to the Clix2 with built-in Ogg Vorbis support (q0-q10).  And please no pedantic comments about how I'm transcoding from lossy to lossy.  I know this already, but I'm doing a conversion job for on-the-fly use on a 2GB flash player with cheap earbuds, so absolute quality isn't an issue.  Now on to the actual problem.

My portable (iriver B20) supports ogg vorbis but can't read vorbis tags made through the 0.9.4.4 converter.  Tags made in Winamp (using Nullsoft Vorbis Decoder 1.50) and Foobar 0.8.3 converter reads fine though.  But using 0.8.3 isn't a real solution for this conversion job since I need to use some 0.9x specific DSP's, so I'm at a bit of a standstill.

This will get a little confusing, but please bear with me! 

[Update: I found the problem.  The current firmware in the iriver B20 doesn't recognize lowercase metadata field titles in ogg vorbis files as valid data.  Go to end of post for more info.]

Case 1.  If I convert a file using 0.8.3 (mp3/mpc -> ogg), the tag is read by the portable.

Case 2. If I convert the file using 0.9 and then "update" the tag in Winamp 5, the tag is readable by the portable.

Here's where it gets wierd though. 

Case 3. If I convert the file using 0.9 (mp3/mpc -> ogg), the tag is NOT READABLE by the portable.

Case 4.  If I convert the file using 0.9.  Strip the tag.  Then create a new tag manually in 0.9.  The tag is again readable.  (So why doesn't making a new tag through the 0.9 converter work?)

Case 5.  Convert using 0.9.  Strip the tag.  Then use masstager to "guess fields from filename" to create a new tag.  The tag is weirdly NOT READABLE. 

Case 6.  Convert using 0.9, use masstagger to statically set album and artist fields, the tag is readable.

Case 7.  Convert using 0.9.  Then use masstager to "guess fields from filename" to create a new tag.  The tag is weirdly NOT READABLE. 

What's really burning my ass is what is the difference between Case 4 and 5?  And why does setting the tag through Case 4 and 6 work on the portable while 5 and 7 both fail?  I have to manually type field values for the tag to be recognized by my portable?  But logically foobar's "guess" should be the same as what I input manually, so what's really going on?  There are different tag writing implementations for the "guess field" script where there shouldn't/couldn't be.  I'm completely confused now.

[UPDATE]
After looking through the actual written tags using a hex editor, I think I found the difference.  Manual tag editing writes uppercase field titles.  Setting values manually using masstager creates uppercase field titles. But using the "guess fields" script creates lowercase field titles (portable can't read).  Updating the tag through Winamp also creates uppercase field titles.  Foobar 0.8.3 converter creates uppercase field titles, but Foobar 0.9 converter creates lowercase field titles (portable can't read). 

By uppercase or lowercase field titles, I mean "ALBUM=" or "album=".

Here's a hex view of readable and not readable ogg metadata:


So basically, the firmware in the iriver B20 doesn't recognize lowercase field titles in ogg tags as valid metadata.  Is this iriver's fault or is foobar being inconsistent in its standards compliance?

ogg vorbis tag incompatibility with iriver B20 (Clix2)

Reply #1
Is this iriver's fault or is foobar being inconsistent in its standards compliance?

It's a bug in iriver's firmware. The Vorbis comment spec states that the field names are case-insensitive :
Quote
A case-insensitive field name that may consist of ASCII 0x20 through 0x7D, 0x3D ('=') excluded. ASCII 0x41 through 0x5A inclusive (A-Z) is to be considered equivalent to ASCII 0x61 through 0x7A inclusive (a-z).

Although the spec shows it's suggested field names as using all upper-case, then oggenc.exe on purposse sets the field names as using all lower-case, just to be able to spot non-spec compliant cases like these. However, i would recommend the fb2k devs to preferably decide on one case-type and then use it consistently throughout the core and all official modules.

ogg vorbis tag incompatibility with iriver B20 (Clix2)

Reply #2
Here's another update.  This behavior of not reading ogg tags properly by the B20 is only exhibited when copying files to the device using Windows Explorer in UMS mode.  If I use the included "iriver plus 3" media manager/transfer program, the lowercase ogg tags are properly recognized by the B20 since the tag information is read by the plus 3 program then copied into the portable's system database during file transfer.  However, if I execute the "Rebuild Library" command within the portable's advanced options, those ogg files with unreadable tags once again become "Unknown artist" and "Unknown album" and the playlists for those files break.

And I downloaded the trial of Tag&Rename 3.3.5, and that program saves uppercase field titles for ogg tags.  It's a 2-click process to rewrite all the tags in a directory. 

But even better, I did find the right DSP for use with foobar v0.8.3 so now I can do my conversion job! 

I've also emailed iriver about this firmware bug and linked to this thread, so hopefully there will be a fix sometime in the future.  *fingers crossed*