Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

java.lang.OutOfMemoryError #16

Open
GoogleCodeExporter opened this issue Feb 3, 2016 · 17 comments
Open

java.lang.OutOfMemoryError #16

GoogleCodeExporter opened this issue Feb 3, 2016 · 17 comments

Comments

@GoogleCodeExporter
Copy link

What steps will reproduce the problem?
1. Connect my non-rooted Motorola Droid to the system in debug mode and
mount is
2. launch android screencast app and attempt to connect to my droid with
agent specified as 127.0.0.1
3. I get the following exception back
java.lang.OutOfMemoryError: Java heap space
    at java.awt.image.DataBufferInt.<init>(Unknown Source)
    at java.awt.image.Raster.createPackedRaster(Unknown Source)
    at java.awt.image.DirectColorModel.createCompatibleWritableRaster(Unknown
Source)
    at java.awt.image.BufferedImage.<init>(Unknown Source)
    at
net.srcz.android.screencast.injector.ScreenCaptureThread.display(ScreenCaptureTh
read.java:168)
    at
net.srcz.android.screencast.injector.ScreenCaptureThread.fetchImage(ScreenCaptur
eThread.java:107)
    at
net.srcz.android.screencast.injector.ScreenCaptureThread.run(ScreenCaptureThread
.java:50)



What is the expected output? What do you see instead?
I'd like to see it running.

What version of the product are you using? On what operating system?
the latest

Please provide any additional information below.
Does my device need to be rooted? I am new with android so dont know much
about it. 

Original issue reported on code.google.com by gurpreet...@gmail.com on 19 Nov 2009 at 11:32

@GoogleCodeExporter
Copy link
Author

I get the same error on my Motorola Droid.  I used pdanet to install the ADB 
driver
and verified it was the most recent driver by trying to update using the SDK 
USB drivers.

Original comment by joel%kle...@gtempaccount.com on 19 Nov 2009 at 5:18

@GoogleCodeExporter
Copy link
Author

Same error on my Droid, happens on Windows or Linux version of the SDK using 
Java 1.6 
JRE latest version.

Original comment by jper...@gmail.com on 23 Nov 2009 at 9:14

@GoogleCodeExporter
Copy link
Author

I haven't looked at the code at all, but is the buffer that its reading the 
image into, large enough for the extra 
resolution of the Droid?

Original comment by cole.mickens on 14 Dec 2009 at 1:00

@GoogleCodeExporter
Copy link
Author

I'd love to donate to this initiative, but please address this issue. Now that 
droid
has been rooted, a lot of people would want this app to be run with the droid. 
Is
there anyway we (droid owners) can help you in investigating as to what could 
be the
issue?

Original comment by gurpreet...@gmail.com on 14 Dec 2009 at 2:01

@GoogleCodeExporter
Copy link
Author

Newest release eliminates this error.   Droid comes up but screen resolution 
appears 
jumbled and can not see screen effectively.   You can see when changes are 
occuring, 
but cannot make out what screen says

Original comment by tjcsm...@gmail.com on 21 Dec 2009 at 3:48

@GoogleCodeExporter
Copy link
Author

Confirming the behavior tjcsmith mentioned. Attached a screen shot as well.

Original comment by gurpreet...@gmail.com on 21 Dec 2009 at 5:26

Attachments:

@GoogleCodeExporter
Copy link
Author

If the rawImage is passed to display, then the following changes to the source 
will 
work:

1.  Set the BufferedImage to use a type of TYPE_INT_ARGB
2.  Replace the RGB loop you have with the below (borrowed from droidEx code)

                int index = 0;
        int indexInc = rawImage.bpp >> 3;

        for (int y = 0; y < rawImage.height; y++) {
            for (int x = 0; x < rawImage.width; x++, index += indexInc) {
                int value = rawImage.getARGB(index);
                image.setRGB(x, y, value);
            }
        }


3.  This now displays properly on a Droid.  However mouse/keyboard input not 
quite 
working

Original comment by tjcsm...@gmail.com on 22 Dec 2009 at 2:21

@GoogleCodeExporter
Copy link
Author

"3.  This now displays properly on a Droid.  However mouse/keyboard input not 
quite 
working"
Is it working for you tjcsSmith? What shall i do to atleast see the proper 
image. I
am a nooB with Android development so don't know what needs to be done with the 
code
you have provided. 

