1 /* 2 * v4l-test: Test environment for Video For Linux Two API 3 * 4 * 17 Jul 2009 0.3 show_v4l2_frmsizeenum() added 5 * 5 Jul 2009 0.2 show_v4l2_input() introduced 6 * 7 May 2009 0.1 First release 7 * 8 * Written by Mrton Nmeth <nm127 (at) freemail.hu> 9 * Released under GPL 10 */ 11 12 #include <stdio.h> 13 #include <sys/types.h> 14 #include <sys/stat.h> 15 #include <fcntl.h> 16 #include <unistd.h> 17 #include <sys/ioctl.h> 18 #include <errno.h> 19 #include <string.h> 20 21 #include <linux/videodev2.h> 22 #include <linux/errno.h> 23 24 #include <CUnit/CUnit.h> 25 26 #include "v4l2_test.h" 27 #include "dev_video.h" 28 #include "video_limits.h" 29 30 #include "test_VIDIOC_REQBUFS.h" 31 32 void show_v4l2_requestbuffers(struct v4l2_requestbuffers *reqbuf) 33 { 34 dprintf("\treqbuf = { " 35 ".count=%u, " 36 ".type=%i, " 37 ".memory=%i, " 38 ".reserved = { 0x%X, 0x%X } " 39 "}\n", 40 reqbuf->count, 41 reqbuf->type, 42 reqbuf->memory, reqbuf->reserved[0], reqbuf->reserved[1] 43 ); 44 } 45 46 void show_v4l2_buffer(struct v4l2_buffer *buf) 47 { 48 unsigned int i; 49 50 dprintf("\tbuf = { " 51 ".index=%u, " 52 ".type=%i, " 53 ".bytesused=%u, " 54 ".flags=0x%x, " 55 ".field=%i, " 56 ".timestamp = { tv_sec=%lu, tv_usec=%lu }, " 57 ".timecode = { " 58 ".type=%u, " 59 ".flags=0x%x, " 60 ".frames=%u, " 61 ".seconds=%u, " 62 ".minutes=%u, " 63 ".hours=%u, " 64 ".userbits = { 0x%x, 0x%x, 0x%x, 0x%x } " 65 " }, " 66 ".sequence=%u, " 67 ".memory=%i, ", 68 buf->index, 69 buf->type, 70 buf->bytesused, 71 buf->flags, 72 buf->field, 73 buf->timestamp.tv_sec, 74 buf->timestamp.tv_usec, 75 buf->timecode.type, 76 buf->timecode.flags, 77 buf->timecode.frames, 78 buf->timecode.seconds, 79 buf->timecode.minutes, 80 buf->timecode.hours, 81 buf->timecode.userbits[0], 82 buf->timecode.userbits[1], 83 buf->timecode.userbits[2], 84 buf->timecode.userbits[3], buf->sequence, buf->memory); 85 86 switch (buf->memory) { 87 case V4L2_MEMORY_USERPTR: 88 dprintf(".m.userptr=0x%lx, ", buf->m.userptr); 89 for (i = sizeof(buf->m.userptr); i < sizeof(buf->m); i++) { 90 dprintf("((__u8*)&.m)[%u]=0x%x, ", 91 i, ((__u8 *) & buf->m)[i]); 92 } 93 break; 94 case V4L2_MEMORY_MMAP: 95 case V4L2_MEMORY_OVERLAY: 96 default: 97 dprintf(".m.offset=%u, ", buf->m.offset); 98 for (i = sizeof(buf->m.offset); i < sizeof(buf->m); i++) { 99 dprintf("((__u8*)&.m)[%u]=0x%x, ", 100 i, ((__u8 *) & buf->m)[i]); 101 } 102 } 103 104 dprintf(".length=%u, " 105 ".input=%u, " 106 ".reserved=0x%x " 107 "}\n", buf->length, buf->input, buf->reserved); 108 109 } 110 111 void show_v4l2_input(struct v4l2_input *input) 112 { 113 dprintf("\tinput = {.index=%u, .name=\"%s\", " 114 ".type=0x%X, .audioset=0x%X, .tuner=0x%X, " 115 ".std=%llX, " 116 ".status=0x%X, " 117 ".reserved[]={ 0x%X, 0x%X, 0x%X, 0x%X } }\n", 118 input->index, 119 input->name, 120 input->type, 121 input->audioset, 122 input->tuner, 123 input->std, 124 input->status, 125 input->reserved[0], 126 input->reserved[1], input->reserved[2], input->reserved[3] 127 ); 128 } 129 130 void show_v4l2_frmsizeenum(struct v4l2_frmsizeenum *framesize) 131 { 132 dprintf("\tframesize = { .index=%u, " 133 ".pixel_format=0x%x, " 134 ".type=%u, ", 135 framesize->index, framesize->pixel_format, framesize->type); 136 137 switch (framesize->type) { 138 case V4L2_FRMSIZE_TYPE_DISCRETE: 139 dprintf(".discrete = { .width=%u, heigth=%u }, ", 140 framesize->discrete.width, framesize->discrete.height); 141 break; 142 case V4L2_FRMSIZE_TYPE_CONTINUOUS: 143 case V4L2_FRMSIZE_TYPE_STEPWISE: 144 dprintf(".stepwise = { .min_width=%u, " 145 ".max_width=%u, " 146 ".step_width=%u, " 147 ".min_height=%u, " 148 ".max_height=%u, " 149 ".step_height=%u }, ", 150 framesize->stepwise.min_width, 151 framesize->stepwise.max_width, 152 framesize->stepwise.step_width, 153 framesize->stepwise.min_height, 154 framesize->stepwise.max_height, 155 framesize->stepwise.step_height); 156 break; 157 default: 158 ; 159 } 160 161 dprintf(".reserved = { 0x%x, 0x%x } }\n", 162 framesize->reserved[0], framesize->reserved[1] 163 ); 164 165 } 166