summaryrefslogtreecommitdiff
path: root/pjmedia/src/pjmedia-videodev/dshow_dev.c
diff options
context:
space:
mode:
Diffstat (limited to 'pjmedia/src/pjmedia-videodev/dshow_dev.c')
-rw-r--r--pjmedia/src/pjmedia-videodev/dshow_dev.c17
1 files changed, 11 insertions, 6 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];
}