View Full Version : OggMux is now opensource.
Koepi
14th August 2002, 21:32
Hi,
if you'd help out in development I'd appreciate it :)
http://sourceforge.net/projects/oggmux/
Don't laugh too long but clean up the messy sources. At least I tried to properly write what I did and where.
I'm eager to get patches!
A fency site design for the oggmux homepage would be nice, too!
Best regards,
Koepi
Emp3r0r
14th August 2002, 22:54
maybe someone could help translate comments to english ;)
Koepi
14th August 2002, 22:58
My comments are in english IIRC.
The VS studio ones are german - and useless anyway... .)
nexus
15th August 2002, 08:07
Hi Koepi,
you made a small mistake on your page. Your link to sourceforge is
http://oggmuxx.sourceforge.net/ , I think it should be http://oggmux.sourceforge.net/ :-)
Koepi
15th August 2002, 16:48
Ok, I removed most of the german comments generated by visual studio. My comments are english anyways, and that's the functionality we want to work on, right?
So, still noone messing around with it? :)
We need some designer for a webpage for http://oggmux.sourceforge.net/ - and a new logo wouldn't be bad, either :)
So come on people, help the development!
Best regards,
Koepi
Emp3r0r
15th August 2002, 22:15
Koepi: I can't compile OggMux. I've been trying a few days now ;)
Anyway, I am getting a cannot include file streams.h error. So I installed DirectX8.1 SDK and i found multiple copies of streams.h on my system. How do I get it to compile with that file it wants? Do i need to copy streams.h and everyfile it imports to oggmux directory?
PS: sorry, i'm not good with C++
Koepi
15th August 2002, 22:40
You need to include the DXSDK\DirectShow\samples\baseclasses directory in the compiler(IDE setup.
Hope this helps,
Regards,
Koepi
Emp3r0r
16th August 2002, 00:43
I still can't figure it out. Here is a screenshot of what I tried.
http://www.jvance.com/images/oggmuxbuild.gif
Koepi
16th August 2002, 00:58
You have to move that directory up to the top.
Maybe there's a problem with VS .Net as well. Since VS .Net is evil bloatware, you might want to switch back to VS98 anyways ;)
Regards,
Koepi
P.S.: the proper DX SDK setup procedure is there in many readme files in the SDK-directory...
Neo Neko
16th August 2002, 05:02
Excelent Keopi! I would help code if my skills were near that league. Perhaps I could kick out a quick multipage or so web site. Now we just gotta get Tobias back in gear. ;)
[Toff]
16th August 2002, 11:08
@Emp3r0r
The path you are modifing is used for debugging only. The debugger will search in those directory if he need a source file.
You must modify the "include" path.
It is called "Additional include directories:" in VS98, I don'k know VS.NET.
Also you may have to compile the BaseClasses using this project file :
$(DXSDK)\samples\Multimedia\DirectShow\BaseClasses\baseclasses.dsw
And then add the .lib file to your project (or the directory to your lib path).
Koepi
16th August 2002, 13:50
No, it's not necessary to compile the baseclasses, nor to explicitly include the libs.
On my fresh install, I just add the DSHow\Samples\baseclasses path to the top of the include files, like described in the DX SDK documentation, add the standard library path of the SDK as well, et voila, you're done.
You might need the oggds.h from tobias site as well (which has _nothing_ to do with that streams.h error seen above btw), just in case I forgot to put it in the source package.
Regards,
Koepi
Emp3r0r
16th August 2002, 16:31
Well, I'm making some progress. First I got the streams.h error, then the amvideo.h error. After I fixed those I thought I was close to getting it built... then:
http://www.jvance.com/images/oggmuxbuildtry.gif
I guess VS.NET is causing me some problems, although it says- All DirectX 8.1 SDK samples have been compiled with Visual Studio 7.0, and that development environment is supported, even though no explicit project files are providedI dunno, I'm almost ready to give up.
PS: oggds.h is already there
[Toff]
16th August 2002, 16:57
Have you got this file "Strmiids.lib" in your project settings ?
Emp3r0r
16th August 2002, 17:09
WoooHoo, thanks Toff, It Compiled :D
Emp3r0r
16th August 2002, 17:53
For whoever wanted OggMux language default set to "English" i've compiled a version that does that. If interested, I'll post sources and vc++7 compiled binary. Anyway, I'm going to attempt to create an oggmux class for use in any .NET language. I have no idea how to accomplish this so any tips are appreciated.
Koepi
16th August 2002, 18:01
Erm, hello?
"It`s compiled with another compiler, yahoo! Let`s publish our great efforts!"
Would you please concentrate on the user wish list and help out there?
To compile oggmux is nothing to be proud of, everybody can do that. To develop it - that is the secret.
Well, here I clearly see why I didn`t want to make it opensource in first place - people a ripping the work of others off, making bullshit like setting default language to english... Big deal empe, I`m proud of you!
Starting getting annoyed,
Koepi
Nic
16th August 2002, 19:58
(Just been looking thru the source myself Koepi, very nice indeed :) its as neat as DShow source gets :) ...very brave of you to release the source code too, now you can see why im relucatant to release dvd2avi_nic :) )
Cheers mate,
-Nic
Emp3r0r
16th August 2002, 22:06
I was happy once I got it compiled because i've tried many times unsuccessfully on many different programs. geez koepi, I don't know C++, yet I'm learning. Your code is helpful with that. Very neat, good comments, OO, etc. I've been looking at the split feature to allow for more flexibility. Oh and in response to Well, here I clearly see why I didn`t want to make it opensource in first place - people a ripping the work of others off, making bullshit like setting default language to english... Big deal empe, I`m proud of you! Thanx, I'm proud of myself too... so why don't you go outside and play hide and go [edit]. I mean really, what is your problem. You earn so much of my respect by releasing oggmux and then you flush that respect down the toilet.
PS: it is sad that this thread had resorted to this and I apologize for my part in that, I won't post here again
[Toff]
16th August 2002, 22:48
Come on guys ! :scared:
@Koepi
Is it so terrible people ripping you work. You know that without knowledge code is not much in itself, but you have the knowledge.
I think that lot's of software start by ripping something from another, then the developper better understand what he is doing ;-) and want to do it by is own way. Yes he ripped your work, but you have made the world evolve and you must be proud of that. I think that's evolution.
@Emp3r0r
How can you insult someone who shared is work like this ?
Koepi maybe was in a bad mood, and is a bit bored because he is not receiving the support he was waiting for.
Nevertheless I hope that all we are doing here is for fun and because we like that.
Thanks to Koepi for releasing is work and good luck to Emp3r0r with his C++ learning.
Koepi
16th August 2002, 23:58
Ok, maybe I should explain myself (even if I don't think it's necessary):
I released the sources, as some people were requesting that to speed up the development.
Nothing like that happens, noone's sent me patches yet or requested to get added to the OggMux project on sourceforge.
BUT, what I more than dislike is:
- download the sources
- change the default behaviour of the GUI (which doesn't even need a single line of code and can be done easily by changing a list) - btw. there were several people voting against it (some publically, some by mail)
- and now offer it as something better.
I think the main tasks which should be done first were clearly mentioned:
- clean up the sources
- moving some functions out in own classes (so maing it _real_ OO and not a spaghetti code replacement in c++ ;) )
- and after that, start improving things.
Improving things doesn't mean to make 1000 special versions (everyone from a different country would prefer another default language), but look into the dshow framework, how to get the splitting keyframe accurate. How to get values refreshed correctly, when you change values in an editable dropdown listbox. And so on.
Calling me such bad things isn't the way to go.
I did write everywhere where I could that these first tasks are to be done. And I think I can expect a little respect for the wish to do proper development. I'm not really sure if the OggMux sources are good to learn c++, as they're - I wrote that very often, too - somewaht messy and not all the time the best solution.
But hey, that's one more reason to make it opensource.
I hope that someone out there has the wish to really help the development and not just wants to spread doubtable "better" binaries.
Best regards,
Koepi
Neo Neko
17th August 2002, 08:35
Give it time Koepi. It may take a month or two. But if you keep it fresh and in the foreground they will come.
Koepi
19th August 2002, 16:32
Yahoo! :)
Thanks to Neo Neko OggMux has now a really nice webage, find it here of course:
http://oggmux.sourceforge.net/ !
Amazing, ~330 source downloads already but no feedback for that ;)
Best regards,
Koepi
Emp3r0r
19th August 2002, 21:36
Neo Neko: Congrats on your great website for OggMux.
Koepi: Since we are looking to OOP to help improve OggMux... How do you envision the OggMuxObject like?
class OggMuxObject
--- private OggContainer _OggContainer;
--- method MediaStream[] Demux()
--- method SaveToFile()
--- method GrabStream(DateTime Duration)
--- more
class OggContainer _OggContainer;
--- private MediaStream[] _MediaStreams;
--- private Chapters[] _Chapters;
--- private Subtitles[] _Subtitles;
--- method DateTime ContainerDuration();
--- more
ps: err... very rough and incomplete but I want to help project thats all
Koepi
20th August 2002, 01:31
Uh.
first, and most important, my goal in development isn't to make a .NET snap in for M$. This is not meant insulting or anything like that, it's just not "compatible" to my idea of oggmux - but please, read further on, I'll explain in detail later.
As OpenSource, I hope it to get OpenPlatform as well. Moritz Bunkus did a great step in the riught firection to write a *NIX multiplexer for OGMs.
I think that our goal should be, to improve the "low layer", the multiplexing code in that way that it works paltform independant.
I think that I have to try to make contact with tobias again, to make up clear specs. Well, best would be, that Moritz and Tobias would take some money, sit down in a pub and make them up and just present us the results ;)
If this is done, we can think about making an "oggmux object". (we can think about it now, too, but I think we should think more global.) Inherantly, this sounds absolutely wrong to me, but maybe it really makes sense, I don't dare to judge.
Ok, I have to admit that I'm a little drunk now and maybe don't take all the results into account, but I think I have to write down what I think of it, anyways.
Best regards,
cheers,
Koepi
SirDavidGuy
20th August 2002, 01:38
I would help, but I don't really understand the CVS system.
Once I figure it out, I may lend a hand (I also must admit it's not something that I will use a lot, so it's not a huge priority for me).
Koepi
20th August 2002, 02:22
CVS isn't involved.
You download the sources, modify them in a way that it should work for all users[tm], and then - either ask me for a developer account within the oggmux project or send me you modifcations (with changelog, of course)... :)
Regards,
Koepi
[Toff]
20th August 2002, 11:04
If I understand well you want to make a multiplatform library (so not based on DirectShow) to process OGM files (mux, demux, cut, join).
A sort of libOGM that you can use in a frontend.
Yes it would be great then someone can merge this with VirtualDub :D
jpl
20th August 2002, 12:38
Instead of everybody arguing over wich language should be the default, why not make the default language user selectable? (and any other settings also, ie. split size...)??
Koepi
20th August 2002, 14:06
Erm, I don't want to write a lib, either.
I'm just thinking that Moritz' code should be useful, and that you may have the choice to use the directshow filters or Moritz' muxing code for producing your OGMs.
OggMux is just a frontend, and it should stay that way.
Please don't propose "strange things" when you're not willing to code that ;)
Regards,
Koepi
mwillberg
24th August 2002, 10:55
Ok, when you read the following please take into consideration that I have not created anything "real" at all within DirectShow yet. But, I have been reading up on the documentation and have experience in "normal" C++ and Java.
I took a look at the "keyframe-accurate" problem Koepi mention he would like to have help on, and I would like to see if I understood the current code correctly:
- When you find that the set MB-level has been equaled or crossed you stop. That means that the fist file doesn't end just before a keyframe, but at a random position.
- Then you jump back 2 minutes, and start jumping forward every keyframe until you reach the stopped position and then restart the muxing from the last keyframe before that.
- That means that the second file will in most cases contain some duplicate frames.
Is the above correct?
What I started thinking about was the possibility to include a buffer-filter between "Ogg Multiplexer" and "File Writer" that keeps the data until you know that everything up to the next key-frame fits in the current file. You then tell it to "flush" the data to "File Writer" and start a new buffer.
When you notice that everything up to the next keyframe will _not_ fit in the current file you create a new "File Writer" and connect the out-pin from the buffer to it and continue.
Does this seem like a feasible solution to those of you with more knowledge of DirectShow? Yes, sure it would be a bit of a memory-hog, but we are not talking about more than 10MB between keyframes and that should be ok on normal computers...
mwillberg
24th August 2002, 22:59
Regarding the "free text" in the Split-combobox:
I don't know exactly what you have done previously that hasn't worked, but here is what I did:
- Changed Type of IDC_COMBO_SPLIT to Dropdown (obviously, to be able to add custom values)
-ChangedDDX_CBIndex(pDX, IDC_COMBO_SPLIT, m_splitsize);
toDDX_CBString(pDX, IDC_COMBO_SPLIT, m_splitsizestr);
so that the combobox maps to a CString instead. Since m_splitsizestr was there but not used, I assume you have had code similar to this before.
-Changedif (m_splitsize == 1)
part_bytes = 681574400; //19922944;
if (m_splitsize == 2)
part_bytes = 734003200;
if (m_splitsize == 3)
part_bytes = 838860800;
to//to silently convert comma to dot without changing the GUI
CString strWithDot = m_splitsizestr;
//atof expects dot, not comma
strWithDot.Replace(",",".");
//convert to bytes, via float to allow MB with decimals.
//quite useless, since the cutting is not that accurate
part_bytes = int(atof(strWithDot)*1048576);
Conversion to byte works well, even if one tries to add for example "MB" after the number...
I then modified the code for OnBMuxfile() to just put up a MessageBox with the value, and tried like crazy to find a combination of clicks and keypresses that would get the value to _not_ be updated... But I did not succeed.
Since I assume this is more or less exactly what you had before, what specificly did you do when it didn't get updated?
However, another issue:
When I played around with small values I got consistent crashes in
hr = FileDest->SetFileName(transformed,NULL);
for the fifth file. I got a "User breakpoint called..." and got thrown deep into some disassemblied stuff. When continuing I got "Unhandled Exception: Access Violation". Is this something you have experienced, or perhaps you've never tried to split into that many files.
Koepi
27th August 2002, 16:04
Uh, sorry, your posts didn't catch my attention, dunno how this could happen :-/
Well, I never split into more than 4 parts. So that can be a real problem.
Your assumption about the file splitting is correct.
If you have an idea about a buffer filter, I'm eager to hear about it, I don't know of any working solution.
I'll add the other options you successfully modified to the sources and upload them to sourceforge then. I hope you checked if all values get stored correctly, when doing things like typing in a language of choice and after that open e.g. a subtitles file? I got those values dropped into nothing in at least 50% of the cases.
Thanks for your help!!! I really appreciate it.
Best regards,
Koepi
Koepi
27th August 2002, 17:16
As promised, here we go:
27.08.2002 18:00h
- Version 0.9.2
- MWillberg changed the splitting code to use variable targets.
The automisation-file-format has changed, too, you have to set "0"
as splitsize to disable splitting and the number of MBs if you want to
use the splitting feature.
Find it at http://oggmux.sourceforge.net/
Best regards and thanks once more mwillberg,
Koepi
P.S.: do you have a sourceforge account? I'd like to add you to the developers if you don't mind
mwillberg
27th August 2002, 17:38
hope you checked if all values get stored correctly, when doing things like typing in a language of choice and after that open e.g. a subtitles file? I got those values dropped into nothing in at least 50% of the cases.
Actually, no... The only thing I tested was the filesize, I did not know you also wanted free-text for languages... Is there anyone using languages not in your list? I think it looks pretty huge... ;)
Well, I just quickly tried to make the same changes to the subtitle-language-combobox. Yep, you are right. It doesn't work. Weird. I will take a look at it, but don't have the time tonight...
do you have a sourceforge account? I'd like to add you to the developers if you don't mind
No, I don't have one. Yet. And, I hardly feel those three lines of code gives me the moral right to be the second of two developers on this great program. :)
Seriously, I will register one of these days, and once I contribute something real to this project I'd be honored to be included on the list...
Ughie
27th August 2002, 19:07
Originally posted by mwillberg
I did not know you also wanted free-text for languages... Is there anyone using languages not in your list? I think it looks pretty huge... ;)
I don't know if there are languages missing but it would be nice to have the language in our own language, example "Nederlands" and not "Dutch". If a mux a movie with graphedit I always do it that way.
regards,
Bart
[Toff]
27th August 2002, 19:43
About language, how it is stored in the OGG container ?
I think it will be great to associate a common code like it's specified in ISO639 and a user definable string. So a player can automatically choose your native language.
For KF accurate splitting, would it be possible to interpolate the next KF position ?
That can be based on average bitrate, xvid logfile, number of KF / current frame and current size, everyting else you want...
Well, clearly not the best way and not very accurate :D but it can work.
Or maybe you can look in a crystal ball.
Tri
28th August 2002, 17:38
Is it possible to implement an option "Split after frame <number>" so you can look up the keyframe in Vdub and then have oggmux split there?
[Toff]
28th August 2002, 18:27
I think the problem is it's hard to know where is the last key frame before reaching your desired file size.
Virtual Dub doesn't give any information about the file size relative to your key frame position. If you just want to cut at a KF, I think it's possible but you will not know the size of your file.
Tri
28th August 2002, 18:29
That is right, but Nandub can do this.
Koepi
28th August 2002, 18:37
Nandub is based on virtualdub.
virtualdub has it's own avi reader routines.
nandub has them, too.
oggmux relies on direct show.
Now search for that, +"keyframe accurate", etc on the forums search.
Don't jump to conclusions when you didn't read up the resources here.
Thanks.
Koepi
mwillberg
28th August 2002, 18:39
Is it possible to implement an option "Split after frame <number>" so you can look up the keyframe in Vdub and then have oggmux split there?
So you would like to first mux it one time without caring about the keyframe, and when you know the approximately correct position you would then find the keyframe manually?
I'm sure it would be possible, but it is not trivial since at the moment Koepi polls the "muxing process" with a certain interval and checks if the given filesize has been reached. So he doesn't check after every frame.
mwillberg
28th August 2002, 18:48
@Koepi:
I wanted to take another look at the problem with free text in Subtitle-language not getting updated. As I wrote earlier I had the same problem when I changed the box to Dropdown using the sources for 0.9.1.
However, I am now totally unable to repeat it. I have tried using both the sources for 0.9.1 and 0.9.2 and been careful to change _nothing_ else than setting the Language-boxes for Subtitles and Soundtracks to Dropdown. I even did a Windiff-compare and looked through the project-files and resource-files. Nothing else has changed, except for some language-stuff since I use an English version of VC++.
I feel really stupid since I experienced the problem that one time. If you would like to test it yourself I can send you a compiled version including the sources, so you can check that nothing is changed and yet it works...
Still, even if you would suddenly be able to compile it so that it works with your setup, I would hardly consider the matter closed since nothing has been fixed. Really strange.
By the way, did you just forget to include "resource.hm" in 0.9.2? I got an error for missing file when compiling the freshly unzipped sources and got it working again by copying the file over from the 0.9.l directory.
Koepi
28th August 2002, 18:52
uh, i deleted that file since i couldn't see where it derives from.
Just use the file from the 0.9.1 sources - that file didn't change since april (another reason why i deleted it).
I need some pause now, so corrected sources will be uploaded later or tomorrow.
Thanks for reporting.
Regards,
Koepi
Tri
28th August 2002, 19:25
Originally posted by Koepi
Nandub is based on virtualdub.
virtualdub has it's own avi reader routines.
nandub has them, too.
oggmux relies on direct show.
I didn't mean something like including VirtualDub avi reading routines into oggmux but I thought that direct show was able to know how many frames it has already read so a simple option like "cut after frame X" would be nice.
Koepi
28th August 2002, 19:35
As i can see you didn't do a search.
I can do what I want, directshow jumps to a frame _near_ the frame i tell it to go. It _never_, not even randomly, hit the frame I requested it to deliver.
Regards,
Koepi
Tri
28th August 2002, 19:45
Oh I see, I misunderstood this. I thought when telling it to cut after a frame that had just been read it would work.
Sorry for any inconvenience.
vBulletin® v3.8.11, Copyright ©2000-2026, vBulletin Solutions Inc.