Example #1
0
int readframe(void)
{

    struct v4l2_buffer buf;
    unsigned int i;

    CLEAR (buf);

    buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
    buf.memory = V4L2_MEMORY_MMAP;

    if (-1 == xioctl (fd, VIDIOC_DQBUF, &buf)) {
        switch (errno) {
        case EAGAIN:
            return 0;
        case EIO:
        default:
            return errnoexit ("VIDIOC_DQBUF");
        }
    }

    assert (buf.index < n_buffers);

    processimage (buffers[buf.index].start);

    if (-1 == xioctl (fd, VIDIOC_QBUF, &buf))
        return errnoexit ("VIDIOC_QBUF");

    return 1;
}
Example #2
0
int readframe(int i)
{

	struct v4l2_buffer buf;

	CLEAR (buf);

	buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
	buf.memory = V4L2_MEMORY_MMAP;

	if (-1 == xioctl (fd[i], VIDIOC_DQBUF, &buf)) {
		switch (errno) {
			case EAGAIN:
				return 0;
			case EIO:
			default:
				return errnoexit ("VIDIOC_DQBUF");
		}
	}

	assert (buf.index < n_buffers[i]);

	processimage (i, buffers[i][buf.index].start, buffers[i][buf.index].length);

	if (-1 == xioctl (fd[i], VIDIOC_QBUF, &buf)){
		LOGE("in readframe");
		return errnoexit ("VIDIOC_QBUF");
	}

	return 1;
}
Example #3
0
int Java_com_example_android_wearable_mjpegviewwear_MjpegInputStream_pixeltobmp( JNIEnv* env,jobject thiz,
        jbyteArray jp, jint l, jobject bmp) {



    jboolean b;

    jbyte *p=(*env)->GetByteArrayElements(env,jp,&b);

    processimage ((const void *)p, l);

    AndroidBitmapInfo  info;
    void*              pixels;
    int                ret;
    int i;
    int *colors;

    int width = IMG_WIDTH;
    int height = IMG_HEIGHT;


    if(bmp==NULL) return;
    if ((ret = AndroidBitmap_getInfo(env, bmp, &info)) < 0) {
        LOGE("AndroidBitmap_getInfo() failed ! error=%d", ret);
        (*env)->ReleaseByteArrayElements(env, jp, p, 0);
        return -1;
    }

    if (info.format != ANDROID_BITMAP_FORMAT_RGBA_8888) {
        LOGE("Bitmap format is not RGBA_8888 !");
        (*env)->ReleaseByteArrayElements(env, jp, p, 0);
        return -1;
    }
    if (info.width != IMG_WIDTH || info.height != IMG_HEIGHT) {
        LOGE("Bitmap size differs !");
        (*env)->ReleaseByteArrayElements(env, jp, p, 0);
        return -1;
    }


    if ((ret = AndroidBitmap_lockPixels(env, bmp, &pixels)) < 0) {
        LOGE("AndroidBitmap_lockPixels() failed ! error=%d", ret);
    }


    colors = (int*)pixels;
    int *lrgb = &rgb[0];

    for(i=0 ; i<width*height ; i++) {
        *colors++ = *lrgb++;
    }

    AndroidBitmap_unlockPixels(env, bmp);

    (*env)->ReleaseByteArrayElements(env, jp, p, 0);

    return 0;
}