Log in

View Full Version : New Ogg Theora/Vorbis/FLAC/Speex Directshow Filter Set


Pages : 1 2 [3]

illiminable
4th June 2005, 15:11
Hi, sorry haven't replied lately... i'm just flat out with other work... will likely not be until august until i have much time to work more on these.

RE the most recent comments.

Keyframe artefacts : Yes, it doesn't handle keyframes correctly... that's something that is fairly high priority to fix.

FFDShow : I haven't really tried much using interactions with otehr stuff. Not the highest priority but still something i want to get to when i can.

Vorbis settings : Sorry, i only exposed the vorbis encoding settings as a programmatic interface (via COM)... i will add a simple property page for this in the next release.

Writ : I am interested in doing this... though not that high on my priority list. Though adding the simplest support shouldn't be a big task... so i may get to it.

Multiple streams : YOu should be able to use multiple streams. I've made files with two vorbis streams in it ok. I must admit this isn't all that well tested. RE FLAC repeating... i've seen this before... i'll have to look more closely as to the cause. It seems to just repeat the same file over and over.

Other stuff : Another big issue when i next work on this, is proper unicode filename support. As well as a native flac encoder, and updating all the codecs up to their latest versions. Also adding access to stream info/stream switching, and programmtic access to metadata tags... still can't find out how to expose them to WMP.

And in other news... Yahoo! is using these codecs in their new media player, which can be found here http://music.yahoo.com/musicengine

It also lets you rip CD's to vorbis or flac, with a nice interface.

bond
11th July 2005, 13:58
thx for the answer!

i noticed another issue: when seeking audio/video (theora and vorbis) loose sync pretty clearly
when i run the stream without seeking it seems to work fine

illiminable
16th February 2006, 19:29
Have at it... http://www.illiminable.com/ogg/

Well, finally got around to another release! I was extremely busy last year, and had very little spare time to work on this. I've been doing a few things over the last couple of months, and now is as good a time as any to release, or I will keep putting it off!

This is the start of the 0.7x line of development, I completely rewrote the demuxer, it's much easier to maintain now, and I fixed a few issues with timing.

The main things people care about in this new release.

