summaryrefslogtreecommitdiff
path: root/pjmedia/src/pjmedia-videodev
diff options
context:
space:
mode:
Diffstat (limited to 'pjmedia/src/pjmedia-videodev')
-rw-r--r--pjmedia/src/pjmedia-videodev/dshow_dev.c17
-rw-r--r--pjmedia/src/pjmedia-videodev/sdl_dev.c6
-rw-r--r--pjmedia/src/pjmedia-videodev/v4l2_dev.c5
3 files changed, 19 insertions, 9 deletions
diff --git a/pjmedia/src/pjmedia-videodev/dshow_dev.c b/pjmedia/src/pjmedia-videodev/dshow_dev.c
index 6fb7c0b..f05d94a 100644
--- a/pjmedia/src/pjmedia-videodev/dshow_dev.c
+++ b/pjmedia/src/pjmedia-videodev/dshow_dev.c
@@ -1,4 +1,4 @@
-/* $Id: dshow_dev.c 3953 2012-02-16 08:49:33Z ming $ */
+/* $Id: dshow_dev.c 4253 2012-09-13 08:35:24Z ming $ */
/*
* Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
*
@@ -33,6 +33,7 @@
#include <windows.h>
#define COBJMACROS
#include <DShow.h>
+#include <wmsdkidl.h>
#ifdef _MSC_VER
# pragma warning(pop)
@@ -64,14 +65,16 @@ typedef struct dshow_fmt_info
{
pjmedia_format_id pjmedia_format;
const GUID *dshow_format;
+ pj_bool_t enabled;
} dshow_fmt_info;
static dshow_fmt_info dshow_fmts[] =
{
- {PJMEDIA_FORMAT_YUY2, &MEDIASUBTYPE_YUY2} ,
- {PJMEDIA_FORMAT_RGB24, &MEDIASUBTYPE_RGB24} ,
- {PJMEDIA_FORMAT_RGB32, &MEDIASUBTYPE_RGB32} ,
- {PJMEDIA_FORMAT_IYUV, &MEDIASUBTYPE_IYUV} ,
+ {PJMEDIA_FORMAT_YUY2, &MEDIASUBTYPE_YUY2, PJ_FALSE} ,
+ {PJMEDIA_FORMAT_RGB24, &MEDIASUBTYPE_RGB24, PJ_FALSE} ,
+ {PJMEDIA_FORMAT_RGB32, &MEDIASUBTYPE_RGB32, PJ_FALSE} ,
+ {PJMEDIA_FORMAT_IYUV, &MEDIASUBTYPE_IYUV, PJ_FALSE} ,
+ {PJMEDIA_FORMAT_I420, &WMMEDIASUBTYPE_I420, PJ_FALSE}
};
/* dshow_ device info */
@@ -329,6 +332,8 @@ static void enum_dev_cap(IBaseFilter *filter,
&rpcstatus2) == 0 &&
rpcstatus2 == RPC_S_OK)
{
+ if (!dshow_fmt)
+ dshow_fmts[j].enabled = PJ_TRUE;
if (sup_fmt)
sup_fmt[j] = PJ_TRUE;
if (pSrcpin) {
@@ -640,7 +645,7 @@ static dshow_fmt_info* get_dshow_format_info(pjmedia_format_id id)
unsigned i;
for (i = 0; i < sizeof(dshow_fmts)/sizeof(dshow_fmts[0]); i++) {
- if (dshow_fmts[i].pjmedia_format == id)
+ if (dshow_fmts[i].pjmedia_format == id && dshow_fmts[i].enabled)
return &dshow_fmts[i];
}
diff --git a/pjmedia/src/pjmedia-videodev/sdl_dev.c b/pjmedia/src/pjmedia-videodev/sdl_dev.c
index 7e40da1..9c0944b 100644
--- a/pjmedia/src/pjmedia-videodev/sdl_dev.c
+++ b/pjmedia/src/pjmedia-videodev/sdl_dev.c
@@ -1,4 +1,4 @@
-/* $Id: sdl_dev.c 4157 2012-06-06 09:37:25Z nanang $ */
+/* $Id: sdl_dev.c 4414 2013-03-05 08:21:02Z riza $ */
/*
* Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
*
@@ -1418,7 +1418,9 @@ static pj_status_t job_queue_destroy(job_queue *jq)
}
#ifdef _MSC_VER
-# if SDL_VERSION_ATLEAST(2,0,0)
+# if defined(PJMEDIA_SDL_LIB)
+# pragma comment( lib, PJMEDIA_SDL_LIB)
+# elif SDL_VERSION_ATLEAST(2,0,0)
# pragma comment( lib, "sdl2.lib")
# elif SDL_VERSION_ATLEAST(1,3,0)
# pragma comment( lib, "sdl.lib")
diff --git a/pjmedia/src/pjmedia-videodev/v4l2_dev.c b/pjmedia/src/pjmedia-videodev/v4l2_dev.c
index 880d47b..5b9c5e0 100644
--- a/pjmedia/src/pjmedia-videodev/v4l2_dev.c
+++ b/pjmedia/src/pjmedia-videodev/v4l2_dev.c
@@ -1,4 +1,4 @@
-/* $Id: v4l2_dev.c 3901 2011-12-07 10:43:28Z nanang $ */
+/* $Id: v4l2_dev.c 4310 2012-12-19 05:38:28Z nanang $ */
/*
* Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
*
@@ -670,6 +670,7 @@ static pj_status_t vid4lin_stream_get_frame_mmap(vid4lin_stream *stream,
struct v4l2_buffer buf;
pj_time_val time;
pj_status_t status = PJ_SUCCESS;
+ unsigned tmp_idx;
pj_bzero(&buf, sizeof(buf));
buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
@@ -697,9 +698,11 @@ static pj_status_t vid4lin_stream_get_frame_mmap(vid4lin_stream *stream,
pj_memcpy(frame->buf, stream->buffers[buf.index].start, buf.bytesused);
on_return:
+ tmp_idx = buf.index;
pj_bzero(&buf, sizeof(buf));
buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
buf.memory = V4L2_MEMORY_MMAP;
+ buf.index = tmp_idx;
xioctl(stream->fd, VIDIOC_QBUF, &buf);
return status;