ImageObserver and rescaled image

Hi,
I got a custom JFileChooser, where the user can see image previews.
The little problem is, for large images, the rescale-method takes a few seconds to show the
image on the custom view component. How can i(in general for unscaled pictures too) show the
current status of the image(maybe during rescaling).
regards.
Olek

ok, so now I have:
public class Goomba implements java.awt.image.ImageObserver
That gives me an error that: Goomba should be declared abstract; it does not define
imageUpdate(java.awt.image, int, int, int, int, int) in Goomba
So I tried putting imageUpdate(gi, 0, pos_x, pos_y, 50, 50) .........and I still get the same error.
If this helps, heres the code in question:
import java.applet.*;
import java.awt.*;
import java.util.*;
import java.net.*;
public class Goomba implements java.awt.image.ImageObserver
     private int pos_x;
     private int pos_y;
     private int x_speed;
     private int first_x;
     private int first_y;
     private int maxspeed;
Image gi;     
     private final int x_leftout = 25;
     Player player;
//calls this everytime we want a new goomba
// x is the x position
// y is the y position
// vx is the speed
// player is the player
// goomba_image is the actual image of the goomba
     public Goomba (int x, int y, int vx, Player player, Image goomba_image)
          pos_x = x;
          pos_y = y;
          first_x = x;
          first_y = y;
          x_speed = vx;          
gi = goomba_image;
          this.player = player;
//--------------------cut out the rest of the code for Goomba ---------------------
     public void DrawGoomba(Graphics g)
//tried this when it gave me the imageUpdate error:
//imageUpdate(gi, 0, pos_x, first_y, 50, 50);
          g.drawImage(gi, pos_x, first_y, 50, 50, this);
}

