www.pudn.com > AudioVideoCapture.rar > CVideoSourcePage.cpp
// CVideoSourcePage.cpp : implementation file
//
#include "stdafx.h"
#include "avcap.h"
#include "CVideoSourcePage.h"
#include "CLiveCapture.h"
#include "CLiveInputFilters.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CVideoSourcePage dialog
CVideoSourcePage::CVideoSourcePage(CWnd* pParent /*=NULL*/)
: CDialog(CVideoSourcePage::IDD, pParent)
{
//{{AFX_DATA_INIT(CVideoSourcePage)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
mLiveCapture = NULL;
mInputFilters = NULL;
}
void CVideoSourcePage::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CVideoSourcePage)
DDX_Control(pDX, IDC_COMBO_VIDEO_CONNECTOR, mComboConnectors);
DDX_Control(pDX, IDC_RADIO_PAL, mRadioPal);
DDX_Control(pDX, IDC_RADIO_NTSC, mRadioNtsc);
DDX_Control(pDX, IDC_RADIO_SECAM, mRadioSecam);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CVideoSourcePage, CDialog)
//{{AFX_MSG_MAP(CVideoSourcePage)
ON_BN_CLICKED(IDC_BUTTON_CAPTURE_PROP, OnButtonCaptureProp)
ON_BN_CLICKED(IDC_BUTTON_TV_PROP, OnButtonTvProp)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CVideoSourcePage message handlers
void CVideoSourcePage::SetLiveCapture(CLiveCapture * inData)
{
mLiveCapture = inData;
}
void CVideoSourcePage::SetInputFilters(CLiveInputFilters * inFilters)
{
mInputFilters = inFilters;
}
BOOL CVideoSourcePage::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
ASSERT(mLiveCapture);
FillResolution();
FillConnectors();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CVideoSourcePage::FillConnectors(void)
{
mComboConnectors.ResetContent();
if (mInputFilters)
{
long physicalType = 0;
long selectedIndex = 0;
long count = mInputFilters->GetVideoConnectorCount();
for (long i = 0; i < count; i++)
{
CString connector = mInputFilters->GetVideoConnectorName(i);
mComboConnectors.AddString(connector);
// Save physical type of the connector to ComboBox item data
physicalType = mInputFilters->GetVideoConnectorType(i);
mComboConnectors.SetItemData(i, physicalType);
if (mLiveCapture->GetVideoConnector() == physicalType)
{
selectedIndex = i;
}
}
if (count)
{
mComboConnectors.SetCurSel(selectedIndex);
}
else
{
mComboConnectors.EnableWindow(FALSE);
}
}
}
void CVideoSourcePage::FillResolution(void)
{
switch (mLiveCapture->GetVideoResolution())
{
case SR_NTSC:
mRadioNtsc.SetCheck(TRUE);
break;
case SR_SECAM:
mRadioSecam.SetCheck(TRUE);
break;
case SR_PAL:
default:
mRadioPal.SetCheck(TRUE);
break;
}
}
void CVideoSourcePage::OnOK()
{
EnterConnector();
EnterResolution();
CDialog::OnOK();
}
void CVideoSourcePage::EnterConnector(void)
{
int index = mComboConnectors.GetCurSel();
if (index != CB_ERR)
{
long physicalType = mComboConnectors.GetItemData(index);
mLiveCapture->SetVideoConnector(physicalType);
}
}
void CVideoSourcePage::EnterResolution(void)
{
Signal_Resolution resolution = SR_PAL;
if (mRadioNtsc.GetCheck())
{
resolution = SR_NTSC;
}
else if (mRadioSecam.GetCheck())
{
resolution = SR_SECAM;
}
mLiveCapture->SetVideoResolution(resolution);
}
void CVideoSourcePage::OnButtonCaptureProp()
{
if (mInputFilters)
{
mInputFilters->ShowVideoCapturePropertyPage();
}
}
void CVideoSourcePage::OnButtonTvProp()
{
if (mInputFilters)
{
mInputFilters->ShowTVTunerPropertyPage();
}
}