I feel good about the fact that there is no error anymore. At least it's some 
progress.
Thanks

Original comment by gurpreet...@gmail.com on 22 Dec 2009 at 4:05

@GoogleCodeExporter
Copy link
Author

My comments were to the developer.  I'm not comfortable submitting the code 
changes 
since I only have one device to test on.

But the code changes are within:
net.srcz.androidscreencast.api.injector.ScreenCaptureThread.java

In the function fetchImage, there is a call:
 display(rawImage.data,rwidth,rheight);
which I changed to:
 display(rawImage.data,rwidth,rheight,rawImage);

Then in that same component, there is a function:
 public void display(byte[] buffer, int width, int height) {
which I changed to:
 public void display(byte[] buffer, int width, int height,RawImage rawImage) {

Then within that function I replaced the code:
        int index = 0;
        for (int y = 0; y < height; y++) {
            for (int x = 0; x < width; x++) {
                int value = buffer[index++] & 0xff;
                value |= buffer[index++] << 8 & 0xff00;
                int r = (value >> 11 & 0x1f) << 3;
                int g = (value >> 5 & 0x3f) << 2;
                int b = (value & 0x1f) << 3;

                value = 0xFF << 24 | r << 16 | g << 8 | b;
                if (landscape)
                    image.setRGB(y, width - x - 1, value);
                else
                    image.setRGB(x, y, value);
            }
        }

with:

        int index = 0;
        int indexInc = rawImage.bpp >> 3;

        for (int y = 0; y < rawImage.height; y++) {
            for (int x = 0; x < rawImage.width; x++, index += indexInc) {
                int value = rawImage.getARGB(index);
                if (landscape)
                    image.setRGB(y, width - x - 1, value);
                else
                    image.setRGB(x, y, value);
            }
        }

Original comment by tjcsm...@gmail.com on 22 Dec 2009 at 3:20

@GoogleCodeExporter
Copy link
Author

To the developer,

Could you please incorporate the above code? I'd love to have this whole thing
working with my Droid.

Thanks to everybody :)

Original comment by gurpreet...@gmail.com on 23 Dec 2009 at 3:22

@GoogleCodeExporter
Copy link
Author

wow, thank you all !
I've only a G2 so i can't test on the droid...
I'll test your change on my phone, if it works ok, i'll incorporate it to 0.4

Original comment by thiel.al...@gmail.com on 28 Dec 2009 at 9:20

@GoogleCodeExporter
Copy link
Author

Issue 22 has been merged into this issue.

Original comment by thiel.al...@gmail.com on 28 Dec 2009 at 9:24

@GoogleCodeExporter
Copy link
Author

Original comment by thiel.al...@gmail.com on 28 Dec 2009 at 9:24

  • Changed state: Accepted
  • Added labels: Priority-High
  • Removed labels: Priority-Medium

@GoogleCodeExporter
Copy link
Author

YIPPEEE. I can see my droid just fine. Thanks to the dev and tjcSmith. 
Fantastic job.

Now what would it take to have the mouse and keys working for the droid as well?

Thanks a lot
G

Original comment by gurpreet...@gmail.com on 28 Dec 2009 at 6:47

@GoogleCodeExporter
Copy link
Author

I would LOVE to see this app working on the droid with full mouse and keyboard
function. Let me know what I need to do to help and I will do what I can. I have
tested and mine displays fine like others but no kb/mouse function other then 
the
right click. 

Original comment by zerf2...@gmail.com on 5 Jan 2010 at 5:41

@GoogleCodeExporter
Copy link
Author

See Issue #13 for a hack to get it working on a rooted droid.  Basically 
starting an 
emulator from the SDK "Virtual Devices" and getting application running on 
that, 
copying the /data/dalvik-cache file from the emulator to your PC, and then 
getting that 
file onto /data/dalvik-cache on your rooted droid

Original comment by tjcsm...@gmail.com on 5 Jan 2010 at 4:02

@GoogleCodeExporter
Copy link
Author

OutOfMemoryError seems to occure when using Android SDK 2.0 devices...
There have been some change to screen capture protocol

Original comment by thiel.al...@gmail.com on 26 Jan 2010 at 4:43

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant