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


bond
27th March 2004, 13:34
found a new site which is offering an as good as complete implementation of the xiph ogg format family:

http://www.illiminable.com/ogg/

the filters arent able to interact with exisiting ogg stuff (corevorbis, oggds) and when using it with .ogm files it detects only a speex stream, which isnt there of course

still for ogg vorbis and speex decoding it seems to work fine


edit: updated filter list:

this filter set is already very powerful and includes:
- ogg parser filter
- ogg muxer filter
- theora enc/decoder
- vorbis enc/decoder
- speex enc/decoder
- flac enc/decoder

bond
31st March 2004, 11:34
these filters are supporting flac too now (tough seems to be little bit buggy atm)

Phanton_13
2nd April 2004, 15:02
they are very good codecs and the suport od flac and speex are the best of all for me , the only problem is the lak of the seeking a file capabilities , but the lack of suport of OGM is not a problem for me.
Sorry for my english.

illiminable
5th April 2004, 09:47
Just a note on these codecs...

I've just comlpeted a theora filter... it will be available in the next day or two, time permitting... still a few things to clean up.

Agreed the missing seeking and position information is a major thing that is lacking now... that is the next on the agenda... A rough breakdown of future milestones is;

1) Theora Decoder completion
2) Position information
3) Seeking
4) Encoders for speex and vorbis
5) Muiltiplexer
6) Encoder for theora
7) Encoder for FLAC
8) Overall polishing, properties pages, packaging etc.
9) Testing and enabling integration with other filter packages.

I'm not very familiar with .ogm files... so i'll have to track a few down to see how they are formatted. But i do plan on supporting this, but getting core codec support is highest priority.

For the moment it was deliberate to not let these filters talk with others just to avoid compatability problems in the testing phase. Both other filters interfering with mine and mine interfering with others.

Enjoy.

Zen.

bond
5th April 2004, 10:43
great you are working on theora too :)

ChristianHJW
5th April 2004, 15:44
Originally posted by illiminable
I'm not very familiar with .ogm files... so i'll have to track a few down to see how they are formatted. But i do plan on supporting this, but getting core codec support is highest priority. ... you can find Mosu and Cyrius on #matroska, irc.corecodec.com, in case you need help with OGM.

For the moment it was deliberate to not let these filters talk with others just to avoid compatability problems in the testing phase. Both other filters interfering with mine and mine interfering with others. Enjoy. Zen.

Did you think about standardizing on certain MEDIATYPES and MEDIASUBTYPES for the Xiph codecs and the Ogg container ? As Xiph are not that interested in standardizing this, maybe we should care about it ?

Latexxx
5th April 2004, 16:04
Nice to see somebody working on Theora for DS. Keep it going!

