Rockbox.org home
Downloads
Release release
Dev builds dev builds
Extras extras
themes themes
Documentation
Manual manual
Wiki wiki
Device Status device status
Support
Forums forums
Mailing lists mailing lists
IRC IRC
Development
Bugs bugs
Patches patches
Dev Guide dev guide
Search



Donate

Rockbox Technical Forums


Login with username, password and session length
Home Help Search Staff List Login Register
News:

Welcome to the Rockbox Technical Forums!

+  Rockbox Technical Forums
|-+  Support and General Use
| |-+  Audio Playback, Database and Playlists
| | |-+  Ogg files with two streams fail.
« previous next »
  • Print
Pages: [1]

Author Topic: Ogg files with two streams fail.  (Read 1924 times)

Offline hiptobecubic

  • Member
  • *
  • Posts: 5
Ogg files with two streams fail.
« on: February 21, 2012, 01:33:57 PM »
Some of my ogg files won't play in rockbox, despite working everywhere else i've tried. I created them with ffmpeg2theora. VLC, mplayer, and mpd all play the file fine, although VLC fails to find the Vorbis comment header, "TagLib: Vorbis::File::read() - Could not find the Vorbis comment header."

According to /bin/file, the files that won't play are of type
"Wontplay_inrockbox.oga: Ogg data, Skeleton v4.0", whereas the working ogg looks like
"Willplay_inrockbox.ogg: Ogg data, Vorbis audio, stereo, 44100 Hz, ~96000 bps".

/usr/bin/ogginfo says that the file that won't play has two streams, a skeleton stream and a vorbis stream, whereas the working file only has a vorbis stream. I'm sure that's somehow the issue, but can anyone say what's really going on here? Is it a case of rockbox and VLC not working hard enough to support the various ways that vorbis can be put into an ogg container, or this way just illegal?
Code: [Select]
john@eleanor:/dev/shm$ ogginfo Wontplay_inrockbox.oga 
Processing file "Wontplay_inrockbox.oga"...