Similar Messages

  • Loading a tiff and bmp image in a JLabel

    Does anybody knows how to do it in version 1.4.1 ?

    First you need this class as a bitmap loader.
    import java.io.*;
    import java.awt.*;
    import java.awt.image.*;
    public class BitMapLoader
    private BitMapLoader() {}
    /** Create a Java Image from the named file.
    * @param sdir, names the directory,
    * ending with the separator character.
    * @param sfile, names the file,
    * @param comp, any Component as ImageObserver. */
    public static Image loadbitmap (String sdir, String sfile, Component comp) throws FileNotFoundException
    System.out.println("loading:"+sdir+sfile);
    return loadbitmap (new FileInputStream(sdir+sfile), comp);
    /** Create a Java Image from the open stream.
    * @param fs, the open stream.
    * @param comp, any Component as ImageObserver.
    public static Image loadbitmap (InputStream fs, Component comp)
    try
    Image image;
    int bflen=14; // 14 byte BITMAPFILEHEADER
    byte bf[]=new byte[bflen];
    fs.read(bf,0,bflen);
    int bilen=40; // 40-byte BITMAPINFOHEADER
    byte bi[]=new byte[bilen];
    fs.read(bi,0,bilen);
    // Interperet data.
    int nsize = (((int)bf[5]&0xff) << 24)
    | (((int)bf[4]&0xff) << 16)
    | (((int)bf[3]&0xff) << 8)
    | (int)bf[2]&0xff;
    int nbisize = (((int)bi[3]&0xff) << 24)
    | (((int)bi[2]&0xff) << 16)
    | (((int)bi[1]&0xff) << 8)
    | (int)bi[0]&0xff;
    int nwidth = (((int)bi[7]&0xff) << 24)
    | (((int)bi[6]&0xff) << 16)
    | (((int)bi[5]&0xff) << 8)
    | (int)bi[4]&0xff;
    int nheight = (((int)bi[11]&0xff) << 24)
    | (((int)bi[10]&0xff) << 16)
    | (((int)bi[9]&0xff) << 8)
    | (int)bi[8]&0xff;
    int nplanes = (((int)bi[13]&0xff) << 8) | (int)bi[12]&0xff;
    int nbitcount = (((int)bi[15]&0xff) << 8) | (int)bi[14]&0xff;
    // Look for non-zero values to indicate compression
    int ncompression = (((int)bi[19]) << 24)
    | (((int)bi[18]) << 16)
    | (((int)bi[17]) << 8)
    | (int)bi[16];
    int nsizeimage = (((int)bi[23]&0xff) << 24)
    | (((int)bi[22]&0xff) << 16)
    | (((int)bi[21]&0xff) << 8)
    | (int)bi[20]&0xff;
    int nxpm = (((int)bi[27]&0xff) << 24)
    | (((int)bi[26]&0xff) << 16)
    | (((int)bi[25]&0xff) << 8)
    | (int)bi[24]&0xff;
    int nypm = (((int)bi[31]&0xff) << 24)
    | (((int)bi[30]&0xff) << 16)
    | (((int)bi[29]&0xff) << 8)
    | (int)bi[28]&0xff;
    int nclrused = (((int)bi[35]&0xff) << 24)
    | (((int)bi[34]&0xff) << 16)
    | (((int)bi[33]&0xff) << 8)
    | (int)bi[32]&0xff;
    int nclrimp = (((int)bi[39]&0xff) << 24)
    | (((int)bi[38]&0xff) << 16)
    | (((int)bi[37]&0xff) << 8)
    | (int)bi[36]&0xff;
    //System.out.println("Colors important are :"+nclrimp);
    // No Palatte data for 24-bit format but scan lines are
    // padded out to even 4-byte boundaries.
    if (nbitcount==24) {
    int npad = (nsizeimage / nheight) - nwidth * 3;
    int ndata[] = new int [nheight * nwidth];
    byte brgb[] = new byte [( nwidth + npad) * 3 * nheight];
    fs.read (brgb, 0, (nwidth + npad) * 3 * nheight);
    int nindex = 0;
    for (int j = 0; j < nheight; j++) {
    for (int i = 0; i < nwidth; i++) {
    ndata [nwidth * (nheight - j - 1) + i] =
    (255&0xff) << 24
    | (((int)brgb[nindex+2]&0xff) << 16)
    | (((int)brgb[nindex+1]&0xff) << 8)
    | (int)brgb[nindex]&0xff;
    /* System.out.println("Encoded Color at ("
    +i+","+j+")is:"+" (R,G,B)= ("
    +((int)(brgb[2]) & 0xff)+","
    +((int)brgb[1]&0xff)+","
    +((int)brgb[0]&0xff)+")");*/
    nindex += 3; }
    nindex += npad; }
    image = comp.createImage
    ( new MemoryImageSource (nwidth, nheight,
    ndata, 0, nwidth));
    // Have to determine the number of colors, the clrsused
    // parameter is dominant if it is greater than zero. If
    // zero, calculate colors based on bitsperpixel.
    else if (nbitcount == 8) {
    int nNumColors = 0;
    if (nclrused > 0)
    nNumColors = nclrused;
    else
    nNumColors = (1&0xff) << nbitcount;
    // Some bitmaps do not have the sizeimage field calculated
    // Ferret out these cases and fix 'em.
    if (nsizeimage == 0)
    nsizeimage = ((((nwidth*nbitcount)+31) & ~31 ) >> 3);
    nsizeimage *= nheight;
    // Read the palatte colors.
    int npalette[] = new int [nNumColors];
    byte bpalette[] = new byte [nNumColors*4];
    fs.read (bpalette, 0, nNumColors*4);
    int nindex8 = 0;
    for (int n = 0; n < nNumColors; n++) {
    npalette[n] = (255&0xff) << 24
    | (((int)bpalette[nindex8+2]&0xff) << 16)
    | (((int)bpalette[nindex8+1]&0xff) << 8)
    | (int)bpalette[nindex8]&0xff;
    /* System.out.println ("Palette Color "+n
    +" is:"+npalette[n]+" (res,R,G,B)= ("
    +((int)(bpalette[nindex8+3]) & 0xff)+","
    +((int)(bpalette[nindex8+2]) & 0xff)+","
    +((int)bpalette[nindex8+1]&0xff)+","
    +((int)bpalette[nindex8]&0xff)+")");*/
    nindex8 += 4;
    // Read the image data (actually indices into the palette)
    // Scan lines are still padded out to even 4-byte
    // boundaries.
    int npad8 = (nsizeimage / nheight) - nwidth;
    //System.out.println("nPad is:"+npad8);
    int ndata8[] = new int [nwidth*nheight];
    byte bdata[] = new byte [(nwidth+npad8)*nheight];
    fs.read (bdata, 0, (nwidth+npad8)*nheight);
    nindex8 = 0;
    for (int j8 = 0; j8 < nheight; j8++) {
    for (int i8 = 0; i8 < nwidth; i8++) {
    ndata8 [nwidth*(nheight-j8-1)+i8] =
    npalette [((int)bdata[nindex8]&0xff)];
    nindex8++; }
    nindex8 += npad8; }
    image = comp.createImage
    ( new MemoryImageSource (nwidth, nheight,
    ndata8, 0, nwidth));
    else
    System.out.println ("Not a 24-bit or 8-bit Windows Bitmap, aborting...");
    image = (Image)null;
    fs.close();
    return image;
    catch (Exception e)
    System.out.println("Caught exception in loadbitmap!");
    System.err.println(e.getMessage());
    e.printStackTrace();
    return (Image) null;
    }Then in your class that displays the JLabel, do this..
    JLabel label = new JLabel();
    Image bitmapImage = BitMapLoader.loadbitmap(dir, filename, label);
    label.setIcon(new ImageIcon(bitmapImage));
    ..

  • I am trying to import developed images from LightRoom 5 in o Photoshop 6.  I am receiving this message and the images will not open.....'Could not open scratch file because the file is locked, you do not have necessary access permissions or another progra

    I am trying to import developed images from LightRoom 5 Photoshop 6 for further editing.  I am receiving this message and the images will not open.....'Could not open scratch file because the file is locked, or you do not have necessary access permissions or another program is using the file.  Use the 'Properties' command in the Windows Explorer to unlock the file. How do I fix this?  I would greatly appreciate it if you would respond with terms and procedures that a computer ignorant user, such as me, will understand.   Thanks.

    Have you tried restoring the Preferences yet?

  • Web of Trust no longer working with google and bing image searches

    Hello All,
    I have searched and searched but have not found an answer that matches my specifics. Any help would be appreciated.
    I used to be able to do this but now I can no longer search and browse images on google or bing image search and have Web of Trust function. Here is how I am going about it.
    What I use:
    DuckDuckGo's annoymous google or bing image search link when I enter querries. Also, searching directly from Google's or Bing's image search page doesn't work with WOT anymore either.
    Firefox 23.0.1
    The following add-on's:
    Add-block plus 2.3.2
    BetterPrivacy 1.68
    Flagfox 4.2.12
    Ghostery 5.0.4
    Google/Yandex search link fix 1.4.1
    No Script 2.6.7.1
    Web of Trust 20130515
    If anyone has a fix for this please let me know.

    I guess what I learned is that sometimes the best solution is to do nothing and wait for the problem to solve itself! Funny, this has never worked for me before.
    WOT is now working for me but often for only the first few rows of images. That's cool that it is also working with bing images.
    Boudica, thanks for understanding. I am new contributor/ question-asker here on mozilla and may not understand how things are done. I was just frustrated, getting an email saying that my question was answered, logging in to find that it wasn't.
    Now we have the functionality that we wanted, right?

  • What is diff B/W dalta image and reverse image

    What is diff B/W dalta image and reverse image
    Edited by: Philip Eller on Jun 3, 2008 8:44 AM
    Edited by: Philip Eller on Jun 17, 2008 9:18 AM*

    Please post your question to the BW forum.

  • I am trying to use photomerge compose.  I open one standard jpeg image and one image that is my business logo in a png format.  When I select the png image, to extract the logo from it, it appears as all white and will not allow me to select the logo from

    I am trying to use photomerge compose.  I open one standard jpeg image and one image that is my business logo in a png format.  When I select the png image, to extract the logo from it, it appears as all white and will not allow me to select the logo from it.  It has worked in the past but I downloaded the update today and photomerge will not work correctly.  Any ideas?

    hedger,
    How do you expect anyone to help when we don't know a darned thing about the file, abut your setup, exact version of Photoshop and your OS, machine specs, etc.?
    BOILERPLATE TEXT:
    Note that this is boilerplate text.
    If you give complete and detailed information about your setup and the issue at hand,
    such as your platform (Mac or Win),
    exact versions of your OS, of Photoshop (not just "CS6", but something like CS6v.13.0.6) and of Bridge,
    your settings in Photoshop > Preference > Performance
    the type of file you were working on,
    machine specs, such as total installed RAM, scratch file HDs, total available HD space, video card specs, including total VRAM installed,
    what troubleshooting steps you have taken so far,
    what error message(s) you receive,
    if having issues opening raw files also the exact camera make and model that generated them,
    if you're having printing issues, indicate the exact make and model of your printer, paper size, image dimensions in pixels (so many pixels wide by so many pixels high). if going through a RIP, specify that too.
    etc.,
    someone may be able to help you (not necessarily this poster, who is not a Windows user).
    a screen shot of your settings or of the image could be very helpful too.
    Please read this FAQ for advice on how to ask your questions correctly for quicker and better answers:
    http://forums.adobe.com/thread/419981?tstart=0
    Thanks!

  • I am trying to import developed images from LightRoom 5 into Photoshop 6.  I am receiving this message and the images will not open.....'Could not open scratch file because the file is locked, you do not have necessary access permissions or another progra

    I am trying to import developed images from LightRoom 5 into Photoshop 6.  I am receiving this message and the images will not open.....'Could not open scratch file because the file is locked, you do not have necessary access permissions or another program is using the file.  Use the 'properties' command in the Windows Explorer to unlock the file'.  This has not happened before.  How do I change this?

    Could not open a scratch file because the file is locked or you do not have the necessary access privileges. (…) | Mylen…
    Mylenium

  • What is the fastest way to record and write image data?

    Hello,
    I am new to labview and am using the IMAQ software package to record and write data from a CCD camera to the hard drive. The end goal is a program that records and saves as much data as possible as quickly as possible, for experiments lasting on the scale of days. I have been experimenting with the snap, grab, and sequence methods of recording. To save the image data I was told by NI customer support that TDMS streaming would be the fastest method. I have also been experimenting with the TDMS VIs, however I have found the IMAQ Write File 2 VI to be faster in practice. Am I doing something wrong with the TDMS file structure? Is there a more efficient way to convert IMAQ image data to a dataform that can be written as TDMS? I am posting two of my programs to provide a clearer example of what I am trying to do. The first takes a snap of the image and appends it to a TDMS file. The second is the fastest I have found so far and uses Grab to record the images and the IMAQ Write File VI to save them. 
    Thanks
    Attachments:
    Camera Capture (Snap) and stream TDMS.vi ‏24 KB
    Camera Capture (Grab) and write image.vi ‏24 KB

    Hi
    For me it is no surprise that the second VI is faster then the first one, the reason is you can not compare this two VI with each other.
    In the first VI you work with TDMS files, in the second with png files. That would be much faster, because TDMS files need a lot of diskspace.
    Second point, why do you open, write and close for eacht iteration of the for loop a TDMS file in your first VI? That need really a lot of resources, so it coudn´t be fats as well.
    Save your converted pictures in one array, an after the acquisition you can save it in one TDMS file. When you need for each picture a TDMS file you have to know that this need some time to do this.
    So now for the architecture of your first VI, please look to the LL Sequence.vifrom the examples (C:\Program Files\National Instruments\LabVIEW 8.6\examples\IMAQ\IMAQ Low Level.llb\LL Sequence.vi), there you can see how an acquisition of a number of images have been to do.
    When you like it really fast, you make a producer/consumer architecture (see examples in LabVIEW for that).
    So in the first whileloop you acquire the images, write into a queue and in the second, parallel whileloop you read the queue and save the images. (see attachment)
    Hope that helps
    Kind regards
    Beat
    NI Germany
    Attachments:
    ProducerConsumerData.vi ‏10 KB
    ProducerConsumerData_LV8.5.vi ‏12 KB

  • I have an IPad 2 and an Iphone4, but as it suggests that I can click a photo on my iPhone and the image will also reflect simultaneously on my IPad does not happen, though I have activated cloud on my iPhone. What could be the problem.???

    I have an IPad 2 and an Iphone4, but as it suggests that I can click a photo on my iPhone and the image will also reflect simultaneously on my IPad does not happen, though I have activated cloud on my iPhone. What could be the problem.???
    Also in my iPhone4 the photos that I have downloaded manually from my computer cannot be erased from the phone, how do i do this.???

    Sounds like you are not running iOS 5 ..........
    Update your iPad 2 to iOS 5............
    I purchased an iPad 2 for my wife for Xmas and it did not come with iOS 5 so I had to update it......
    http://www.apple.com/icloud/get-started/
    http://support.apple.com/kb/HT4972

  • Efficiency of decoding and displaying image files?

    BRIEF SUMMARY
    My question is this: can Flash Player download JPG and GIF
    files from a server and rapidly open/decode them, ready for
    display, efficiently and
    entirely 'in memory'?
    Would Flex be a good choice of language for developing a RIA
    that needs to continually download lots of JPG and GIF images
    on-the-fly from the server and render them on the screen? I *don't*
    want my application to thrash the hard disc.
    BACKGROUND
    I am designing a 'rich' web app, and I'm investigating
    whether Flex is the right tool for the job.
    Although Flash's animation features are an obvious selling
    point for implementing my user interface, I also need to do some
    server-side rendering. What I want to do is perhaps a little
    unorthodox: I will be generating lots of GIF and JPG files on the
    fly and these will be streamed to the client (along with other
    application data, e.g. in XML format) to update different parts of
    the on-screen document. In need this to happen very quickly (in
    some cases, creating the effect of animation).
    It happens that JPGs and 16-colour GIFs will be, by far, the
    most efficient formats for streaming the images, because of the
    nature of the application. I could of course send the images in
    some proprietary format, geared for my application, but presumably
    decoding the images would be slow as I would have to implement this
    myself in ActionScript, and so I would be limited by the speed of
    Flex 'bytecode'. (I realise Flash is a lot more optimised than it
    once was, but I am hoping to see a gain from using image formats
    that Flash natively understands!)
    Naturally the internet bandwidth should (in principle) be the
    bottleneck. However, assuming I can get my image files to the
    client on time, want I want to know is:
    how efficient is Flash at loading such files?
    Bearing in mind that I'm not just displaying the occasional
    image -- I will be doing this continuously. Most of the images
    won't be huge, but there will be several separate images per
    second.
    The image files will be a mixture of normal colour JPGs and
    4-bit colour GIFs (LZW-compressed). I know that Flash natively
    supports these formats, but depending on how Adobe have implemented
    their LZW/Huffman decoding and so on, and how much overhead there
    is in opening/processing downloaded image files before they are
    ready to 'blit' to the screen, I imagine this could be pretty fast
    or pretty slow!
    If my client only has a modest PC, I don't want the JPG/GIF
    decoding alone to be thrashing his CPU (or indeed the disc) before
    I've even got started on 'Flashy' vector stuff.
    I'm new to Flash, so are there any 'gotchas' I need to know
    about?
    E.g. Would it be fair to assume Flash Player will do the
    decoding of the downloaded image entirely 'in memory' without
    trying to do anything clever like caching the file to disc, or
    calling any libraries which might slow down the whole process? It
    would be no good at all if the images were first written to the
    client's hard disc before being ready to display, for example.
    Further, if I'm doing something a little out-of-the-ordinary,
    and there is no 'guarantee' that images will be loaded quickly,
    what I'm doing might be a bad idea if a later version of Flash
    Player may (for example) suddenly start doing some disc access in
    the process of opening a newly downloaded image. So, while I could
    just 'try it and see', what I really need is some assurance that
    what I'm doing is sensible and is likely to carry on working in
    future.
    Finally, I imagine JPG/GIF decoding could be something that
    would vary from platform to platform (e.g. for the sake of
    argument, Flash Player for Windows could use a highly-optimised
    library, but other versions could be very inefficient).
    This could be the 'make or break' of my application, so all
    advice is welcome! :) Thanks in advance.

    You need a servlet/jsf component to render the image in the response.
    Look at this: http://www.irian.at/myfaces-sandbox/graphicImageDynamic.jsf

  • How to decoding and encoding PNG and GIF images?

    I could decode and encode JPEG images using following create functions which are in com.sun.image.codec.jpeg package.
    JPEGImageDecoder decoder = JPEGCodec          .createJPEGDecoder(inputStream);
    JPEGImageEncoder encoder = JPEGCodec                    .createJPEGEncoder(outputStream);
    But I dont know required package and functions to decode and encode PNG and GIF images. Please help me.

    Is the API that hard to follow?
    ImageIO.read( file/stream/url)
    ImageIO.write( image, format (e.g. PNG, GIF(1), JPEG), file/stream what have you)
    1) Not sure if Java supports GIF saving, it might if you install JAI, or Java 6.

  • Upload and display image in webside

    Hello Friends,
    I am developing an auction web site ,and facing some problem so I need your help.
    There is some confusion about uploading and displaying images in website .In web based
    application if I want to upload images than where have to store the images database or server
    side any folder .I have not idea about that please send your ideas and sussesions.
    Second problem is What is the best way to display images in webside either giving a direct
    path of server side image folder or I need to retrieve all images from database .
    I have no idea about it please send me your guideline which are usefull for me to implement in my
    website.
    what is the correct way to upload and display images in website ?
    Thanks . Have a nice day.

    If you are using a Container you just leave your image files in the home directory of your web application. And forget this idea about database. It´s not necessary in this case.
    To display the images just use HTML, <img src="url">.

  • Make the link from the single cell of Bex Report and the image of bill

    Hi guys,
    my client scan every bill and archive the image by File.net technology.
    In our Bex Report we have the Bill number and we want to make the link from the single cell and the image of bill.
    The possible paths to solve the problem are:
           Replicate the image in BW and crate a link from the single cell and the image of document.
           Create an URL link from the single cell and the image of document archived on File.net server.
    In witch way we can to implement the two paths?
    Thank you.
    Alessandro

    Hi Alessandro,
    Have you seen "How To…Enhance your Web Query with the Table Interface"?
    You can find it in media library:
    https://websmp105.sap-ag.de/~form/sapnet?_SHORTKEY=01100035870000194044
    Best regards,
    Eugene

  • How to play/record at same time and save image from video

    i started working on a project and that made my life hell although it was so simple. reason was that i couldnt find small/simple code to understand problems and no proper documents. . finally i have done that. and here is the code (without much complex code of interface). it shows vidoe, records a small part of it at start and takes a snapshot (no buttons or events involved). hope it might help someone starting to learn JMF.
    import java.io.*;
    import java.awt.*;
    import java.net.*;
    import java.awt.event.*;
    import java.util.Vector;
    import javax.media.*;
    import javax.media.rtp.*;
    import javax.media.rtp.event.*;
    import javax.media.rtp.rtcp.*;
    import javax.media.protocol.*;
    import javax.media.protocol.DataSource;
    import javax.media.format.AudioFormat;
    import javax.media.format.VideoFormat;
    import javax.media.Format;
    import javax.media.format.FormatChangeEvent;
    import javax.media.control.BufferControl;
    import javax.media.control.FrameGrabbingControl;
    import javax.imageio.ImageIO;
    import java.util.Date;
    import javax.media.util.BufferToImage;
    import java.awt.image.BufferedImage;
    * AVReceive2 to receive RTP transmission using the new RTP API.
    public class AVReceive2 implements ReceiveStreamListener, SessionListener,
    ControllerListener
    public static DataSource ds2, ds, ds3;
    String sessions[] = null;
    RTPManager mgrs[] = null;
    Vector playerWindows = null;
    boolean dataReceived = false;
    Object dataSync = new Object();
    public AVReceive2(String sessions[]) {
    this.sessions = sessions;
    public static DataSource getData() {
    return ds;
    protected boolean initialize() {
    try {
    InetAddress ipAddr;
    SessionAddress localAddr = new SessionAddress();
    SessionAddress destAddr;
    mgrs = new RTPManager[sessions.length];
    playerWindows = new Vector();
    SessionLabel session;
    // Open the RTP sessions.
    for (int i = 0; i < sessions.length; i++) {
    // Parse the session addresses.
    try {
    session = new SessionLabel(sessions);
    } catch (IllegalArgumentException e) {
    System.err.println("Failed to parse the session address given: " + sessions[i]);
    return false;
    System.err.println(" - Open RTP session for: addr: " + session.addr + " port: " + session.port + " ttl: " + session.ttl);
    mgrs[i] = (RTPManager) RTPManager.newInstance();
    mgrs[i].addSessionListener(this);
    mgrs[i].addReceiveStreamListener(this);
    ipAddr = InetAddress.getByName(session.addr);
    if( ipAddr.isMulticastAddress()) {
    // local and remote address pairs are identical:
    localAddr= new SessionAddress( ipAddr,
    session.port,
    session.ttl);
    destAddr = new SessionAddress( ipAddr,
    session.port,
    session.ttl);
    } else {
    localAddr= new SessionAddress( InetAddress.getLocalHost(),
    session.port);
    destAddr = new SessionAddress( ipAddr, session.port);
    mgrs[i].initialize( localAddr);
    // You can try out some other buffer size to see
    // if you can get better smoothness.
    BufferControl bc = (BufferControl)mgrs[i].getControl("javax.media.control.BufferControl");
    if (bc != null)
    bc.setBufferLength(350);
    mgrs[i].addTarget(destAddr);
    } catch (Exception e){
    System.err.println("Cannot create the RTP Session: " + e.getMessage());
    return false;
    // Wait for data to arrive before moving on.
    long then = System.currentTimeMillis();
    long waitingPeriod = 30000; // wait for a maximum of 30 secs.
    try{
    synchronized (dataSync) {
    while (!dataReceived &&
    System.currentTimeMillis() - then < waitingPeriod) {
    if (!dataReceived)
    System.err.println(" - Waiting for RTP data to arrive...");
    dataSync.wait(1000);
    } catch (Exception e) {}
    if (!dataReceived) {
    System.err.println("No RTP data was received.");
    close();
    return false;
    return true;
    public boolean isDone() {
    //return playerWindows.size() == 0;
    return false;
    * Close the players and the session managers.
    protected void close() {
    for (int i = 0; i < playerWindows.size(); i++) {
    try {
    ((PlayerWindow)playerWindows.elementAt(i)).close();
    } catch (Exception e) {}
    playerWindows.removeAllElements();
    // close the RTP session.
    for (int i = 0; i < mgrs.length; i++) {
    if (mgrs[i] != null) {
    mgrs[i].removeTargets( "Closing session from AVReceive2");
    mgrs[i].dispose();
    mgrs[i] = null;
    PlayerWindow find(Player p) {
    for (int i = 0; i < playerWindows.size(); i++) {
    PlayerWindow pw = (PlayerWindow)playerWindows.elementAt(i);
    if (pw.player == p)
    return pw;
    return null;
    PlayerWindow find(ReceiveStream strm) {
    for (int i = 0; i < playerWindows.size(); i++) {
    PlayerWindow pw = (PlayerWindow)playerWindows.elementAt(i);
    if (pw.stream == strm)
    return pw;
    return null;
    * SessionListener.
    public synchronized void update(SessionEvent evt) {
    if (evt instanceof NewParticipantEvent) {
    Participant p = ((NewParticipantEvent)evt).getParticipant();
    System.err.println(" - A new participant had just joined: " + p.getCNAME());
    * ReceiveStreamListener
    public synchronized void update( ReceiveStreamEvent evt) {
    RTPManager mgr = (RTPManager)evt.getSource();
    Participant participant = evt.getParticipant();     // could be null.
    ReceiveStream stream = evt.getReceiveStream(); // could be null.
    if (evt instanceof RemotePayloadChangeEvent) {
    System.err.println(" - Received an RTP PayloadChangeEvent.");
    System.err.println("Sorry, cannot handle payload change.");
    System.exit(0);
    else if (evt instanceof NewReceiveStreamEvent) {
    try {
    stream = ((NewReceiveStreamEvent)evt).getReceiveStream();
    //DataSource
    ds2 = stream.getDataSource(); // this original cant be used now
    // ds is used to play video
    ds = Manager.createCloneableDataSource(ds2);
    // ds3 is used to record video
    ds3 = ((SourceCloneable)ds).createClone();
    // Find out the formats.
    RTPControl ctl = (RTPControl)ds.getControl("javax.media.rtp.RTPControl");
    if (ctl != null){
    System.err.println(" - Recevied new RTP stream: " + ctl.getFormat());
    } else
    System.err.println(" - Recevied new RTP stream");
    if (participant == null)
    System.err.println(" The sender of this stream had yet to be identified.");
    else {
    System.err.println(" The stream comes from: " + participant.getCNAME());
    // create a player by passing datasource to the Media Manager
    Player p = javax.media.Manager.createPlayer(ds);
    if (p == null)
    return;
    p.addControllerListener(this);
    p.realize();
    PlayerWindow pw = new PlayerWindow(p, stream);
    playerWindows.addElement(pw);
    // Notify intialize() that a new stream had arrived.
    synchronized (dataSync) {
    dataReceived = true;
    dataSync.notifyAll();
    } catch (Exception e) {
    e.printStackTrace();
    return;
    else if (evt instanceof StreamMappedEvent) {
    if (stream != null && stream.getDataSource() != null) {
    DataSource ds = stream.getDataSource();
    // Find out the formats.
    RTPControl ctl = (RTPControl)ds.getControl("javax.media.rtp.RTPControl");
    System.err.println(" - The previously unidentified stream ");
    if (ctl != null)
    System.err.println(" " + ctl.getFormat());
    System.err.println(" had now been identified as sent by: " + participant.getCNAME());
    else if (evt instanceof ByeEvent) {
    System.err.println(" - Got \"bye\" from: " + participant.getCNAME());
    PlayerWindow pw = find(stream);
    if (pw != null) {
    pw.close();
    playerWindows.removeElement(pw);
    * ControllerListener for the Players.
    public synchronized void controllerUpdate(ControllerEvent ce) {
    Player p = (Player)ce.getSourceController();
    if (p == null)
    return;
    // Get this when the internal players are realized.
    if (ce instanceof RealizeCompleteEvent) {
    PlayerWindow pw = find(p);
    if (pw == null) {
    // Some strange happened.
    System.err.println("Internal error!");
    System.exit(-1);
    pw.initialize();
    pw.setVisible(true);
    p.start();
    try {
    // make it wait so that video can start otherwise image will be null. u must call this method with a button
    Thread.sleep(2500);
    catch (Exception e) {
    e.printStackTrace();
    // Grab a frame from the capture device
    FrameGrabbingControl frameGrabber = (FrameGrabbingControl) p.getControl(
    "javax.media.control.FrameGrabbingControl");
    Buffer buf = frameGrabber.grabFrame();
    // Convert frame to an buffered image so it can be processed and saved
    Image img = (new BufferToImage( (VideoFormat) buf.getFormat()).
    createImage(buf));
    BufferedImage buffImg = new BufferedImage(img.getWidth(null),
    img.getHeight(null),
    BufferedImage.TYPE_INT_RGB);
    Graphics2D g = buffImg.createGraphics();
    g.drawImage(img, null, null);
    // Overlay curent time on image
    g.setColor(Color.RED);
    g.setFont(new Font("Verdana", Font.BOLD, 12));
    g.drawString( (new Date()).toString(), 10, 25);
    try { // Save image to disk as PNG
    ImageIO.write(buffImg, "jpeg", new File("c:\\webcam.jpg"));
    catch (Exception e) {
    e.printStackTrace();
    // this will record the video for a few seconds. this should also be called properly by menu or buttons
    record(ds3);
    if (ce instanceof ControllerErrorEvent) {
    p.removeControllerListener(this);
    PlayerWindow pw = find(p);
    if (pw != null) {
    pw.close();
    playerWindows.removeElement(pw);
    System.err.println("AVReceive2 internal error: " + ce);
    * A utility class to parse the session addresses.
    class SessionLabel {
    public String addr = null;
    public int port;
    public int ttl = 1;
    SessionLabel(String session) throws IllegalArgumentException {
    int off;
    String portStr = null, ttlStr = null;
    if (session != null && session.length() > 0) {
    while (session.length() > 1 && session.charAt(0) == '/')
    session = session.substring(1);
    // Now see if there's a addr specified.
    off = session.indexOf('/');
    if (off == -1) {
    if (!session.equals(""))
    addr = session;
    } else {
    addr = session.substring(0, off);
    session = session.substring(off + 1);
    // Now see if there's a port specified
    off = session.indexOf('/');
    if (off == -1) {
    if (!session.equals(""))
    portStr = session;
    } else {
    portStr = session.substring(0, off);
    session = session.substring(off + 1);
    // Now see if there's a ttl specified
    off = session.indexOf('/');
    if (off == -1) {
    if (!session.equals(""))
    ttlStr = session;
    } else {
    ttlStr = session.substring(0, off);
    if (addr == null)
    throw new IllegalArgumentException();
    if (portStr != null) {
    try {
    Integer integer = Integer.valueOf(portStr);
    if (integer != null)
    port = integer.intValue();
    } catch (Throwable t) {
    throw new IllegalArgumentException();
    } else
    throw new IllegalArgumentException();
    if (ttlStr != null) {
    try {
    Integer integer = Integer.valueOf(ttlStr);
    if (integer != null)
    ttl = integer.intValue();
    } catch (Throwable t) {
    throw new IllegalArgumentException();
    * GUI classes for the Player.
    class PlayerWindow extends Frame {
    Player player;
    ReceiveStream stream;
    PlayerWindow(Player p, ReceiveStream strm) {
    player = p;
    stream = strm;
    public void initialize() {
    add(new PlayerPanel(player));
    public void close() {
    player.close();
    setVisible(false);
    dispose();
    public void addNotify() {
    super.addNotify();
    pack();
    * GUI classes for the Player.
    class PlayerPanel extends Panel {
    Component vc, cc;
    PlayerPanel(Player p) {
    setLayout(new BorderLayout());
    if ((vc = p.getVisualComponent()) != null)
    add("Center", vc);
    if ((cc = p.getControlPanelComponent()) != null)
    add("South", cc);
    public Dimension getPreferredSize() {
    int w = 0, h = 0;
    if (vc != null) {
    Dimension size = vc.getPreferredSize();
    w = size.width;
    h = size.height;
    if (cc != null) {
    Dimension size = cc.getPreferredSize();
    if (w == 0)
    w = size.width;
    h += size.height;
    if (w < 160)
    w = 160;
    return new Dimension(w, h);
    public void record(DataSource ds) {
    Format formats[] = new Format[1];
    formats[0] = new VideoFormat(VideoFormat.CINEPAK);
    FileTypeDescriptor outputType =
    new FileTypeDescriptor("video.x_msvideo");
    Processor p = null;
    try {
    p = Manager.createRealizedProcessor(new ProcessorModel(ds,formats,
    outputType));
    } catch (IOException e) {
    e.printStackTrace();
    } catch (NoProcessorException e) {
    e.printStackTrace();
    } catch (CannotRealizeException e) {
    e.printStackTrace();
    // get the output of the processor
    DataSource source = p.getDataOutput();
    // create a File protocol MediaLocator with the location
    // of the file to
    // which bits are to be written
    MediaLocator dest = new MediaLocator("file://vvv.mpeg");
    // create a datasink to do the file writing & open the
    // sink to make sure
    // we can write to it.
    DataSink filewriter = null;
    try {
    filewriter = Manager.createDataSink(source, dest);
    filewriter.open();
    } catch (NoDataSinkException e) {
    e.printStackTrace();
    } catch (IOException e) {
    e.printStackTrace();
    } catch (SecurityException e) {
    e.printStackTrace();
    // now start the filewriter and processor
    try {
    filewriter.start();
    } catch (IOException e) {
    e.printStackTrace();
    p.start();
    try {
    Thread.sleep(10000);
    }catch(Exception e) { }
    p.close();
    filewriter.close();
    // stop and close the processor when done capturing...
    // close the datasink when EndOfStream event is received...
    public static void main(String argv[]) {
    //     if (argv.length == 0)
    //     prUsage();
    String[] a = new String[1];
    a[0] = ("192.168.0.45/4002");
    AVReceive2 avReceive = new AVReceive2(a);
    if (!avReceive.initialize()) {
    System.err.println("Failed to initialize the sessions.");
    System.exit(-1);
    // Check to see if AVReceive2 is done.
    try {
    while (!avReceive.isDone())
    Thread.sleep(1000);
    } catch (Exception e) {}
    System.err.println("Exiting AVReceive2");
    static void prUsage() {
    System.err.println("Usage: AVReceive2 <session> <session> ...");
    System.err.println(" <session>: <address>/<port>/<ttl>");
    //System.exit(0);
    }// end of AVReceive2
    so here the code. all messed up. coz i have just completed it and havent worked on interface or formatting this code properly (didnt have much time). but hope it will help. ask me if u have any questions. dont want others to have those basic problems that i had to face.

    u did a good effort for the JMF beginners i appreciate that....thanks i lot....i need you help in a project in
    which i have to connect to a d-link 950G IP camera and process that
    mpeg-4 stream (i know there are some problems in JMF and mpeg4) and show it over applet of JFrame.
    IP is 172.25.35.22
    Edited by: alchemist on Jul 16, 2008 6:09 AM

  • Mac OSX, 10.7.5, LR 5.6  After creating a new folder in the Destination section and importing images, the new folder name appears as 2010, no matter what name I give it.  Why is it doing this?

    Mac OSX, 10.7.5, LR 5.6  After creating a new folder in the Destination section and importing images, the new folder name appears as 2010, no matter what name I give it.  Why is it doing this?

    I am experiencing Mavericks failing to copy subdirectories from usb sticks, I am backing up game saves from a console. Both sticks I use are fine, same permissions of course since the console wrote the files. Sometimes it copies, sometimes it doesn't. It seems to be related to the mounting process.
    Thank God Apple hasn't (yet) broken bash.

Maybe you are looking for

  • Problem getting blank DVDs to show up on desktop or in iTunes

    Hello, I have been trying to burn playlists in itunes onto a blank dvd. I can burn CDs, but when I try to insert a blank DVD, it checks media and spits it back out. Neither will my MAC show the blank dvd on my desktop when I insert it outside of iTun

  • How do you make Flash Stay on top of any other programs

    Does anyone know what script I can use to make my flash intro stay on top of another .exe file that is going to open after my intro starts. I need the other .exe to load in the background where it is not visible to the user. I need my flash intro to

  • Profile customized attribute is not working?

    Hi, I downloaded ‘WCSpacesExtensions’ project from Oracle because I want to add some customize attributes to Profile. I added ‘project’ to ExtendedProfileAttributes.java, and created getter and setter methods. In a jsff, this is my EL #{wcProfileCust

  • SCSI drive recognition

    I recently added drives to my G4 and moved the PCI SCSI card to a new slot. After rebooting the system now registers my 40G SCSI drive as new hardware and I cant seem to figure out how to save the info on the disk. I even moved it back to the origina

  • TS1717 Itunes has been "processing file" of my down load of Badlands for 8 hours

    Itunes has been "processing file" of my down load of Badlands for 8 hours. What is going on?