illiminable
5th April 2004, 17:46
Originally posted by ChristianHJW
[BDid you think about standardizing on certain MEDIATYPES and MEDIASUBTYPES for the Xiph codecs and the Ogg container ? As Xiph are not that interested in standardizing this, maybe we should care about it ? [/B]

Seems strange that they aren't interested in standardising... i haven't talked to them about it though... It's as important to directshow as mime types are to general internet type recognition.

MEDIATYPES are pretty much decided already by MS ie Audio/Video... probably shouldn't go changing these.

SUBTYPES... definately a good idea... i haven't really tried to see what happens if i change my subtypes and just try and let it connect to one of the other groups filters. If we do this... we definately need some kind of agreement/"Expected behaviour" to ensure it doesn't just cause problems... ie to ensure that if we use the same GUIDS then we gaurantee to reject connections that we can't properly process.

And conversely gaurantee to accept and be able to process filters that conform to the expected behaviour.

It's definately something i want to do... but i've still got a lot more testing before i can make any gaurantees about my filters behaviour.

illiminable
8th April 2004, 15:09
Well... the first cut at a theora filter is done... so that completes the basic functionality of the decoders (minus all the bugs)... ie vorbis/speex/flac/theora.

Theora is not very well tested yet... so let me know if you have troubles with it(besides the bugs i already know about)... I'm pretty sure theora will need DX9 for mediaplayer to run it. And only theora files encoded with the alpha 3 release (ie the one that is only about a month old) will work... it will probably crash if you try to play older bitstream versions.

FLAC is still pretty buggy... and theora has a few bugs too... you can see the ones i've already found on the webpage www.illiminable.com/ogg/

Any feedback appreciated... also if you know a good source of theora alpha3 encoded vids... please let me know... they are a pain to encode under windows at the moment.

Next on the agenda is sorting out position and seeking... i have a few weeks off coming up... so hopefully some fast progress can be expected (fingers crossed).

Enjoy

Zen.

jcsston
8th April 2004, 19:50
I thought this might happen. :angry:

Instead of anyone ever updating the Ogg Splitter for FLAC, so that it does it's job (SPLITTING Ogg files!). Someone goes makes a splitter+decoder for OggFLAC files. :devil:

No one updated the Ogg Muxer either. :p

And to think I wondered why peope use Ogg...

illiminable
9th April 2004, 04:41
Originally posted by jcsston
I thought this might happen. :angry:

Instead of anyone ever updating the Ogg Splitter for FLAC, so that it does it's job (SPLITTING Ogg files!). Someone goes makes a splitter+decoder for OggFLAC files. :devil:

No one updated the Ogg Muxer either. :p

And to think I wondered why peope use Ogg...

I'm not sure i follow :) Which ogg splitter are you talking abot ?

The splitter and decoder are not one filter ? There are 5 filters in this package... a demuxer(splitter) and four decoders.

A new ogg muxer is not far away either hopefully.

I don't see how someone creating a complete codec set + associated tools can be a bad thing :)

Latexxx
9th April 2004, 08:25
Originally posted by illiminable
Any feedback appreciated... also if you know a good source of theora alpha3 encoded vids... please let me know... they are a pain to encode under windows at the moment.

It appears that your only option is to program an encoding filter Theora. :D The other option is to use the ffmpeg method:
ffmpeg -i test_th.avi -f yuv4mpegpipe - | encoderwin -a 5 -V 1000 -o test_th.ogg test_th.wav -

bond
9th April 2004, 09:22
Originally posted by illiminable
also if you know a good source of theora alpha3 encoded vids...a page offering theora encodes can be found here (http://www.xiph.org/~volsung/cc/mixtape.html), but i dunno if it they are a3?

hellfred
9th April 2004, 10:10
Originally posted by Latexxx
It appears that your only option is to program an encoding filter Theora. :D The other option is to use the ffmpeg method:
ffmpeg -i test_th.avi -f yuv4mpegpipe - | encoderwin -a 5 -V 1000 -o test_th.ogg test_th.wav -
I encoded a theora video using latest ffdshow from http://www.ligh.de/software/mirrors.phtml
together with VirtualDubMod.
It worked like a charm (even two pass), though i am not 100 per cent sure the theora codec is actually a Theora1.0-alpha3, but i think so, because i can decode the resulting file with the win32 realplayer plugin, which is supposed to only decode Theora1.0-alpha3.
https://helixcommunity.org/project/shownotes.php?release_id=129

Hellfred

Phanton_13
9th April 2004, 10:32
FFdshow+virtualdubmod d'ont make theora bitstream, it make OGM with theora encapsulated bitstream, and it is played as standart OGM file not like theora file.

Latexxx
9th April 2004, 10:45
Originally posted by bond
a page offering theora encodes can be found here (http://www.xiph.org/~volsung/cc/mixtape.html), but i dunno if it they are a3?
These were created using the Theora encoder from CVS and won't play using the Theora alpha 2 player.
They appear to be alpha 3 (or at least alpha 2+).

hellfred
10th April 2004, 09:58
Originally posted by Phanton_13
FFdshow+virtualdubmod d'ont make theora bitstream, it make OGM with theora encapsulated bitstream, and it is played as standart OGM file not like theora file.
I have placed the video into a avi container. What exactly do you mean with the term "bitstream" or theora file? Can't the bitstream be extracted from the avi?
Another way to get a theora encoded video is encoderwin.exe from
theora_tools-1.0alpha3-release_build.rar
(See http://forum.doom9.org/showthread.php?threadid=73148)
Using this i got a file with the ending .yuv.

Maybe that will help.

Hellfred

bond
10th April 2004, 10:13
Originally posted by hellfred
I have placed the video into a avi container. What exactly do you mean with the term "bitstream" or theora file? Can't the bitstream be extracted from the avi?from what i read the video bitstream is somehow connected with the .ogg container and therefore cant be extracted that easily

Phanton_13
10th April 2004, 22:10
In reality de theora bitstream format in the Ogg container is quite diferente than the hacked bitstream format for genearal A/V put in the OGM, this second is very similar to the format used in AVI, if yoy like to transform an AVi whith a theora stream in to a Ogg Theora compliant file, you ned to extract a Raw video an then with a especial parser conect to the muxer for the throra container.
----
Theora file is a theora compliant bitstream put in a ogg file whith Vorvis, Speex , Flac or whitout audio, this cam be change in a near future ading writ... and other features developep in xiph.

I like to tell de video or audio streams whith bitstream when i tell about de Ogg container, in this container dont exist a audio or video stream type, only exist one general stream type and is the codec who know wat is contained in the stream, in this contex i think that is more correct to tell de stream bitstream, In teh other hand the theora bitstream is the format of the stream type maked for the theora codec and only it know it... the ogg format is more simpler than other but is very high flexible and powerfull, and the remainder complexity for equals other container is moved to de codecs.
----
Sorry for my english

illiminable
12th April 2004, 15:10
Originally posted by Latexxx
They appear to be alpha 3 (or at least alpha 2+).

They don't appear to be A3...

A3 have this string
Xiph.Org libTheora I 20040317 3 2 0

These ones have...
Xiph.Org libTheora I 20031026 3 2 0

illiminable
18th April 2004, 10:02
Just to let people know there is now an update to these filters... www.illiminable.com/ogg/

I've added encoders for speex and vorbis, and a single stream mux (doesn't interleave yet)...

Some example filter graphs for encoding/transcoding are shown here www.illiminable.com/ogg/graphedit.html

Also added support for OGM style video encapsulation (only handles OGM video)(examples are vorbis + divx in ogg) to connect to ffdshow. This still is not working quite right. It connects and plays, but the video is clumpy... haven't quite figured that out yet.

Still haven't got around to seeking yet... been doing the easy stuff first :)

Enjoy,

Zen.

savage747
18th April 2004, 11:55
Great work illiminable!

BTW: Did you get any help on that "Granule pos bug" (theora-dev@xiph.org)? Have you tried contacting a developer in IRC?

illiminable
18th April 2004, 12:28
Thanks, yeah i sorted part of teh granule pos issue out... the part where it increases really fast... there is some weird method of marking keyframes.

But i haven't really got a conclusive answer for the -1 / no packtes end on this page case.

Just an aside... if anyone is using the encoders... don't distribute the files it creates... they are currently not to spec (no checksums and invalid paging of the first few packets)... even though my decoders play them... most others won't... i'm just working on that now... i've got the paging issue fixed... now i'm just trying to figure out why my checksums don't match !

Hopefully the source will be ready for release by the end of the week.

savage747
18th April 2004, 12:40
Originally posted by illiminable

Just an aside... if anyone is using the encoders... don't distribute the files it creates... they are currently not to spec (no checksums and invalid paging of the first few packets)


Distributing alpha-3 encoded files isn´t a good idea even when using the official encoder: The bitstream is not yet frozen (although changes will only happen when absolutely necessary AFAIK).

slavickas
18th April 2004, 12:56
i think he meant vorbis/speex only encoding, if i correctly understood

savage747
18th April 2004, 13:15
Originally posted by slavickas
i think he meant vorbis/speex only encoding, if i correctly understood

Argh... yes, of course... must have been confused...

illiminable
18th April 2004, 13:27
Yep... that is what i meant !

I've fixed the checksum and paging issues... a new version just went up then 0.52.0093. But i think there is a slight problem with the granule pos which causes some other players (though not mine) to experience a slight time-stretching distortion in a few places.

I still wouldn't recommend using these codecs to create files you intend to distribute just yet.

bond
25th April 2004, 00:02
illiminable,
i saw that you are also working on an ogg muxer! are planning to support ogm-style muxing of a/v tracks or only the official xiph formats in the ogg way (+ remuxing of theora stored in the ogm way to the ogg way?)

keep up the good work :)

illiminable
26th April 2004, 16:29
Originally posted by bond
illiminable,
i saw that you are also working on an ogg muxer! are planning to support ogm-style muxing of a/v tracks or only the official xiph formats in the ogg way (+ remuxing of theora stored in the ogm way to the ogg way?)

keep up the good work :)

Yes... the single stream muxer... suitable for muxing vorbis or speex only ogg files is almost done... it's in the last release though it still has some defects in it's paging and timestamping.

As for ogm... i'll be supporting the playback of ogm files (anyone know where i can download some from :) with moderate priority... the demux already supports ogm video + ogg vorbis mixed streams(such as the lego man movies (divx + vorbis) i link to on my website)... adding support for the audio also won't be very hard.

As for muxing of ogm... unfortunately that's a fairly low priority at the moment... once i can mux proper theora + vorbis ogg files properly to spec i'll start looking at that.

But i am also going to start adding annodex(www.annodex.net) support... which is another project i'm working on... i guess it could be interesting to the fansubbers, if they want to check it out ! This may take precedence over doing ogm muxing, depends how much spare time i get. Though you never know... ogm muxing is not all that complicated.

There will be a new release tomorrow, that includes seeking and position info for speex and vorbis... though still not for theora or flac. I just finished it then... but i think i'll sleep on it, and then package it tomorrow.

Also source will be available within the next 2-3 days. Basicly once i stop trying to do "just one more feature" and start tidying it up. Which should hopefully be about now !

illiminable
27th April 2004, 11:28
New version with seeking for speex and vorbis is available and a few other fixes...

www.illiminable.com/ogg/

illiminable
21st May 2004, 12:49
Another update to these filters. Now you can seek in theora as well as vorbis and speex.

Theora still has the odd sporadic crash when seeking, but it seeks succesfully most of the time and stays in synch, though there is still more issues to sort out. It doesn't seek to keyframes so you get blockiness until the next keyframe arrives.

New versions available here...
www.illiminable.com/ogg/

bond
21st May 2004, 13:16
good to see that things are evolving :)

