Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GSVideo on Windows... how I got this to work. #42

Open
GoogleCodeExporter opened this issue Aug 16, 2015 · 0 comments
Open

GSVideo on Windows... how I got this to work. #42

GoogleCodeExporter opened this issue Aug 16, 2015 · 0 comments

Comments

@GoogleCodeExporter
Copy link

I'm using mt4j for a demo on a windows touchtable. Our development machines use 
Ubuntu, so some complexities on DLL installations and so on only come up when 
we test integration and platform issues.

In our build, we use the modestmaps and video extensions to play a bit of video 
after a user clicks on an icon (it actually shows the simple player). On Linux, 
it more or less worked right out of the box, but getting this to work on 
windows proved a larger challenge. Our errors included DLL's not found, paths 
incorrect and none of the videos played. I tried various versons of GSVideo, 
found them to be API incompatible and kept switching between different 
versions. 

I worked with mt4j-0.95, so I decided to upgrade to dev. preview 0.98. Some 
errors came up with some "lasso processor" interface, which I eventually simply 
removed.

The GSVideo extension was part of mt-0.95, so worked out of the box. There's 
some misleading information on the "mt4j-gstreamer-extension" page, which I 
mostly followed in my mt-0.95 attempts to get this to work.

All in all, here's what I did to get at least the video to play and get rid of 
all and any error messages that were flooding the console:

= Downloaded mt-0.98
= Downloaded GSVideo stable version 0.9: 
http://sourceforge.net/projects/gsvideo/files/gsvideo/0.9/
= Downloaded "GStreamer-WinBuilds-LGPL-x86.msi" from OSS builds: 
http://code.google.com/p/ossbuild/downloads/list
= Did an 'svn checkout' of mt4j-extensions: 
http://code.google.com/p/mt4jextensions/source/checkout
= Took out the classes "MTMovieClip" and "MTVideoTexture" from the mt4j 
extensions project and included these in my own project (to save the trouble of 
gettting these jars to build). Included required GSVideo .jar libraries (from 
within GSVideo 0.9 zip file).
= Downloaded GTK + MS VC++ redistributables as per mt4j-gstreamer-extension 
google page (but did *not* use any of the software located there):

1. Install GTK: http://gtk-win.sourceforge.net/home/index.php/en/Downloads
2. Install Microsoft Visual C++ 2008 SP1 Redistributable Package (x86): 
http://www.microsoft.com/downloads/details.aspx?FamilyID=a5c84275-3b97-4ab7-a40d
-3802b2af5fc2&DisplayLang=en 

= Built my project, resolved compilation issues. More on that at the end.
= Moved everything on a USB stick to a windows platform.

There:
- Installed "GStreamer-WinBuilds-LGPL-x86.msi" (into C:\gstreamer)
- Installed GTK
- Installed VC redistributable
- Unpacked GSVideo 0.9 "gstreamer/win" into C:\gstreamer, following the same 
path hierarchy. (gstreamer merges with C:\gstreamer). These are the binaries 
that are needed.
- Installed my app in some directory.
- Started, played a video. This worked.

The other instructions and the forum posts on when this was introduced now seem 
to cause more harm then get things to work. I also noticed that GSVideo 0.9 has 
been modified in API and in the performance. You can't grab the pixels from the 
MovieCLip object any longer and you're now supposed to hand it a "GLTexture" or 
"PImage" object where this movie can now copy the pixels to. This requires a 
modification of the MTMovieTexture class. I'm still evaluating ways to improve 
performance here, but I managed to get this to work as follows:

in "onFirstFrame" somewhere:

            if (MT4jSettings.getInstance().isOpenGlMode()){
                m.setPixelDest( (GLTexture)this.getTexture() );
            }

And in "updateComponent", instead of:

((GLTexture)this.getTexture()).updateGLTexture(m.getMoviePixelsBuffer());

I now do this:

m.read();
((GLTexture)this.getTexture()).loadPImageTexture(m);
((GLTexture)this.getTexture()).updateGLTextureFromPImage();

Performance is disappointing this way, but I'm getting an acceptable moving 
image for this purpose (5-10fps).


So a couple of things:
- Can the other pages / forum posts be updated where it concerns video and 
possibly the mt4j-gstreamer-extension project be closed, since it's all wrapped 
into the mt4j-extensions project? This would reduce the amount of 
misinformation people may be getting when searching on how to resolve these 
issues. The biggest problems are related to version matching of GSVideo, 
Processing, gstreamer builds and mt4j installations. This is mostly on windows, 
since on linux they appear as api incompatibilities between gsvideo+mt4j.

- What should MTVideoTexture look like to get better performance due to the 
newer api of GSVideo?  (the mt4j equivalent of "tex.putPixelsIntoTexture();" 
and "image( .... )" ?

Original issue reported on code.google.com by gtoons...@gmail.com on 8 Sep 2011 at 1:40

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant