[PATCH 3/5] qcap: Get rid of V4l_GetFrame().
Zebediah Figura
z.figura12 at gmail.com
Wed Apr 10 22:32:01 CDT 2019
Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
---
dlls/qcap/v4l.c | 30 ++++++++++++------------------
1 file changed, 12 insertions(+), 18 deletions(-)
diff --git a/dlls/qcap/v4l.c b/dlls/qcap/v4l.c
index ab39b71b82..fb10cce283 100644
--- a/dlls/qcap/v4l.c
+++ b/dlls/qcap/v4l.c
@@ -361,27 +361,13 @@ static void Resize(const Capture * capBox, LPBYTE output, const BYTE *input)
}
}
-static void V4l_GetFrame(Capture *device, unsigned char **buffer)
-{
- while (video_read(device->fd, device->image_data, device->image_size) == -1)
- {
- if (errno != EAGAIN)
- {
- ERR("Failed to read frame: %s\n", strerror(errno));
- break;
- }
- }
- TRACE("Successfully read a frame.\n");
- *buffer = device->image_data;
-}
-
static DWORD WINAPI ReadThread(LPVOID lParam)
{
Capture * capBox = lParam;
HRESULT hr;
IMediaSample *pSample = NULL;
ULONG framecount = 0;
- unsigned char *pTarget, *pInput, *pOutput;
+ unsigned char *pTarget, *pOutput;
capBox->image_size = capBox->height * capBox->width * 3;
if (!(capBox->image_data = heap_alloc(capBox->image_size)))
@@ -414,9 +400,17 @@ static DWORD WINAPI ReadThread(LPVOID lParam)
TRACE("Data length: %d KB\n", len / 1024);
IMediaSample_GetPointer(pSample, &pTarget);
- /* FIXME: Check return values.. */
- V4l_GetFrame(capBox, &pInput);
- memcpy(pOutput, pInput, len);
+
+ while (video_read(capBox->fd, capBox->image_data, capBox->image_size) == -1)
+ {
+ if (errno != EAGAIN)
+ {
+ ERR("Failed to read frame: %s\n", strerror(errno));
+ break;
+ }
+ }
+
+ memcpy(pOutput, capBox->image_data, len);
Resize(capBox, pTarget, pOutput);
hr = BaseOutputPinImpl_Deliver((BaseOutputPin *)capBox->pOut, pSample);
TRACE("%p -> Frame %u: %x\n", capBox, ++framecount, hr);
--
2.21.0
More information about the wine-devel
mailing list