illiminable
21st May 2004, 13:34
Yep... moving along again now... had to do some major changes to sort out the sync problems... and i've been quite busy with other things the last few weeks.

Hopefully not too much longer until they are all fully functional.

bond
2nd June 2004, 20:38
now as ogg theora has been finalized i had again a deeper look at your filter set :)

somehow everytime i try to use your ogg muxer, it creates a "name.ogg.asf" file :confused:
also its funny to see that its possible in dshow to combine file writer and muxer into 1 filter :)

are you planning to add a theora encoder filter too btw?

illiminable
2nd June 2004, 21:03
If you are using graphedit... to avoid the asf thing, choose in the drop box "All files"... i dunno why it does that !

You think it's bad to mix writer and muxer in one ?

I will probably create a filter with an output in the future because you may want to output that over a network instead of a file for example.

The skeleton of the theora encoder went into xiph svn tonight... but i haven't filled it in yet... there's still a problem with wmp9 and the theora decoder... it needs a bit of a rewrite to fix :(

The version in svn... has fixed most of the muxing bugs, and accepts multiply input streams.

I have exams starting... so it may or may not get done soon !

bond
2nd June 2004, 21:17
Originally posted by illiminable
[B]If you are using graphedit... to avoid the asf thing, choose in the drop box "All files"... i dunno why it does that !hm the muxer says " output.ogg.* ", but i think it doesnt matter anyways

You think it's bad to mix writer and muxer in one ?no, i only never saw this before :eek:

I will probably create a filter with an output in the future because you may want to output that over a network instead of a file for example.sounds powerful :D

The skeleton of the theora encoder went into xiph svn tonight... but i haven't filled it in yet... there's still a problem with wmp9 and the theora decoder... it needs a bit of a rewrite to fix :(
The version in svn... has fixed most of the muxing bugs, and accepts multiply input streams.nice :)

I have exams starting... so it may or may not get done soonkeep up the good work!

illiminable
7th July 2004, 20:45
Well... after a brief break... a new update is ready... quite a few new things added.

Most notably the ability to stream files from a http source.. the buffering is pretty much straight through at the moment... so you need to make sure you haev enough bandwidth to stream the desired file. Theres a few other limitations that are listed in known issues on my site.

The other major feature added is the theora encoder filter... i have also put together a brief how-to for how to transcode using graphedit to theora. www.illiminable.com/ogg/enc_theora_graphedit.html and as before you can still encode/transcode speex or vorbis from any format you can play in windows, see www.illiminable.com/ogg/graphedit.html

Also a lot of stuff to properly have file masks show up in media player and to let you put files in the new Media Library in WMP 9+... theora still won't play in WMP9+ unfortunately... i need to spend a good solid day debugging that... but it will play in graphedit or something like bsplayer.

You can download the binaries here (0.60.7043) www.illiminable.com/ogg/ or the source can be checked out of svn at http://svn.xiph.org/trunk/oggdsf/ Check out revision 7043 for the source that built those binaries... no doubt the head branch will be different soon enough.

Enjoy, and send me feedback if you have any problems.

Zen.

Atamido
9th July 2004, 19:23
Congradulations on making the encode/decode filters seperate. Very much appreciated. Once you get them to work with the Matroska filters and things like CoreVorbis, perhaps you could help out to make the Matroska Splitter accept streaming connections?

Atamido
9th July 2004, 20:39
Two small items.

1. I could not connect the Theora Encoder to the FFDshow filter until I disabled all outputs other than the YV12 output in the filter properties.

2. FFDshow tried to play the Theora file and would decode only the first frame, corrupt the second, and then freeze. Had to disable decoding Theora in FFDshow.

Using 20040418 and 20040629 version of FFDShow.

illiminable
10th July 2004, 09:59
perhaps you could help out to make the Matroska Splitter accept streaming connections?

The ability to use streaming is mainly based around an abstraction of source, i have a filter source interface, and it is implemented both as a file source or a network source.

Another thing i did from the outset after painful experiences in the past is to make the splitter a source filter, with an interface to change the source, rather than using the supplied "File Source" and "URL source" filters which i found to be really restrictive.

1. I could not connect the Theora Encoder to the FFDshow filter until I disabled all outputs other than the YV12 output in the filter properties.

Yeah... libtheora can only sucessfully encode 4:2:0 YUV (YV12), there is some support for 4:2:2 (YUY2) and 4:4:4, but encoding using these formats at the moment is not very successful.

So what the filter does is downsample any YUY2 to YV12, but i haven't written any way to translate any other formats.

So that's not really a bug, it just hasn't been written yet !

2. FFDshow tried to play the Theora file and would decode only the first frame, corrupt the second, and then freeze. Had to disable decoding Theora in FFDshow.

I'm not sure what happened there... when ffdshow first added support for theora it worked, but i supsect since then i've made some changes which ffdshow hasn't propagated yet. You should let the ffdshow folks know, so that they can check it out... When they first did it i hadn't released the source so they had to do some guesswork for some things... but the source is now available so they should be able to figure out what is different now.

Cheers,

Zen.

BoNz1
10th July 2004, 19:50
illuminable, any chance you could release a directshow encoder build using the experimental theora encoder? http://svn.xiph.org/experimental/derf/theora-exp/ there were some people who were quite excited about it and I sort of want to see what it can do :).

illiminable
10th July 2004, 20:15
illuminable, any chance you could release a directshow encoder build using the experimental theora encoder?

I'm getting stuck into a few other things at the moment... but i'll have a look at it soon, i'm not really sure if that's ready though !

So long as it uses the same public api, it shouldn't be too much trouble... to be honest, i haven't even looked at the code.

BTW illiminable as in subliminal rather than illuminable as in illuminate ! :)

