home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DOS/V Power Report 2001 July
/
VPR0107B.BIN
/
DRIVER
/
CANOPUS
/
MVR32
/
mvr32.exe
/
data1.cab
/
Development_Kit
/
Vc
/
Samples
/
Encode
/
MainFrm.cpp
< prev
next >
Wrap
C/C++ Source or Header
|
2001-02-09
|
104KB
|
2,149 lines
//======================================================================
// -- MainFrm.cpp --
//
// MVR-D2000
// エンコード サンプルプログラム
// Encode sample program
//
// Copyright (C) 1999-2000 Canopus Co., Ltd. All rights reserved.
//======================================================================
//
// -- サンプルプログラムをご使用になる前に ---
// -- Before use this sample program... --
//
// このサンプルプログラムは、カノープス製品を使うためにご使用ください。
// Please use this sample progeam to use products of canopus.
//
//======================================================================
// MainFrm.cpp : CMainFrame クラスの動作の定義を行います。
//
#include "stdafx.h"
#include "Encode.h"
#include "MainFrm.h"
#include "TimeDlg.h" // Set Record Time
#include "AudioDlg.h" // Set Audio Parameter
#include "AudioEncDlg.h" // Set Audio Encode Parameter
#include "VideoDlg.h" // Set Video Parameter
#include "VideoEncDlg.h" // Set Video Encode Parameter
#include "VideoEncExDlg.h" // Set Video Encode Parameter Ex
#include "OverlayDlg.h" // Set Overlay Window(Adjust)
#include "overlayRectDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
extern int ENC_ID;
CMainFrame* pMain;
/////////////////////////////////////////////////////////////////////////////
// CMainFrame
IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
//{{AFX_MSG_MAP(CMainFrame)
ON_WM_CREATE()
ON_WM_CLOSE()
ON_WM_MOVE()
ON_WM_SIZE()
ON_COMMAND(IDM_SET_TIME, OnSetTime)
ON_COMMAND(IDM_SET_AUDIO_PARAM, OnSetAudioParam)
ON_COMMAND(IDM_SET_VIDEO_PARAM, OnSetVideoParam)
ON_COMMAND(IDM_SET_VIDEO_ENC_PARAM, OnSetVideoEncParam)
ON_COMMAND(IDM_SET_AUDIO_ENC_PARAM, OnSetAudioEncParam)
ON_COMMAND(IDM_ENC_AUDIO, OnEncAudio)
ON_COMMAND(IDM_ENC_VIDEO, OnEncVideo)
ON_COMMAND(IDM_ENC_AV, OnEncAv)
ON_COMMAND(IDM_ENC_PROGRAM, OnEncProgram)
ON_UPDATE_COMMAND_UI(IDM_ENC_AUDIO, OnUpdateEncAudio)
ON_UPDATE_COMMAND_UI(IDM_ENC_VIDEO, OnUpdateEncVideo)
ON_UPDATE_COMMAND_UI(IDM_ENC_AV, OnUpdateEncAv)
ON_UPDATE_COMMAND_UI(IDM_ENC_PROGRAM, OnUpdateEncProgram)
ON_COMMAND(IDM_ENC_STOP, OnEncStop)
ON_UPDATE_COMMAND_UI(IDM_ENC_STOP, OnUpdateEncStop)
ON_UPDATE_COMMAND_UI(ID_APP_EXIT, OnUpdateAppExit)
ON_UPDATE_COMMAND_UI(IDM_SET_AUDIO_PARAM, OnUpdateSetAudioParam)
ON_UPDATE_COMMAND_UI(IDM_SET_AUDIO_ENC_PARAM, OnUpdateSetAudioEncParam)
ON_UPDATE_COMMAND_UI(IDM_SET_VIDEO_PARAM, OnUpdateSetVideoParam)
ON_UPDATE_COMMAND_UI(IDM_SET_VIDEO_ENC_PARAM, OnUpdateSetVideoEncParam)
ON_UPDATE_COMMAND_UI(IDM_SET_TIME, OnUpdateSetTime)
ON_COMMAND(IDM_SET_OVERLAY, OnSetOverlay)
ON_UPDATE_COMMAND_UI(IDM_SET_OVERLAY, OnUpdateSetOverlay)
ON_COMMAND(IDM_SET_MONITOR, OnSetMonitor)
ON_UPDATE_COMMAND_UI(IDM_SET_MONITOR, OnUpdateSetMonitor)
ON_COMMAND(IDM_SET_VIDEO_CD, OnSetVideoCd)
ON_UPDATE_COMMAND_UI(IDM_SET_VIDEO_CD, OnUpdateSetVideoCd)
ON_COMMAND(IDM_SET_AUDIO_FORMAT_MPEG, OnSetAudioFormatMpeg)
ON_COMMAND(IDM_SET_AUDIO_FORMAT_MONO, OnSetAudioFormatMono)
ON_COMMAND(IDM_SET_AUDIO_FORMAT_STEREO, OnSetAudioFormatStereo)
ON_UPDATE_COMMAND_UI(IDM_SET_AUDIO_FORMAT_MPEG, OnUpdateSetAudioFormatMpeg)
ON_UPDATE_COMMAND_UI(IDM_SET_AUDIO_FORMAT_MONO, OnUpdateSetAudioFormatMono)
ON_UPDATE_COMMAND_UI(IDM_SET_AUDIO_FORMAT_STEREO, OnUpdateSetAudioFormatStereo)
ON_COMMAND(IDM_SET_VIDEO_ENC_PARAM_EX, OnSetVideoEncParamEx)
ON_UPDATE_COMMAND_UI(IDM_SET_VIDEO_ENC_PARAM_EX, OnUpdateSetVideoEncParamEx)
ON_COMMAND(IDM_SET_OVERLAY_ADJUST, OnSetOverlayAdjust)
ON_COMMAND(IDM_SET_GET_LAST_ERROR, OnSetGetLastError)
ON_COMMAND(IDB_SET_ENCODE_FILE, OnSetEncodeFile)
ON_COMMAND(IDM_SET_OVERLAY_RECT, OnSetOverlayRect)
ON_UPDATE_COMMAND_UI(IDM_SET_OVERLAY_RECT, OnUpdateSetOverlayRect)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CMainFrame クラスの構築/消滅
CMainFrame::CMainFrame()
{
// TODO: この位置にメンバの初期化処理コードを追加してください。
hWndOverlay = NULL;
nWidth = 720;
nHeight = 480;
}
CMainFrame::~CMainFrame()
{
}
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: この位置で CREATESTRUCT cs を修正して、Window クラスやスタイルを
// 修正してください。
return CFrameWnd::PreCreateWindow(cs);
}
/////////////////////////////////////////////////////////////////////////////
// CMainFrame クラスの診断
#ifdef _DEBUG
void CMainFrame::AssertValid() const
{
CFrameWnd::AssertValid();
}
void CMainFrame::Dump(CDumpContext& dc) const
{
CFrameWnd::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CMainFrame メッセージ ハンドラ
//----------------------------------------------------------------------
// #[ CMainFrame::OnCreate ]
//
// 機能 初期化処理
//
// 引数: LPCREATESTRUCT lpCreateStruct;
//
// 戻り値: int 0; 成功
// -1; 失敗
//----------------------------------------------------------------------
// #[ CMainFrame::OnCreate ]
//
// Function: Initialize
//
// Parameters: LPCREATESTRUCT lpCreateStruct;
//
// Return value: int 0; success
// -1; fail
//----------------------------------------------------------------------
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
ENC_RETURN enc_return;
CString strMessage;
UINT nNumber=0;
ENC_CONFIG config;
UINT ui;
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
pMain = this;
// コールバックの設定
// Set CallbackProc
enc_return = ENC_Set_Callback(ENC_ID, StatusProc, ErrorProc, TmapProc, NULL, NULL);
if(enc_return != ENC_SUCCESS)
{
return -1;
}
for (int i = 1; i < __argc; i++) {
LPCTSTR pszParam = __targv[i];
if ((pszParam[0] == _T('-') || pszParam[0] == _T('/')) && !_tcsnicmp(pszParam + 1, _T("id:"), _tcslen(_T("id:"))))
// id number is specified by /id:n
nNumber = atoi(pszParam + 4);
}
if(nNumber==0)
{
memset(&config,0,sizeof(ENC_CONFIG));
ENC_Get_Codec_Config(ENC_ID,&config);
for(ui=0;ui<=config.NumberCodecs;ui++)
{
config.CodecNumber=ui;
ENC_Get_Codec_Config(ENC_ID,&config);
if(config.CurrentUtilization==FALSE)
{
if(config.CodecCaps & ENCCAP_ENCODE)
{
nNumber=ui;
break;
}
}
}
}
ENC_ID=nNumber;
ENC_Set_Codec_Number(ENC_ID, nNumber);
// ライブラリの初期化
// Initialize library
enc_return = ENC_Initialize(ENC_ID);
if(enc_return != ENC_SUCCESS)
{
int a;
char b[50];
a = ENC_Get_Last_Error(ENC_ID);
wsprintf(b, "%d", a);
strMessage.LoadString(IDC_ERROR_INIT_LIBRARY);
MessageBox(strMessage,b);
return -1;
}
// オーバーレイウィンドウの作成
// Create overlay window
if(hWndOverlay == NULL)
CreateOverlayWindow();
// 入力ソースの検出
// Detect input source
AutoDetect();
// モニタ開始
// Start monitor
ENC_Start_Monitor(ENC_ID);
return 0;
}
//----------------------------------------------------------------------
// #[ CMainFrame::OnClose ]
//
// 機能 アプリケーションを終了します
//
// 引数: なし
//
// 戻り値: なし
//
//----------------------------------------------------------------------
// #[ CMainFrame::OnClose ]
//
// Function: End application
//
// Parameters: none
//
// Return value: none
//
//----------------------------------------------------------------------
void CMainFrame::OnClose()
{
ENC_RETURN enc_return;
CString strMessage;
// モニタ停止
// Stop monitor
ENC_Stop_Monitor(ENC_ID);
// オーバーレイウィンドウを破棄する
// Destroy overlay window
if(hWndOverlay != NULL)
{
enc_return = ENC_Destroy_Overlay_Window(ENC_ID);
if(enc_return != ENC_SUCCESS)
{
strMessage.LoadString(IDC_ERROR_DESTROY_OVERLAY);
MessageBox(strMessage);
}
}
// エンコーダを終了する
// Terminate decode
enc_return = ENC_Terminate(ENC_ID);
if(enc_return != ENC_SUCCESS)
{
strMessage.LoadString(IDC_ERROR_TERMINATE_ENCODE);
MessageBox(strMessage);
}
CFrameWnd::OnClose();
}
//----------------------------------------------------------------------
// #[ CMainFrame::CreateOverlayWindow ]
//
// 機能 オーバーレイウィンドウを作成する
//
// 引数: なし
//
// 戻り値: BOOL TRUE ウィンドウ作成に成功
// FALSE ウィンドウ作成に失敗
//
//----------------------------------------------------------------------
// #[ CMainFrame::CreateOverlayWindow ]
//
// Function: Create overlay window
//
// Parameters: none
//
// Return value: BOOL TRUE success
// FALSE fail
//
//----------------------------------------------------------------------
BOOL CMainFrame::CreateOverlayWindow()
{
ENC_RETURN enc_return;
RECT rc;
CString strMessage;
GetClientRect(&rc);
enc_return = ENC_Can_Overlay_Window(ENC_ID, NULL, rc.right, rc.bottom);
if(enc_return != ENC_SUCCESS)
{
strMessage.LoadString(IDC_ERROR_CAN_OVERLAY);
MessageBox(strMessage);
}
else
{
// オーバーレイウィンドウの作成
// Create overlay window
enc_return = ENC_Create_Overlay_Window(ENC_ID, m_hWnd, &hWndOverlay, 0, 0, rc.right, rc.bottom);
if(enc_return != ENC_SUCCESS)
{
strMessage.LoadString(IDC_ERROR_CREATE_OVERLAY);
MessageBox(strMessage);
}
}
return TRUE;
}
//----------------------------------------------------------------------
// #[ CMainFrame::OnMove ]
//
// 機能 オーバーレイウィンドウの位置の移動
//
// 引数: int x
// int y
//
// 戻り値: なし
//
//----------------------------------------------------------------------
// #[ CMainFrame::OnMove ]
//
// Function: Move overlay window
//
// Parameters: int x
// int y
//
// Return value: none
//
//----------------------------------------------------------------------
void CMainFrame::OnMove(int x, int y)
{
CFrameWnd::OnMove(x, y);
if(hWndOverlay)
ENC_Move_Overlay_Window(ENC_ID, x, y);
}
//----------------------------------------------------------------------
// #[ CMainFrame::OnSize ]
//
// 機能 オーバーレイウィンドウのサイズ変更
//
// 引数: UINT nType
// int cx
// int cy
//
// 戻り値: なし
//
//----------------------------------------------------------------------
// #[ CMainFrame::OnSize ]
//
// Function: Resize overlay window
//
// Parameters: UINT nType
// int cx
// int cy
//
// Return value: none
//
//----------------------------------------------------------------------
void CMainFrame::OnSize(UINT nType, int cx, int cy)
{
CFrameWnd::OnSize(nType, cx, cy);
if(hWndOverlay)
ENC_Resize_Overlay_Window(ENC_ID, cx, cy);
}
//----------------------------------------------------------------------
// #[ CMainFrame::OnSetTime ]
//
// 機能 キャプチャ時間の設定ダイアログ呼び出し
//
// 引数: なし
//
// 戻り値: なし
//
//----------------------------------------------------------------------
// #[ CMainFrame::OnSetTime ]
//
// Function: Set recorde time
//
// Parameters: none
//
// Return value: none
//
//----------------------------------------------------------------------
void CMainFrame::OnSetTime()
{
CTimeDlg dlg;
dlg.DoModal();
}
//----------------------------------------------------------------------
// #[ CMainFrame::OnSetAudioParam ]
//
// 機能 オーディオパラメータ設定ダイアログ呼び出し
//
// 引数: なし
//
// 戻り値: なし
//
//----------------------------------------------------------------------
// #[ CMainFrame::OnSetAudioParam ]
//
// Function: Set audio parameters
//
// Parameters: none
//
// Return value: none
//
//----------------------------------------------------------------------
void CMainFrame::OnSetAudioParam()
{
CAudioDlg dlg;
dlg.DoModal();
}
//----------------------------------------------------------------------
// #[ CMainFrame::OnSetAudioEncParam ]
//
// 機能 オーディオエンコードパラメータ設定ダイアログ呼び出し
//
// 引数: なし
//
// 戻り値: なし
//
//----------------------------------------------------------------------
// #[ CMainFrame::OnSetAudioEncParam ]
//
// Function: Set audio encode parameters
//
// Parameters: none
//
// Return value: none
//
//----------------------------------------------------------------------
void CMainFrame::OnSetAudioEncParam()
{
CAudioEncDlg dlg;
RECT rc;
if(dlg.DoModal() == IDOK)
{
GetClientRect(&rc);
ENC_Resize_Overlay_Window(ENC_ID, rc.right, rc.bottom);
}
}
//----------------------------------------------------------------------
// #[ CMainFrame::OnSetVideoParam ]
//
// 機能 ビデオパラメータ設定ダイアログ呼び出し
//
// 引数: なし
//
// 戻り値: なし
//
//----------------------------------------------------------------------
// #[ CMainFrame::OnSetVideoParam ]
//
// Function: Set video parameters
//
// Parameters: none
//
// Return value: none
//
//----------------------------------------------------------------------
void CMainFrame::OnSetVideoParam()
{
ENC_RETURN enc_return;
CVideoDlg dlg;
CString strMessage;
RECT rc;
if(dlg.DoModal() == IDOK)
{
// ウィンドウハンドルの更新
// Get a handle of overlay window
enc_return = ENC_Get_Overlay_Window(ENC_ID, &hWndOverlay);
if(enc_return != ENC_SUCCESS)
{
strMessage.LoadString(IDC_ERROR_GET_OVERLAY);
MessageBox(strMessage);
return;
}
GetClientRect(&rc);
ENC_Resize_Overlay_Window(ENC_ID, rc.right, rc.bottom);
}
}
//----------------------------------------------------------------------
// #[ CMainFrame::OnSetVideoEncParam ]
//
// 機能 ビデオエンコードパラメータ設定ダイアログ呼び出し
//
// 引数: なし
//
// 戻り値: なし
//
//----------------------------------------------------------------------
// #[ CMainFrame::OnSetVideoEncParam ]
//
// Function: Set video encode parameters
//
// Parameters: none
//
// Return value: none
//
//----------------------------------------------------------------------
void CMainFrame::OnSetVideoEncParam()
{
CVideoEncDlg dlg;
dlg.DoModal();
}
//----------------------------------------------------------------------
// #[ CMainFrame::OnEncAudio ]
//
// 機能 エンコード(オーディオ)
//
// 引数: なし
//
// 戻り値: なし
//
//----------------------------------------------------------------------
// #[ CMainFrame::OnEncAudio ]
//
// Function: Audio encode
//
// Parameters: none
//
// Return value: none
//
//----------------------------------------------------------------------
void CMainFrame::OnEncAudio()
{
ENC_RETURN enc_return;
CString strMessage;
CString strFileName;
char szFile[MAX_PATH];
char szFilter[] = {"Mpeg2 Audio(*,m2a)|*.m2a|Mpeg1 Audio(*.mpa)|*.mpa||"};
// ダイアログの設定
// Initialize dialog
CFileDialog dlg(FALSE, NULL, NULL,
OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter);
// ファイル名の取得
// Get file name
enc_return = ENC_Get_Movie_File(ENC_ID, ENC_RECORD_AUDIO, szFile);
if(enc_return == ENC_SUCCESS)
dlg.m_ofn.lpstrFile = szFile;
if(dlg.DoModal() == IDOK)
{
strFileName = dlg.GetPathName();
lstrcpy(szFile, strFileName);
SetWindowText(szFile);
// ファイル名を設定する
// Set audio encode file name
enc_return = ENC_Set_Movie_File(ENC_ID, ENC_RECORD_AUDIO, szFile);
if(enc_return == ENC_SUCCESS)
{
enc_return = ENC_Init_Movie(ENC_ID);
if(enc_return == ENC_SUCCESS)
{
strMessage.LoadString(IDC_MESSAGE_START_CAPTURE);
MessageBox(strMessage);
enc_return = ENC_Record_Movie(ENC_ID, ENC_RECORD_AUDIO);
if(enc_return != ENC_SUCCESS)
{
strMessage.LoadString(IDC_ERROR_START_CAPTURE);
MessageBox(strMessage);
return;
}
}
}
}
}
//----------------------------------------------------------------------
// #[ CMainFrame::OnEncVideo ]
//
// 機能 エンコード(ビデオ)
//
// 引数: なし
//
// 戻り値: なし
//
//----------------------------------------------------------------------
// #[ CMainFrame::OnEncVideo ]
//
// Function: Video encode
//
// Parameters: none
//
// Return value: none
//
//----------------------------------------------------------------------
void CMainFrame::OnEncVideo()
{
ENC_RETURN enc_return;
CString strMessage;
CString strFileName;
char szFile[MAX_PATH];
char szFilter[] = {"Mpeg2 Video(*,m2v)|*.m2v|Mpeg1 Video(*.mpv)|*.mpv||"};
// ダイアログの設定
// Initialize dialog
CFileDialog dlg(FALSE, NULL, NULL,
OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter);
// ファイル名の取得
// Get file name
enc_return = ENC_Get_Movie_File(ENC_ID, ENC_RECORD_VIDEO, szFile);
if(enc_return == ENC_SUCCESS)
dlg.m_ofn.lpstrFile = szFile;
if(dlg.DoModal() == IDOK)
{
strFileName = dlg.GetPathName();
lstrcpy(szFile, strFileName);
SetWindowText(szFile);
// ファイル名を設定する
// Set audio encode file name
enc_return = ENC_Set_Movie_File(ENC_ID, ENC_RECORD_VIDEO, szFile);
if(enc_return == ENC_SUCCESS)
{
enc_return = ENC_Init_Movie(ENC_ID);
if(enc_return == ENC_SUCCESS)
{
strMessage.LoadString(IDC_MESSAGE_START_CAPTURE);
MessageBox(strMessage);
enc_return = ENC_Record_Movie(ENC_ID, ENC_RECORD_VIDEO);
if(enc_return != ENC_SUCCESS)
{
strMessage.LoadString(IDC_ERROR_START_CAPTURE);
MessageBox(strMessage);
return;
}
}
}
}
}
//----------------------------------------------------------------------
// #[ CMainFrame::OnEncAV ]
//
// 機能 エンコード(オーディオ+ビデオ)
//
// 引数: なし
//
// 戻り値: なし
//
//----------------------------------------------------------------------
// #[ CMainFrame::OnEncAV ]
//
// Function: Audio and video encode
//
// Parameters: none
//
// Return value: none
//
//----------------------------------------------------------------------
void CMainFrame::OnEncAv()
{
ENC_RETURN enc_return;
CString strMessage;
enc_return = ENC_Init_Movie(ENC_ID);
if(enc_return == ENC_SUCCESS)
{
strMessage.LoadString(IDC_MESSAGE_START_CAPTURE);
MessageBox(strMessage);
enc_return = ENC_Record_Movie(ENC_ID, ENC_RECORD_AUDIO | ENC_RECORD_VIDEO);
if(enc_return != ENC_SUCCESS)
{
strMessage.LoadString(IDC_ERROR_START_CAPTURE);
MessageBox(strMessage);
return;
}
}
}
//----------------------------------------------------------------------
// #[ CMainFrame::OnEncProgram ]
//
// 機能 エンコード(プログラムストリーム)
//
// 引数: なし
//
// 戻り値: なし
//
//----------------------------------------------------------------------
// #[ CMainFrame::OnEncProgram ]
//
// Function: Program stream encode
//
// Parameters: none
//
// Return value: none
//
//----------------------------------------------------------------------
void CMainFrame::OnEncProgram()
{
ENC_RETURN enc_return;
CString strMessage;
CString strFileName;
char szFile[MAX_PATH];
char szFilter[] = {"Mpeg2 Program Stream(*,m2p)|*.m2p|Mpeg1 System Stream(*.mpg)|*.mpg||"};
// ダイアログの設定
// Initialize dialog
CFileDialog dlg(FALSE, NULL, NULL,
OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter);
// ファイル名の取得
// Get file name
enc_return = ENC_Get_Movie_File(ENC_ID, ENC_RECORD_PS, szFile);
if(enc_return == ENC_SUCCESS)
dlg.m_ofn.lpstrFile = szFile;
if(dlg.DoModal() == IDOK)
{
strFileName = dlg.GetPathName();
lstrcpy(szFile, strFileName);
SetWindowText(szFile);
// ファイル名の取得
// Get file name
enc_return = ENC_Set_Movie_File(ENC_ID, ENC_RECORD_PS, szFile);
if(enc_return == ENC_SUCCESS)
{
enc_return = ENC_Init_Movie(ENC_ID);
if(enc_return == ENC_SUCCESS)
{
strMessage.LoadString(IDC_MESSAGE_START_CAPTURE);
MessageBox(strMessage);
enc_return = ENC_Record_Movie(ENC_ID, ENC_RECORD_PS);
if(enc_return != ENC_SUCCESS)
{
strMessage.LoadString(IDC_ERROR_START_CAPTURE);
MessageBox(strMessage);
return;
}
}
}
}
}
//----------------------------------------------------------------------
// #[ CMainFrame::OnSetOverlay ]
//
// 機能 オーバーレイの表示/非表示の切り替え
//
// 引数: なし
//
// 戻り値: なし
//
//----------------------------------------------------------------------
// #[ CMainFrame::OnSetOverlay ]
//
// Function: Set overlay state
//
// Parameters: none
//
// Return value: none
//
//----------------------------------------------------------------------
void CMainFrame::OnSetOverlay()
{
ENC_RETURN enc_return;
CString strMessage;
CMenu* pMenu;
CMenu* pPopup;
UINT nState;
pMenu = GetMenu();
pPopup = pMenu->GetSubMenu(1);
nState = pPopup->GetMenuState(IDM_SET_OVERLAY, MF_BYCOMMAND);
// ウィンドウハンドルの更新
// Get a handle of overlay window
enc_return = ENC_Get_Overlay_Window(ENC_ID, &hWndOverlay);
if(hWndOverlay != NULL)
{
enc_return = ENC_Show_Overlay_Window(ENC_ID, nState & MF_CHECKED ? FALSE : TRUE);
if(enc_return == ENC_SUCCESS)
pPopup->CheckMenuItem(IDM_SET_OVERLAY, MF_BYCOMMAND | (nState & MF_CHECKED ? MF_UNCHECKED : MF_CHECKED));
}
}
//----------------------------------------------------------------------
// #[ CMainFrame::OnUpdateEncAudio ]
//
// 機能 エンコード中は選択できないようにする
//
// 引数: CCmdUI* pCmdUI
//
// 戻り値: なし
//
//----------------------------------------------------------------------
// #[ CMainFrame::OnUpdateEncAudio ]
//
// Function: If encoder is working, user cannot select the item.
//
// Parameters: CCmdUI* pCmdUI
//
// Return value: none
//
//----------------------------------------------------------------------
void CMainFrame::OnUpdateEncAudio(CCmdUI* pCmdUI)
{
ENC_STATUS enc_status;
if(ENC_Can_Record(ENC_ID) != ENC_SUCCESS)
{
pCmdUI->Enable(FALSE);
return;
}
ENC_Get_Status(ENC_ID, &enc_status);
pCmdUI->Enable(enc_status == ENC_STATUS_STOP ? TRUE : FALSE);
}
//----------------------------------------------------------------------
// #[ CMainFrame::OnUpdateEncVideo ]
//
// 機能 エンコード中は選択できないようにする
//
// 引数: CCmdUI* pCmdUI
//
// 戻り値: なし
//
//----------------------------------------------------------------------
// #[ CMainFrame::OnUpdateEncVideo ]
//
// Function: If encoder is working, user cannot select the item.
//
// Parameters: CCmdUI* pCmdUI
//
// Return value: none
//
//----------------------------------------------------------------------
void CMainFrame::OnUpdateEncVideo(CCmdUI* pCmdUI)
{
ENC_STATUS enc_status;
if(ENC_Can_Record(ENC_ID) != ENC_SUCCESS)
{
pCmdUI->Enable(FALSE);
return;
}
ENC_Get_Status(ENC_ID, &enc_status);
pCmdUI->Enable(enc_status == ENC_STATUS_STOP ? TRUE : FALSE);
}
//----------------------------------------------------------------------
// #[ CMainFrame::OnUpdateEncAv ]
//
// 機能 エンコード中は選択できないようにする
//
// 引数: CCmdUI* pCmdUI
//
// 戻り値: なし
//
//----------------------------------------------------------------------
// #[ CMainFrame::OnUpdateEncAv ]
//
// Function: If encoder is working, user cannot select the item.
//
// Parameters: CCmdUI* pCmdUI
//
// Return value: none
//
//----------------------------------------------------------------------
void CMainFrame::OnUpdateEncAv(CCmdUI* pCmdUI)
{
ENC_STATUS enc_status;
if(ENC_Can_Record(ENC_ID) != ENC_SUCCESS)
{
pCmdUI->Enable(FALSE);
return;
}
ENC_Get_Status(ENC_ID, &enc_status);
pCmdUI->Enable(enc_status == ENC_STATUS_STOP ? TRUE : FALSE);
}
//----------------------------------------------------------------------
// #[ CMainFrame::OnUpdateEncProgram ]
//
// 機能 エンコード中は選択できないようにする
//
// 引数: CCmdUI* pCmdUI
//
// 戻り値: なし
//
//----------------------------------------------------------------------
// #[ CMainFrame::OnUpdateEncProgram ]
//
// Function: If encoder is working, user cannot select the item.
//
// Parameters: CCmdUI* pCmdUI
//
// Return value: none
//
//----------------------------------------------------------------------
void CMainFrame::OnUpdateEncProgram(CCmdUI* pCmdUI)
{
ENC_STATUS enc_status;
if(ENC_Can_Record(ENC_ID) != ENC_SUCCESS)
{
pCmdUI->Enable(FALSE);
return;
}
ENC_Get_Status(ENC_ID, &enc_status);
pCmdUI->Enable(enc_status == ENC_STATUS_STOP ? TRUE : FALSE);
}
//----------------------------------------------------------------------
// #[ CMainFrame::OnEncStop ]
//
// 機能 エンコードを中止する
//
// 引数: なし
//
// 戻り値: なし
//
//----------------------------------------------------------------------
// #[ CMainFrame::OnEncStop ]
//
// Function: Stop the encode
//
// Parameters: none
//
// Return value: none
//
//----------------------------------------------------------------------
void CMainFrame::OnEncStop()
{
ENC_RETURN enc_return;
CString strMessage;
enc_return = ENC_Stop(ENC_ID);
if(enc_return != ENC_SUCCESS)
{
strMessage.LoadString(IDC_ERROR_STOP_CAPTURE);
MessageBox(strMessage);
return;
}
}
//----------------------------------------------------------------------
// #[ CMainFrame::OnUpdateEncStop ]
//
// 機能 エンコード中以外は選択できないようにする
//
// 引数: CCmdUI* pCmdUI
//
// 戻り値: なし
//
//----------------------------------------------------------------------
// #[ CMainFrame::OnUpdateEncStop ]
//
// Function: If encoder is working, user can select the item.
//
// Parameters: CCmdUI* pCmdUI
//
// Return value: none
//
//----------------------------------------------------------------------
void CMainFrame::OnUpdateEncStop(CCmdUI* pCmdUI)
{
ENC_STATUS enc_status;
ENC_Get_Status(ENC_ID, &enc_status);
pCmdUI->Enable(enc_status == ENC_STATUS_MOVIE ? TRUE : FALSE);
}
//----------------------------------------------------------------------
// #[ CMainFrame::OnUpdateAppExit ]
//
// 機能 エンコード中は選択できないようにする
//
// 引数: CCmdUI* pCmdUI
//
// 戻り値: なし
//
//----------------------------------------------------------------------
// #[ CMainFrame::OnUpdateAppExit ]
//
// Function: If encoder is working, user cannot select the item.
//
// Parameters: CCmdUI* pCmdUI
//
// Return value: none
//
//----------------------------------------------------------------------
void CMainFrame::OnUpdateAppExit(CCmdUI* pCmdUI)
{
ENC_STATUS enc_status;
ENC_Get_Status(ENC_ID, &enc_status);
pCmdUI->Enable(enc_status == ENC_STATUS_STOP ? TRUE : FALSE);
}
//----------------------------------------------------------------------
// #[ CMainFrame::OnUpdateSetAudioParam ]
//
// 機能 エンコード中は選択できないようにする
//
// 引数: CCmdUI* pCmdUI
//
// 戻り値: なし
//
//----------------------------------------------------------------------
// #[ CMainFrame::OnUpdateSetAudioParam ]
//
// Function: If encoder is working, user cannot select the item.
//
// Parameters: CCmdUI* pCmdUI
//
// Return value: none
//
//----------------------------------------------------------------------
void CMainFrame::OnUpdateSetAudioParam(CCmdUI* pCmdUI)
{
ENC_STATUS enc_status;
ENC_Get_Status(ENC_ID, &enc_status);
pCmdUI->Enable(enc_status == ENC_STATUS_STOP ? TRUE : FALSE);
}
//----------------------------------------------------------------------
// #[ CMainFrame::OnUpdateSetAudioEncParam ]
//
// 機能 エンコード中は選択できないようにする
//
// 引数: CCmdUI* pCmdUI
//
// 戻り値: なし
//
//----------------------------------------------------------------------
// #[ CMainFrame::OnUpdateSetAudioEncParam ]
//
// Function: If encoder is working, user cannot select the item.
//
// Parameters: CCmdUI* pCmdUI
//
// Return value: none
//
//----------------------------------------------------------------------
void CMainFrame::OnUpdateSetAudioEncParam(CCmdUI* pCmdUI)
{
ENC_STATUS enc_status;
ENC_Get_Status(ENC_ID, &enc_status);
pCmdUI->Enable(enc_status == ENC_STATUS_STOP ? TRUE : FALSE);
}
//----------------------------------------------------------------------
// #[ CMainFrame::OnUpdateSetVideoParam ]
//
// 機能 エンコード中は選択できないようにする
//
// 引数: CCmdUI* pCmdUI
//
// 戻り値: なし
//
//----------------------------------------------------------------------
// #[ CMainFrame::OnUpdateSetVideoParam ]
//
// Function: If encoder is working, user cannot select the item.
//
// Parameters: CCmdUI* pCmdUI
//
// Return value: none
//
//----------------------------------------------------------------------
void CMainFrame::OnUpdateSetVideoParam(CCmdUI* pCmdUI)
{
ENC_STATUS enc_status;
ENC_Get_Status(ENC_ID, &enc_status);
pCmdUI->Enable(enc_status == ENC_STATUS_STOP ? TRUE : FALSE);
}
//----------------------------------------------------------------------
// #[ CMainFrame::OnUpdateSetVideoEncParam ]
//
// 機能 エンコード中は選択できないようにする
//
// 引数: CCmdUI* pCmdUI
//
// 戻り値: なし
//
//----------------------------------------------------------------------
// #[ CMainFrame::OnUpdateSetVideoEncParam ]
//
// Function: If encoder is working, user cannot select the item.
//
// Parameters: CCmdUI* pCmdUI
//
// Return value: none
//
//----------------------------------------------------------------------
void CMainFrame::OnUpdateSetVideoEncParam(CCmdUI* pCmdUI)
{
ENC_STATUS enc_status;
ENC_Get_Status(ENC_ID, &enc_status);
pCmdUI->Enable(enc_status == ENC_STATUS_STOP ? TRUE : FALSE);
}
//----------------------------------------------------------------------
// #[ CMainFrame::OnUpdateSetTime ]
//
// 機能 エンコード中は選択できないようにする
//
// 引数: CCmdUI* pCmdUI
//
// 戻り値: なし
//
//----------------------------------------------------------------------
// #[ CMainFrame::OnUpdateSetTime ]
//
// Function: If encoder is working, user cannot select the item.
//
// Parameters: CCmdUI* pCmdUI
//
// Return value: none
//
//----------------------------------------------------------------------
void CMainFrame::OnUpdateSetTime(CCmdUI* pCmdUI)
{
ENC_STATUS enc_status;
ENC_Get_Status(ENC_ID, &enc_status);
pCmdUI->Enable(enc_status == ENC_STATUS_STOP ? TRUE : FALSE);
}
//----------------------------------------------------------------------
// #[ CMainFrame::OnUpdateSetOverlay ]
//
// 機能 オーバーレイ表示の切り替えの有効・無効を設定する
//
// 引数: CCmdUI* pCmdUI
//
// 戻り値: なし
//
//----------------------------------------------------------------------
// #[ CMainFrame::OnUpdateSetOverlay ]
//
// Function: Check the item
//
// Parameters: CCmdUI* pCmdUI
//
// Return value: none
//
//----------------------------------------------------------------------
void CMainFrame::OnUpdateSetOverlay(CCmdUI* pCmdUI)
{
// オーバーレイウィンドウが存在しない場合は無効
// If overlay window isn't found, the item disables.
if(hWndOverlay == NULL)
pCmdUI->Enable(FALSE);
else
pCmdUI->Enable(TRUE);
}
//----------------------------------------------------------------------
// #[ CMainFrame::OnSetMonitor ]
//
// 機能 モニターの切り替え
//
// 引数: なし
//
// 戻り値: なし
//
//----------------------------------------------------------------------
// #[ CMainFrame::OnSetMonitor ]
//
// Function: Change a monitor status
//
// Parameters: none
//
// Return value: none
//
//----------------------------------------------------------------------
void CMainFrame::OnSetMonitor()
{
ENC_RETURN enc_return;
CString strMessage;
CMenu* pMenu;
CMenu* pPopup;
UINT nState;
RECT rc;
pMenu = GetMenu();
pPopup = pMenu->GetSubMenu(1);
nState = pPopup->GetMenuState(IDM_SET_MONITOR, MF_BYCOMMAND);
if(nState == MF_CHECKED)
{
enc_return = ENC_Stop_Monitor(ENC_ID);
// ウィンドウハンドルの更新
// Get a handle of overlay window
enc_return = ENC_Get_Overlay_Window(ENC_ID, &hWndOverlay);
}
else
{
enc_return = ENC_Start_Monitor(ENC_ID);
// ウィンドウハンドルの更新
// Get a handle of overlay window
enc_return = ENC_Get_Overlay_Window(ENC_ID, &hWndOverlay);
GetClientRect(&rc);
ENC_Resize_Overlay_Window(ENC_ID, rc.right, rc.bottom);
}
// メニューにチェックを付ける
// Check menu item
if(enc_return == ENC_SUCCESS)
pPopup->CheckMenuItem(IDM_SET_MONITOR, MF_BYCOMMAND | (nState & MF_CHECKED ? MF_UNCHECKED : MF_CHECKED));
}
//----------------------------------------------------------------------
// #[ CMainFrame::OnUpdateSetMonitor ]
//
// 機能 メニューのモニターのチェックを更新する
//
// 引数: CCmdUI* pCmdUI
//
// 戻り値: なし
//
//----------------------------------------------------------------------
// #[ CMainFrame::OnUpdateSetMonitor ]
//
// Function: Check the item
//
// Parameters: CCmdUI* pCmdUI
//
// Return value: none
//
//----------------------------------------------------------------------
void CMainFrame::OnUpdateSetMonitor(CCmdUI* pCmdUI)
{
ENC_RETURN enc_return;
UINT monitor;
enc_return = ENC_Get_Monitor_Status(ENC_ID, &monitor);
if(enc_return == ENC_SUCCESS)
{
if(monitor)
pCmdUI->SetCheck(1);
else
pCmdUI->SetCheck(0);
}
else
pCmdUI->Enable(FALSE);
}
//----------------------------------------------------------------------
// #[ CMainFrame::AutoDetect ]
//
// 機能 入力ソースの自動検出
//
// 引数: なし
//
// 戻り値: なし
//
//----------------------------------------------------------------------
// #[ CMainFrame::AutoDetect ]
//
// Function: Detect input source
//
// Parameters: none
//
// Return value: none
//
//----------------------------------------------------------------------
void CMainFrame::AutoDetect()
{
ENC_RETURN enc_return;
ENC_VIDEO_PARAMETER enc_video_param;
int nInputSource;
CString strMessage;
UINT fMonitor;
// モニターの状態の取得
// Get monitor state
enc_return = ENC_Get_Monitor_Status(ENC_ID, &fMonitor);
if(enc_return == ENC_SUCCESS)
{
if(fMonitor)
{
// モニター出力を止める
// Stop output monitor
ENC_Stop_Monitor(ENC_ID);
}
}
// 現在の設定値を取得する
// Get video parameter
enc_return = ENC_Get_Video_Parameter(ENC_ID, &enc_video_param);
if(enc_return != ENC_SUCCESS)
{
strMessage.LoadString(IDC_ERROR_GET_PARAMETER);
MessageBox(strMessage);
return;
}
enc_return = ENC_Detect_Video_Input_Source(ENC_ID, &nInputSource);
if(enc_return == ENC_SUCCESS)
{
// 入力ソースを設定する
// Set input source
enc_video_param.fInputSource = nInputSource;
}
// 新しい値を設定する
// Set video parameters
enc_return = ENC_Set_Video_Parameter(ENC_ID, &enc_video_param);
if(enc_return != ENC_SUCCESS)
{
strMessage.LoadString(IDC_ERROR_SET_PARAMETER);
MessageBox(strMessage);
}
if(fMonitor)
{
// モニター出力を開始する
// Start output monitor
enc_return = ENC_Start_Monitor(ENC_ID);
if(enc_return != ENC_SUCCESS)
{
strMessage.LoadString(IDC_ERROR_START_MONITOR);
MessageBox(strMessage);
}
}
}
//----------------------------------------------------------------------
// #[ CMainFrame::OnSetVideoCd ]
//
// 機能 Video CDモード に設定する
//
// 引数: なし
//
// 戻り値: なし
//
//----------------------------------------------------------------------
// #[ CMainFrame::OnSetVideoCd ]
//
// Function: Set Video CD mode
//
// Parameters: none
//
// Return value: none
//
//----------------------------------------------------------------------
void CMainFrame::OnSetVideoCd()
{
ENC_RETURN enc_return;
int bEnable;
enc_return = ENC_Get_VideoCD_Mode(ENC_ID, &bEnable);
if(enc_return == ENC_SUCCESS)
{
bEnable = !bEnable;
ENC_Set_VideoCD_Mode(ENC_ID, bEnable);
}
}
//----------------------------------------------------------------------
// #[ CMainFrame::OnUpdateSetVideoCd ]
//
// 機能 メニューのVideo CD形式のチェックを更新する
//
// 引数: CCmdUI* pCmdUI
//
// 戻り値: なし
//
//----------------------------------------------------------------------
// #[ CMainFrame::OnUpdateSetVideoCd ]
//
// Function: Check the item
//
// Parameters: CCmdUI* pCmdUI
//
// Return value: none
//
//----------------------------------------------------------------------
void CMainFrame::OnUpdateSetVideoCd(CCmdUI* pCmdUI)
{
ENC_RETURN enc_return;
int bEnable;
enc_return = ENC_Get_VideoCD_Mode(ENC_ID, &bEnable);
if(enc_return == ENC_SUCCESS)
{
if(bEnable)
pCmdUI->SetCheck(1);
else
pCmdUI->SetCheck(0);
}
else
pCmdUI->Enable(FALSE);
}
//----------------------------------------------------------------------
// #[ CMainFrame::OnSetAudioFormatMpeg ]
//
// 機能 メニューのオーディオフォーマットの MPEG
//
// 引数: CCmdUI* pCmdUI
//
// 戻り値: なし
//
//----------------------------------------------------------------------
// #[ CMainFrame::OnSetAudioFormatMpeg ]
//
// Function: Select audio format...MPEG
//
// Parameters: CCmdUI* pCmdUI
//
// Return value: none
//
//----------------------------------------------------------------------
void CMainFrame::OnSetAudioFormatMpeg()
{
ENC_RETURN enc_return;
ENC_AUDIO_FORMAT enc_audio_format;
enc_return = ENC_Get_Audio_Format(ENC_ID, &enc_audio_format);
if(enc_return == ENC_SUCCESS)
{
enc_audio_format = ENC_AUDIO_FORMAT_MPEG;
ENC_Set_Audio_Format(ENC_ID, enc_audio_format);
}
}
//----------------------------------------------------------------------
// #[ CMainFrame::OnSetAudioFormatMono ]
//
// 機能 メニューのオーディオフォーマットの PCM Mono
//
// 引数: CCmdUI* pCmdUI
//
// 戻り値: なし
//
//----------------------------------------------------------------------
// #[ CMainFrame::OnSetAudioFormatMono ]
//
// Function: Select audio format...PCM Mono
//
// Parameters: CCmdUI* pCmdUI
//
// Return value: none
//
//----------------------------------------------------------------------
void CMainFrame::OnSetAudioFormatMono()
{
ENC_RETURN enc_return;
ENC_AUDIO_FORMAT enc_audio_format;
enc_return = ENC_Get_Audio_Format(ENC_ID, &enc_audio_format);
if(enc_return == ENC_SUCCESS)
{
enc_audio_format = ENC_AUDIO_FORMAT_PCM_MONO;
ENC_Set_Audio_Format(ENC_ID, enc_audio_format);
}
}
//----------------------------------------------------------------------
// #[ CMainFrame::OnSetAudioFormatStereo ]
//
// 機能 メニューのオーディオフォーマットの PCM Stereo
//
// 引数: CCmdUI* pCmdUI
//
// 戻り値: なし
//
//----------------------------------------------------------------------
// #[ CMainFrame::OnSetAudioFormatStereo ]
//
// Function: Select audio format...PCM Mono
//
// Parameters: CCmdUI* pCmdUI
//
// Return value: none
//
//----------------------------------------------------------------------
void CMainFrame::OnSetAudioFormatStereo()
{
ENC_RETURN enc_return;
ENC_AUDIO_FORMAT enc_audio_format;
enc_return = ENC_Get_Audio_Format(ENC_ID, &enc_audio_format);
if(enc_return == ENC_SUCCESS)
{
enc_audio_format = ENC_AUDIO_FORMAT_PCM_STEREO;
ENC_Set_Audio_Format(ENC_ID, enc_audio_format);
}
}
//----------------------------------------------------------------------
// #[ CMainFrame::OnSetAudioFormatMpeg ]
//
// 機能 メニューのオーディオフォーマットの MPEG をチェックする
//
// 引数: CCmdUI* pCmdUI
//
// 戻り値: なし
//
//----------------------------------------------------------------------
// #[ CMainFrame::OnSetAudioFormatMpeg ]
//
// Function: Check menu -[Audio format]-[MPEG]
//
// Parameters: CCmdUI* pCmdUI
//
// Return value: none
//
//----------------------------------------------------------------------
void CMainFrame::OnUpdateSetAudioFormatMpeg(CCmdUI* pCmdUI)
{
ENC_RETURN enc_return;
ENC_AUDIO_FORMAT enc_audio_format;
enc_return = ENC_Get_Audio_Format(ENC_ID, &enc_audio_format);
if(enc_return == ENC_SUCCESS)
{
if(enc_audio_format == ENC_AUDIO_FORMAT_MPEG)
pCmdUI->SetCheck(1);
else
pCmdUI->SetCheck(0);
}
else
pCmdUI->Enable(FALSE);
}
//----------------------------------------------------------------------
// #[ CMainFrame::OnSetAudioFormatMono ]
//
// 機能 メニューのオーディオフォーマットの PCM Mono をチェックする
//
// 引数: CCmdUI* pCmdUI
//
// 戻り値: なし
//
//----------------------------------------------------------------------
// #[ CMainFrame::OnSetAudioFormatMono ]
//
// Function: Check menu -[Audio format]-[PCM Mono]
//
// Parameters: CCmdUI* pCmdUI
//
// Return value: none
//
//----------------------------------------------------------------------
void CMainFrame::OnUpdateSetAudioFormatMono(CCmdUI* pCmdUI)
{
ENC_RETURN enc_return;
ENC_AUDIO_FORMAT enc_audio_format;
enc_return = ENC_Get_Audio_Format(ENC_ID, &enc_audio_format);
if(enc_return == ENC_SUCCESS)
{
if(enc_audio_format == ENC_AUDIO_FORMAT_PCM_MONO)
pCmdUI->SetCheck(1);
else
pCmdUI->SetCheck(0);
}
else
pCmdUI->Enable(FALSE);
}
//----------------------------------------------------------------------
// #[ CMainFrame::OnSetAudioFormatStereo ]
//
// 機能 メニューのオーディオフォーマットの PCM Stereo をチェックする
//
// 引数: CCmdUI* pCmdUI
//
// 戻り値: なし
//
//----------------------------------------------------------------------
// #[ CMainFrame::OnSetAudioFormatStereo ]
//
// Function: Check menu -[Audio format]-[PCM Stereo]
//
// Parameters: CCmdUI* pCmdUI
//
// Return value: none
//
//----------------------------------------------------------------------
void CMainFrame::OnUpdateSetAudioFormatStereo(CCmdUI* pCmdUI)
{
ENC_RETURN enc_return;
ENC_AUDIO_FORMAT enc_audio_format;
enc_return = ENC_Get_Audio_Format(ENC_ID, &enc_audio_format);
if(enc_return == ENC_SUCCESS)
{
if(enc_audio_format == ENC_AUDIO_FORMAT_PCM_STEREO)
pCmdUI->SetCheck(1);
else
pCmdUI->SetCheck(0);
}
else
pCmdUI->Enable(FALSE);
}
//----------------------------------------------------------------------
// #[ CMainFrame::OnSetVideoEncParamEx ]
//
// 機能 拡張ビデオエンコードパラメータ設定ダイアログ呼び出し
//
// 引数: なし
//
// 戻り値: なし
//
//----------------------------------------------------------------------
// #[ CMainFrame::OnSetVideoEncParamEx ]
//
// Function: Set video encode parameter ex
//
// Parameters: none
//
// Return value: none
//
//----------------------------------------------------------------------
void CMainFrame::OnSetVideoEncParamEx()
{
CVideoEncExDlg dlg;
dlg.DoModal();
}
//----------------------------------------------------------------------
// #[ CMainFrame::OnUpdateSetVideoEncParamEx ]
//
// 機能 停止中のみ拡張ビデオエンコードダイアログを呼ぶようにする
//
// 引数: CCmdUI* pCmdUI
//
// 戻り値: なし
//
//----------------------------------------------------------------------
// #[ CMainFrame::OnUpdateSetVideoEncParamEx ]
//
// Function: Select the item only encoder is stopped
//
// Parameters: CCmdUI* pCmdUI
//
// Return value: none
//
//----------------------------------------------------------------------
void CMainFrame::OnUpdateSetVideoEncParamEx(CCmdUI* pCmdUI)
{
ENC_STATUS enc_status;
ENC_Get_Status(ENC_ID, &enc_status);
pCmdUI->Enable(enc_status == ENC_STATUS_STOP ? TRUE : FALSE);
}
//----------------------------------------------------------------------
// #[ StatusProc ]
//
// 機能 コールバック関数
//
// 引数: UINT enc_id
// ENC_STATUS_NOTIFY enc_state
//
// 戻り値: なし
//
//----------------------------------------------------------------------
// #[ StatusProc ]
//
// Function: Callback function
//
// Paraneters: UINT enc_id
// ENC_STATUS_NOTIFY enc_state
//
// Return value: none
//
//----------------------------------------------------------------------
void CALLBACK StatusProc(UINT enc_id, ENC_STATUS_NOTIFY enc_state)
{
UINT count;
double time;
char szText[MAX_PATH];
if(enc_state == ENC_NOTIFY_STOP)
{
ENC_Get_Frame_Count(enc_id, &count);
ENC_Get_Time(enc_id, &time);
sprintf(szText,"Encode Frame : %ld\nEncode Time : %.2f[sec]", count, time);
MessageBox(AfxGetMainWnd()->GetSafeHwnd(), szText, "Encode", MB_OK);
}
}
//----------------------------------------------------------------------
// #[ ErrorProc ]
//
// 機能 コールバック関数(エラー)
//
// 引数: UINT enc_id
// ULONG error
//
// 戻り値: なし
//
//----------------------------------------------------------------------
// #[ ErrorProc ]
//
// Function: Callback function (error)
//
// Parameters: UINT enc_id
// ULONG error
//
// Return value: none
//
//----------------------------------------------------------------------
void CALLBACK ErrorProc(UINT enc_id, ULONG error)
{
CString strText;
switch (error)
{
case MVR_ERROR_SUCCESS:
strText = "MVR_ERROR_SUCCESS";
break;
case MVR_ERROR_PENDING:
strText = "MVR_ERROR_PENDING";
break;
case MVR_ERROR_SYSTEM_ERROR:
strText = "MVR_ERROR_SYSTEM_ERROR";
break;
case MVR_ERROR_NOT_PENDING:
strText = "MVR_ERROR_NOT_PENDING";
break;
case MVR_ERROR_INVALID_ASYNCOP:
strText = "MVR_ERROR_INVALID_ASYNCOP";
break;
case MVR_ERROR_UNSUPPORTED:
strText = "MVR_ERROR_UNSUPPORTED";
break;
case MVR_ERROR_INVALID_TYPE:
strText = "MVR_ERROR_INVALID_TYPE";
break;
case MVR_ERROR_INVALID_OPTION:
strText = "MVR_ERROR_INVALID_OPTION";
break;
case MVR_ERROR_INVALID_ADDRESS:
strText = "MVR_ERROR_INVALID_ADDRESS";
break;
case MVR_ERROR_LIMIT_EXCEEDED:
strText = "MVR_ERROR_LIMIT_EXCEEDED";
break;
case MVR_ERROR_INVALID_HANDLE:
strText = "MVR_ERROR_INVALID_HANDLE";
break;
case MVR_ERROR_INVALID_STREAM:
strText = "MVR_ERROR_INVALID_STREAM";
break;
case MVR_ERROR_INVALID_BUFFER:
strText = "MVR_ERROR_INVALID_BUFFER";
break;
case MVR_ERROR_INVALID_MESSAGE:
strText = "MVR_ERROR_INVALID_MESSAGE";
break;
case MVR_ERROR_CANCELED:
strText = "MVR_ERROR_CANCELED";
break;
case MVR_ERROR_BUSY:
strText = "MVR_ERROR_BUSY";
break;
case MVR_ERROR_BUFFER_ERROR:
strText = "MVR_ERROR_BUFFER_ERROR";
break;
case MVR_ERROR_MESSAGE_ERROR:
strText = "MVR_ERROR_MESSAGE_ERROR";
break;
case MVR_ERROR_BAD_PARAM:
strText = "MVR_ERROR_BAD_PARAM";
break;
case MVR_ERROR_HARDWARE_ERROR:
strText = "MVR_ERROR_HARDWARE_ERROR";
break;
case MVR_ERROR_ALLOC_FAILURE:
strText = "MVR_ERROR_ALLOC_FAILURE";
break;
case MVR_ERROR_INVALID_EVENT:
strText = "MVR_ERROR_INVALID_EVENT";
break;
case MVR_ERROR_INVALID_STATE:
strText = "MVR_ERROR_INVALID_STATE";
break;
case MVR_ERROR_CURRENT_STATE:
strText = "MVR_ERROR_CURRENT_STATE";
break;
case MVR_ERROR_INVALID_FRAME_TYPE:
strText = "MVR_ERROR_INVALID_FRAME_TYPE";
break;
case MVR_ERROR_INSUFFICIENT_BUFFERS:
strText = "MVR_ERROR_INSUFFICIENT_BUFFERS";
break;
case MVR_ERROR_TIMEOUT:
strText = "MVR_ERROR_TIMEOUT";
break;
case MVR_ERROR_INVALID_CODEC_STATE:
strText = "MVR_ERROR_INVALID_CODEC_STATE";
break;
case MVR_ERROR_INVALID_FORMAT:
strText = "MVR_ERROR_INVALID_FORMAT";
break;
case MVR_ERROR_INVALID_OPERATION:
strText = "MVR_ERROR_INVALID_OPERATION";
break;
case MVR_ERROR_OVERFLOW:
strText = "MVR_ERROR_OVERFLOW";
break;
case MVR_ERROR_UNDERFLOW:
strText = "MVR_ERROR_UNDERFLOW";
break;
case MVR_ERROR_SESSION_CANCELED:
strText = "MVR_ERROR_SESSION_CANCELED";
break;
case MVR_ERROR_UCODE_NOT_FOUND:
strText = "MVR_ERROR_UCODE_NOT_FOUND";
break;
case MVR_ERROR_AUDIO_UCODE_NOT_FOUND:
strText = "MVR_ERROR_AUDIO_UCODE_NOT_FOUND";
break;
case MVR_ERROR_PARSE_ERROR:
strText = "MVR_ERROR_PARSE_ERROR";
break;
case MVR_ERROR_END_OF_STREAM:
strText = "MVR_ERROR_END_OF_STREAM";
break;
case MVR_ERROR_DISK_FULL:
strText = "MVR_ERROR_DISK_FULL";
break;
case MVR_ERROR_STREAMS_CLOSED:
strText = "MVR_ERROR_STREAMS_CLOSED";
break;
case MVR_ERROR_INTERNAL_ERROR:
strText = "MVR_ERROR_INTERNAL_ERROR";
break;
case MVR_ERROR_INVALID_SHORT_BUFFER:
strText = "MVR_ERROR_INVALID_SHORT_BUFFER";
break;
case MVR_ERROR_EVENT_DATA_OVERRUN:
strText = "MVR_ERROR_EVENT_DATA_OVERRUN";
break;
case MVR_ERROR_EVENT_DATA_UNDERRUN:
strText = "MVR_ERROR_EVENT_DATA_UNDERRUN";
break;
case MVR_ERROR_EVENT_DEVICE_ERROR:
strText = "MVR_ERROR_EVENT_DEVICE_ERROR";
break;
case MVR_ERROR_EVENT_LOSS_OF_VIDEO:
strText = "MVR_ERROR_EVENT_LOSS_OF_VIDEO";
break;
case MVR_ERROR_EVENT_EVENT_LOSS:
strText = "MVR_ERROR_EVENT_EVENT_LOSS";
break;
case MVR_ERROR_EVENT_UNRECOVERABLE_ERROR:
strText = "MVR_ERROR_EVENT_UNRECOVERABLE_ERROR";
break;
default:
strText = "????";
break;
}
AfxMessageBox(strText);
}
//----------------------------------------------------------------------
// #[ TmapProc ]
//
// 機能 コールバック関数
//
// 引数: UINT enc_id
// ENC_VOBU_ENT_INFO *tmap
//
// 戻り値: なし
//
//----------------------------------------------------------------------
// #[ TmapProc ]
//
// Function: Callback function
//
// Parameters: UINT enc_id
// ENC_VOBU_ENT_INFO *tmap
//
// Return value: none
//
//----------------------------------------------------------------------
void CALLBACK TmapProc(UINT enc_id, ENC_VOBU_ENT_INFO *tmap, UINT)
{
TRACE1("TmapProc (ID = %d)\n", enc_id);
char szText[256];
wsprintf(szText, "VOBU size = %d, 1st reference picture = %d, playback = %d",
tmap->Vobu_Sz, tmap->Fstref_Sz, tmap->Vobu_Pb_Tm);
::SetWindowText(pMain->m_hWnd, szText);
}
//----------------------------------------------------------------------
// #[ CMainFrame::OnSetOverlayAdjust ]
//
// 機能 オーバーレイの画質を調整する
//
// 引数: なし
//
// 戻り値: なし
//
//----------------------------------------------------------------------
// #[ CMainFrame::OnSetOverlayAdjust ]
//
// Function: Set Adjust (Overlay Window)
//
// Parameters: none
//
// Return value: none
//
//----------------------------------------------------------------------
void CMainFrame::OnSetOverlayAdjust()
{
COverlayDlg dlg;
dlg.DoModal();
}
//----------------------------------------------------------------------
// #[ CMainFrame::OnSetGetLastError ]
//
// 機能 エラーを取得する
//
// 引数: なし
//
// 戻り値: なし
//
//----------------------------------------------------------------------
// #[ CMainFrame::OnSetGetLastError ]
//
// Function: Get Last Error
//
// Parameters: none
//
// Return value: none
//
//----------------------------------------------------------------------
void CMainFrame::OnSetGetLastError()
{
ULONG Err;
char szText[4];
Err = ENC_Get_Last_Error(ENC_ID);
if(Err == MVR_ERROR_SUCCESS)
return;
wsprintf(szText, "Error = %d\n", Err);
MessageBox(szText);
}
//----------------------------------------------------------------------
// #[ CMainFrame::OnSetEncodeFile ]
//
// 機能 詳細エンコードパラメータの設定
//
// 引数: なし
//
// 戻り値: なし
//
//----------------------------------------------------------------------
// #[ CMainFrame::OnSetEncodeFile ]
//
// Function: Set encode parameter.
//
// Parameters: none
//
// Return value: none
//
//----------------------------------------------------------------------
void CMainFrame::OnSetEncodeFile()
{
CString strMessage;
CString strFile;
char szFile[MAX_PATH];
// ダイアログの設定
// Initialize dialog
CFileDialog dlg(TRUE, NULL, NULL,
OFN_HIDEREADONLY |
OFN_FILEMUSTEXIST |
OFN_PATHMUSTEXIST,
NULL, this);
if(dlg.DoModal() == IDOK)
{
strFile = dlg.GetPathName();
lstrcpy(szFile, strFile);
if(ENC_Set_Video_Encode_File(ENC_ID, szFile) == ENC_FAIL)
{
strMessage.LoadString(IDS_ERROR_OPEN_FILE);
MessageBox(strMessage);
}
}
}
//----------------------------------------------------------------------
// #[ CMainFrame::OnSetOverlayRect ]
//
// 機能 オーバーレイの表示領域を設定する
//
// 引数: なし
//
// 戻り値: なし
//
//----------------------------------------------------------------------
// #[ CMainFrame::OnSetOverlayRect ]
//
// Function: Set overlay rect
//
// Parameters: none
//
// Return value: none
//
//----------------------------------------------------------------------
void CMainFrame::OnSetOverlayRect()
{
COverlayRectDlg dlg;
RECT rc;
if(ENC_Get_Overlay_Rect(ENC_ID, &rc) == ENC_FAIL)
return;
dlg.m_edit_top = rc.top;
dlg.m_edit_left = rc.left;
dlg.m_edit_bottom = rc.bottom;
dlg.m_edit_right = rc.right;
if(dlg.DoModal() == IDOK)
{
rc.top = dlg.m_edit_top;
rc.left = dlg.m_edit_left;
rc.bottom = dlg.m_edit_bottom;
rc.right = dlg.m_edit_right;
ENC_Set_Overlay_Rect(ENC_ID, &rc);
}
}
//----------------------------------------------------------------------
// #[ CMainFrame::OnUpdateSetOverlayRect ]
//
// 機能 エンコード中は選択できないようにする
//
// 引数: CCmdUI* pCmdUI
//
// 戻り値: なし
//
//----------------------------------------------------------------------
// #[ CMainFrame::OnUpdateSetOverlayRect ]
//
// Function: If encoder is working, user cannot select the item.
//
// Parameters: CCmdUI* pCmdUI
//
// Return value: none
//
//----------------------------------------------------------------------
void CMainFrame::OnUpdateSetOverlayRect(CCmdUI* pCmdUI)
{
ENC_STATUS enc_status;
if(ENC_Can_Record(ENC_ID) != ENC_SUCCESS)
{
pCmdUI->Enable(FALSE);
return;
}
ENC_Get_Status(ENC_ID, &enc_status);
pCmdUI->Enable(enc_status == ENC_STATUS_STOP ? TRUE : FALSE);
}