views:

88

answers:

4

coming from Windows (MSVC++ 2005): What SDK or alike do you recommend to port an C++ application (DirectShow+Direct3D) to Linux playing video file + using fragment shaders?

Tom

+2  A: 

is there any reason you need a fragment shader at all? (are you doing post processing on the video images?). You don't need to do any shader coding to get a video playing with OpenGL.

I would use ffmpeg (libavcodec actually) to do the video decoding. Displaying a frame just requires an OpenGL texture and a call to glTexSubImage2D each frame to do the update.

Using FFMPEG in C/C++

MichaelM
+2  A: 

You need to use OpenGL instead.

Some tip for the implementation:
- To achieve a good performance you need to make sure a good video card driver is installed.
- If you are not familiar with OpenGL start it with the 'Red book' - OpenGL Programming Guide
- You may need to download the latest extension header from here http://www.opengl.org/registry/
- The library GLEW may help you in identifying the available extension.
- Include the GL/gl.h and the glext.h file in your project
- Link to the driver's opengl dynamic library: /usr/lib64/libGL.so or simmilar

Vereb
A: 

Fragment shader needed: yes for some post processsing I guess there are solutions to supports H.264 with FFMPEG too, so I'll check that thx!

Tom
A: 

i would also check the gstreamer framework on linux if you need to port a more complicated directshow application. it also has some sort of graph for media playback to build. it is totally different, but if you have experience and the need for complicated directshow, then you will see some analogy.

and gstreamer also has an opengl plugin for image effects and shaders, ....

http://www.gstreamer.net/ http://www.gstreamer.net/releases/gst-plugins-gl/0.10.1.html

didito