blob: 466f76e3acbbdfbdf545dba73c6acaddc442dcce [file] [log] [blame]
/*
* v4l-test: Test environment for Video For Linux Two API
*
* 17 Jul 2009 0.3 show_v4l2_frmsizeenum() added
* 5 Jul 2009 0.2 show_v4l2_input() introduced
* 7 May 2009 0.1 First release
*
* Written by Márton Németh <nm127@freemail.hu>
* Released under GPL
*/
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/ioctl.h>
#include <errno.h>
#include <string.h>
#include <linux/videodev2.h>
#include <linux/errno.h>
#include <CUnit/CUnit.h>
#include "v4l2_test.h"
#include "dev_video.h"
#include "video_limits.h"
#include "test_VIDIOC_REQBUFS.h"
void show_v4l2_requestbuffers(struct v4l2_requestbuffers *reqbuf) {
dprintf("\treqbuf = { "
".count=%u, "
".type=%i, "
".memory=%i, "
".reserved = { 0x%X, 0x%X } "
"}\n",
reqbuf->count,
reqbuf->type,
reqbuf->memory,
reqbuf->reserved[0],
reqbuf->reserved[1]
);
}
void show_v4l2_buffer(struct v4l2_buffer *buf) {
unsigned int i;
dprintf("\tbuf = { "
".index=%u, "
".type=%i, "
".bytesused=%u, "
".flags=0x%x, "
".field=%i, "
".timestamp = { tv_sec=%lu, tv_usec=%lu }, "
".timecode = { "
".type=%u, "
".flags=0x%x, "
".frames=%u, "
".seconds=%u, "
".minutes=%u, "
".hours=%u, "
".userbits = { 0x%x, 0x%x, 0x%x, 0x%x } "
" }, "
".sequence=%u, "
".memory=%i, ",
buf->index,
buf->type,
buf->bytesused,
buf->flags,
buf->field,
buf->timestamp.tv_sec,
buf->timestamp.tv_usec,
buf->timecode.type,
buf->timecode.flags,
buf->timecode.frames,
buf->timecode.seconds,
buf->timecode.minutes,
buf->timecode.hours,
buf->timecode.userbits[0],
buf->timecode.userbits[1],
buf->timecode.userbits[2],
buf->timecode.userbits[3],
buf->sequence,
buf->memory
);
switch (buf->memory) {
case V4L2_MEMORY_USERPTR:
dprintf(".m.userptr=0x%lx, ",
buf->m.userptr);
for (i = sizeof(buf->m.userptr); i < sizeof(buf->m); i++) {
dprintf("((__u8*)&.m)[%u]=0x%x, ",
i, ((__u8*)&buf->m)[i]);
}
break;
case V4L2_MEMORY_MMAP:
case V4L2_MEMORY_OVERLAY:
default:
dprintf(".m.offset=%u, ",
buf->m.offset);
for (i = sizeof(buf->m.offset); i < sizeof(buf->m); i++) {
dprintf("((__u8*)&.m)[%u]=0x%x, ",
i, ((__u8*)&buf->m)[i]);
}
}
dprintf(".length=%u, "
".input=%u, "
".reserved=0x%x "
"}\n",
buf->length,
buf->input,
buf->reserved
);
}
void show_v4l2_input(struct v4l2_input *input) {
dprintf("\tinput = {.index=%u, .name=\"%s\", "
".type=0x%X, .audioset=0x%X, .tuner=0x%X, "
".std=%llX, "
".status=0x%X, "
".reserved[]={ 0x%X, 0x%X, 0x%X, 0x%X } }\n",
input->index,
input->name,
input->type,
input->audioset,
input->tuner,
input->std,
input->status,
input->reserved[0],
input->reserved[1],
input->reserved[2],
input->reserved[3]
);
}
void show_v4l2_frmsizeenum(struct v4l2_frmsizeenum* framesize) {
dprintf("\tframesize = { .index=%u, "
".pixel_format=0x%x, "
".type=%u, ",
framesize->index,
framesize->pixel_format,
framesize->type
);
switch (framesize->type) {
case V4L2_FRMSIZE_TYPE_DISCRETE:
dprintf(".discrete = { .width=%u, heigth=%u }, ",
framesize->discrete.width,
framesize->discrete.height);
break;
case V4L2_FRMSIZE_TYPE_CONTINUOUS:
case V4L2_FRMSIZE_TYPE_STEPWISE:
dprintf(".stepwise = { .min_width=%u, "
".max_width=%u, "
".step_width=%u, "
".min_height=%u, "
".max_height=%u, "
".step_height=%u }, ",
framesize->stepwise.min_width,
framesize->stepwise.max_width,
framesize->stepwise.step_width,
framesize->stepwise.min_height,
framesize->stepwise.max_height,
framesize->stepwise.step_height
);
break;
default:
;
}
dprintf(".reserved = { 0x%x, 0x%x } }\n",
framesize->reserved[0],
framesize->reserved[1]
);
}