* Seeks properly in theora... to any frame, without artefacts... (most of the time! there is a small bug and occasionally it misses the keyframe, but it's a lot better than artefacts every time)
* Seeking accuracy improved in all codecs. Everything seeks within 1 audio sample (ie. sub second) rather than to page or even packet boundaries.
* Works much better on staticly streamed files over http. Still no seeking over http.
* Upgraded most of the libraries a couple of months ago, but to just get a release done, I didn't get stuff that happened since then (ie spx 1.1.12 or vorbis 1.1.2) since I just want to release and have a new baseline to work from.
* Some improvements to .ogm, but I didn't get a chance to finish everything before the release. It does not attach itself to the .ogm extension to avoid messing with your current .ogm solution. You'll need to rename the file to .ogg to make it play. When the support is more reliable, I will attach to the .ogm extension.
* Fixed the audio level problem in flac.
* Synch should be a lot tighter now.
* Random other bugfixes.

But... I did have to break something. Previously it had a nasty trick to allow it to stream chained icecast streams... it was always a bad way, but it kinda worked. But now I can't get away with that. I will be looking to implement that properly when I get a chance.

Hopefully I will have a bit more time this year, and the release cycle can be back to how it was before the 1 year gap.

My goal for this project from the beginning was to make the easiest to use, most complete implementation of ogg (both encoders and decoders) for Windows, but there is still plenty of work to be done yet. They are BSD like the core xiph code to encourage the uptake of ogg on windows, and as such can and are used in proprietary applications.

Thanks to everyone who has given me lots of feedback. Please continue to do so, and report bugs to ogg@illiminable.com Hopefully I might make it 1.0 this year (that was last year, and the year befores goal too!)

Enjoy!

clsid
16th February 2006, 21:55
Seeking in FLAC files doesn't work very good. Also with previous version. Seeking a few seconds ahead goes reasonably well, but when seeking more futher ahead it takes some time before the sound returns.

illiminable
17th February 2006, 08:25
Hi. Not sure why seeking is not working so fast for you. Works instantly for me and most people. Is anyone else seeing slow seeking in flac? In flac, the audio should be playing again, as soon as your mouse button comes up (<150ms)

Is it possible you have some other filter installed which is putting itself between the decoder and the audio renderer... Morgan Stream Switcher is a likely candidate.

Do you perhaps have graphedit, so you can render the file there and see which filters are actually in the graph? Failing that, if it's feasible you could try sending me the flac file you are having problems with. www.yousendit.com is good. After you upload, it will ask for an email address. YOu can either put mine (ogg@illiminable.com) and it will send me the link to the file, or you can put yours, and manually send me the link.

Kopernikus
17th February 2006, 09:42
There are sources for dirac encoder/decoder filter in svn, but no binaries in the package. Are they not yet finished?

Do you (plan to) use the dirac libraries or an own implementation?

illiminable
17th February 2006, 10:21
The dirac code that is there is from about 18 months ago when dirac was first released. The code is not working. At the time, there were a number of issues that stopped me completing it. I'm sure they are resolved by now, but I just haven't got back around to looking at it again.

I believe fluendo is doing their own implementation, and figuring out the ogg mapping. I would like to reinclude this before fluendo finishes re-implementing dirac, so I would likely use the reference implementation, but I still need to talk to them about how they will do the ogg mapping before I can proceed.

illiminable
17th February 2006, 13:35
Seeking in FLAC files doesn't work very good. Also with previous version. Seeking a few seconds ahead goes reasonably well, but when seeking more futher ahead it takes some time before the sound returns.

I tried the file you send me, and it works flawlessly here. The seek is as good as instant. Do you know if you have some kind of stream switching component, or maybe some custom eq. or mixing filter? Morgan Stream Switcher seems like the most likely, the delay could possibly be due to this.

Which media player are you using? It's also possible that it's still using some other flac implementation for some reason. The easiest way to be sure is to get graphedit (http://www.digital-digest.com/dvd/downloads/showsoftware_graphedit_141.html) download link at the bottom of that page. And go...

File->Render Media File... you'll have to switch the drop box at the bottom to "Show all files" then select the flac file and click ok. There should only be two filters, the flac source and the audio renderer.

It should look like this...
http://www.illiminable.com/temp/flac_graph.jpg

Cheers.

Kopernikus
17th February 2006, 14:23
There was talk on the Schrödinger List about the mapping. The ideas from there are collected here:

http://wiki.xiph.org/index.php/OggDirac

There was also talk about changing the dirac specs in some points.

clsid
17th February 2006, 14:39
It looks exactly like that. I tried WMP6.4, MPC and BSplayer.

illiminable
17th February 2006, 15:34
It looks exactly like that. I tried WMP6.4, MPC and BSplayer.

Ah... ok. Does it happen for you in any of the recent WMP versions? Since it works great for me in WMP10, but i just tried WMP6.4, and it does indeed have a 1-2 second pause. But then again, if you try it in graphedit, you can also scrub instantly.

The fact you can scrub instantly in graphedit, which is pretty barebones, would suggest that the delay is not being introduced by the filters. I'll see what I can figure out with WMP6.4. Cheers.

clsid
17th February 2006, 16:27
I rather not install WMP9/10. However, I have tried playing with GraphEdit, and it also has the delay issue.

illiminable
23rd February 2006, 22:54
Here's a new version. Mainly updates to theora, and it's a lot more stable than 0.70.

www.illiminable.com/ogg/

Changes:

* Fixed the theora seeking bug, should accurately seek to any frame without
artefacts.
* Fixed bug not handling WMP doing hardware video acceleration, caused crash on some files (eg. the ones here http://fedoraproject.org/wiki/RenderingProject/aiglx)
* Fixed handling of missing 3xx http response codes (eg. from archive.org)
* Fixed bug where player would crash if you dragged it from one monitor to
another while playing
* Fixed COM reference double-release bug
* Fixed race condition which could crash or hang sometimes after a seek.

Enjoy,

Zen

Sharktooth
25th February 2006, 10:11
nice:)

illiminable
17th September 2006, 09:52
Hi, as again work commitments have kept be busy most of this year, I haven't had time to test a release.

There were lots of accumulated fixes in svn which I have not had the time to fully test. I have decided to finally get around to splitting the releases to stable and unstable. 0.72.1838 is the first unstable release. Hopefully this will let me have more frequent releases, without having to worry about breaking stuff for average users.

0.71.0946 is still the recommended release for first time users, or those who don't want to live on the edge. There will likely be a couple more unstable releases before the next stable release. It's not that I know this release to be unstable... it just has lots of new code which hasn't been properly tested yet, though it does have a lot of bugfixes.

I am not planning to take any more contracts for 6-8 weeks and I will be working primarily on oggcodecs for that time. So now would be a good time to make any outstanding and unresolved issues known to me. If you have in the past and they still aren't fixed, remind me again.

Current priorities are : Better encoding support, vista support, tagging, shell integration, Windows Mobile 5.0 support.

Changes include
# Fixed bug that would refuse to play extremely small files
# Added YUY2 output support to better support old graphics hardware
# Updated speex to 1.2beta1
# Updated project to VS 2005
# Using theora-exp for theora decoding ~30% speed up
# Improved 24/32 bit support for FLAC (still may not be perfect)
# All code moved to unicode. Fixed bug which would fail if paths had unicode chars
# Custom unicode emulating(unicows) CRT's to maintain Windows 9X support
# Compatablity fixes for Media Portal and Media Player Classic
# Installer detects and offers to remove previous versions
# Installer offers to optionally associate WMP to .ogg
# MMX optimisations for libtheora ported to MASM, encoding ~25-30% faster
# Xiph fish icon in explorer
# Code ported to Windows Mobile 5.0 (currently unreleased build)
# Switch to integer decoding version of speex

For more information... see this page this page (http://www.illiminable.com/ogg/downloads.html)

In the medium term, hopefully I will finally get a new website that doesn't suck so bad. :)

Zen.

illiminable
21st October 2006, 09:22
OK... another unstable release is out 0.73.1936

http://www.illiminable.com/ogg/downloads.html#unstable

As before, most people should continue with 0.71 as that release has been reasonably well tested. Unless you are affected by a specific bug, or want to try a new feature.

The changes from 0.72 to 0.73 are:

# Encode options for theora, vorbis, speex and flac and property pages in graphedit
# Improved OGM decoding
# Improved subtitle support
# Vorbis channel order fixed
# 24/32 bit >2 channel decode support improved for vorbis and flac
# Fix end of file/repeat bug in flac
# Correct handling of aspect ratio in theora
# "Add to playlist" option for WMP appears in explorer right-click menu

Mainly, aside from fixing the FLAC bug that got re-introduced in 0.71, and fixing the aspect ratio handling in theora and channel order in vorbis. The major changes are in the encoders. All the codecs now expose most encoding options, and have a property page in graphedit. These have only had very limited testing, it's probably possible to crash it if you try hard enough. But other than that, you can set various settings in FLAC, vorbis, speex and theora now.

For all of the encoders, you have to set the options after the input pin is connected. (If you don't, there currently isn't a lot of error checking, but strange things will probably happen). Also the theora encoder has a quirk. You have to set it's options after the input pin is connected, but before the output pin is connected. The other encoders can be done before or after the output pin is connected. That will be fixed soon.

Next to be fixed is the output pin interfaces on the encoders, so they can chain back into their decoders, and some improvements to the muxer.


Zen.

clsid
21st October 2006, 15:29
It would be useful if the installer would allow users to choose which components to install.

I had some trouble getting the ogm splitter to work. I had to manually add a registry key:
HKEY_CLASSES_ROOT\Media Type\Extensions\.ogm

After that I could play an ogm file containing theora video. I also tried to play an ogm file containing divx3 (FourCC DIV3), but that failed to create a DS graph. Same file works ok when I enable the internal ogm splitter in MPC.

FLAC, Vorbis and Theora decoders all seem to work fine. However the Theora decoder doesn't seem to be compatible with Gabest's and Haali's ogm splitters. Could you make it more compatible?

illiminable
21st October 2006, 18:17
It currently doesn't associate to ogm extension on purpose, because there is still no support for stream switching/selecting. But if you want to try the ogm splitter, just rename a file to .ogg (you will of course hear all the audio playing at the same time)

The ogm support will eventually be completed. Until then, i left it not enabled, so that it doesn't stop people using other ogm splitters. As i get closer to the next stable release, i will start looking at more changes to the installer.

As to compatability with other splitters. That's not at the top of my priority list at the moment, but when the last of the major changes are stabilised, and if it won't cause problems with other filters, i will start looking at that. However, those splitters could also provide compatability from their side if they chose.

Pretty much if i provide compatability to the other ogm splitters and matroska etc., it has to be complete and comprehensive, otherwise it will cause conflicts with peoples existing setups. I will do it eventually, but for now, i don't want to get tied up in tedious compatability issues when i still have several major features left to implement.

Once i get to what i am considering to be feature complete to get to a 1.0 release, then i will start working on those kinds of issues.

At the moment, the list below is the major feature TODO list.

* Fix up all the mux input interfaces and encoder output interfaces
* Do proper testing and tidy up all the exposed encoding options on all codecs
* Sync recovery
* Completed ogm support, with stream switching/selection
* Further shell integration - thumbnails, property pages in explorer etc.
* Split up the package to be more configurable, possibly allow a build with only decoders (which is much smaller than one that includes the encoders too)
* Full metadata integration to WMP
* Native FLAC encoder
* Dirac encoder and decoder
* Seeking over http, and smarter seek method selection on large files
* Support for icecast chained streams
* Test and release the Windows Mobile 5 Pocket PC builds


Zen

video_magic
22nd October 2006, 00:48
It's all looking very promising, thank You for your work.
Are You going to be aiming for 'the best' implementations for the encoding side? (i.e. FLAKE for FLAC : http://www.hydrogenaudio.org/forums/index.php?showtopic=45013 , or the optimised OGG Vorbis http://www.hydrogenaudio.org/forums/index.php?showtopic=29161 )

Thanks again for the time You put in

illiminable
22nd October 2006, 08:32
I am aiming to provide 'the best' encoders too. Though some peoples definition of 'best' may vary.

I already use theora-exp for decoding, because it is definitively better than the reference decoder. It's faster, more complete, more robust. When the theora-exp encoder becomes definitively better than the reference encoder, i will likely switch to that too.

I've had a quick look at other vorbis encoders, such as aoTuV (better in low bitrate compression) and some of the lancer builds (optimised for speed). Previous aoTuV work has been merged into the reference encoder, and hopefully this will happen again.

But i haven't had the time to really figure out whether they are definitively better with no downside in some other area. As best i can tell, a lot of people are using them and they seem to be a good choice. There's a very good chance that at some point i will start using one of these.

As for FLAKE, i'd not heard of it. At the moment, i'd be inclined to think it's not ready to replace libFLAC. ffmpeg seems to have a different project philosophy about when to include alternate implementations. That's great that they push the boundaries with experimental work, but at least for my main distribution i'd like to use things that are well proven.

I would really like to at least build the capability into the source to switch between these various different encoders, so that experimental builds can be made... but that will probably be a while away.

clsid
22nd October 2006, 11:49
Thanks for the explanations.

video_magic
23rd October 2006, 02:38
I appreciate the reasoning, and once more, thank You!

(...and indeed it's very nice to see the formats of the Xiph project being supported and promoted to the many Windows users :) )

WeaponX
26th October 2006, 19:58
Found a bug in the unstable version 0.73.1936. After installing, when I go to File-->Open in wmp10, the 'Files of types' drop down box is empty. It looks like the install deletes the entries there.

If I uninstall it, I get all the file types entries back in the drop down box.