Several people find color channel swapping issues when playing videos. Discussed in this thread:
I tested v-0.7-20110108 and the problem isn't solved.
Trying to change some code from gstreamer-java trunk on my own to see if I can work around it for my project.
Can I simply make my own version of the gstreamer-java.jar then replace the one in the ../GSVideo/library folder?
Is the latest revision ok to use or should I use rev 425? http://code.google.com/p/gstreamer-java/source/detail?r=425
-- regards. zaros
Yes, all you need to do is recompile gstreamer-java.jar, and then copy it into the library folder of GSVideo. As long as there are no API changes in the binding, GSVideo should work fine with the new jar.
As for the code revision, I used the latest version from the trunk to make the 20110108 release. The rgb fix was introduced in r425, but it has remained in place since then.
I got caught with other stuff during the last few days, but I'll look at this again today.
Thanks for your help.
I found the problem, at least for the GSMovie and GSCapture classes. The patch added to the RGBDataSink element didn't have any effect because the GSVideo classes are using RGBDataAppSink instead, which didn't include the patch until now. After properly setting the caps, the video color is shown properly when playing videos with GSMovie or capturing from camera with GSCapture. GSPipeline, on the other hand, still doesn't work. I'll check what's going on with it next.
Ok: the solution for GSPipeline was to set the caps with the appropriate color masks in the class itself, since given the way the pipeline construction works, this doesn't get done by gstreamer-java like in the case of GSMovie or GSCapture. From tests using gstreamer 0.10.28 and 0.10.31, everything seems to work as expected.