Cheers,

Zen.

savage747
10th July 2004, 20:21
Originally posted by BoNz1
there were some people who were quite excited about it and I sort of want to see what it can do :).

The encoder is broken. Although it produces valid files, quality is really horrible. The exciting thing about this codebase is that it´s a build from scratch starting point for future quality enhancements.

BoNz1
10th July 2004, 22:42
Originally posted by savage747
The encoder is broken. Although it produces valid files, quality is really horrible. The exciting thing about this codebase is that it´s a build from scratch starting point for future quality enhancements.

Dunno about that because honestly I haven't tried it. But this is what was said when it first was checked into the xiph subversion. That was a couple months ago already. There have been some changes to the code since.

savage747
10th July 2004, 22:46
Originally posted by BoNz1
Dunno about that because honestly I haven't tried it. But this is what was said when it first was checked into the xiph subversion. That was a couple months ago already. There have been some changes to the code since.

I have tried :)

Those changes were fixes for the decoder (the first decoder for Theora supporting the whole spec - the libtheora alpha3 decoder is not complete and therefore won´t be able to play all future Theora-streams).

Atamido
11th July 2004, 18:10
Originally posted by illiminable
Yeah... libtheora can only sucessfully encode 4:2:0 YUV (YV12), there is some support for 4:2:2 (YUY2) and 4:4:4, but encoding using these formats at the moment is not very successful.

So what the filter does is downsample any YUY2 to YV12, but i haven't written any way to translate any other formats. Because one of the options exposed on the ffdshow pin in YV12, and it still won't connect, I would consider it a bug. As long as there is at least one compatible type between the two connections, it should work. But in this case, it fails.

illiminable
11th July 2004, 18:34
Because one of the options exposed on the ffdshow pin in YV12, and it still won't connect, I would consider it a bug. As long as there is at least one compatible type between the two connections, it should work. But in this case, it fails.

Ok... i didn't understand you properly... can you give me some more details about the input format/file to ffdshow ? And a copy of the text on the ffdshow input and output pin property page, with all the video information, size etc.

I haven't seen this happen before with ffdshow, the only time i have seen it happen is with a dvd, trying to put the theora encoder where the overlay mixing filter should be, and the dvd filter output pin is querying for an interface during the connection process and even though the video types are the same it still rejects the connection because it doesn't offer the interface it wants.

I suspect this is what is happening.

EDIT: Oh and if anyone is trying to get to my site right now, the servers are in the process of moving data centres so it's down at the moment :( Was only supposed to be down for 4-6 hours, but it's been over 12 now... so hopefully not too much longer !

Atamido
11th July 2004, 18:52
From the ffdshow raw video filter output pin:Major Type: Video - Sub Type: YV12 - Format: YV12 320x240, 12 bits,
Aspect Ratio: 320x240,
Interlace format: Frames
rcSrc=(0,0,320,240)
rcDst=(0,0,320,240)
Major Type: Video - Sub Type: YUY2 - Format: YUY2 320x240, 16 bits,
Aspect Ratio: 320x240,
Interlace format: Frames
rcSrc=(0,0,320,240)
rcDst=(0,0,320,240)
Major Type: Video - Sub Type: YVYU - Format: YVYU 320x240, 16 bits,
Aspect Ratio: 320x240,
Interlace format: Frames
rcSrc=(0,0,320,240)
rcDst=(0,0,320,240)
Major Type: Video - Sub Type: UYVY - Format: UYVY 320x240, 16 bits,
Aspect Ratio: 320x240,
Interlace format: Frames
rcSrc=(0,0,320,240)
rcDst=(0,0,320,240)
Major Type: Video - Sub Type: RGB32 - Format: RGB 320x240, 32 bits,
Aspect Ratio: 320x240,
Interlace format: Frames
rcSrc=(0,0,320,240)
rcDst=(0,0,320,240)
Major Type: Video - Sub Type: RGB24 - Format: RGB 320x240, 24 bits,
Aspect Ratio: 320x240,
Interlace format: Frames
rcSrc=(0,0,320,240)
rcDst=(0,0,320,240)
Major Type: Video - Sub Type: RGB555 - Format: RGB 320x240, 16 bits,
Aspect Ratio: 320x240,
Interlace format: Frames
rcSrc=(0,0,320,240)
rcDst=(0,0,320,240)
Major Type: Video - Sub Type: RGB565 - Format: RGB 320x240, 16 bits,
Aspect Ratio: 320x240,
Interlace format: Frames
rcSrc=(0,0,320,240)
rcDst=(0,0,320,240)
Here (http://img45.exs.cx/my.php?loc=img45&image=ffdshow-theora-fail.png) is an image of the graph.

illiminable
11th July 2004, 19:01
Thanks,

I actually haven't seen that filter before ! So i haven't tested with it... where did that come from ?

There's so many different builds scattered about in various places... but none of those i've seen had anything other than the decoder filter in them !

Which is the official download site now ? The stuff on source forge is like years old now !

Bogalvator
11th July 2004, 20:15
ffdshow builds by athos:
http://athos.leffe.dnsalias.com/

Builds by Andy2222:
http://mitglied.lycos.de/ieggei2/ffdshow/

Thread where I found the links:
http://forum.doom9.org/showthread.php?threadid=48511
(good luck!)

By the way, your website is down at the mo' :(

illiminable
11th July 2004, 20:39
Thanks very much for the links...

By the way, your website is down at the mo'

Yeah, i know... the server is moving home... it was only supposed to be down for about 4-6 hours... but it's been about 15 now :( I guess these things happen :(

Hopefully the truck didn't crash :) I'm hoping it comes back in the next few hours.

illiminable
15th August 2004, 18:51
Another update (0.61.7571) has been uploaded with the following changes...

* Fixed seeking crash problems with theora
* Fixed FLAC playback
* Added a FLAC encoder filter
* Added a very simple .NET media player called DNPlay
* Added a .NET directshow playback library

This is now the full range of codecs with encoders and decoders.

You can download here http://www.illiminable.com/ogg/ I've also put the zipped version of the source (contains C, C++, C++.NET and C#.NET parts) on there too. You need VS2003.NET to build them.

Or it's in xiph svn at http://svn.xiph.org/trunk/oggdsf/ (browsable via the web)

Unless you have a great need, you should download the zip file (7MB) rather than checking out from svn (25MB)... there's no gaurantees the head branch of the svn tree is in working order at any particular time, and it will save your bandwidth to get the zip !

bond
18th August 2004, 22:16
cool stuff, keep up the good work :)

illiminable
31st August 2004, 22:36
And another update...

A new version (0.62.7673) is now online at www.illiminable.com/ogg also at www.illiminable.com/ogg/sse_builds.html you'll find two different experimental builds, one using SSE and one using SSE2 for all 37 libraries and applications in the distribution. Use these only if you are sure your processor supports the appropriate extended instruction set. More information is on the page.

I also fixed the network streaming that i broke in the last release... it now caches the stream in your TEMP directory as specified in your environment variables. Works a lot better now... though it's still not perfect, and still doesn't pre-buffer to account for user having bandwidth
less than the stream bitrate.

I also removed all the .NET sample applications for those who don't ever run windows update and still don't have the framework.. because of the way the nstaller works it wouldn't let you install until you downloaded it. Later
on, i'll package them as a seperate distribution... they are not really anything more than examples so i doubt anyone actually used them anyway.

And changed the installer to make you click through the BSD licenses, and include an informational dialog so users know where to go for new versions... as many download shell sites are linking directly to the files without any link to the website where people can see known bugs and install
instructions or even know if they are getting the latest version.

Enjoy...

Zen.

Atamido
2nd September 2004, 02:01
Good news! I've been watching your commits and was wondering when a new version was coming.

Any update on if/when these filters will work with the Matroska filters?

illiminable
4th September 2004, 11:08
I'm still working on a few compatability issues... it's still not working to 100%... i'm finding a few problems with a version of Tobias's filters still being partially installed and conflicting, particularly in mpc.

But once i can narrow down and correct these things, i'll be able to spend some testing with the matroska stuff... i haven't looked closely at the matroska filter, but i suspect at the moment i'm using a different timing scheme.

illiminable
13th September 2004, 15:33
And another update... 0.63.7755

http://www.illiminable.com/ogg/

You can play theora in WMP9 and 10 now (but can't seek in these two players)... also fixed some bugs that were stopping people creating theora+speex files... which now work.

Cheers,

Zen.

tiki4
17th September 2004, 09:59
Hi,

this latest version is the first one that doesn't crash for me every player when playing Ogg Theora + Vorbis. So far, so good. I tried to mux video and audio from a Theora Ogg and a Vorbis Ogg file, but as with previous versions Graphedit closes after a few seconds and leaves an incomplete file. The file that I was able to play was created with ffmpeg2theora from an uncompressed source AVI.

Thumbs up for this project, though.

tiki4

illiminable
17th September 2004, 11:29
Originally posted by tiki4
Hi,

this latest version is the first one that doesn't crash for me every player when player Ogg Theora + Vorbis. So far, so good. I tried to mux video and audio from a Theora Ogg and a Vorbis Ogg file, but as with previous versions Graphedit closes after a few seconds and leaves an incomplete file. The file that I was able to play was created with ffmpeg2theora from an uncompressed source AVI.

Thumbs up for this project, though.

tiki4

I suspect the reason that previous versions wouldn't play for you is that the video was high-res... there was a bug where the buffers were too small, and it would just bomb, if it got a large frame.

When you say tried to mux a theora ogg and vorbis ogg file... can you be more specific ?

Was the graph like this...

Ogg Demux --> }
} Ogg Mux
Ogg Demux --> }

???

Or were you transocding or encoding for a raw source ? If so what was the graph setup ?

Cheers,

Zen.

tiki4
17th September 2004, 11:45
Muxing was somthing like:



Ogg Demux--|
|->Ogg Mux
Ogg Demux--|



The first Ogg file contained Theora video encoded with your filter suite in Graphedit from an AVS source. The second was an audio only Ogg Vorbis file produced from AC3 with BeSweet.

Cheers,

tiki4

illiminable
17th September 2004, 12:29
Originally posted by tiki4
Muxing was somthing like:



Ogg Demux--|
|->Ogg Mux
Ogg Demux--|




The first Ogg file contained Theora video encoded with your filter suite in Graphedit from an AVS source. The second was an audio only Ogg Vorbis file produced from AC3 with BeSweet.

Cheers,

tiki4

Could you perhaps send me the vorbis file ? Or at least the first half meg (not more than 2 megs worth) or so of it to ogg@illiminable.com.... you can just break it arbitrarily... i'll fix up the end if it breaks between a page.

I've just done a few tests, doing encoding like that, and it seems to work for me.

Also... could you try running the vorbis file with the utility

OOOggValidate filename.ogg

And see if it says it's valid. Also if you have trouble breaking the file... do an

OOOggDump filename.ogg>filename.dump

And just with a text editor, edit the text file (the .dump file) and break it after the first 10 or so pages... and send that to me.

Both those utilities are in the installation directory.

Cheers,

PS: Also... if the theora only file that is created by my encoder doesn't play in WMP, then also try running the validation program on it.

Zen.

tiki4
17th September 2004, 14:34
Thanks for your input.

I'll try to send you the files, if you have some time...

I'm away for the weekend and can only access my own computer on Sunday evening again. So please be patient.

tiki4

illiminable
25th September 2004, 08:38
There's a new update now... version 0.64.7878

It finally fixes the last of the theora problems in WMP 9 and 10 (that i know of anyway !)... it can play and seek in WMP 9 and 10.

Also did a fix that was stopping the filters running inside an activeX control ie in IE or other media players which use WMP control.

www.illiminable.com/ogg/

Cheers,

Zen.

