<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<id>tag:www.nabble.com,2006:forum-13422</id>
	<title>Nabble - Sun - Jmf-Interest</title>
	<updated>2008-10-29T05:19:45Z</updated>
	<link rel="self" type="application/atom+xml" href="http://www.nabble.com/Sun---Jmf-Interest-f13422.xml" />
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Sun---Jmf-Interest-f13422.html" />
	<subtitle type="html">Discussion list for Java Media Framework API</subtitle>
	
<entry>
	<id>tag:www.nabble.com,2006:post-20226188</id>
	<title>Re: Having problem storing incoming MU-LAW to PMC WAV file</title>
	<published>2008-10-29T05:19:45Z</published>
	<updated>2008-10-29T05:19:45Z</updated>
	<author>
		<name>ashayk</name>
	</author>
	<content type="html">If memory serves, WMP will actually fail to play any WAV/PCM data, so try playing with Quicktime and see if you have any better luck. &amp;nbsp;You might be doing everything fine.
&lt;br&gt;&lt;br&gt;You might also try opening it with Goldwave.
&lt;br&gt;&lt;br&gt;Cheers,
&lt;br&gt;&lt;br&gt;Alex
&lt;br&gt;&lt;br&gt;&lt;br&gt;--- On Wed, 10/29/08, juanbackson &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=20226188&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;juanbackson@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; From: juanbackson &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=20226188&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;juanbackson@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;gt; Subject: [JMF] Having problem storing incoming MU-LAW to PMC WAV file
&lt;br&gt;&amp;gt; To: &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=20226188&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;JMF-INTEREST@...&lt;/a&gt;
&lt;br&gt;&amp;gt; Date: Wednesday, October 29, 2008, 4:26 AM
&lt;br&gt;&amp;gt; Hi,
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I am able to receive ULAW/rtp, 8000.0 Hz, 8-bit, Mono
&lt;br&gt;&amp;gt; stream and play it
&lt;br&gt;&amp;gt; using the Player class. &amp;nbsp;What I need to do is to store the
&lt;br&gt;&amp;gt; stream data into
&lt;br&gt;&amp;gt; WAV file. &amp;nbsp;I have followed the JMF tutorial to set the
&lt;br&gt;&amp;gt; output file format. 
&lt;br&gt;&amp;gt; I can also create the WAV file no problem. &amp;nbsp;But when I try
&lt;br&gt;&amp;gt; to play the
&lt;br&gt;&amp;gt; gnerated WAV file using Windows Media Player, it says :
&lt;br&gt;&amp;gt; Windows Media Player
&lt;br&gt;&amp;gt; cannot play the file. &amp;nbsp;The Player might not support the fle
&lt;br&gt;&amp;gt; type or might
&lt;br&gt;&amp;gt; not support the codec that was used to compress the file.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Does anyone know what is wrong with my code? &amp;nbsp;
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I am attaching the code below:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 	stream = ((NewReceiveStreamEvent)evt).getReceiveStream();
&lt;br&gt;&amp;gt; 				DataSource ds = stream.getDataSource();
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 				// Find out the formats.
&lt;br&gt;&amp;gt; 				RTPControl ctl =
&lt;br&gt;&amp;gt; (RTPControl)ds.getControl(&amp;quot;javax.media.rtp.RTPControl&amp;quot;);
&lt;br&gt;&amp;gt; 				if (ctl != null){
&lt;br&gt;&amp;gt; 					System.err.println(&amp;quot; &amp;nbsp;- Recevied new RTP stream:
&lt;br&gt;&amp;gt; &amp;quot; + ctl.getFormat());
&lt;br&gt;&amp;gt; 				} else
&lt;br&gt;&amp;gt; 					System.err.println(&amp;quot; &amp;nbsp;- Recevied new RTP
&lt;br&gt;&amp;gt; stream&amp;quot;);
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 				if (participant == null)
&lt;br&gt;&amp;gt; 					System.err.println(&amp;quot; &amp;nbsp; &amp;nbsp; &amp;nbsp;The sender of this
&lt;br&gt;&amp;gt; stream had yet to be
&lt;br&gt;&amp;gt; identified.&amp;quot;);
&lt;br&gt;&amp;gt; 				else {
&lt;br&gt;&amp;gt; 					System.err.println(&amp;quot; &amp;nbsp; &amp;nbsp; &amp;nbsp;The stream comes from:
&lt;br&gt;&amp;gt; &amp;quot; +
&lt;br&gt;&amp;gt; participant.getCNAME()); 
&lt;br&gt;&amp;gt; 				}
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 				
&lt;br&gt;&amp;gt; 				synchronized (dataSync) {
&lt;br&gt;&amp;gt; 					dataReceived = true;
&lt;br&gt;&amp;gt; 					dataSync.notifyAll();
&lt;br&gt;&amp;gt; 				}
&lt;br&gt;&amp;gt; 				
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 				
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 				ProcessorModel model = new ProcessorModel(ds,new
&lt;br&gt;&amp;gt; Format[]{ }, new
&lt;br&gt;&amp;gt; FileTypeDescriptor(FileTypeDescriptor.WAVE));
&lt;br&gt;&amp;gt; 				Processor processor =
&lt;br&gt;&amp;gt; Manager.createRealizedProcessor(model);
&lt;br&gt;&amp;gt; 				
&lt;br&gt;&amp;gt; 				boolean result = waitForState(processor,
&lt;br&gt;&amp;gt; Processor.Configured);
&lt;br&gt;&amp;gt; 				if (result == false)
&lt;br&gt;&amp;gt; 					System.out.println(&amp;quot;process is not
&lt;br&gt;&amp;gt; configured&amp;quot;);
&lt;br&gt;&amp;gt; 				TrackControl[] tracks = processor.getTrackControls();
&lt;br&gt;&amp;gt; 				
&lt;br&gt;&amp;gt; 				if (tracks == null || tracks.length &amp;lt; 1)
&lt;br&gt;&amp;gt; 					System.out.println( &amp;quot;Couldn't find tracks in
&lt;br&gt;&amp;gt; processor&amp;quot;);
&lt;br&gt;&amp;gt; 				
&lt;br&gt;&amp;gt; 				Format supported[];
&lt;br&gt;&amp;gt; 				Format chosen = null;
&lt;br&gt;&amp;gt; 				boolean atLeastOneTrack = false;
&lt;br&gt;&amp;gt; 				
&lt;br&gt;&amp;gt; 				for (int i = 0; i &amp;lt; tracks.length; i++)
&lt;br&gt;&amp;gt; 				{
&lt;br&gt;&amp;gt; 					Format format = tracks[i].getFormat();
&lt;br&gt;&amp;gt; 					if (tracks[i].isEnabled())
&lt;br&gt;&amp;gt; 					{
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 						supported = tracks[i].getSupportedFormats();
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 						// Here we choose the ULAW format ...
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 						if (supported.length &amp;gt; 0)
&lt;br&gt;&amp;gt; 						{
&lt;br&gt;&amp;gt; 							for(int k=0; k&amp;lt;supported.length; k++)
&lt;br&gt;&amp;gt; 							{
&lt;br&gt;&amp;gt; 								if(supported[k] instanceof AudioFormat)
&lt;br&gt;&amp;gt; 								{
&lt;br&gt;&amp;gt; 									String encoding = supported[k].getEncoding();
&lt;br&gt;&amp;gt; 									System.out.println(&amp;quot;encoding = &amp;quot; +
&lt;br&gt;&amp;gt; encoding);
&lt;br&gt;&amp;gt; 									if(encoding.indexOf(&amp;quot;LINEAR&amp;quot;) != -1)
&lt;br&gt;&amp;gt; 									{
&lt;br&gt;&amp;gt; 										chosen = supported[k];
&lt;br&gt;&amp;gt; 										break;
&lt;br&gt;&amp;gt; 									}
&lt;br&gt;&amp;gt; 								}
&lt;br&gt;&amp;gt; 							}
&lt;br&gt;&amp;gt; 							
&lt;br&gt;&amp;gt; 							tracks[i].setFormat(chosen);
&lt;br&gt;&amp;gt; 							//tracks[i].setFormat(new
&lt;br&gt;&amp;gt; AudioFormat(AudioFormat.LINEAR,8000,16,1));
&lt;br&gt;&amp;gt; 							System.err.println(&amp;quot;Track &amp;quot; + i + &amp;quot;
&lt;br&gt;&amp;gt; is set to transmit as: &amp;quot; +
&lt;br&gt;&amp;gt; tracks[i].getFormat());
&lt;br&gt;&amp;gt; 							atLeastOneTrack = true;
&lt;br&gt;&amp;gt; 						
&lt;br&gt;&amp;gt; 						} else
&lt;br&gt;&amp;gt; 							tracks[i].setEnabled(false);
&lt;br&gt;&amp;gt; 					} else
&lt;br&gt;&amp;gt; 						tracks[i].setEnabled(false);
&lt;br&gt;&amp;gt; 				}
&lt;br&gt;&amp;gt; 				
&lt;br&gt;&amp;gt; 				if (!atLeastOneTrack)
&lt;br&gt;&amp;gt; 					System.out.println( &amp;quot;Couldn't set any of the
&lt;br&gt;&amp;gt; tracks to a valid RTP
&lt;br&gt;&amp;gt; format&amp;quot;);
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 				// create a player by passing datasource to the Media
&lt;br&gt;&amp;gt; Manager
&lt;br&gt;&amp;gt; 				result = waitForState(processor, Controller.Realized);
&lt;br&gt;&amp;gt; 				if (result == false)
&lt;br&gt;&amp;gt; 					System.out.println( &amp;quot;Couldn't realize
&lt;br&gt;&amp;gt; processor&amp;quot;);
&lt;br&gt;&amp;gt; 				
&lt;br&gt;&amp;gt; 				
&lt;br&gt;&amp;gt; 				MediaLocator dest = new
&lt;br&gt;&amp;gt; MediaLocator(&amp;quot;file://c:\\tmp\\dddd.wav&amp;quot;);
&lt;br&gt;&amp;gt; 				DataSink sink =
&lt;br&gt;&amp;gt; Manager.createDataSink(processor.getDataOutput(), dest); 
&lt;br&gt;&amp;gt; 				sink.open();
&lt;br&gt;&amp;gt; 				sink.start();
&lt;br&gt;&amp;gt; 								processor.start();
&lt;br&gt;&amp;gt; 				Thread.sleep(5000);
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 				processor.stop();
&lt;br&gt;&amp;gt; 				sink.stop();
&lt;br&gt;&amp;gt; 				sink.close();
&lt;br&gt;&amp;gt; 				System.out.println(&amp;quot;sink close&amp;quot;);
&lt;br&gt;&amp;gt; 	
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Thank you very much in advance for all your help.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; JB
&lt;br&gt;&amp;gt; -- 
&lt;br&gt;&amp;gt; View this message in context:
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://www.nabble.com/Having-problem-storing-incoming-MU-LAW-to-PMC-WAV-file-tp20225160p20225160.html&quot; target=&quot;_top&quot;&gt;http://www.nabble.com/Having-problem-storing-incoming-MU-LAW-to-PMC-WAV-file-tp20225160p20225160.html&lt;/a&gt;&lt;br&gt;&amp;gt; Sent from the Sun - Jmf-Interest mailing list archive at
&lt;br&gt;&amp;gt; Nabble.com.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; ===========================================================================
&lt;br&gt;&amp;gt; FAQ: 
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://java.sun.com/products/java-media/jmf/forDevelopers/jmffaq.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://java.sun.com/products/java-media/jmf/forDevelopers/jmffaq.html&lt;/a&gt;&lt;br&gt;&amp;gt; List Archive:
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://archives.java.sun.com/archives/jmf-interest.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://archives.java.sun.com/archives/jmf-interest.html&lt;/a&gt;&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; To unsubscribe, send email to &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=20226188&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;listserv@...&lt;/a&gt; and
&lt;br&gt;&amp;gt; include in the body
&lt;br&gt;&amp;gt; of the message &amp;quot;signoff JMF-INTEREST&amp;quot;.
&lt;/div&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&lt;br&gt;===========================================================================
&lt;br&gt;FAQ: &amp;nbsp;&lt;a href=&quot;http://java.sun.com/products/java-media/jmf/forDevelopers/jmffaq.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://java.sun.com/products/java-media/jmf/forDevelopers/jmffaq.html&lt;/a&gt;&lt;br&gt;List Archive: &lt;a href=&quot;http://archives.java.sun.com/archives/jmf-interest.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://archives.java.sun.com/archives/jmf-interest.html&lt;/a&gt;&lt;br&gt;&lt;br&gt;To unsubscribe, send email to &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=20226188&amp;i=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;listserv@...&lt;/a&gt; and include in the body
&lt;br&gt;of the message &amp;quot;signoff JMF-INTEREST&amp;quot;.
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Having-problem-storing-incoming-MU-LAW-to-PMC-WAV-file-tp20225160p20226188.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-20225160</id>
	<title>Having problem storing incoming MU-LAW to PMC WAV file</title>
	<published>2008-10-29T04:26:36Z</published>
	<updated>2008-10-29T04:26:36Z</updated>
	<author>
		<name>juanbackson</name>
	</author>
	<content type="html">Hi,
&lt;br&gt;&lt;br&gt;I am able to receive ULAW/rtp, 8000.0 Hz, 8-bit, Mono stream and play it using the Player class. &amp;nbsp;What I need to do is to store the stream data into WAV file. &amp;nbsp;I have followed the JMF tutorial to set the output file format. &amp;nbsp;I can also create the WAV file no problem. &amp;nbsp;But when I try to play the gnerated WAV file using Windows Media Player, it says : Windows Media Player cannot play the file. &amp;nbsp;The Player might not support the fle type or might not support the codec that was used to compress the file.
&lt;br&gt;&lt;br&gt;Does anyone know what is wrong with my code? &amp;nbsp;
&lt;br&gt;&lt;br&gt;I am attaching the code below:
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; stream = ((NewReceiveStreamEvent)evt).getReceiveStream();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; DataSource ds = stream.getDataSource();
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Find out the formats.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; RTPControl ctl = (RTPControl)ds.getControl(&amp;quot;javax.media.rtp.RTPControl&amp;quot;);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (ctl != null){
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; System.err.println(&amp;quot; &amp;nbsp;- Recevied new RTP stream: &amp;quot; + ctl.getFormat());
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } else
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; System.err.println(&amp;quot; &amp;nbsp;- Recevied new RTP stream&amp;quot;);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (participant == null)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; System.err.println(&amp;quot; &amp;nbsp; &amp;nbsp; &amp;nbsp;The sender of this stream had yet to be identified.&amp;quot;);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; else {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; System.err.println(&amp;quot; &amp;nbsp; &amp;nbsp; &amp;nbsp;The stream comes from: &amp;quot; + participant.getCNAME()); 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; synchronized (dataSync) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dataReceived = true;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dataSync.notifyAll();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ProcessorModel model = new ProcessorModel(ds,new Format[]{ }, new FileTypeDescriptor(FileTypeDescriptor.WAVE));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Processor processor = Manager.createRealizedProcessor(model);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; boolean result = waitForState(processor, Processor.Configured);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (result == false)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; System.out.println(&amp;quot;process is not configured&amp;quot;);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; TrackControl[] tracks = processor.getTrackControls();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (tracks == null || tracks.length &amp;lt; 1)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; System.out.println( &amp;quot;Couldn't find tracks in processor&amp;quot;);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Format supported[];
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Format chosen = null;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; boolean atLeastOneTrack = false;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for (int i = 0; i &amp;lt; tracks.length; i++)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Format format = tracks[i].getFormat();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (tracks[i].isEnabled())
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; supported = tracks[i].getSupportedFormats();
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Here we choose the ULAW format ...
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (supported.length &amp;gt; 0)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for(int k=0; k&amp;lt;supported.length; k++)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(supported[k] instanceof AudioFormat)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; String encoding = supported[k].getEncoding();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; System.out.println(&amp;quot;encoding = &amp;quot; + encoding);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(encoding.indexOf(&amp;quot;LINEAR&amp;quot;) != -1)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; chosen = supported[k];
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; break;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; tracks[i].setFormat(chosen);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //tracks[i].setFormat(new AudioFormat(AudioFormat.LINEAR,8000,16,1));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; System.err.println(&amp;quot;Track &amp;quot; + i + &amp;quot; is set to transmit as: &amp;quot; + tracks[i].getFormat());
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; atLeastOneTrack = true;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } else
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; tracks[i].setEnabled(false);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } else
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; tracks[i].setEnabled(false);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (!atLeastOneTrack)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; System.out.println( &amp;quot;Couldn't set any of the tracks to a valid RTP format&amp;quot;);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // create a player by passing datasource to the Media Manager
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; result = waitForState(processor, Controller.Realized);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (result == false)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; System.out.println( &amp;quot;Couldn't realize processor&amp;quot;);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; MediaLocator dest = new MediaLocator(&amp;quot;file://c:\\tmp\\dddd.wav&amp;quot;);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; DataSink sink = Manager.createDataSink(processor.getDataOutput(), dest); 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; sink.open();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; sink.start();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; processor.start();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Thread.sleep(5000);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; processor.stop();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; sink.stop();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; sink.close();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; System.out.println(&amp;quot;sink close&amp;quot;);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;Thank you very much in advance for all your help.
&lt;br&gt;&lt;br&gt;JB</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Having-problem-storing-incoming-MU-LAW-to-PMC-WAV-file-tp20225160p20225160.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-19591720</id>
	<title>Re: method grabFrame() returning null - code inline</title>
	<published>2008-09-20T21:54:46Z</published>
	<updated>2008-09-20T21:54:46Z</updated>
	<author>
		<name>Francis Chan</name>
	</author>
	<content type="html">&lt;html&gt;&lt;body bgcolor=&quot;#FFFFFF&quot;&gt;&lt;div&gt;How about with the web camera using your original code&lt;br&gt;&lt;br&gt;Francis&lt;/div&gt;&lt;div&gt;&lt;br&gt;On Sep 20, 2008, at 12:30 PM, Vinod Naik &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19591720&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;nahvns-f@...&lt;/a&gt;&amp;gt; wrote:&lt;br&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote type=&quot;cite&quot;&gt;&lt;div&gt;&lt;div style=&quot;font-family:arial, helvetica, sans-serif;font-size:10pt&quot;&gt;&lt;div&gt;Tried ur suggestions, doing a&amp;nbsp;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: 'times new roman'; font-size: 16px; &quot;&gt;p.prefetch() hangs and never returns.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: 'times new roman'; font-size: 16px; &quot;&gt;it seems i am doomed&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;:(&lt;/div&gt;&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;'times new roman'&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 16px;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;font-family:arial, helvetica, sans-serif;font-size:10pt&quot;&gt;&lt;div style=&quot;font-family:times new roman, new york, times, serif;font-size:12pt&quot;&gt;----- Original Message ----&lt;br&gt;From: Francis Chan &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19591720&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;francisleechan@...&lt;/a&gt;&amp;gt;&lt;br&gt;To: &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19591720&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;JMF-INTEREST@...&lt;/a&gt;&lt;/a&gt;&lt;br&gt;Sent: Saturday, 20 September, 2008 3:01:36 AM&lt;br&gt;Subject: Re: [JMF] method
 grabFrame() returning null - code inline&lt;br&gt;&lt;br&gt;&lt;div dir=&quot;ltr&quot;&gt;I think i find out what's the problem is change this line of code from&lt;br&gt;p = Manager.createPlayer(url);&lt;br&gt;to&lt;br&gt;p =Manager.createRealizedPlayer(url);&lt;br&gt;&lt;br&gt;and get rid off the p.realise(); of course make sure you call p.prefetch() after that p = Manager.createRealizedPlayer(url);&lt;br&gt;
&lt;br&gt;&lt;div class=&quot;gmail_quote&quot;&gt;On Sat, Sep 20, 2008 at 12:42 AM, Francis Chan &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19591720&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;francisleechan@...&lt;/a&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt; wrote:&lt;br&gt;&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left:1px solid rgb(204, 204, 204);margin:0pt 0pt 0pt 0.8ex;padding-left:1ex;&quot;&gt;
&lt;div dir=&quot;ltr&quot;&gt;&lt;br&gt;&lt;br&gt;&lt;div class=&quot;gmail_quote&quot;&gt;&lt;div class=&quot;Ih2E3d&quot;&gt;On Fri, Sep 19, 2008 at 3:55 PM, Vinod Naik &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19591720&amp;i=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;nahvns-f@...&lt;/a&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt; wrote:&lt;br&gt;
&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left:1px solid rgb(204, 204, 204);margin:0pt 0pt 0pt 0.8ex;padding-left:1ex;&quot;&gt;
&lt;div&gt;&lt;div style=&quot;font-family:arial, helvetica, sans-serif;font-size:10pt;&quot;&gt;&lt;div&gt;Thanks for your suggestion, it is a video file present in my hard disk&lt;/div&gt;&lt;div&gt;I tried to do it using URL, unfortunately that too is not working. The grabFrame is still returning null&amp;nbsp;&lt;/div&gt;

&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Can this be a local environment issue ? This may be like asking for too much - but can you test this code out in your machine, that way we can figure out if need to some tinkiring with my environment.&lt;/div&gt;

&lt;/div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;Sorry. I don't use JMF. I use FMJ: &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://fmj-sf.net/&quot;&gt;&lt;a href=&quot;http://fmj-sf.net/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://fmj-sf.net/&lt;/a&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;It is jmf API compatiable, and it works with newer capture devices.&amp;nbsp; One thing&amp;nbsp; we can do before we started tinkering with the environment though. Do you have a webcamera? try to extract the frame from webcamera? If the framegrabbing works for the webcamera, and it does not work for your file on the harddisk, then you can conclude that the codec does NOT support framegrabbing feature. framegrabbing should work with most of the webcamera that has vfw driver,and most USB webcameras ship with vfw, and I have done a framegrabbing with webcamera with JMF in the past, and i had success with it.&lt;br&gt;

&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div class=&quot;Wj3C7c&quot;&gt;&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left:1px solid rgb(204, 204, 204);margin:0pt 0pt 0pt 0.8ex;padding-left:1ex;&quot;&gt;&lt;div&gt;&lt;div style=&quot;font-family:arial, helvetica, sans-serif;font-size:10pt;&quot;&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Also, what other ways exist to extract frames from a video using JMF ? I already know the codec way in which you insert a codec in the stream, but that will not be useful for me because I want to compare arbitrary frames with each other.&lt;/div&gt;

&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Thanks a lot.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Code
 ::&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;/**************************************************************************************&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;import java.awt.*;&lt;/div&gt;
&lt;div&gt;import javax.media.*;&lt;/div&gt;&lt;div&gt;import javax.media.control.FrameGrabbingControl;&lt;/div&gt;&lt;div&gt;import javax.media.control.FramePositioningControl;&lt;/div&gt;&lt;div&gt;import javax.media.Format;&lt;/div&gt;&lt;div&gt;import javax.media.format.*;&lt;/div&gt;

&lt;div&gt;import java.io.*;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;import java.net.MalformedURLException;&lt;/div&gt;&lt;div&gt;import java.net.URI;&lt;/div&gt;&lt;div&gt;import java.net.URL;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;import javax.imageio.*;&lt;/div&gt;&lt;div&gt;import java.awt.image.*;&lt;/div&gt;

&lt;div&gt;import java.util.*;&lt;/div&gt;&lt;div&gt;import javax.media.protocol.DataSource;&lt;/div&gt;&lt;div&gt;import javax.media.util.*;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;public class FrameAccess implements ControllerListener {&lt;/div&gt;&lt;div&gt;&lt;br&gt;

&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;Player
 p;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;Object waitSync = new Object();&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;boolean stateTransitionOK = true;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;public boolean alreadyPrnt = false;&lt;/div&gt;

&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;int totalFrames = FramePositioningControl.FRAME_UNKNOWN;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;FramePositioningControl fpc;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;FrameGrabbingControl fgc;&lt;/div&gt;

&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;BufferToImage frameConverter;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;int JUMPING_INTERVAL = 5;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;int SAMPLE_INTERVAL = 5;&lt;/div&gt;

&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;public boolean open(DataSource ml) {&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;// Create a file object&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt; &amp;nbsp; &amp;nbsp;File file = new File(&quot;lotr3-2.divx&quot;);&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt; &amp;nbsp; &amp;nbsp;&lt;/div&gt;

&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt; &amp;nbsp; &amp;nbsp;// Convert the file object to a URL&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt; &amp;nbsp; &amp;nbsp;URL url = null;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt; &amp;nbsp; &amp;nbsp;try {&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// The file need not exist. It is made into an absolute path&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// by prefixing the current working directory&lt;/div&gt;&lt;div&gt;

&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt; &amp;nbsp; &amp;nbsp;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;URI uri = file.toURI();&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt; &amp;nbsp; &amp;nbsp;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;&lt;/div&gt;

&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt; &amp;nbsp; &amp;nbsp;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;url = uri.toURL(); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// file:/d:/almanac1.4/&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://java.io/filename&quot;&gt;&lt;a href=&quot;http://java.io/filename&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;java.io/filename&lt;/a&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;

&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt; &amp;nbsp; &amp;nbsp;} catch (MalformedURLException e) {&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt; &amp;nbsp; &amp;nbsp;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;System.out.println(&quot;BAD URL . . .&quot;);&lt;/div&gt;

&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt; &amp;nbsp; &amp;nbsp;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;return false;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt; &amp;nbsp; &amp;nbsp;}&lt;/div&gt;&lt;div&gt;/*&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;MediaLocator ml1 = new MediaLocator(url);&lt;/div&gt;

&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;DataSource ds1 = null;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;try {&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;ds1 = Manager.createDataSource(ml1);&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;} catch (NoDataSourceException e1) {&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;// TODO Auto-generated catch block&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;e1.printStackTrace();&lt;/div&gt;

&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;} catch (IOException e1) {&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;// TODO Auto-generated catch block&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;e1.printStackTrace();&lt;/div&gt;

&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;}&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;//System.err.println(&quot;create player for: &quot; + ml.getContentType());&lt;/div&gt;

&lt;div&gt;*/&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;				&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	
	&lt;/span&gt;try {&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;p = Manager.createPlayer(url);&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;} catch (NoPlayerException e) {&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;// TODO Auto-generated catch block&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;e.printStackTrace();&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;} catch (IOException e) {&lt;/div&gt;

&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;// TODO Auto-generated catch block&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;e.printStackTrace();&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;}&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;&lt;/div&gt;

&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	
	&lt;/span&gt;System.out.println(&quot;before realize . . .&quot;);&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;p.addControllerListener(this);&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;&lt;/div&gt;

&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;p.realize();&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;if (!waitForState(p.Realized)) {&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;System.out.println(&quot;Failed to realize the JMF player.&quot;);&lt;/div&gt;

&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;return false;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;}&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;System.out.println(&quot;after realize . . .&quot;);&lt;/div&gt;

&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	
	&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;// Try to retrieve a FramePositioningControl from the player.&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;fpc = (FramePositioningControl) p.getControl(&quot;javax.media.control.FramePositioningControl&quot;);&lt;/div&gt;

&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;if (fpc == null) {&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;System.err.println(&quot;The player does not support FramePositioningControl.&quot;);&lt;/div&gt;

&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;return false;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;}&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;//calculate total number of frames in movie&lt;/div&gt;

&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;Time duration = p.getDuration();&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;double durationSeconds = duration.getSeconds();&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;System.out.println(&quot;durationSeconds = &quot; + durationSeconds);&lt;/div&gt;

&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;if (duration != Duration.DURATION_UNKNOWN) {&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;totalFrames = fpc.mapTimeToFrame(duration)+1;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;if (totalFrames==FramePositioningControl.FRAME_UNKNOWN)&lt;/div&gt;

&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;				&lt;/span&gt;System.out.println(&quot;The FramePositioningControl does not support mapTimeToFrame.&quot;);&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;else&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;				&lt;/span&gt;System.out.println(&quot;Total frames: &quot;+ totalFrames);&lt;/div&gt;

&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;} else {&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;System.out.println(&quot;Movie duration: unknown&quot;);&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;}&lt;/div&gt;

&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;p.prefetch();&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;if (!waitForState(p.Prefetched)) {&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;System.out.println(&quot;Failed to prefetch the player.&quot;);&lt;/div&gt;

&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;return false;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;}&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	
	&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;System.out.println(&quot;getting fgc &amp;nbsp;&quot;);&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;fgc = (FrameGrabbingControl)p.getControl(&quot;javax.media.control.FrameGrabbingControl&quot;);&lt;/div&gt;

&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;if (fgc == null) {&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;System.out.println(&quot;The player does not support FrameGrabbingControl.&quot;);&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;return false;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;}&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;// Prefetch the player.&lt;/div&gt;

&lt;div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;p.prefetch();&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;if (!waitForState(p.Prefetched)) {&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;System.out.println(&quot;Failed to prefetch the player.&quot;);&lt;/div&gt;

&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;return false;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;}&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;p.start();&lt;/div&gt;

&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;Buffer frame = fgc.grabFrame();&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;System.out.println(&quot;check 1 . .&quot;);&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	
	&lt;/span&gt;if(frame == null)&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;{&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;System.out.println(&quot;frame in null&quot;);&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;return false;&lt;/div&gt;

&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;}&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;System.out.println(&quot;check 2 . .&quot;);&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;int currentFrame = fpc.mapTimeToFrame(p.getMediaTime());&lt;/div&gt;

&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;int count = 0;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;boolean repeat = true;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;System.out.println(&quot;check 3.
 .&quot;);&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;do {&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt; count ++;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt; int framesSkipped = fpc.skip(1);&lt;/div&gt;

&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; System.out.println(&quot;framesSkipped = &quot; + framesSkipped);&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int newFrame = fpc.mapTimeToFrame(p.getMediaTime());&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; System.out.println(&quot;new, current frames = &quot; + newFrame + &quot; &amp;nbsp;&quot; + currentFrame);&lt;/div&gt;

&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;if ( newFrame &amp;gt; currentFrame ) {&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt; currentFrame = newFrame;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt; repeat = true;&lt;/div&gt;

&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;// frame = fgc.grabFrame();&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;}&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; else {&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt; repeat = false;&lt;/div&gt;

&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;} while (repeat);&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;System.out.println(&quot;Number of frames :&quot;+count);&lt;/div&gt;

&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;return true;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;}&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;/** parse the size of the video from the string videoformat */&lt;/div&gt;

&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;public Dimension parseVideoSize(String videoSize) {&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;int x = 300, y = 200;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;StringTokenizer strtok = new StringTokenizer(videoSize, &quot;, &quot;);&lt;/div&gt;

&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;strtok.nextToken();&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;String size = strtok.nextToken();&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;StringTokenizer sizeStrtok = new StringTokenizer(size, &quot;x&quot;);&lt;/div&gt;

&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;try {&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;x =
 Integer.parseInt(sizeStrtok.nextToken());&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;y = Integer.parseInt(sizeStrtok.nextToken());&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;} catch (NumberFormatException e) {&lt;/div&gt;

&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;System.out&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;					&lt;/span&gt;.println(&quot;unable to find video size, assuming default of 300x200&quot;);&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;}&lt;/div&gt;

&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;System.out.println(&quot;Image width &amp;nbsp;= &quot; + String.valueOf(x)&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;				&lt;/span&gt;+ &quot;\nImage height = &quot; + String.valueOf(y));&lt;/div&gt;

&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;return new Dimension(x, y);&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;}&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;/**&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt; * Block until the processor has transitioned to the given state. Return&lt;/div&gt;

&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt; * false if the transition failed.&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt; */&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;boolean waitForState(int state) {&lt;/div&gt;

&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;synchronized (waitSync) {&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;try {&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;				&lt;/span&gt;while (p.getState() != state &amp;amp;&amp;amp; stateTransitionOK)&lt;/div&gt;

&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;				
	&lt;/span&gt;waitSync.wait();&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;} catch (Exception e) {&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;}&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;}&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;return stateTransitionOK;&lt;/div&gt;

&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;}&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;/**&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt; * Controller Listener.&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt; */&lt;/div&gt;

&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;public void controllerUpdate(ControllerEvent evt) {&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;if (evt instanceof
 ConfigureCompleteEvent&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;				&lt;/span&gt;|| evt instanceof RealizeCompleteEvent&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;				&lt;/span&gt;|| evt instanceof PrefetchCompleteEvent) {&lt;/div&gt;&lt;div&gt;

&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;synchronized (waitSync) {&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;				&lt;/span&gt;stateTransitionOK = true;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;				&lt;/span&gt;waitSync.notifyAll();&lt;/div&gt;

&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;}&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;} else if (evt instanceof ResourceUnavailableEvent) {&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;synchronized (waitSync) {&lt;/div&gt;

&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;				&lt;/span&gt;stateTransitionOK = false;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;				&lt;/span&gt;waitSync.notifyAll();&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;}&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;} else if (evt instanceof EndOfMediaEvent) {&lt;/div&gt;

&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;p.close();&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;System.exit(0);&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;}&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;}&lt;/div&gt;

&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;/**&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt; * Main program&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt; */&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;&lt;/div&gt;

&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;public static void main(String[] args) {&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;if (args.length == 0) {&lt;/div&gt;

&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;prUsage();&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;System.exit(0);&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;}&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;System.out.println(&quot;1. . .&quot;);&lt;/div&gt;

&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;String url = args[0];&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;if (url.indexOf(&quot;:&quot;) &amp;lt; 0) {&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;prUsage();&lt;/div&gt;

&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;System.exit(0);&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;}&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;MediaLocator ml;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;

&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;if ((ml = new MediaLocator(url)) == null) {&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;System.err.println(&quot;Cannot build media locator from: &quot; + url);&lt;/div&gt;&lt;div&gt;
&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;System.exit(0);&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;}&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;DataSource ds = null;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;// Create a DataSource given the media locator.&lt;/div&gt;

&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;try {&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;ds = Manager.createDataSource(ml);&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;} catch (Exception e) {&lt;/div&gt;&lt;div&gt;

&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;System.err.println(&quot;Cannot create DataSource from: &quot; + ml);&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;System.exit(0);&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;}&lt;/div&gt;

&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;FrameAccess fa = new FrameAccess();&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;if (!fa.open(ds))&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;System.exit(0);&lt;/div&gt;

&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;}&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;static void prUsage() {&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;System.err.println(&quot;Usage: java FrameAccess &amp;lt;url&amp;gt;&quot;);&lt;/div&gt;

&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;}&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;&lt;/div&gt;&lt;div&gt;}&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;/****************************************************************************************************************************************************/&lt;/div&gt;

&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;font-family:arial, helvetica, sans-serif;font-size:10pt;&quot;&gt;&lt;br&gt;&lt;div style=&quot;font-family:times new roman, new york, times, serif;font-size:12pt;&quot;&gt;&lt;div&gt;
----- Original Message ----&lt;br&gt;From: Francis Chan &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19591720&amp;i=5&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;francisleechan@...&lt;/a&gt;&lt;/a&gt;&amp;gt;&lt;br&gt;To: &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19591720&amp;i=6&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;JMF-INTEREST@...&lt;/a&gt;&lt;/a&gt;&lt;br&gt;

&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Sent: Friday, 19 September, 2008 2:48:55 PM&lt;br&gt;Subject: Re: [JMF] method grabFrame() returning null -
 code inline&lt;br&gt;&lt;br&gt;&lt;div dir=&quot;ltr&quot;&gt;is that a video file that you are trying to video stream or from capture device? I have never use a DataSource to grab a frame, but i ususally use url of the file or captureDevice.getLocator() and it works.&amp;nbsp; Try it with url if it is a file ; if it is a capturedevice like webcamera or other capture device use getLocator().&lt;br&gt;


&lt;br&gt;francis&lt;br&gt;&lt;br&gt;&lt;div class=&quot;gmail_quote&quot;&gt;On Fri, Sep 19, 2008 at 12:28 PM, Vinod Naik &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19591720&amp;i=7&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;nahvns-f@...&lt;/a&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt; wrote:&lt;br&gt;

&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left:1px solid rgb(204, 204, 204);margin:0pt 0pt 0pt 0.8ex;padding-left:1ex;&quot;&gt;
&lt;div&gt;&lt;div style=&quot;font-family:arial, helvetica, sans-serif;font-size:10pt;&quot;&gt;&lt;div&gt;Yes it can. I can play divx, mov and mpg files&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;-Vinod&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;font-family:arial, helvetica, sans-serif;font-size:10pt;&quot;&gt;


&lt;br&gt;&lt;div style=&quot;font-family:times new roman, new york, times, serif;font-size:12pt;&quot;&gt;&lt;div&gt;----- Original Message ----&lt;br&gt;From: Francis Chan &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19591720&amp;i=8&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;francisleechan@...&lt;/a&gt;&lt;/a&gt;&amp;gt;&lt;br&gt;


To: &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19591720&amp;i=9&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;JMF-INTEREST@...&lt;/a&gt;&lt;/a&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Sent: Friday, 19 September, 2008 1:53:47 PM&lt;br&gt;Subject: Re: [JMF] method grabFrame() returning null - code inline&lt;br&gt;


&lt;br&gt;&lt;div&gt;Can your video play in jmfstudio?&lt;br&gt;&lt;br&gt;Francis&lt;/div&gt;&lt;div&gt;&lt;br&gt;On Sep 19, 2008, at 9:27 AM, Vinod Naik &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19591720&amp;i=10&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;nahvns-f@...&lt;/a&gt;&lt;/a&gt;&amp;gt; wrote:&lt;br&gt;

&lt;br&gt;
&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote type=&quot;cite&quot;&gt;&lt;div&gt;&lt;div style=&quot;font-family:arial, helvetica, sans-serif;font-size:10pt;&quot;&gt;&lt;div&gt;Hello Francis,&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;I tried doing p.start() , but still&amp;nbsp;&lt;span style=&quot;font-size:16px;&quot;&gt;grabFrame() is returning null.&lt;/span&gt;&lt;/div&gt;


&lt;div&gt;&lt;font size=&quot;4&quot; face=&quot;'times new roman'&quot;&gt;&lt;span style=&quot;font-size:16px;&quot;&gt;Any idea as to wnhy this is happening&amp;nbsp;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;4&quot; face=&quot;'times new roman'&quot;&gt;&lt;span style=&quot;font-size:16px;&quot;&gt;&lt;br&gt;


&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;4&quot; face=&quot;'times new roman'&quot;&gt;&lt;span style=&quot;font-size:16px;&quot;&gt;Thanks again&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;4&quot; face=&quot;'times new roman'&quot;&gt;&lt;span style=&quot;font-size:16px;&quot;&gt;Vinod&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;


&lt;div&gt;&lt;font size=&quot;4&quot; face=&quot;'times new
 roman'&quot;&gt;&lt;span style=&quot;font-size:16px;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;4&quot; face=&quot;'times new roman'&quot;&gt;&lt;span style=&quot;font-size:16px;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;font-family:arial, helvetica, sans-serif;font-size:10pt;&quot;&gt;


&lt;br&gt;&lt;div style=&quot;font-family:times new roman, new york, times, serif;font-size:12pt;&quot;&gt;----- Original Message ----&lt;br&gt;From: Francis Chan &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19591720&amp;i=11&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;francisleechan@...&lt;/a&gt;&lt;/a&gt;&amp;gt;&lt;br&gt;


To: &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19591720&amp;i=12&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;JMF-INTEREST@...&lt;/a&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19591720&amp;i=13&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;JMF-INTEREST@...&lt;/a&gt;&lt;/a&gt;&lt;br&gt;Sent: Friday, 19 September, 2008 3:50:07 AM&lt;br&gt;


Subject: Re: [JMF] method grabFrame()
 returning null - code inline&lt;br&gt;&lt;br&gt;&lt;div dir=&quot;ltr&quot;&gt;just a quick scan of your file... try this&lt;br&gt;&lt;br&gt;put&lt;br&gt;f.start(); before the FrameGrabbing control.&lt;br&gt;&lt;br&gt;Francis&lt;br&gt;&lt;br&gt;&lt;div class=&quot;gmail_quote&quot;&gt;On Fri, Sep 19, 2008 at 1:10 AM, Vinod Naik &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19591720&amp;i=14&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;nahvns-f@...&lt;/a&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19591720&amp;i=15&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;nahvns-f@...&lt;/a&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt; wrote:&lt;br&gt;



&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left:1px solid rgb(204, 204, 204);margin:0pt 0pt 0pt 0.8ex;padding-left:1ex;&quot;&gt;&lt;div&gt;&lt;div style=&quot;font-family:arial, helvetica, sans-serif;font-size:10pt;&quot;&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;


&lt;div style=&quot;font-family:arial, helvetica, sans-serif;font-size:10pt;&quot;&gt;
&lt;div style=&quot;font-family:arial, helvetica, sans-serif;font-size:10pt;&quot;&gt;Hello Everybody,&lt;br&gt;&lt;br&gt;I have been trying to write a basic java program to grab frames from any &lt;br&gt;video. I am using FOBS4JMF along with JMF.&lt;br&gt;The problem is that I cannot seem to get the grabFrame() method of &lt;br&gt;



FrameGrabbingControl interface to work. &lt;br&gt;&lt;br&gt;fgc = &lt;br&gt;(FrameGrabbingControl)p.getControl(&quot;javax.media.control.FrameGrabbingControl&lt;br&gt;&quot;) ;&lt;br&gt;&lt;br&gt;if (fgc == null) {&lt;br&gt;System.out.println(&quot;The player does not support FrameGrabbingControl.&quot;);&lt;br&gt;



return false;&lt;br&gt;}&lt;br&gt;.&lt;br&gt;.&lt;br&gt;.&lt;br&gt;&lt;br&gt;Buffer objframe = fgc.grabFrame();&amp;nbsp;  (line number 95 in the file attached )&lt;br&gt;&lt;br&gt;here - objframe is always null :( though i manage to get an fgc object. I
 have &lt;br&gt;tried and tried to understand why this is happening and where I am going &lt;br&gt;wrong. &lt;br&gt;&lt;br&gt;Code is Inline&lt;br&gt;&lt;br&gt;I need some help here . . . please &lt;br&gt;&lt;br&gt;Thanks a lot&lt;br&gt;Vinod&lt;/div&gt;&lt;div style=&quot;font-family:arial, helvetica, sans-serif;font-size:10pt;&quot;&gt;



&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;font-family:arial, helvetica, sans-serif;font-size:10pt;&quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;font-family:arial, helvetica, sans-serif;font-size:10pt;&quot;&gt;----------------------FrameAccess.java-----------------------------------&lt;/div&gt;



&lt;div style=&quot;font-family:arial, helvetica, sans-serif;font-size:10pt;&quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;font-family:arial, helvetica, sans-serif;font-size:10pt;&quot;&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;import java.awt.*;&lt;/div&gt;&lt;div&gt;import javax.media.*;&lt;/div&gt;



&lt;div&gt;import javax.media.control.FrameGrabbingControl;&lt;/div&gt;&lt;div&gt;import javax.media.control.FramePositioningControl;&lt;/div&gt;&lt;div&gt;import javax.media.Format;&lt;/div&gt;&lt;div&gt;import javax.media.format.*;&lt;/div&gt;&lt;div&gt;import java.io.*;&lt;/div&gt;



&lt;div&gt;import javax.imageio.*;&lt;/div&gt;&lt;div&gt;import java.awt.image.*;&lt;/div&gt;&lt;div&gt;import java.util.*;&lt;/div&gt;&lt;div&gt;import javax.media.protocol.DataSource;&lt;/div&gt;&lt;div&gt;import javax.media.util.*;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;



public class FrameAccess implements ControllerListener {&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;Player p;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;Object waitSync = new Object();&lt;/div&gt;&lt;div&gt;



&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;boolean stateTransitionOK = true;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;public boolean alreadyPrnt = false;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;
	&lt;/span&gt;int totalFrames = FramePositioningControl.FRAME_UNKNOWN;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;FramePositioningControl fpc;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;FrameGrabbingControl fgc;&lt;/div&gt;



&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;BufferToImage frameConverter;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;int JUMPING_INTERVAL = 5;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;int SAMPLE_INTERVAL = 5;&lt;/div&gt;



&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;public boolean open(DataSource ml) {&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;System.err.println(&quot;create player for: &quot; + ml.getContentType());&lt;/div&gt;



&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;try {&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;p = Manager.createPlayer(ml);&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;} catch (NoPlayerException e) {&lt;/div&gt;



&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;// TODO Auto-generated catch block&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;e.printStackTrace();&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;} catch (IOException e) {&lt;/div&gt;



&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;// TODO Auto-generated catch
 block&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;e.printStackTrace();&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;}&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;System.out.println(&quot;before realize . . .&quot;);&lt;/div&gt;



&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;p.addControllerListener(this);&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;p.realize();&lt;/div&gt;



&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;if (!waitForState(p.Realized)) {&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		
	&lt;/span&gt;System.out.println(&quot;Failed to realize the JMF player.&quot;);&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;return false;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;}&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;System.out.println(&quot;after realize . . .&quot;);&lt;/div&gt;



&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;// Try to retrieve a FramePositioningControl from the player.&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;fpc = (FramePositioningControl) p.getControl(&quot;javax.media.control.FramePositioningControl&quot;);&lt;/div&gt;



&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;if (fpc == null) {&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		
	&lt;/span&gt;System.err.println(&quot;The player does not support FramePositioningControl.&quot;);&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;return false;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;}&lt;/div&gt;&lt;div&gt;



&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;//calculate total number of frames in movie&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;Time duration = p.getDuration();&lt;/div&gt;



&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;double durationSeconds = duration.getSeconds();&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;System.out.println(&quot;durationSeconds = &quot; + durationSeconds);&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;if (duration != Duration.DURATION_UNKNOWN) {&lt;/div&gt;



&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		
	&lt;/span&gt;totalFrames = fpc.mapTimeToFrame(duration)+1;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;if (totalFrames==FramePositioningControl.FRAME_UNKNOWN)&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;				&lt;/span&gt;System.out.println(&quot;The FramePositioningControl does not support mapTimeToFrame.&quot;);&lt;/div&gt;



&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;else&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;				&lt;/span&gt;System.out.println(&quot;Total frames: &quot;+ totalFrames);&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;} else {&lt;/div&gt;



&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;System.out.println(&quot;Movie duration: unknown&quot;);&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;}&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	
	&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;p.prefetch();&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;if (!waitForState(p.Prefetched)) {&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;System.out.println(&quot;Failed to prefetch the player.&quot;);&lt;/div&gt;



&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;return false;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;}&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;&lt;/div&gt;



&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;System.out.println(&quot;getting fgc &amp;nbsp;&quot;);&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;fgc =
 (FrameGrabbingControl)p.getControl(&quot;javax.media.control.FrameGrabbingControl&quot;);&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;if (fgc == null) {&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;System.out.println(&quot;The player does not support FrameGrabbingControl.&quot;);&lt;/div&gt;



&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;return false;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;}&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;&lt;/div&gt;



&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;Buffer frame = fgc.grabFrame();&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;&lt;/div&gt;



&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;System.out.println(&quot;check 1 . .&quot;);&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;if(frame == null)&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;{&lt;/div&gt;&lt;div&gt;



&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;System.out.println(&quot;frame in null&quot;);&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;return false;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;}&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;System.out.println(&quot;check 2 . .&quot;);&lt;/div&gt;



&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;int currentFrame =
 fpc.mapTimeToFrame(p.getMediaTime());&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;int count = 0;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;boolean repeat = true;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;&lt;/div&gt;



&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;System.out.println(&quot;check 3. .&quot;);&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;do {&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt; count ++;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt; int framesSkipped = fpc.skip(1);&lt;/div&gt;



&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; System.out.println(&quot;framesSkipped = &quot; + framesSkipped);&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int newFrame = fpc.mapTimeToFrame(p.getMediaTime());&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
 System.out.println(&quot;new, current frames = &quot; + newFrame + &quot; &amp;nbsp;&quot; + currentFrame);&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;if ( newFrame &amp;gt; currentFrame ) {&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt; currentFrame = newFrame;&lt;/div&gt;



&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt; repeat = true;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt; frame = fgc.grabFrame();&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;}&lt;/div&gt;



&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; else {&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt; repeat = false;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;} while (repeat);&lt;/div&gt;



&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;System.out.println(&quot;Number of frames :&quot;+count);&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;return true;&lt;/div&gt;



&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;}&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;/** parse the size of the video from the string videoformat */&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;public Dimension parseVideoSize(String videoSize) {&lt;/div&gt;



&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;int x = 300, y =
 200;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;StringTokenizer strtok = new StringTokenizer(videoSize, &quot;, &quot;);&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;strtok.nextToken();&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;String size = strtok.nextToken();&lt;/div&gt;



&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;StringTokenizer sizeStrtok = new StringTokenizer(size, &quot;x&quot;);&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;try {&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;x = Integer.parseInt(sizeStrtok.nextToken());&lt;/div&gt;



&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;y = Integer.parseInt(sizeStrtok.nextToken());&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;} catch (NumberFormatException e)
 {&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;System.out&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;					&lt;/span&gt;.println(&quot;unable to find video size, assuming default of 300x200&quot;);&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;}&lt;/div&gt;



&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;System.out.println(&quot;Image width &amp;nbsp;= &quot; + String.valueOf(x)&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;				&lt;/span&gt;+ &quot;\nImage height = &quot; + String.valueOf(y));&lt;/div&gt;



&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;return new Dimension(x, y);&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;}&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;/**&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;
	&lt;/span&gt; * Block until the processor has transitioned to the given state. Return&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt; * false if the transition failed.&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt; */&lt;/div&gt;



&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;boolean waitForState(int state) {&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;synchronized (waitSync) {&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;try {&lt;/div&gt;&lt;div&gt;



&lt;span style=&quot;white-space:pre;&quot;&gt;				&lt;/span&gt;while (p.getState() != state &amp;amp;&amp;amp; stateTransitionOK)&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;					&lt;/span&gt;waitSync.wait();&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;} catch (Exception e) {&lt;/div&gt;



&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;}&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;}&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;return stateTransitionOK;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;}&lt;/div&gt;



&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;/**&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt; * Controller Listener.&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt; */&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;public void controllerUpdate(ControllerEvent evt) {&lt;/div&gt;



&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;if (evt instanceof ConfigureCompleteEvent&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;				&lt;/span&gt;|| evt instanceof RealizeCompleteEvent&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;				&lt;/span&gt;|| evt instanceof PrefetchCompleteEvent) {&lt;/div&gt;



&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;synchronized (waitSync) {&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;				&lt;/span&gt;stateTransitionOK = true;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;				&lt;/span&gt;waitSync.notifyAll();&lt;/div&gt;



&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;}&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;} else if (evt instanceof ResourceUnavailableEvent) {&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;synchronized (waitSync) {&lt;/div&gt;



&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;				&lt;/span&gt;stateTransitionOK =
 false;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;				&lt;/span&gt;waitSync.notifyAll();&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;}&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;} else if (evt instanceof EndOfMediaEvent) {&lt;/div&gt;



&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;p.close();&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;System.exit(0);&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;}&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;}&lt;/div&gt;



&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;/**&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt; * Main program&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;
 */&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;public static void main(String[] args) {&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;



&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;if (args.length == 0) {&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;prUsage();&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;System.exit(0);&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;}&lt;/div&gt;



&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;System.out.println(&quot;1. . .&quot;);&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;String url = args[0];&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;if (url.indexOf(&quot;:&quot;) &amp;lt; 0) {&lt;/div&gt;



&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;prUsage();&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;System.exit(0);&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;}&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;MediaLocator ml;&lt;/div&gt;



&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;if ((ml = new MediaLocator(url)) == null) {&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;System.err.println(&quot;Cannot build media locator from: &quot; + url);&lt;/div&gt;



&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;System.exit(0);&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;}&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;DataSource ds = null;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;// Create a DataSource given the media locator.&lt;/div&gt;



&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;try {&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;ds = Manager.createDataSource(ml);&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;} catch (Exception e) {&lt;/div&gt;&lt;div&gt;



&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;System.err.println(&quot;Cannot create DataSource from: &quot; + ml);&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;System.exit(0);&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;}&lt;/div&gt;



&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;FrameAccess fa = new FrameAccess();&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;if (!fa.open(ds))&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;			&lt;/span&gt;System.exit(0);&lt;/div&gt;



&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;}&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;static void prUsage() {&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;System.err.println(&quot;Usage: java FrameAccess &amp;lt;url&amp;gt;&quot;);&lt;/div&gt;



&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;}&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;&lt;/div&gt;&lt;div&gt;}&lt;/div&gt;&lt;div&gt;--------------------------------------------------------------------------------------------------------------------&lt;/div&gt;



&lt;/div&gt;&lt;div style=&quot;font-family:arial, helvetica, sans-serif;font-size:10pt;&quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;font-family:arial, helvetica, sans-serif;font-size:10pt;&quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;font-family:arial, helvetica, sans-serif;font-size:10pt;&quot;&gt;



&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;font-family:arial, helvetica, sans-serif;font-size:10pt;&quot;&gt;&lt;br&gt;&lt;br&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
===========================================================================
FAQ:  &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://java.sun.com/products/java-media/jmf/forDevelopers/jmffaq.html&quot;&gt;&lt;/a&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://java.sun.com/products/java-media/jmf/forDevelopers/jmffaq.html&quot;&gt;&lt;a href=&quot;http://java.sun.com/products/java-media/jmf/forDevelopers/jmffaq.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://java.sun.com/products/java-media/jmf/forDevelopers/jmffaq.html&lt;/a&gt;&lt;/a&gt;
List Archive: &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://archives.java.sun.com/archives/jmf-interest.html&quot;&gt;&lt;/a&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://archives.java.sun.com/archives/jmf-interest.html&quot;&gt;&lt;a href=&quot;http://archives.java.sun.com/archives/jmf-interest.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://archives.java.sun.com/archives/jmf-interest.html&lt;/a&gt;&lt;/a&gt;
&lt;p&gt;
To unsubscribe, send email to &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19591720&amp;i=16&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;listserv@...&lt;/a&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19591720&amp;i=17&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;listserv@...&lt;/a&gt;&lt;/a&gt; and include in the body
of the message &quot;signoff JMF-INTEREST&quot;.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;&lt;/div&gt;
===========================================================================
FAQ:  &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://java.sun.com/products/java-media/jmf/forDevelopers/jmffaq.html&quot;&gt;&lt;a href=&quot;http://java.sun.com/products/java-media/jmf/forDevelopers/jmffaq.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://java.sun.com/products/java-media/jmf/forDevelopers/jmffaq.html&lt;/a&gt;&lt;/a&gt;
List Archive: &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://archives.java.sun.com/archives/jmf-interest.html&quot;&gt;&lt;a href=&quot;http://archives.java.sun.com/archives/jmf-interest.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://archives.java.sun.com/archives/jmf-interest.html&lt;/a&gt;&lt;/a&gt;
&lt;p&gt;
To unsubscribe, send email to &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19591720&amp;i=18&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;listserv@...&lt;/a&gt;&lt;/a&gt; and include in the body
of the message &quot;signoff JMF-INTEREST&quot;.
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;
===========================================================================
FAQ:  &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://java.sun.com/products/java-media/jmf/forDevelopers/jmffaq.html&quot;&gt;&lt;a href=&quot;http://java.sun.com/products/java-media/jmf/forDevelopers/jmffaq.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://java.sun.com/products/java-media/jmf/forDevelopers/jmffaq.html&lt;/a&gt;&lt;/a&gt;
List Archive: &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://archives.java.sun.com/archives/jmf-interest.html&quot;&gt;&lt;a href=&quot;http://archives.java.sun.com/archives/jmf-interest.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://archives.java.sun.com/archives/jmf-interest.html&lt;/a&gt;&lt;/a&gt;
&lt;p&gt;
To unsubscribe, send email to &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19591720&amp;i=19&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;listserv@...&lt;/a&gt;&lt;/a&gt; and include in the body
of the message &quot;signoff JMF-INTEREST&quot;.=================
FAQ:  &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://java.sun.com/products/java-media/jmf/forDevelopers/jmffaq.html&quot;&gt;&lt;a href=&quot;http://java.sun.com/products/java-media/jmf/forDevelopers/jmffaq.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://java.sun.com/products/java-media/jmf/forDevelopers/jmffaq.html&lt;/a&gt;&lt;/a&gt;
List Archive: &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://archives.java.sun.com/archives/jmf-interest.html&quot;&gt;&lt;a href=&quot;http://archives.java.sun.com/archives/jmf-interest.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://archives.java.sun.com/archives/jmf-interest.html&lt;/a&gt;&lt;/a&gt;
&lt;/p&gt;&lt;p&gt;
To unsubscribe, send email to &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19591720&amp;i=20&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;listserv@...&lt;/a&gt;&lt;/a&gt; and include in the body
of the message &quot;signoff JMF-INTEREST&quot;.&lt;/p&gt;&lt;/div&gt;&lt;/blockquote&gt;===========================================================================
FAQ:  &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://java.sun.com/products/java-media/jmf/forDevelopers/jmffaq.html&quot;&gt;&lt;a href=&quot;http://java.sun.com/products/java-media/jmf/forDevelopers/jmffaq.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://java.sun.com/products/java-media/jmf/forDevelopers/jmffaq.html&lt;/a&gt;&lt;/a&gt;
List Archive: &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://archives.java.sun.com/archives/jmf-interest.html&quot;&gt;&lt;a href=&quot;http://archives.java.sun.com/archives/jmf-interest.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://archives.java.sun.com/archives/jmf-interest.html&lt;/a&gt;&lt;/a&gt;
&lt;p&gt;
To unsubscribe, send email to &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19591720&amp;i=21&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;listserv@...&lt;/a&gt;&lt;/a&gt; and include in the body
of the message &quot;signoff JMF-INTEREST&quot;.
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;
===========================================================================
FAQ:  &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://java.sun.com/products/java-media/jmf/forDevelopers/jmffaq.html&quot;&gt;&lt;a href=&quot;http://java.sun.com/products/java-media/jmf/forDevelopers/jmffaq.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://java.sun.com/products/java-media/jmf/forDevelopers/jmffaq.html&lt;/a&gt;&lt;/a&gt;
List Archive: &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://archives.java.sun.com/archives/jmf-interest.html&quot;&gt;&lt;a href=&quot;http://archives.java.sun.com/archives/jmf-interest.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://archives.java.sun.com/archives/jmf-interest.html&lt;/a&gt;&lt;/a&gt;
&lt;p&gt;
To unsubscribe, send email to &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19591720&amp;i=22&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;listserv@...&lt;/a&gt;&lt;/a&gt; and include in the body
of the message &quot;signoff JMF-INTEREST&quot;.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;&lt;/div&gt;
===========================================================================
FAQ:  &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://java.sun.com/products/java-media/jmf/forDevelopers/jmffaq.html&quot;&gt;&lt;a href=&quot;http://java.sun.com/products/java-media/jmf/forDevelopers/jmffaq.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://java.sun.com/products/java-media/jmf/forDevelopers/jmffaq.html&lt;/a&gt;&lt;/a&gt;
List Archive: &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://archives.java.sun.com/archives/jmf-interest.html&quot;&gt;&lt;a href=&quot;http://archives.java.sun.com/archives/jmf-interest.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://archives.java.sun.com/archives/jmf-interest.html&lt;/a&gt;&lt;/a&gt;
&lt;p&gt;
To unsubscribe, send email to &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19591720&amp;i=23&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;listserv@...&lt;/a&gt;&lt;/a&gt; and include in the body
of the message &quot;signoff JMF-INTEREST&quot;.
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;
===========================================================================
FAQ:  &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://java.sun.com/products/java-media/jmf/forDevelopers/jmffaq.html&quot;&gt;&lt;a href=&quot;http://java.sun.com/products/java-media/jmf/forDevelopers/jmffaq.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://java.sun.com/products/java-media/jmf/forDevelopers/jmffaq.html&lt;/a&gt;&lt;/a&gt;
List Archive: &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://archives.java.sun.com/archives/jmf-interest.html&quot;&gt;&lt;a href=&quot;http://archives.java.sun.com/archives/jmf-interest.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://archives.java.sun.com/archives/jmf-interest.html&lt;/a&gt;&lt;/a&gt;
&lt;p&gt;
To unsubscribe, send email to &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19591720&amp;i=24&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;listserv@...&lt;/a&gt;&lt;/a&gt; and include in the body
of the message &quot;signoff JMF-INTEREST&quot;.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br&gt;&lt;/div&gt;
&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;&lt;/div&gt;
===========================================================================
FAQ:  &lt;a href=&quot;http://java.sun.com/products/java-media/jmf/forDevelopers/jmffaq.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://java.sun.com/products/java-media/jmf/forDevelopers/jmffaq.html&lt;/a&gt;
List Archive: &lt;a href=&quot;http://archives.java.sun.com/archives/jmf-interest.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://archives.java.sun.com/archives/jmf-interest.html&lt;/a&gt;
&lt;p&gt;
To unsubscribe, send email to &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19591720&amp;i=25&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;listserv@...&lt;/a&gt; and include in the body
of the message &quot;signoff JMF-INTEREST&quot;.
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;position:fixed&quot;&gt;&lt;/div&gt;&lt;/div&gt;
===========================================================================
FAQ:  &lt;a href=&quot;http://java.sun.com/products/java-media/jmf/forDevelopers/jmffaq.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://java.sun.com/products/java-media/jmf/forDevelopers/jmffaq.html&lt;/a&gt;
List Archive: &lt;a href=&quot;http://archives.java.sun.com/archives/jmf-interest.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://archives.java.sun.com/archives/jmf-interest.html&lt;/a&gt;
&lt;p&gt;
To unsubscribe, send email to &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19591720&amp;i=26&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;listserv@...&lt;/a&gt; and include in the body
of the message &quot;signoff JMF-INTEREST&quot;.elopers/jmffaq.html
List Archive: &lt;a href=&quot;http://archives.java.sun.com/archives/jmf-interest.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://archives.java.sun.com/archives/jmf-interest.html&lt;/a&gt;
&lt;/p&gt;&lt;p&gt;
To unsubscribe, send email to &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19591720&amp;i=27&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;listserv@...&lt;/a&gt; and include in the body
of the message &quot;signoff JMF-INTEREST&quot;.
&lt;/p&gt;&lt;div style=&quot;position:fixed&quot;&gt;&lt;/div&gt;
===========================================================================
FAQ:  &lt;a href=&quot;http://java.sun.com/products/java-media/jmf/forDevelopers/jmffaq.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://java.sun.com/products/java-media/jmf/forDevelopers/jmffaq.html&lt;/a&gt;
List Archive: &lt;a href=&quot;http://archives.java.sun.com/archives/jmf-interest.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://archives.java.sun.com/archives/jmf-interest.html&lt;/a&gt;
&lt;p&gt;
To unsubscribe, send email to &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19591720&amp;i=28&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;listserv@...&lt;/a&gt; and include in the body
of the message &quot;signoff JMF-INTEREST&quot;.&lt;/p&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;/body&gt;&lt;/html&gt;===========================================================================
FAQ:  http://java.sun.com/products/java-media/jmf/forDevelopers/jmffaq.html
List Archive: http://archives.java.sun.com/archives/jmf-interest.html
&lt;p&gt;
To unsubscribe, send email to &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19591720&amp;i=29&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;listserv@...&lt;/a&gt; and include in the body
of the message &quot;signoff JMF-INTEREST&quot;.
</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/method-grabFrame%28%29-returning-null---code-inline-tp19568281p19591720.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-19588545</id>
	<title>Re: method grabFrame() returning null - code inline</title>
	<published>2008-09-20T12:30:12Z</published>
	<updated>2008-09-20T12:30:12Z</updated>
	<author>
		<name>Vinod Naik</name>
	</author>
	<content type="html">&lt;html&gt;&lt;head&gt;&lt;/head&gt;&lt;body&gt;&lt;div style=&quot;font-family:arial, helvetica, sans-serif;font-size:10pt&quot;&gt;&lt;div&gt;Tried ur suggestions, doing a &lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: 'times new roman'; font-size: 16px; &quot;&gt;p.prefetch() hangs and never returns.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: 'times new roman'; font-size: 16px; &quot;&gt;it seems i am doomed &lt;/span&gt;&lt;/div&gt;&lt;div&gt;:(&lt;/div&gt;&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;'times new roman'&quot; size=&quot;4&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 16px;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;font-family:arial, helvetica, sans-serif;font-size:10pt&quot;&gt;&lt;div style=&quot;font-family:times new roman, new york, times, serif;font-size:12pt&quot;&gt;----- Original Message ----&lt;br&gt;From: Francis Chan &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19588545&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;francisleechan@...&lt;/a&gt;&gt;&lt;br&gt;To: &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19588545&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;JMF-INTEREST@...&lt;/a&gt;&lt;br&gt;Sent: Saturday, 20 September, 2008 3:01:36 AM&lt;br&gt;Subject: Re: [JMF] method
 grabFrame() returning null - code inline&lt;br&gt;&lt;br&gt;&lt;div dir=&quot;ltr&quot;&gt;I think i find out what's the problem is change this line of code from&lt;br&gt;p = Manager.createPlayer(url);&lt;br&gt;to&lt;br&gt;p =Manager.createRealizedPlayer(url);&lt;br&gt;&lt;br&gt;and get rid off the p.realise(); of course make sure you call p.prefetch() after that p = Manager.createRealizedPlayer(url);&lt;br&gt;
&lt;br&gt;&lt;div class=&quot;gmail_quote&quot;&gt;On Sat, Sep 20, 2008 at 12:42 AM, Francis Chan &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19588545&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;francisleechan@...&lt;/a&gt;&gt;&lt;/span&gt; wrote:&lt;br&gt;&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left:1px solid rgb(204, 204, 204);margin:0pt 0pt 0pt 0.8ex;padding-left:1ex;&quot;&gt;
&lt;div dir=&quot;ltr&quot;&gt;&lt;br&gt;&lt;br&gt;&lt;div class=&quot;gmail_quote&quot;&gt;&lt;div class=&quot;Ih2E3d&quot;&gt;On Fri, Sep 19, 2008 at 3:55 PM, Vinod Naik &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19588545&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;nahvns-f@...&lt;/a&gt;&gt;&lt;/span&gt; wrote:&lt;br&gt;
&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left:1px solid rgb(204, 204, 204);margin:0pt 0pt 0pt 0.8ex;padding-left:1ex;&quot;&gt;
&lt;div&gt;&lt;div style=&quot;font-family:arial, helvetica, sans-serif;font-size:10pt;&quot;&gt;&lt;div&gt;Thanks for your suggestion, it is a video file present in my hard disk&lt;/div&gt;&lt;div&gt;I tried to do it using URL, unfortunately that too is not working. The grabFrame is still returning null &lt;/div&gt;

&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Can this be a local environment issue ? This may be like asking for too much - but can you test this code out in your machine, that way we can figure out if need to some tinkiring with my environment.&lt;/div&gt;

&lt;/div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;Sorry. I don't use JMF. I use FMJ: &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://fmj-sf.net/&quot;&gt;http://fmj-sf.net/&lt;/a&gt;&lt;br&gt;&lt;br&gt;It is jmf API compatiable, and it works with newer capture devices.  One thing  we can do before we started tinkering with the environment though. Do you have a webcamera? try to extract the frame from webcamera? If the framegrabbing works for the webcamera, and it does not work for your file on the harddisk, then you can conclude that the codec does NOT support framegrabbing feature. framegrabbing should work with most of the webcamera that has vfw driver,and most USB webcameras ship with vfw, and I have done a framegrabbing with webcamera with JMF in the past, and i had success with it.&lt;br&gt;

&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div class=&quot;Wj3C7c&quot;&gt;&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left:1px solid rgb(204, 204, 204);margin:0pt 0pt 0pt 0.8ex;padding-left:1ex;&quot;&gt;&lt;div&gt;&lt;div style=&quot;font-family:arial, helvetica, sans-serif;font-size:10pt;&quot;&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Also, what other ways exist to extract frames from a video using JMF ? I already know the codec way in which you insert a codec in the stream, but that will not be useful for me because I want to compare arbitrary frames with each other.&lt;/div&gt;

&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Thanks a lot.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Code
 :: &lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;/**************************************************************************************&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;import java.awt.*;&lt;/div&gt;
&lt;div&gt;import javax.media.*;&lt;/div&gt;&lt;div&gt;import javax.media.control.FrameGrabbingControl;&lt;/div&gt;&lt;div&gt;import javax.media.control.FramePositioningControl;&lt;/div&gt;&lt;div&gt;import javax.media.Format;&lt;/div&gt;&lt;div&gt;import javax.media.format.*;&lt;/div&gt;

&lt;div&gt;import java.io.*;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;import java.net.MalformedURLException;&lt;/div&gt;&lt;div&gt;import java.net.URI;&lt;/div&gt;&lt;div&gt;import java.net.URL;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;import javax.imageio.*;&lt;/div&gt;&lt;div&gt;import java.awt.image.*;&lt;/div&gt;

&lt;div&gt;import java.util.*;&lt;/div&gt;&lt;div&gt;import javax.media.protocol.DataSource;&lt;/div&gt;&lt;div&gt;import javax.media.util.*;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;public class FrameAccess implements ControllerListener {&lt;/div&gt;&lt;div&gt;&lt;br&gt;

&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;Player
 p;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;Object waitSync = new Object();&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;boolean stateTransitionOK = true;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;public boolean alreadyPrnt = false;&lt;/div&gt;

&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;int totalFrames = FramePositioningControl.FRAME_UNKNOWN;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;FramePositioningControl fpc;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;FrameGrabbingControl fgc;&lt;/div&gt;

&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;BufferToImage frameConverter;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;int JUMPING_INTERVAL = 5;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;int SAMPLE_INTERVAL = 5;&lt;/div&gt;

&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;public boolean open(DataSource ml) {&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;		&lt;/span&gt;// Create a file object&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;    File file = new File(&quot;lotr3-2.divx&quot;);&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;    &lt;/div&gt;

&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;    // Convert the file object to a URL&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;    URL url = null;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;    try {&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;        // The file need not exist. It is made into an absolute path&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;        // by prefixing the current working directory&lt;/div&gt;&lt;div&gt;

&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;        &lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;    &lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;URI uri = file.toURI();&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;    &lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;&lt;/div&gt;

&lt;div&gt;&lt;span style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;    &lt;span styl