gettimeofday(&t1, NULL);
if (stat(dev_name, &st) < 0) {
- fprintf(stdout, "[Webcam] <WARNING> Cannot identify '%s': %s\n",
+ INFO("<WARNING> Cannot identify '%s': %s\n",
dev_name, strerror(errno));
} else {
if (!S_ISCHR(st.st_mode)) {
- fprintf(stdout, "[Webcam] <WARNING>%s is no character device\n",
+ INFO("<WARNING>%s is no character device\n",
dev_name);
}
}
tmp_fd = open(dev_name, O_RDWR | O_NONBLOCK, 0);
if (tmp_fd < 0) {
- fprintf(stdout, "[Webcam] Camera device open failed: %s\n", dev_name);
+ ERR("Camera device open failed: %s\n", dev_name);
gettimeofday(&t2, NULL);
- fprintf(stdout, "[Webcam] Elapsed time: %lu:%06lu\n",
+ ERR("Elapsed time: %lu:%06lu\n",
t2.tv_sec-t1.tv_sec, t2.tv_usec-t1.tv_usec);
return ret;
}
if (ioctl(tmp_fd, VIDIOC_QUERYCAP, &cap) < 0) {
- fprintf(stdout, "[Webcam] Could not qeury video capabilities\n");
+ ERR("Could not qeury video capabilities\n");
close(tmp_fd);
gettimeofday(&t2, NULL);
- fprintf(stdout, "[Webcam] Elapsed time: %lu:%06lu\n",
+ ERR("Elapsed time: %lu:%06lu\n",
t2.tv_sec-t1.tv_sec, t2.tv_usec-t1.tv_usec);
return ret;
}
if (!(cap.capabilities & V4L2_CAP_VIDEO_CAPTURE) ||
!(cap.capabilities & V4L2_CAP_STREAMING)) {
- fprintf(stdout, "[Webcam] Not supported video driver\n");
+ ERR("Not supported video driver\n");
close(tmp_fd);
gettimeofday(&t2, NULL);
- fprintf(stdout, "[Webcam] Elapsed time: %lu:%06lu\n",
+ ERR("Elapsed time: %lu:%06lu\n",
t2.tv_sec-t1.tv_sec, t2.tv_usec-t1.tv_usec);
return ret;
}
ret = 1;
if (log_flag) {
- fprintf(stdout, "[Webcam] Driver: %s\n", cap.driver);
- fprintf(stdout, "[Webcam] Card: %s\n", cap.card);
- fprintf(stdout, "[Webcam] Bus info: %s\n", cap.bus_info);
+ INFO("Driver: %s\n", cap.driver);
+ INFO("Card: %s\n", cap.card);
+ INFO("Bus info: %s\n", cap.bus_info);
CLEAR(format);
format.index = 0;
if (yioctl(tmp_fd, VIDIOC_ENUM_FMT, &format) < 0) {
close(tmp_fd);
gettimeofday(&t2, NULL);
- fprintf(stdout, "[Webcam] Elapsed time: %lu:%06lu\n",
+ ERR("Elapsed time: %lu:%06lu\n",
t2.tv_sec-t1.tv_sec, t2.tv_usec-t1.tv_usec);
return ret;
}
size.index = 0;
size.pixel_format = format.pixelformat;
- fprintf(stdout, "[Webcam] PixelFormat: %c%c%c%c\n",
+ INFO("PixelFormat: %c%c%c%c\n",
(char)(format.pixelformat),
(char)(format.pixelformat >> 8),
(char)(format.pixelformat >> 16),
if (yioctl(tmp_fd, VIDIOC_ENUM_FRAMESIZES, &size) < 0) {
close(tmp_fd);
gettimeofday(&t2, NULL);
- fprintf(stdout, "[Webcam] Elapsed time: %lu:%06lu\n",
+ ERR("Elapsed time: %lu:%06lu\n",
t2.tv_sec-t1.tv_sec, t2.tv_usec-t1.tv_usec);
return ret;
}
if (size.type == V4L2_FRMSIZE_TYPE_DISCRETE) {
do {
- fprintf(stdout, "[Webcam] got discrete frame size %dx%d\n",
+ INFO("\tGot a discrete frame size %dx%d\n",
size.discrete.width, size.discrete.height);
size.index++;
} while (yioctl(tmp_fd, VIDIOC_ENUM_FRAMESIZES, &size) >= 0);
} else if (size.type == V4L2_FRMSIZE_TYPE_STEPWISE) {
- fprintf(stdout, "[Webcam] we have stepwise frame sizes:\n");
- fprintf(stdout, "[Webcam] min width: %d, min height: %d\n",
+ INFO("We have stepwise frame sizes:\n");
+ INFO("\tmin width: %d, min height: %d\n",
size.stepwise.min_width, size.stepwise.min_height);
- fprintf(stdout, "[Webcam] max width: %d, max height: %d\n",
+ INFO("\tmax width: %d, max height: %d\n",
size.stepwise.max_width, size.stepwise.max_height);
- fprintf(stdout, "[Webcam] step width: %d, step height: %d\n",
+ INFO("\tstep width: %d, step height: %d\n",
size.stepwise.step_width, size.stepwise.step_height);
} else if (size.type == V4L2_FRMSIZE_TYPE_CONTINUOUS) {
- fprintf(stdout, "[Webcam] we have continuous frame sizes:\n");
- fprintf(stdout, "[Webcam] min width: %d, min height: %d\n",
+ INFO("We have continuous frame sizes:\n");
+ INFO("\tmin width: %d, min height: %d\n",
size.stepwise.min_width, size.stepwise.min_height);
- fprintf(stdout, "[Webcam] max width: %d, max height: %d\n",
+ INFO("\tmax width: %d, max height: %d\n",
size.stepwise.max_width, size.stepwise.max_height);
}
close(tmp_fd);
gettimeofday(&t2, NULL);
- fprintf(stdout, "[Webcam] Elapsed time: %lu:%06lu\n",
+ INFO("Elapsed time: %lu:%06lu\n",
t2.tv_sec-t1.tv_sec, t2.tv_usec-t1.tv_usec);
return ret;
}
/* set description */
switch (supported_dst_pixfmts[index].fmt) {
case V4L2_PIX_FMT_YUYV:
- memcpy(¶m->stack[3], "YUYV", 32);
+ strcpy((char *)¶m->stack[3], "YUYV");
break;
case V4L2_PIX_FMT_YUV420:
- memcpy(¶m->stack[3], "YU12", 32);
+ strcpy((char *)¶m->stack[3], "YU12");
break;
case V4L2_PIX_FMT_YVU420:
- memcpy(¶m->stack[3], "YV12", 32);
+ strcpy((char *)¶m->stack[3], "YV12");
break;
default:
ERR("Invalid fixel format\n");
switch (ctrl.id) {
case V4L2_CID_BRIGHTNESS:
TRACE("Query : BRIGHTNESS\n");
- memcpy((void *)name, (void *)"brightness", 32);
+ strcpy(name, "brightness");
i = 0;
break;
case V4L2_CID_CONTRAST:
TRACE("Query : CONTRAST\n");
- memcpy((void *)name, (void *)"contrast", 32);
+ strcpy(name, "contrast");
i = 1;
break;
case V4L2_CID_SATURATION:
TRACE("Query : SATURATION\n");
- memcpy((void *)name, (void *)"saturation", 32);
+ strcpy(name, "saturation");
i = 2;
break;
case V4L2_CID_SHARPNESS:
TRACE("Query : SHARPNESS\n");
- memcpy((void *)name, (void *)"sharpness", 32);
+ strcpy(name, "sharpness");
i = 3;
break;
default:
gettimeofday(&t1, NULL);
hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
if (FAILED(hr)) {
- fprintf(stdout, "[Webcam] failed to CoInitailizeEx\n");
+ ERR("Failed to CoInitailizeEx\n");
gettimeofday(&t2, NULL);
- fprintf(stdout, "[Webcam] Elapsed time : %lu.%06lu\n",
+ ERR("Elapsed time : %lu.%06lu\n",
t2.tv_sec-t1.tv_sec, t2.tv_usec-t1.tv_usec);
return ret;
}
&IID_IGraphBuilder,
(void **)&pGB);
if (FAILED(hr)) {
- fprintf(stdout, "[Webcam] Failed to create GraphBuilder, 0x%x\n", hr);
+ ERR("Failed to create GraphBuilder, 0x%x\n", hr);
CoUninitialize();
gettimeofday(&t2, NULL);
- fprintf(stdout, "[Webcam] Elapsed time : %lu.%06lu\n",
+ ERR("Elapsed time : %lu.%06lu\n",
t2.tv_sec-t1.tv_sec, t2.tv_usec-t1.tv_usec);
return ret;
}
&IID_ICaptureGraphBuilder2,
(void **)&pCGB);
if (FAILED(hr)) {
- fprintf(stdout,
- "[Webcam] Failed to create CaptureGraphBuilder2, 0x%x\n", hr);
+ ERR("Failed to create CaptureGraphBuilder2, 0x%x\n", hr);
SAFE_RELEASE(pGB);
CoUninitialize();
gettimeofday(&t2, NULL);
- fprintf(stdout, "[Webcam] Elapsed time : %lu.%06lu\n",
+ ERR("Elapsed time : %lu.%06lu\n",
t2.tv_sec-t1.tv_sec, t2.tv_usec-t1.tv_usec);
return ret;
}
hr = pCGB->lpVtbl->SetFiltergraph(pCGB, pGB);
if (FAILED(hr)) {
- fprintf(stdout, "[Webcam] Failed to SetFiltergraph, 0x%x\n", hr);
+ ERR("Failed to SetFiltergraph, 0x%x\n", hr);
SAFE_RELEASE(pCGB);
SAFE_RELEASE(pGB);
CoUninitialize();
gettimeofday(&t2, NULL);
- fprintf(stdout, "[Webcam] Elapsed time : %lu.%06lu\n",
+ ERR("Elapsed time : %lu.%06lu\n",
t2.tv_sec-t1.tv_sec, t2.tv_usec-t1.tv_usec);
return ret;
}
&IID_ICreateDevEnum,
(void **)&pCreateDevEnum);
if (FAILED(hr)) {
- fprintf(stdout,
- "[Webcam] failed to create instance of CLSID_SystemDeviceEnum\n");
+ ERR("Failed to create instance of CLSID_SystemDeviceEnum\n");
SAFE_RELEASE(pCGB);
SAFE_RELEASE(pGB);
CoUninitialize();
gettimeofday(&t2, NULL);
- fprintf(stdout, "[Webcam] Elapsed time : %lu.%06lu\n",
+ ERR("Elapsed time : %lu.%06lu\n",
t2.tv_sec-t1.tv_sec, t2.tv_usec-t1.tv_usec);
return ret;
}
hr = pCreateDevEnum->lpVtbl->CreateClassEnumerator(pCreateDevEnum,
&CLSID_VideoInputDeviceCategory, &pEnumMK, 0);
if (FAILED(hr)) {
- fprintf(stdout, "[Webcam] failed to create class enumerator\n");
+ ERR("Failed to create class enumerator\n");
SAFE_RELEASE(pCreateDevEnum);
SAFE_RELEASE(pCGB);
SAFE_RELEASE(pGB);
CoUninitialize();
gettimeofday(&t2, NULL);
- fprintf(stdout, "[Webcam] Elapsed time : %lu.%06lu\n",
+ ERR("Elapsed time : %lu.%06lu\n",
t2.tv_sec-t1.tv_sec, t2.tv_usec-t1.tv_usec);
return ret;
}
if (!pEnumMK) {
- fprintf(stdout, "[Webcam] class enumerator is NULL!!\n");
+ ERR("Class enumerator is NULL!!\n");
SAFE_RELEASE(pCreateDevEnum);
SAFE_RELEASE(pCGB);
SAFE_RELEASE(pGB);
CoUninitialize();
gettimeofday(&t2, NULL);
- fprintf(stdout, "[Webcam] Elapsed time : %lu.%06lu\n",
+ ERR("Elapsed time : %lu.%06lu\n",
t2.tv_sec-t1.tv_sec, t2.tv_usec-t1.tv_usec);
return ret;
}
hr = pEnumMK->lpVtbl->Next(pEnumMK, 1, &pMoniKer, NULL);
if (FAILED(hr) || (hr == S_FALSE)) {
- fprintf(stdout, "[Webcam] enum moniker returns a invalid value.\n");
+ ERR("Enum moniker returns a invalid value.\n");
SAFE_RELEASE(pEnumMK);
SAFE_RELEASE(pCreateDevEnum);
SAFE_RELEASE(pCGB);
SAFE_RELEASE(pGB);
CoUninitialize();
gettimeofday(&t2, NULL);
- fprintf(stdout, "[Webcam] Elapsed time : %lu.%06lu\n",
+ ERR("Elapsed time : %lu.%06lu\n",
t2.tv_sec-t1.tv_sec, t2.tv_usec-t1.tv_usec);
return ret;
}
&IID_IPropertyBag,
(void **)&pBag);
if (FAILED(hr)) {
- fprintf(stdout, "[Webcam] failed to bind to storage.\n");
+ ERR("Failed to bind to storage.\n");
SAFE_RELEASE(pEnumMK);
SAFE_RELEASE(pCreateDevEnum);
SAFE_RELEASE(pCGB);
SAFE_RELEASE(pGB);
CoUninitialize();
gettimeofday(&t2, NULL);
- fprintf(stdout, "[Webcam] Elapsed time : %lu.%06lu\n",
+ ERR("Elapsed time : %lu.%06lu\n",
t2.tv_sec-t1.tv_sec, t2.tv_usec-t1.tv_usec);
return ret;
} else {
SAFE_RELEASE(pGB);
CoUninitialize();
gettimeofday(&t2, NULL);
- fprintf(stdout, "[Webcam] Elapsed time : %lu.%06lu\n",
+ ERR("Elapsed time : %lu.%06lu\n",
t2.tv_sec-t1.tv_sec, t2.tv_usec-t1.tv_usec);
return ret;
}
device_name = __wchar_to_char(var.bstrVal);
- fprintf(stdout, "[Webcam] Device name : %s\n", device_name);
+ INFO("Device name : %s\n", device_name);
g_free(device_name);
hr = pMoniKer->lpVtbl->BindToObject(pMoniKer, NULL, NULL,
&IID_IBaseFilter,
(void **)&pSrcFilter);
if (FAILED(hr)) {
- fprintf(stdout,
- "[Webcam] Counldn't bind moniker to filter object!!\n");
+ ERR("Counldn't bind moniker to filter object!!\n");
SysFreeString(var.bstrVal);
SAFE_RELEASE(pBag);
SAFE_RELEASE(pMoniKer);
SAFE_RELEASE(pGB);
CoUninitialize();
gettimeofday(&t2, NULL);
- fprintf(stdout, "[Webcam] Elapsed time : %lu.%06lu\n",
+ ERR("Elapsed time : %lu.%06lu\n",
t2.tv_sec-t1.tv_sec, t2.tv_usec-t1.tv_usec);
return ret;
} else {
hr = pGB->lpVtbl->AddFilter(pGB, pSrcFilter, L"Video Capture");
if (hr != S_OK && hr != S_FALSE) {
- fprintf(stdout,
- "[Webcam] Counldn't add Video Capture filter to our graph!\n");
+ ERR("Counldn't add Video Capture filter to our graph!\n");
SAFE_RELEASE(pSrcFilter);
SAFE_RELEASE(pEnumMK);
SAFE_RELEASE(pCreateDevEnum);
SAFE_RELEASE(pGB);
CoUninitialize();
gettimeofday(&t2, NULL);
- fprintf(stdout, "[Webcam] Elapsed time : %lu.%06lu\n",
+ ERR("Elapsed time : %lu.%06lu\n",
t2.tv_sec-t1.tv_sec, t2.tv_usec-t1.tv_usec);
return ret;
}
pSrcFilter, &IID_IAMStreamConfig,
(void **)&pSConfig);
if (FAILED(hr)) {
- fprintf(stdout, "[Webcam] failed to FindInterface method\n");
+ ERR("Failed to FindInterface method\n");
SAFE_RELEASE(pSrcFilter);
SAFE_RELEASE(pEnumMK);
SAFE_RELEASE(pCreateDevEnum);
SAFE_RELEASE(pGB);
CoUninitialize();
gettimeofday(&t2, NULL);
- fprintf(stdout, "[Webcam] Elapsed time : %lu.%06lu\n",
+ ERR("Elapsed time : %lu.%06lu\n",
t2.tv_sec-t1.tv_sec, t2.tv_usec-t1.tv_usec);
return ret;
}
hr = pSConfig->lpVtbl->GetNumberOfCapabilities(pSConfig, &iCount, &iSize);
if (FAILED(hr)) {
- fprintf(stdout, "[Webcam] failed to GetNumberOfCapabilities method\n");
+ ERR("Failed to GetNumberOfCapabilities method\n");
SAFE_RELEASE(pSConfig);
SAFE_RELEASE(pSrcFilter);
SAFE_RELEASE(pEnumMK);
SAFE_RELEASE(pGB);
CoUninitialize();
gettimeofday(&t2, NULL);
- fprintf(stdout, "[Webcam] Elapsed time : %lu.%06lu\n",
+ ERR("Elapsed time : %lu.%06lu\n",
t2.tv_sec-t1.tv_sec, t2.tv_usec-t1.tv_usec);
return ret;
}
VIDEOINFOHEADER *pvi =
(VIDEOINFOHEADER *)pmtConfig->pbFormat;
if (pvi->bmiHeader.biCompression == BI_RGB) {
- fprintf(stdout, "[Webcam] RGB BitCount: %d, %ux%u\n",
+ INFO("RGB BitCount: %d, Frame size: %ux%u\n",
pvi->bmiHeader.biBitCount,
pvi->bmiHeader.biWidth,
pvi->bmiHeader.biHeight);
} else {
- fprintf(stdout,
- "[Webcam] PixelFormat: %c%c%c%c, %ux%u\n",
- (char)(pvi->bmiHeader.biCompression),
- (char)(pvi->bmiHeader.biCompression >> 8),
- (char)(pvi->bmiHeader.biCompression >> 16),
- (char)(pvi->bmiHeader.biCompression >> 24),
- pvi->bmiHeader.biWidth,
- pvi->bmiHeader.biHeight);
+ INFO("PixelFormat: %c%c%c%c, Frame size: %ux%u\n",
+ (char)(pvi->bmiHeader.biCompression),
+ (char)(pvi->bmiHeader.biCompression >> 8),
+ (char)(pvi->bmiHeader.biCompression >> 16),
+ (char)(pvi->bmiHeader.biCompression >> 24),
+ pvi->bmiHeader.biWidth,
+ pvi->bmiHeader.biHeight);
}
}
DeleteMediaType(pmtConfig);
hr = pGB->lpVtbl->RemoveFilter(pGB, pSrcFilter);
if (FAILED(hr)) {
- fprintf(stdout, "[Webcam] Failed to remove source filer. 0x%x\n", hr);
+ ERR("Failed to remove source filer. 0x%x\n", hr);
}
SAFE_RELEASE(pSConfig);
SAFE_RELEASE(pCreateDevEnum);
CoUninitialize();
gettimeofday(&t2, NULL);
- fprintf(stdout, "[Webcam] Elapsed time : %lu.%06lu\n",
+ ERR("Elapsed time : %lu.%06lu\n",
t2.tv_sec-t1.tv_sec, t2.tv_usec-t1.tv_usec);
return ret;
void marucam_device_close(MaruCamState *state)
{
MaruCamParam *param = state->param;
+ int ret = 0;
param->top = 0;
- DisconnectPins();
- RemoveFilters();
+ qemu_mutex_lock(&state->thread_mutex);
+ ret = state->streamon;
+ qemu_mutex_unlock(&state->thread_mutex);
+ if (ret) {
+ marucam_device_stop_preview(state);
+ }
+
+ if (g_pGB) {
+ DisconnectPins();
+ RemoveFilters();
+ }
CloseInterfaces();
CoUninitialize();
INFO("Closed\n");