Hi,
I am interested in putting together a patch to enable seeking in the oggdemux element when configured in push mode. My use case is for .ogg files streamed over the DAAP protocol, which takes place over HTTP. The Rhythmbox audio player implements this with a GStreamer chain beginning with souphttpsrc (in push mode). The Ogg format is inherently difficult to seek because the stream headers (intentionally, by virtue of its streaming-oriented design) do not provide enough information to do this and its codecs are typically VBR. In pull mode, oggdemux performs a bisection search of the stream to identify chains (Ogg files concatenated together) and to compute the total stream length, among other things. This process is too seek intensive for push mode and so the demuxer currently has no seek support in push mode. Going on a FIXME suggestion in gstoggdemux.c I wondered if it might be possible to add support for a less accurate seek via GST_FORMAT_PERCENT. A single seek request could be issued to a location, in bytes, proportional to the file length. libogg would then resync the stream and playback could continue from the approximated position. A DAAP server typically scans media files for stream length and presents the total time to the client. Patching Rhythmbox to issue GST_FORMAT_PERCENT seek requests when GST_FORMAT_TIME is unavailable was quite easy and makes sense in the UI. The main challenge I see is: * Chained files could drop you into a part of the stream without having read the page headers first. This is bad and, worse, even undetectable if the same Ogg page serial numbers are used by different chains. This seems like a showstopper for such an idea and I can't see a way around it. VLC does a similar thing and simply crashes if you seek too far into a chained file streamed over HTTP. Since chained files are an intentional design feature of the Ogg format I am loathe to consider them outliers and implement this anyway. What do you think? -- Jay L. T. Cornwall http://www.jcornwall.me.uk/ ------------------------------------------------------------------------------ Throughout its 18-year history, RSA Conference consistently attracts the world's best and brightest in the field, creating opportunities for Conference attendees to learn about information security's most important issues through interactions with peers, luminaries and emerging and established companies. http://p.sf.net/sfu/rsaconf-dev2dev _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.sourceforge.net/lists/listinfo/gstreamer-devel |
On Sat, Jan 16, 2010 at 05:34:19PM +0000, Jay L. T. Cornwall wrote:
> The Ogg format is inherently difficult to seek because the stream > headers (intentionally, by virtue of its streaming-oriented design) do > not provide enough information to do this and its codecs are typically > VBR. In pull mode, oggdemux performs a bisection search of the stream to > identify chains (Ogg files concatenated together) and to compute the > total stream length, among other things. This process is too seek > intensive for push mode and so the demuxer currently has no seek support > in push mode. You'll probably want to read this and related stuff to find out what efforts are being done in the area: http://pearce.org.nz/labels/ogg.html dave... ------------------------------------------------------------------------------ Throughout its 18-year history, RSA Conference consistently attracts the world's best and brightest in the field, creating opportunities for Conference attendees to learn about information security's most important issues through interactions with peers, luminaries and emerging and established companies. http://p.sf.net/sfu/rsaconf-dev2dev _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.sourceforge.net/lists/listinfo/gstreamer-devel |
Hi David,
>> The Ogg format is inherently difficult to seek because the stream >> headers (intentionally, by virtue of its streaming-oriented design) do >> not provide enough information to do this and its codecs are typically >> VBR. In pull mode, oggdemux performs a bisection search of the stream to >> identify chains (Ogg files concatenated together) and to compute the >> total stream length, among other things. This process is too seek >> intensive for push mode and so the demuxer currently has no seek support >> in push mode. > You'll probably want to read this and related stuff to find out > what efforts are being done in the area: > > http://pearce.org.nz/labels/ogg.html Well, I'll be. I investigated the Skeleton metadata track during my research and it didn't appear to offer anything useful to this problem. That was 3.0 - 3.1 seems to add everything I need! Thanks for that, I'll have a play with the prerelease tools and put together an alpha patch for gstoggdemux.c to parse and use the prerelease metadata. That's a much better solution, as it will easy to append a metadata track to existing Ogg files. -- Jay L. T. Cornwall http://www.jcornwall.me.uk/ ------------------------------------------------------------------------------ Throughout its 18-year history, RSA Conference consistently attracts the world's best and brightest in the field, creating opportunities for Conference attendees to learn about information security's most important issues through interactions with peers, luminaries and emerging and established companies. http://p.sf.net/sfu/rsaconf-dev2dev _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.sourceforge.net/lists/listinfo/gstreamer-devel |
Free forum by Nabble | Edit this page |