[vorbis-dev] NEW Real Media plugin, WAS: libvorbisrtp-0.1

Christian.Buchner Christian.Buchner1 at epost.de
Tue Oct 23 12:37:46 PDT 2001



me asking Jack Moffit:

> > (i.e. are you indicating there is already a Real plugin?)

Jacks' response:

> Yes.  Has been for almost a year.  It's not finished, but it works.
> Let me know what you find.  I'd love for us to work together and not
> duplicate efforts.

Oh, I did not know that ;) If the Real Plugin had been part of the Vorbis SDK,
I wouldn't even have bothered to start my own implementation. When heard about
the existing plugin, I decided to continue "duplicating efforts" because my work
was already somewhat advanced (to the point where it compiled and was ready for
debugging) I managed to get breakpoints working (in VisualStudio 6++). Using
Real's "testplay" console application, I can set breakpoints in the plugin and
single-step through the code, where needed.

This is what I want to achieve, when finished:

 - have RealJukebox play OGG files, with full support for OGG's comment header
 - allow OGG RTP streaming in Real Player
 - support IceCast's OGG HTTP streaming, if possible

This is what I've got so far:

Drag & Drop an OGG file into Real Player and it will play. File duration will
be set to ONE DAY because I do not yet know how to properly determine total
playtime (with chained OGGs, this might be a real challenge!)

When I get home today, I will test if streaming already works over my LAN
(I've got a NT4 SP6a box running a Real Server).

The ZIPped archive of my development tree is here, in case anyone cares.
http://home.san.rr.com/sandiegodiaries/audio/Devel.zip

The directory structure on my hard drive is like this
D:\SDK\vorbis-sdk-1.0rc2
D:\SDK\rmasdk_6_0
D:\SDK\rmasdk_6_0\Devel  <- this contains the unzipped archive above

All paths in the project files are relative. The vorbis-SDK is expected at
the relative position to the Real Media 6.0 SDK, as indicated above.

The archive contains a Visual Studio project file (vorbisff.dsw). This one
should be opened and used. The contained build is a debug build. Copy the
.DLL files (vorbisff.dll and vorbisrd.dll) into your 
"C:\Program Files\Common Files\Real\Plugins"   folder and it should work.

THIS IS NOT A RELEASE VERSION! Expect trouble and be prepared to delete the DLLs
in case your Real Player begins to behave stubborn like a donkey.

The vorbis support contains a file format plugin (vorbisff) and a renderer plugin
(vorbisrd).

Chained streams are not yet supported. When the end of the OGG file has
been reached, the Real Player will consume 100% CPU. Still a lot of issues
to address (better audio buffering, seeking, networked transport, RTP
packetization, etc...)

But it's a start.

There is one thing I absolutely DISLIKE about the Ogg SDK. Why is it the
programmer's responsibility to do a fallback like this?

ogg_stream_packetout()
  -> returns 0
  ogg_sync_pageout()   -> returns 1: ogg_stream_pagein()
    -> returns 0
    fread(), ogg_sync_wrote(), 

This sucks major. Especially if the read() functionality is asynchronous,
like in the Real Media architecture.

Why doesn't the Ogg API contain a mechanism using callback hooks, for example?
So I would ONLY have to bother calling ogg_stream_packetout(). In case the
ogg stream runs out of packets/pages, it would automatically call a callback
function which is responsible for providing new pages / bytes.   

Comments welcome. Rants -> /dev/null. Thanks ;)

--- >8 ----
List archives:  http://www.xiph.org/archives/
Ogg project homepage: http://www.xiph.org/ogg/
To unsubscribe from this list, send a message to 'vorbis-dev-request at xiph.org'
containing only the word 'unsubscribe' in the body.  No subject is needed.
Unsubscribe messages sent to the list will be ignored/filtered.



More information about the Vorbis-dev mailing list