I have been developing a solution on my Mac and am now testing it on a Windows 7 Embedded machine.
All works except videos simply do not play.
I do not get an error message, I have tried a few file types, the videos play in Windows Media Player and VLC but not in Processing.
Why would they work on the Mac dev environment and not the Windows 7 Embedded machine? I have even installed processing on the Windows 7 embedded machine and run the solution through processing.
The rest of the solution is working but the videos do not play.
I have created a new project and used the example from here to see if there is an issue outside my solution and Processing:-
// Called every time a new frame is available to read
void movieEvent(Movie m) {
m.read();
}
and I get the following error message when quitting (pressing escape) but no error message on start up or during the application, so it might be a red herring:-
(java.exe:3440): GStreamer-CRITICAL **:
Trying to dispose element Movie Player, but it is in READY instead of the NULL state.
You need to explicitly set elements to the NULL state before
dropping the final reference, to allow them to clean up.
This problem may also be caused by a refcounting bug in the
application or some element.
I've installed Quicktime v7.7.4 and even GStreamer installations and this has made no difference either.
Is there an alternative to the built in media player? Am I doing something obviously wrong?
ADDITION - Out of interest and testing purposes, I tried the same code above with Processing v1.5.1 using a P3D mode and the video DOES play but it is very jerky - JAVA2D does not work at all and complains about an ArrayIndexOutOfBoundsException: Coordinate out of bounds for image(myMovie,10,10;) The videos I am testing with play perfectly in Quicktime and VLC.
I've also tried the exported application on a Windows 7 Professional laptop and it worked straight away.
Can anyone shed some light here? I smells like a Windows 7 Embedded / graphics card issue?
I thought I had cracked it but have a last minute problem to solve. I will keep trying but in the meantime, I wondered if anyone had a quick solution after tackling this before.
However, the code above counts the total amount of all watch childNodes no matter what the range attribute is.
Here is the result, which is wrong - the code seems to restart the parsing from the beginning and repeat the parsing:-
RANGE 1 WATCH ID = 1 PREVIOUS ID = 0 FILENAME range1watch1.jpg WATCH DESCRIPTION = Description 1
RANGE 1 WATCH ID = 2 PREVIOUS ID = 1 FILENAME range1watch2.jpg WATCH DESCRIPTION = Description 2
RANGE 1 WATCH ID = 3 PREVIOUS ID = 2 FILENAME range1watch3.jpg WATCH DESCRIPTION = Description 3
RANGE 1 WATCH ID = 5 PREVIOUS ID = 3 FILENAME range1watch5.jpg WATCH DESCRIPTION = Description 5
RANGE 1 WATCH ID = 6 PREVIOUS ID = 5 FILENAME range1watch6.jpg WATCH DESCRIPTION = Description 6
RANGE 1 WATCH ID = 7 PREVIOUS ID = 6 FILENAME range1watch7.jpg WATCH DESCRIPTION = Description 7
RANGE 1 WATCH ID = 8 PREVIOUS ID = 7 FILENAME range1watch8.jpg WATCH DESCRIPTION = Description 8
RANGE 1 WATCH ID = 1 PREVIOUS ID = 8 FILENAME range1watch1.jpg WATCH DESCRIPTION = Description 1
The last entry is repeated, so it seems the parsing restarts. Seems I am using the wrong approach.
How can I only parse the watch childNodes based on one range ID. For example, if I want all watch childNodes for range attribute 2, I only want to parse 3 childNodes.