Sharktooth
25th September 2004, 13:38
Great!
Just a question. I hadn't time to test OGM support but i read this
If you install ffdshow, you will be able to play ogm style *video only* files (ie OGM\DivX in one stream and non-OGM vorbis in the other).
in your website.
Could you explain what does it exactly means,please?

illiminable
1st October 2004, 13:06
It means that it can handle video streams that have an ogm header... ie an ogg file with ogm/divx in one stream and vorbis in the other.

If there is an audio ogm stream (ie mp3 or whatever) and/or a subtitle track, these streams will currently be ignored or may fail.

Sharktooth
1st October 2004, 19:37
Thanx:)

bond
4th October 2004, 22:52
illiminable, i saw that flac 1.1.1 has been released some days ago. it supports now seeking of flac in .ogg together with (hopefully final) specifications on how to place flac in .ogg, which you can find here (http://flac.sourceforge.net/ogg_mapping.html)
are your filters using this method for storing flac in .ogg already? is it possible to mux already existing ogg flac and theora streams together into one correct .ogg with your filters?

also did you think about adding support for the ogg writ subtitle format to your filters? according to rillian its said to be pretty final already
you can find the specs here (http://wiki.xiph.org/Writ), some sources should be in the xiph svn too

also i saw that you wrote on your hp about problems with gabests MPC with your filters.
this might be caused by MPC, as it has its own .ogg/.ogm splitter inbuilt, which is used by default in mpc and can be disabled via the mpc options

RadicalEd
8th October 2004, 04:26
The latest version crashes explorer on my WinXP home/Athlon/DX9 box. Previous versions have caused explorer to hang indefinitely when deleting .ogg files, not sure if this issue is still present (mostly because I don't want to risk locking up my system to see :p). These filters are great, but the instability makes them a bit difficult to live with. Still, keep up the good work.

illiminable
8th October 2004, 09:45
Hi,

Yes... someone else pointed this out to me today as well (maybe it was you!)... i'll look into it... i have managed to get explorer to hang now, whereas previously i hadn't. And i rarely use explorer (Total Commander)

I will look into it, now that i can reproduce it.

Thanks...

illiminable
8th October 2004, 10:09
Originally posted by bond
illiminable, i saw that flac 1.1.1 has been released some days ago. it supports now seeking of flac in .ogg together with (hopefully final) specifications on how to place flac in .ogg, which you can find here (http://flac.sourceforge.net/ogg_mapping.html)
are your filters using this method for storing flac in .ogg already? is it possible to mux already existing ogg flac and theora streams together into one correct .ogg with your filters?

also did you think about adding support for the ogg writ subtitle format to your filters? according to rillian its said to be pretty final already
you can find the specs here (http://wiki.xiph.org/Writ), some sources should be in the xiph svn too

also i saw that you wrote on your hp about problems with gabests MPC with your filters.
this might be caused by MPC, as it has its own .ogg/.ogm splitter inbuilt, which is used by default in mpc and can be disabled via the mpc options

Yes... i have considered doing writ... but at the time i was first about to do it... the wiki was gone, and there were still quite a few really bad bugs in the other filters, so i figured my time would be better spent fixing those.

But i do intend to do writ... it just wasn't all that high priority.

Yeah... i've seen the new FLAC spec... but it's not implemented yet.

As for muxing FLAC and theora... i just tried it... and there's a bug in the flac encoder's time conversion and it doesn't work, the same bug was previously in speex, so it's a one line fix.

With that fix, i'm 99% sure it would work, but since it's the old flac bitstream, it wouldn't be a good idea. But hopefully next version, i'll fix it and do the new flac format.

Thanks for the heads up on MPC... there is still a problem with the other filters not cleaning the registry though.

As to the explorer problem... i guess it's one of those bugs that seems so obvious, that no-one ever reported it ! But since i rarely use explorer i never encountered it !

If there are other bugs people know of, that aren't listed on my homepage, please let me know... since if it's not in the list... i don't know about it.

illiminable
8th October 2004, 12:37
Just been looking into the explorer thing... seems explorer is holding the exclusive lock for some reason... in doing a bit of a search, i found these ...

http://www.softwarepatch.com/tips/howto-delete-xp.html
http://dot.kde.org/1047362149/1047405830/

The problem comes about... because when you highlight the icon in explorer it actually loads up the filter to try and query it for metadata, and then doesn't release it.

I'm looking into it further at the moment... there must be a registry key somewhere to say "don't preview"... i'm not really sure what's going on... as it doesn't happen in other file managers, and it's not caused by WMP. I'm just going through all the the code again to make sure all the file handles are getting released properly.

illiminable
8th October 2004, 14:11
OK... found the explorer problem i think... it's a registry key left behind by the tobias filters...

http://www.google.com.au/search?q=cache:_gSZRQmVhvMJ:svn.xiph.org/trunk/oggds/main.cpp+%7Bc5a40261-cd64-4ccf-84cb-c394da41d590%7D&hl=en&ie=UTF-8

To fix it, run regedit and go to this key

[HKEY_CLASSES_ROOT\.OGG\ShellEx]

Right click on ShellEx in the left pane of the registry editor... and delete it. (Be careful editing the registry !! If you break it, it's not my fault ! :)

If you ever reinstall the Tobias Filters... even if you uninstall them, you'll need to do this again... same very likely applies to Core Media Player (but i'm not sure) as i think it ships with the tobias demux filter.

In future versions, in the installation i'll try to clean up all these orphan registry keys that are left behind, before it installs.

RadicalEd
8th October 2004, 20:03
Awesome, thanks. It works great now :D
I'll do some more testing, I think I recall having some other problems previously but I'm not sure. That was the biggest.

RadicalEd
9th October 2004, 18:22
Alright, here's the next batch of reports. Only tested with vorbis and theora so far.
Encodes using ffmpeg2theora:
-No seeking in WMP 6.4
-No looping in WMP 6.4
-Stopping and playing again causes the first I-frame to be missed
-Seeking in WMP 10 and VLC gives incomplete inter blocks until I-frame (consequence of frame-accurate no-delay seeking I suppose)
-Graphedit stalls at end of file

Encodes using Illiminable directshow encoders:
-Multi-stream files don't play. That is, only vorbis or theora can be played within ogg at a time
-Stopping crashes single-stream files
-Seeking crashes graphedit
-Stopping single-stream files hangs graphedit
-VLC only plays audio and without seeking (stop, pause, etc work)

Don't know how many are directly related to the filters, but hopefully the information is useful.

illiminable
10th October 2004, 05:48
Originally posted by RadicalEd
Alright, here's the next batch of reports. Only tested with vorbis and theora so far.
Encodes using ffmpeg2theora:
-No seeking in WMP 6.4
-No looping in WMP 6.4


OK... old versions of WMP use an old seeking interface which i haven't implemented yet... for the seeking that should be easy to fix... possible looping won't be supported.

-Stopping and playing again causes the first I-frame to be missed
-Seeking in WMP 10 and VLC gives incomplete inter blocks until I-frame (consequence of frame-accurate no-delay seeking I suppose)


Yep... neither can seek to keyframe yet...


-Graphedit stalls at end of file


Yeah... i'm not really sure why this happens yet... i have noticed it once or twice... but it doesn't seem to affect players.



Encodes using Illiminable directshow encoders:
-Multi-stream files don't play. That is, only vorbis or theora can be played within ogg at a time


I haven't come across this... i've made quite a lot of multi-stream files... (also note in graphedit you must add vorbis to the top pin and theora to the bottom pin, for them to appear in the corrct order in the file).

If you have a file where this is the case... run the program
oooggvalidate oggfile.ogg

This program is in the install directory... and tell me whether it says it's valid.


-Stopping crashes single-stream files
-Seeking crashes graphedit
-Stopping single-stream files hangs graphedit


Never come across this either... so you mean, you can't play any vorbis files ?


-VLC only plays audio and without seeking (stop, pause, etc work)


Are you sure you encoded the streams in the correct order ?

As shown here... http://www.illiminable.com/ogg/enc_theora_graphedit.html


Don't know how many are directly related to the filters, but hopefully the information is useful. [/B]

Yeah... thanks for that... there's a few things to look at... if you have any files that crash a player... please run oooggvalidate on them, if they say they are valid, run oooggdump on them (redirect output to text file), and cut and paste the first 10 pages or so of the hex dump into a file and email it to me.

Cheers,

Zen.

RadicalEd
10th October 2004, 09:21
Oh well ignore all the reports on your encode filters then, the ordering was probably it. I'll have to check that out in the morning.

RadicalEd
10th October 2004, 22:05
Okay, obviously that error on my part was the main cause of the problems for the Illiminable encode. I re-did and came up with a new, much smaller list.

-Directshow/WMP10 playback is b0rked in a strange way. The streams take turns playing every few seconds, and sometimes simultaneously (but out of synch by this time).
-Seeking in VLC stops audio, sometimes audio restarts later, sometimes audio overlaps with previous parts.

Those are the only remaining bugs I can see with vorbis + theora. If any further information/testing is needed, let me know.

BTW, looping works fine in WMP10

Yong
11th October 2004, 05:20
Here's another easy solution to disable the Video preview function in explorer:
Open the regedit, go to HKEY_CLASSES_ROOT\clsid,
search the word "video thumbnail extractor"
rename the key(with a lot of nuumber) that contain the value "video thumbnail extractor" form {xxxx...} to {xxxx...}+ or something else(easy to rename back when u want the video thumbnail function again).

NOTE: this will disable all type(avi,ogm,mpg,wmv ect.) of video preview in explorer.
May be speed up opening folder that contain large number of video.:)

illiminable
11th October 2004, 08:09
Originally posted by RadicalEd
Okay, obviously that error on my part was the main cause of the problems for the Illiminable encode. I re-did and came up with a new, much smaller list.

-Directshow/WMP10 playback is b0rked in a strange way. The streams take turns playing every few seconds, and sometimes simultaneously (but out of synch by this time).
-Seeking in VLC stops audio, sometimes audio restarts later, sometimes audio overlaps with previous parts.

Those are the only remaining bugs I can see with vorbis + theora. If any further information/testing is needed, let me know.

BTW, looping works fine in WMP10

Thanks, for taking the time to do some tests and give me some feedback, it's greatly appreciated ! Now i just need to clone a few hundred more like you !

Could you please give me some more information about what/how you encoded, ie what types of file did you transcode/encode from ? What res/quality/framerate was the video ?

Also, could you try running OOOggValidate on the produced file to see if it is valid.

Also... if possible could you try and make a small file which exhibits the bug (less than 750k)... or just arbitrarily chop the file off at the 750k mark... or do an OOOggDump, and send me the first few dozen pages of output in a text file, and email it to me at ogg@illiminable.com (put something like radicalEd or doom9 in the subject so it doesn't get deleted as spam)

Thanks,

Zen.

RadicalEd
12th October 2004, 03:16
Found the source. Keyframe distances > 64 cause the problems mentioned above to occur in increasing magnitudes. The resolution I'm using is 352x288 at 29.97 fps. The other two encoding params are default (400000 and 30 I believe). I think the problem is generic, but if you still need a sample I can provide.

Btw, the printout for OOoggstat.exe with no params is "Usage: OOOggDump <filename>"

illiminable
12th October 2004, 03:34
Originally posted by RadicalEd
Found the source. Keyframe distances > 64 cause the problems mentioned above to occur in increasing magnitudes. The resolution I'm using is 352x288 at 29.97 fps. The other two encoding params are default (400000 and 30 I believe). I think the problem is generic, but if you still need a sample I can provide.

Btw, the printout for OOoggstat.exe with no params is "Usage: OOOggDump <filename>"

Actually no, no need to send me a sample yet... the information you gave should be enough for me to reproduce it.

I think i see one potential problem already... i think i didn't account for drop-frame fps's like 29.97... i think it's probably trying to round it to the nearest integer.

Thanks for the info about oooggstat... i'll change that.... (most of the OOOxxxxx tools are pretty much identical, so some of the code was copy pasted)

Cheers,

Zen.

RadicalEd
12th October 2004, 03:50
Bingo. 30 fps playback is flawless.

bond
12th October 2004, 20:21
cool seeing things going on :)
these filters are really cool stuff, sad that i dont have much time to do some testing myself :(

Yong
13th October 2004, 05:33
Bug report here:
Recent bulid DShow can't play the FLAC v1.1.1 encoded OggFLAC.

illiminable
13th October 2004, 09:56
Yeah... the new flac encapsulation spec came out after that build... i have it in the next build... however there is a problem i'm waiting to hear from Josh about.

The new version of flac doesn't conform to it's own spec, so i need to find out whether to try to detect files made by flac.exe and correct the error plus produce files from my code that confrom to the spec (but won't be able to handled by the flac tools), or whether he's going to just change the spec to be inline with the implementation (my preference).

I just want to find out before i do a release, as i don't really want to make the problem any worse by having two different imlpementations that don't work the same.

One of the header fields is incorrectly set.

Yong
13th October 2004, 11:34
Thanks for the reply, i'll continue to test this DShow filter and report if it's have bug(hope no bug in future release:)).
This DShow filter is Great!!

bond
13th October 2004, 20:44
btw zen, you asked on the theora maillist why ffdshow only outputs to .avi. the reason is that ffdshow's encoder is a vfw encoder, which can be used in virtualdub, which outputs to .avi (of course in virtualdubmod you can also output with it to .ogm, but guess what, not in a .ogg compatible way...)

illiminable
21st October 2004, 13:35
Another update just went up 0.66.8063

Fixed up the explorer bug, and it supports the new Ogg FLAC format... also fixed quite a few memory leaks... so it's not such a memory hog !

http://www.illiminable.com/ogg/

RadicalEd
21st October 2004, 15:32
What's the status of fractional framerates in this build? :O

illiminable
21st October 2004, 15:47
The fractional framerate works for mpegs... but for some reason it seems a lot of AVI's at 29.97 still come out, out of sync... even though the time stamps are properly corrected for the fractional rate.

I can't really see whats going on with that... i just wanted to get this one out, because it has teh new support for ogg flac 1.1.1 in it.

With the AVI's they seem to be out by a constant amount... rather than drifting as you'd expect if from a rounding bug.

I'm still looknig into it.

RadicalEd
21st October 2004, 20:35
Interesting reports on the new version.
Foremost, FFDShow decoding now works with illiminable output, whereas with the last version it didn't at all. I'm not sure whether the change was on the ffds side or yours.
The seek bar is now enabled in WMP 6.4, but seeking in it and WMP 10 freezes the player with ffdshow or illimiable decoding. Seeking in graphedit works with illiminable decoder but freezes with ffdshow. VLC works as usual.

illiminable
22nd October 2004, 08:35
Hmmm... dunno why the seek bar is enabled in WMP 6.4 it's not for me ! Must only be when ffdshow is decoding.

The change was on their side.

Are you saying that theora fails to seek at all even with my decoder in all cases ?

I'm fairly sure it will fail with ffdshow decoding as i'm guessing they are using different seek signals.

RadicalEd
22nd October 2004, 22:22
Now THIS is odd...
The seek bar was enabled with illiminable decoders and freezing as I said. However, to make sure it was *only* the illiminable and default directsound/video renderer filters running, I also disabled ac3filter, and crashing stopped... however, something else also happened: seeking worked 0_0
So, somehow, seeking now works in wmp 6.4 (and all other players), with illiminable or ffdshow decoding. Cool?

On the downside, I tried encoding last night and the odd desynch problem is now present no matter the fps (30, 24, 23.976)... unless that was ac3filter too ¬_¬ ...
edit: bug confirmed not to relate to any other filters

Yong
24th October 2004, 10:30
Finally i can play the OggFLAC with the DShow-based player, Thanks Zen. AFAIK there is only a few audio player can support this kind of format.

Feature request:
That will be nice if this filter set can retrive file info similar like this while playing the file:

New logical stream (#1, serial: 0000546c): type Theora
New logical stream (#2, serial: 00004348): type vorbis
Vorbis headers parsed for stream 2, information follows...
Version: 0
Vendor: Xiph.Org libVorbis I 20030909 (1.0.1)
Channels: 2
Rate: 44100

Nominal bitrate: 95.681000 kb/s
Upper bitrate not set
Lower bitrate not set
User comments section follows...
ENCODER=ffmpeg2theora 0.10.2
Logical stream 1 ended
Vorbis stream 2:
Total data length: 1393747 bytes
Playback length: 2m:10.011s
Average bitrate: 85.761507 kbps

May be you should consider combine the OOOggCommentDump.exe, OOOggStat.exe, OOOggValidate.exe and ogginfo.exe(from vorbis-tools-1.1.0-win32), make this filter set more complete.;)

illiminable
24th October 2004, 10:58
Feature request:
That will be nice if this filter set can retrive file info similar like this while playing the file:


Yeah... i'd like to, but the problem is, there's not really anywhere to show it in media player.

I really need to write a custom UI plug-in for WMP to do this kind of stuff... all the information is available internally... there's just nowhere to show it at the moment.

Those command line tools are pretty incomplete... they are mainly just examples. BUt at some point, i'll make them do something a bit more useful ! :)

Yong
25th October 2004, 12:29
Show the informations in the wmp9/10 may be too hard, how about show it in the filter propeties page(others media player)?;) Costum-UI? Console style already enough(that's mean display text only).:)

Yong
10th November 2004, 12:33
New Version (0.67.8171) - 05/11/2004 dshow filter update;)
The author say he is busy, so i help him to update this post.

bond
2nd January 2005, 22:49
zen, when doing a quick test with the theora encoder filter i noticed that the option sliders in the settings are a little bit cut visually at the bottom

also because you wrote about implementing ogg writ support: the specs seem to be up again in the wiki (http://wiki.xiph.org/index.php/OggWrit), also there now seems to be a reference writ encoder/decoder available here (http://svn.xiph.org/trunk/py-ogg2/)

keep up the good work with the most complete ogg tool available :)

bond
7th February 2005, 02:16
illi, i noticed two things lately:

1) when muxing one flac .ogg and one vorbis .ogg together with your muxer, the output .ogg is very big (oggzinfo tells me 4 EOSes, all using the flac's stream serial)

2) is it right that your decoders can only be used once in the graph? it seems as if mutliple vorbis streams arent supported (only one is played, altough the ogg parser outputs two vorbis pins)
playing a file with flac and vorbis together works fine (as every audio decoder is only used once it seems)

bond
5th May 2005, 16:53
other issues:

- seeking doesnt seem to be to keyframes only, as your decoder shows typical "missing keyframe" artefacts after seeking
- your parser seems to have problems with ffdshow as theora decoder (very slow playback, picture freeze after a few seconds)
- this sample (http://www.linuxdj.com/audio/lad/contrib/zkm_meeting_2005/video/paul_nasca-zynaddsubfx.theora.ogg) shows green artefacts at the beginning, as if the first keyframe isnt recognized/there
- when importing the vorbis decode filter in graphedit and than going to the filter properties i get a crash in dsvorbisdecoder.dll (doesnt happen when the filter is used in a full graph)
- i dont see the codec settings in the vorbis encoder filter

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.