summaryrefslogtreecommitdiff
path: root/pjmedia
diff options
context:
space:
mode:
authorLiong Sauw Ming <ming@teluu.com>2012-09-13 08:35:24 +0000
committerLiong Sauw Ming <ming@teluu.com>2012-09-13 08:35:24 +0000
commitb5e8e2f6d6d2353c94181498299ce5c0ffbdc87b (patch)
tree62aac4b13b51f772ab5596d6ddf46231825ec80c /pjmedia
parent382f18b2818e120fbcdafb108b8a7224b441a5c7 (diff)
Re #1562: Add support for multiple GUIDs that represents the same format (such as I420/IYUV) in DShow device.
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@4253 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjmedia')
-rw-r--r--pjmedia/src/pjmedia-videodev/dshow_dev.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/pjmedia/src/pjmedia-videodev/dshow_dev.c b/pjmedia/src/pjmedia-videodev/dshow_dev.c
index d398d31b..08f82ef9 100644
--- a/pjmedia/src/pjmedia-videodev/dshow_dev.c
+++ b/pjmedia/src/pjmedia-videodev/dshow_dev.c
@@ -65,15 +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_I420, &WMMEDIASUBTYPE_I420}
+ {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 */
@@ -331,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) {
@@ -642,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];
}