DebugMode Frameserver 2.0 and Linux

dreamlx wrote on 7/14/2004, 9:28 PM
Hi,

First of all, many thanks to satish for writing this amazing software. Well if you have a linux machine, using satishs frameserver, you can now speed up rendering. Frameserver runs well under wine, as well as CCE Basic and TMPGENC. So you can use network frameserving to let your linux machine compress the output from Vegas running on a Windows machine. Did a small try using CCE Basic (only 15 mins of video) and there was no noticeable problem so far. Rendering was speeded up by a factor 2.

Well now for satish:

What would be nice would be a network client that could be executed natively on a linux machine and would generate yuv4mpeg streams to standard output, as these can be read by many utilities under linux and can be converted to almost anything. Do you plan to do something like that in the future ? If not, would it not be possible to bring out a specification of the protocol used for network rendering, so there would be chances some other people would eventually do it ?

Bye,
David

Comments

satish wrote on 7/15/2004, 6:43 AM
Good to hear someone is using the network frameserving feature. :) About the native linux client, yes i could create that if you could give me more info about YUV4MPEG (i did a google search but couldnt get info on what is the format etc..)
dreamlx wrote on 7/15/2004, 9:07 AM
I think the easiest method would be to download mjpegtools from mjpeg.sourceforge.net. The name is a bit misleading, as yuv4mpeg has nothing to do with mjpeg. Basically it is the raw data from frames, with a header in plain ascii form. So, I think it shouldn't be to hard to implement, but as I have no experience on writing video codecs, maybe I'm wrong. When you install them, a manual page named yuv4mpeg is also installed with a format description. There is an application named yuvplay included that is able to play yuv4mpeg streams. For the case you won't like to install mjpegtools, I could also mail you an ascii text version of this manual page. If you have any further questions please leave me a mail to: admin AT prnet.org
satish wrote on 7/15/2004, 10:01 AM
I will give it a try. I would also be interested to hear from you and other users any more ideas you have to expand the usage of the Frameserver (like this linux client).

If you could also elaborate more on how you got a two fold increase in performance using the Wine-Frameserver combination, that would be very useful.

Thanks
dreamlx wrote on 7/15/2004, 10:47 AM
Unfortunately I am quite busy right now, but I think in a coupe of weeks, when I have more time, I will write a complete document on using the Wine-Frameserver combination. Also if you decide to do the linux client, I will write some documents on how to use it to encode to different video formats using linux encoders. I will then create a webpage with all these infos.

Well I also thought about a linux server, but this would be impossible to implement as for video exchange purposes pipes are generally used under linux, and as they are not seekable, a server wouldn't make any sense on linux I think. But I think this will simplify linux client development as you don't have to deal with seeks, only put the data to standard output. Nice would be the ability to specify a range of frames on commandline.

What could also be interesting would be releasing the linux client as opensource, so that it could also be included in other applications.

Feel free to contact me if you need someone for testing the linux version once you have decided to do it, and as mainly develop appications on linux, feel free to contact me for any question.
satish wrote on 7/15/2004, 12:34 PM
Okay great, when you get the documents done please post here and also send me an email (webmaster of debugmode dot com). Meanwhile i'll see if i can do something about the linux client. Thanks
dreamlx wrote on 7/15/2004, 2:23 PM
well I just had a thought. You could even do without linux application. In linux, there is a utility named netcat, that is able to make a connection to a server and send everything it receives to standard output. So another possibly more simple aproach would be to build into the windows version the ability to generate yuv4mpeg streams and simply connect the windows frameserver using netcat.
satish wrote on 7/15/2004, 3:03 PM
That is definitely easier than a linux FS client. But if i do develop a linux FS client it will have the ability to seek to different frames, whereas if i add this yuv4mpeg in the windows server then you lose that ability. Also you cannot have a single server and multiple clients which get different frames and encode ... So the better way would be a linux FS client.
dreamlx wrote on 7/15/2004, 9:04 PM
I think seeking is not necessary on linux, as yuv4mpeg streams are anyway not seekable, and yuvmpeg streams are supported by mjpegtools and transcode, which can do all encoding without seeking. Using some other seekable format would be difficult as you would have to implement support for every single linux application as unfortunately almost every linux application is reading video files using other lbraries, or you would need to write a kernel driver presenting the video data as normal file. For the nonseekable yuv4mpeg streams, you can simply write to stdout and almost any application can read it using pipes.So the only seeking possible for yuv4mpeg would be specifiying ranges as commandline.
satish wrote on 7/15/2004, 9:50 PM
Yes, the yuv4mpeg output should atleast be able to give a range of frames you specify. But to do this in the frameserver you have to tell the windows server from which frame you want to which frame, and if the linux client supported seeking (even if no app uses it in the beginning) then requesting this range from the server can be implemented very easily using the seek mechanism... anyway, whichever way it is done it is possible to get a range of yuv4mpeg output i think, so let me look at the specs.