Hello, 

  I am using JMF (Java Media Framework) to video stream, and then i am taking a 
snap shot of that video stream at every 5 seconds. there is a class called 
FrameGrabber in JMF that grabs a frame and return that frame as java.awt.Image. 
Then i took that image and deinterlace it. Deinterlacing is separating the odd 
line and eve line from that image. Here is more expalanation of deinterlacing : 
http://en.wikipedia.org/wiki/Deinterlacing
The separation is done by extracting the pixels from the Image using pixels 
grabber, which returns the int[] array, but i converted to a byte[] array to 
save memory because i am video streaming the gray-scale and I am calling this 
method several time in the while loop. Then after that i called this method 
that i posted in the previous message, again this is also called several time 
in the while loop:

public BufferedImage produceRenderedImage(byte[] dataBuffer, int width, int 
height)
{
DataBuffer dBuffer = new DataBufferByte(dataBuffer, width * height);
WritableRaster wr = 
Raster.createInterleavedRaster(dBuffer,width,height,width,1,new int[]{0},null);
ColorSpace cs = ColorSpace.getInstance(ColorSpace.CS_GRAY);
ColorModel cm = new ComponentColorModel(cs,false, false, Transparency.OPAQUE, 
DataBuffer.TYPE_BYTE);
BufferedImage bi = new BufferedImage(cm, wr, false, null);

return bi;
}

there are two lines of code i am worry the most, which might cause OUT OF HEAP 
MEMORY issue because in my method above i called the
>> new DataBufferByte(dataBuffer, width * height)  
>> new BufferedImage(cm,wr,false,null).

The other two lines can be put outside of the method becasue they don't change 
through out during the several called in while loop. they are:
>>ColorSpace cs = ColorSpace.getInstance(ColorSpace.CS_GRAY);
>>ColorModel cm = new ComponentColorModel(cs,false, false, Transparency.OPAQUE, 
>>DataBuffer.TYPE_BYTE); 

The only thing change in the above method is the dataBuffer, the byte[] data 
changes in every loop from the images from the video. The dimension is the 
same. Is there  a way to reset the dataBuffer without the recalling new 
DataBufferByte(dataBuffer, width * height)? i saw a data buffer that reset the 
int  (setInt() )in  the DataBuffer class, but not a setByte method?

thanks

Francis
[Message sent by forum member 'cohodetector' (cohodetector)]

http://forums.java.net/jive/thread.jspa?messageID=289563

===========================================================================
To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
of the message "signoff JAVA2D-INTEREST".  For general help, send email to
[EMAIL PROTECTED] and include in the body of the message "help".

Reply via email to