New logical stream (#1, serial: 0e483fe6): type skeleton
New logical stream (#2, serial: 0e483fe4): type vorbis
Vorbis headers parsed for stream 2, information follows...
Version: 0
Vendor: Xiph.Org libVorbis I 20101101 (Schaufenugget)
Channels: 2
Rate: 44100

Nominal bitrate: 80.000000 kb/s
Upper bitrate not set
Lower bitrate not set
User comments section follows...
ARTIST=Artisan
TITLE=Speed
ALBUM ARTIST=Artisan
ALBUM=Rocking at the End of Time
TRACKNUMBER=6
GENRE=Folk Harmony
Logical stream 1 ended
Vorbis stream 2:
Total data length: 1033092 bytes
Playback length: 1m:56.089s
Average bitrate: 71.192725 kb/s
Logical stream 2 ended

john@eleanor:/dev/shm$ ogginfo Willplay_inrockbox.ogg
Processing file "Willplay_inrockbox.ogg"...

New logical stream (#1, serial: 30517eee): type vorbis
Vorbis headers parsed for stream 1, information follows...
Version: 0
Vendor: AO; aoTuV b4b [20051117] (based on Xiph.Org's libVorbis)
Channels: 2
Rate: 44100

Nominal bitrate: 96.000000 kb/s
Upper bitrate not set
Lower bitrate not set
User comments section follows...
ARTIST=Artisan
TITLE=Speed
ALBUM ARTIST=Artisan
ALBUM=Rocking at the End of Time
TRACKNUMBER=6
GENRE=Folk Harmony
Vorbis stream 1:
Total data length: 1359654 bytes
Playback length: 1m:56.075s
Average bitrate: 93.708572 kb/s
Logical stream 1 ended
Logged

Offline saratoga

  • Developer
  • Member
  • *
  • Posts: 8974
Re: Ogg files with two streams fail.
« Reply #1 on: February 21, 2012, 02:22:37 PM »
Theres a description of Ogg Skeleton here:

http://wiki.xiph.org/Ogg_Skeleton_4

I've actually never heard of it before, but I think its pretty safe to say that we don't support it.
Logged

Offline hiptobecubic

  • Member
  • *
  • Posts: 5
Re: Ogg files with two streams fail.
« Reply #2 on: February 21, 2012, 02:50:01 PM »
Ok I see. Well reading the Xiph page:

Ogg Skeleton is a logical bitstream within an Ogg stream that contains information about the other encapsulated logical bitstreams. For each logical bitstream it provides information such as its media type, and explains the way the granulepos field in Ogg pages is mapped to time.


So the skeleton stream simply identifies the Vorbis stream that rockbox was expecting to find in the first place. I don't have any experience hacking on media libraries, but since this isn't a new codec or anything, is it a reasonable feature request? I can see problems arising if perhaps there are multiple media streams in the file, but a sensible default like "ignore all but the first vorbis stream" is better than the current behavior of dying without any errors. Thoughts?
Logged

Offline Llorean

  • Member
  • *
  • Posts: 12931
Re: Ogg files with two streams fail.
« Reply #3 on: February 21, 2012, 03:36:54 PM »
We never like "dies without any errors" but typically speaking something like this (especially since you're the first person in years to have even experienced this problem) gets fixed if someone with a specific interest in it actually goes and submits a patch that includes a fix.
Logged

Offline hiptobecubic

  • Member
  • *
  • Posts: 5
Re: Ogg files with two streams fail.
« Reply #4 on: February 27, 2012, 10:37:45 AM »
Is this the direction that ogg is moving towards in the future? Their description of the ambiguity problem that it solves would suggest so. If so, would this end up on the list of "things which are necessary" instead of "patches welcome"? I'd like to fix this myself, but I'm starting from absolute zero: No knowledge of how rockbox works, no knowledge of how codecs work, etc.
Logged

Offline saratoga

  • Developer
  • Member
  • *
  • Posts: 8974
Re: Ogg files with two streams fail.
« Reply #5 on: February 27, 2012, 11:23:34 AM »
Quote from: hiptobecubic on February 27, 2012, 10:37:45 AM
Is this the direction that ogg is moving towards in the future?

You'd have to ask Xiph.
Logged

Offline hiptobecubic

  • Member
  • *
  • Posts: 5
Re: Ogg files with two streams fail.
« Reply #6 on: February 28, 2012, 08:55:01 AM »
So I talked to some people in #xiph and learned the following.

"*.ogg" implies a single stream ogg container with a vorbis stream in it.
"*.oga" implies that a skeleton stream is present which indicates any other streams that might be present, of which more than one may be vorbis, speex, theora, etc.

The latest spec will demand that skeletons be present in ogg files. "Vorbis" files are grandfathered in with their degenerate ogg container format, freely admitted by them to be an error caused by rushing the standard out the door originally.

The "right" thing to do is to add support for Ogg containers with a skeleton as that is what the spec calls for, while keeping support for the original Vorbis-only format that rockbox currently has.

The full conversation is here: http://pastebin.com/D0LjMfvS,  and is also attached.
* xiph_ogg_skeleton_28-2-2012.txt (5.67 kB - downloaded 134 times.)
Logged

Offline torne

  • Developer
  • Member
  • *
  • Posts: 994
  • arf arf
Re: Ogg files with two streams fail.
« Reply #7 on: February 28, 2012, 10:03:57 AM »
Thanks for the information. However, we don't actually have a list of "things which are necessary" - everything is "patches welcome" :)
Logged
some kind of ARM guy. ipodvideo/gigabeat-s/h120/clipv2. to save time let's assume i know everything.

Offline hiptobecubic

  • Member
  • *
  • Posts: 5
Re: Ogg files with two streams fail.
« Reply #8 on: February 28, 2012, 10:57:42 AM »
Wish I could be a little more helpful here. I'd like to learn more about how this kind of thing works. Where does one begin? My knowledge of C is pretty decent, but as I mentioned before, I have never dug into the Rockbox codebase or done any parsing of codecs or anything before.  Would be nice to add my name to the list of contributors though :)
Logged

  • Print
Pages: [1]
« previous next »
+  Rockbox Technical Forums
|-+  Support and General Use
| |-+  Audio Playback, Database and Playlists
| | |-+  Ogg files with two streams fail.
 

  • SMF 2.0.17 | SMF © 2019, Simple Machines
  • Rockbox Privacy Policy
  • XHTML
  • RSS
  • WAP2

Page created in 0.084 seconds with 15 queries.