[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