📄 interfacecontrol.cpp
字号:
/*+++ *******************************************************************\
*
* Copyright and Disclaimer:
*
* ---------------------------------------------------------------
* This software is provided "AS IS" without warranty of any kind,
* either expressed or implied, including but not limited to the
* implied warranties of noninfringement, merchantability and/or
* fitness for a particular purpose.
* ---------------------------------------------------------------
*
* Copyright (c) 2008 Conexant Systems, Inc.
* All rights reserved.
*
\******************************************************************* ---*/
//Ignore warnings for deprecated functions used in DXSDK headers
#pragma warning(disable : 4996)
#include <streams.h>
#pragma warning(default : 4996)
#include <stdio.h>
#include <commctrl.h>
#include "resource.h" // ids used in the dialog
#include <ks.h>
#include <ksmedia.h> //DDK include file
#include <ksproxy.h>
#include "InterfaceControl.h"
#include "..\inc\CxPolarisControl.h"
typedef enum
{
ALT_SETTING0 = 0,
ALT_SETTING1,
ALT_SETTING2,
ALT_SETTING3,
ALT_SETTING4,
ALT_SETTING5
}ALT_SETTING;
typedef enum
{
ALT0_32 = 0,
ALT0_441,
ALT0_48,
ALT0_96,
ALT1_32,
ALT1_441,
ALT1_48,
ALT2_96
}ALT_SETTING_EP3;
////////////////////////////////////////////////////////////////////
typedef enum
{
MPEG_BDA = 0,
MPEG_PROGRAM
}MPEG_SOURCE;
typedef enum
{
CONFIG0 = 0,
CONFIG1 = 1,
CONFIG2
}USB_CONFIG;
////////////////////////////////////////////////////////////////////
//**********************************************************************
// CreateInstance
// Override CClassFactory method.
// Set lpUnk to point to an IUnknown interface on a new CGeneralProperties object
// Part of the COM object instantiation mechanism
//**********************************************************************
CUnknown * WINAPI InterfaceControl::CreateInstance(LPUNKNOWN lpunk, HRESULT *phr)
{
CUnknown *punk = new InterfaceControl(lpunk, phr);
if (punk == NULL) {
*phr = E_OUTOFMEMORY;
}
return punk;
}
//**********************************************************************
// InterfaceControl::Constructor
// Constructs and initialises a InterfaceControl object
//**********************************************************************
InterfaceControl::InterfaceControl(LPUNKNOWN pUnk, HRESULT *phr)
: CBasePropertyPage(
NAME("Alt Setting Properties"),
pUnk,
IDD_ALT_SETTING, //Dialog ID
IDS_ALT_SETTING_TITLE),
_p_property_set(NULL)
{
ASSERT(phr);
}
//**********************************************************************
// OnConnect
// Override CBasePropertyPage method.
//**********************************************************************
HRESULT InterfaceControl::OnConnect(IUnknown *p_unknown)
{
// For the proxy, we query the interface on it's output pin
ASSERT(_p_property_set == NULL);
// Cast our owner to a filter (our owner should be the proxy filter)
IBaseFilter *p_filter = (IBaseFilter*)p_unknown;
// Query the proxy filter for the interface that allows us to control the iVAC
if (FAILED(p_filter->QueryInterface(IID_IKsPropertySet,(void **)&_p_property_set)))
{
DbgLog((LOG_TRACE, 0, TEXT("Failed to Query the proxy's interface")));
return E_NOINTERFACE;
}
return NOERROR;
}
HRESULT InterfaceControl::OnDisconnect()
{
// Release of Interface
if (_p_property_set == NULL)
return E_UNEXPECTED;
_p_property_set->Release();
_p_property_set = NULL;
return NOERROR;
}
HRESULT InterfaceControl::OnActivate()
{
HRESULT return_value = NOERROR;
DWORD bytes_returned;
///ep1////////////////////////////////////////////////////////////
//Get the audio sampling rate from the driver
CXPOLARIS_ALT_SETTING alt_setting = CXPOLARIS_ALT_SETTING0;
if (FAILED(_p_property_set->Get(
PROPSETID_CXPOLARIS_CONTROL_PROPERTIES,
CXPOLARIS_CONTROL_EP1,
&alt_setting,
sizeof(CXPOLARIS_ALT_SETTING),
&alt_setting,
sizeof(CXPOLARIS_ALT_SETTING),
&bytes_returned)))
{
return_value = E_FAIL;
}
ALT_SETTING alt_setting2 = ALT_SETTING0;
switch(alt_setting)
{
case CXPOLARIS_ALT_SETTING0:
alt_setting2 = ALT_SETTING0;
break;
case CXPOLARIS_ALT_SETTING1:
alt_setting2 = ALT_SETTING1;
break;
case CXPOLARIS_ALT_SETTING2:
alt_setting2 = ALT_SETTING2;
break;
case CXPOLARIS_ALT_SETTING3:
alt_setting2 = ALT_SETTING3;
break;
case CXPOLARIS_ALT_SETTING4:
alt_setting2 = ALT_SETTING4;
break;
case CXPOLARIS_ALT_SETTING5:
alt_setting2 = ALT_SETTING5;
break;
}
//Select the current resolution in the list box
SendDlgItemMessage(m_Dlg, IDC_EP1, CB_SETCURSEL, alt_setting2, 0);
////ep2/////////////////////////////////////////////////////////////////////
alt_setting = CXPOLARIS_ALT_SETTING0;
if (FAILED(_p_property_set->Get(
PROPSETID_CXPOLARIS_CONTROL_PROPERTIES,
CXPOLARIS_CONTROL_EP2,
&alt_setting,
sizeof(CXPOLARIS_ALT_SETTING),
&alt_setting,
sizeof(CXPOLARIS_ALT_SETTING),
&bytes_returned)))
{
return_value = E_FAIL;
}
alt_setting2 = ALT_SETTING0;
switch(alt_setting)
{
case CXPOLARIS_ALT_SETTING0:
alt_setting2 = ALT_SETTING0;
break;
case CXPOLARIS_ALT_SETTING1:
alt_setting2 = ALT_SETTING1;
break;
case CXPOLARIS_ALT_SETTING2:
alt_setting2 = ALT_SETTING2;
break;
case CXPOLARIS_ALT_SETTING3:
alt_setting2 = ALT_SETTING3;
break;
case CXPOLARIS_ALT_SETTING4:
alt_setting2 = ALT_SETTING4;
break;
case CXPOLARIS_ALT_SETTING5:
alt_setting2 = ALT_SETTING5;
break;
}
//Select the current resolution in the list box
SendDlgItemMessage(m_Dlg, IDC_EP2, CB_SETCURSEL, alt_setting2, 0);
/////ep3//////////////////////////////////////////////////////////////////////////
CXPOLARIS_ALT_SETTING_EP3 alt_setting_ep3 = CXPOLARIS_ALT0_32;
if (FAILED(_p_property_set->Get(
PROPSETID_CXPOLARIS_CONTROL_PROPERTIES,
CXPOLARIS_CONTROL_EP3,
&alt_setting_ep3,
sizeof(CXPOLARIS_ALT_SETTING_EP3),
&alt_setting_ep3,
sizeof(CXPOLARIS_ALT_SETTING_EP3),
&bytes_returned)))
{
return_value = E_FAIL;
}
ALT_SETTING_EP3 alt_setting2_ep3 = ALT0_32;
switch(alt_setting_ep3)
{
case CXPOLARIS_ALT0_32:
alt_setting2_ep3 = ALT0_32;
break;
case CXPOLARIS_ALT0_441:
alt_setting2_ep3 = ALT0_441;
break;
case CXPOLARIS_ALT0_48:
alt_setting2_ep3 = ALT0_48;
break;
case CXPOLARIS_ALT0_96:
alt_setting2_ep3 = ALT0_96;
break;
case CXPOLARIS_ALT1_32:
alt_setting2_ep3 = ALT1_32;
break;
case CXPOLARIS_ALT1_441:
alt_setting2_ep3 = ALT1_441;
break;
case CXPOLARIS_ALT1_48:
alt_setting2_ep3 = ALT0_48;
break;
case CXPOLARIS_ALT2_96:
alt_setting2_ep3 = ALT2_96;
break;
}
//Select the current resolution in the list box
SendDlgItemMessage(m_Dlg, IDC_EP3, CB_SETCURSEL, alt_setting2_ep3, 0);
////ep4////////////////////////////////////////////////////////////////////////
alt_setting = CXPOLARIS_ALT_SETTING0;
if (FAILED(_p_property_set->Get(
PROPSETID_CXPOLARIS_CONTROL_PROPERTIES,
CXPOLARIS_CONTROL_EP4,
&alt_setting,
sizeof(CXPOLARIS_ALT_SETTING),
&alt_setting,
sizeof(CXPOLARIS_ALT_SETTING),
&bytes_returned)))
{
return_value = E_FAIL;
}
alt_setting2 = ALT_SETTING0;
switch(alt_setting)
{
case CXPOLARIS_ALT_SETTING0:
alt_setting2 = ALT_SETTING0;
break;
case CXPOLARIS_ALT_SETTING1:
alt_setting2 = ALT_SETTING1;
break;
case CXPOLARIS_ALT_SETTING2:
alt_setting2 = ALT_SETTING2;
break;
case CXPOLARIS_ALT_SETTING3:
alt_setting2 = ALT_SETTING3;
break;
case CXPOLARIS_ALT_SETTING4:
alt_setting2 = ALT_SETTING4;
break;
}
//Select the current resolution in the list box
SendDlgItemMessage(m_Dlg, IDC_EP4, CB_SETCURSEL, alt_setting2, 0);
///ep5//////////////////////////////////////////////////////////////////
alt_setting = CXPOLARIS_ALT_SETTING0;
if (FAILED(_p_property_set->Get(
PROPSETID_CXPOLARIS_CONTROL_PROPERTIES,
CXPOLARIS_CONTROL_EP5,
&alt_setting,
sizeof(CXPOLARIS_ALT_SETTING),
&alt_setting,
sizeof(CXPOLARIS_ALT_SETTING),
&bytes_returned)))
{
return_value = E_FAIL;
}
alt_setting2 = ALT_SETTING0;
switch(alt_setting)
{
case CXPOLARIS_ALT_SETTING0:
alt_setting2 = ALT_SETTING0;
break;
case CXPOLARIS_ALT_SETTING1:
alt_setting2 = ALT_SETTING1;
break;
}
//Select the current resolution in the list box
SendDlgItemMessage(m_Dlg, IDC_EP5, CB_SETCURSEL, alt_setting2, 0);
////ep6//////////////////////////////////////////////////////////////////////
alt_setting = CXPOLARIS_ALT_SETTING0;
if (FAILED(_p_property_set->Get(
PROPSETID_CXPOLARIS_CONTROL_PROPERTIES,
CXPOLARIS_CONTROL_EP6,
&alt_setting,
sizeof(CXPOLARIS_ALT_SETTING),
&alt_setting,
sizeof(CXPOLARIS_ALT_SETTING),
&bytes_returned)))
{
return_value = E_FAIL;
}
alt_setting2 = ALT_SETTING0;
switch(alt_setting)
{
case CXPOLARIS_ALT_SETTING0:
alt_setting2 = ALT_SETTING0;
break;
case CXPOLARIS_ALT_SETTING1:
alt_setting2 = ALT_SETTING1;
break;
}
//Select the current resolution in the list box
SendDlgItemMessage(m_Dlg, IDC_EP6, CB_SETCURSEL, alt_setting2, 0);
////ep15/////////////////////////////////////////////////////////////////
alt_setting = CXPOLARIS_ALT_SETTING0;
if (FAILED(_p_property_set->Get(
PROPSETID_CXPOLARIS_CONTROL_PROPERTIES,
CXPOLARIS_CONTROL_EP15,
&alt_setting,
sizeof(CXPOLARIS_ALT_SETTING),
&alt_setting,
sizeof(CXPOLARIS_ALT_SETTING),
&bytes_returned)))
{
return_value = E_FAIL;
}
alt_setting2 = ALT_SETTING0;
switch(alt_setting)
{
case CXPOLARIS_ALT_SETTING0:
alt_setting2 = ALT_SETTING0;
break;
}
//Select the current resolution in the list box
SendDlgItemMessage(m_Dlg, IDC_EP15, CB_SETCURSEL, alt_setting2, 0);
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
//TS2
///////////////////////////////////////////////////////////////////////////////
CXPOLARIS_MPEG_SOURCE mpeg_source = CXPOLARIS_MPEG_BDA;
if (FAILED(_p_property_set->Get(
PROPSETID_CXPOLARIS_CONTROL_PROPERTIES,
CXPOLARIS_CONTROL_TS2,
&mpeg_source,
sizeof(CXPOLARIS_MPEG_SOURCE),
&mpeg_source,
sizeof(CXPOLARIS_MPEG_SOURCE),
&bytes_returned)))
{
return_value = E_FAIL;
}
MPEG_SOURCE mpeg_source2 = MPEG_BDA;
switch(mpeg_source)
{
case CXPOLARIS_MPEG_BDA:
mpeg_source2 = MPEG_BDA;
break;
case CXPOLARIS_MPEG_PROGRM:
mpeg_source2 = MPEG_PROGRAM;
break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -