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 >
C/C++ Source or Header  |  2001-02-09  |  104KB  |  2,149 lines

  1. //======================================================================
  2. // -- MainFrm.cpp --                                                    
  3. //                                                                      
  4. //  MVR-D2000                                                           
  5. //                                  エンコード  サンプルプログラム      
  6. //                                  Encode      sample program          
  7. //                                                                      
  8. // Copyright (C) 1999-2000 Canopus Co., Ltd. All rights reserved.       
  9. //======================================================================
  10. //                                                                      
  11. // -- サンプルプログラムをご使用になる前に ---                          
  12. // -- Before use this sample program... --                              
  13. //                                                                      
  14. // このサンプルプログラムは、カノープス製品を使うためにご使用ください。 
  15. //  Please use this sample progeam to use products of canopus.          
  16. //                                                                      
  17. //======================================================================
  18. // MainFrm.cpp : CMainFrame クラスの動作の定義を行います。
  19. //
  20.  
  21. #include "stdafx.h"
  22. #include "Encode.h"
  23.  
  24. #include "MainFrm.h"
  25. #include "TimeDlg.h"        // Set Record Time 
  26. #include "AudioDlg.h"       // Set Audio Parameter
  27. #include "AudioEncDlg.h"    // Set Audio Encode Parameter
  28. #include "VideoDlg.h"       // Set Video Parameter
  29. #include "VideoEncDlg.h"    // Set Video Encode Parameter
  30. #include "VideoEncExDlg.h"  // Set Video Encode Parameter Ex
  31. #include "OverlayDlg.h"     // Set Overlay Window(Adjust)
  32. #include "overlayRectDlg.h"
  33.  
  34.  
  35. #ifdef _DEBUG
  36. #define new DEBUG_NEW
  37. #undef THIS_FILE
  38. static char THIS_FILE[] = __FILE__;
  39. #endif
  40.  
  41. extern    int    ENC_ID;
  42. CMainFrame* pMain;
  43. /////////////////////////////////////////////////////////////////////////////
  44. // CMainFrame
  45.  
  46. IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)
  47.  
  48. BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
  49.     //{{AFX_MSG_MAP(CMainFrame)
  50.     ON_WM_CREATE()
  51.     ON_WM_CLOSE()
  52.     ON_WM_MOVE()
  53.     ON_WM_SIZE()
  54.     ON_COMMAND(IDM_SET_TIME, OnSetTime)
  55.     ON_COMMAND(IDM_SET_AUDIO_PARAM, OnSetAudioParam)
  56.     ON_COMMAND(IDM_SET_VIDEO_PARAM, OnSetVideoParam)
  57.     ON_COMMAND(IDM_SET_VIDEO_ENC_PARAM, OnSetVideoEncParam)
  58.     ON_COMMAND(IDM_SET_AUDIO_ENC_PARAM, OnSetAudioEncParam)
  59.     ON_COMMAND(IDM_ENC_AUDIO, OnEncAudio)
  60.     ON_COMMAND(IDM_ENC_VIDEO, OnEncVideo)
  61.     ON_COMMAND(IDM_ENC_AV, OnEncAv)
  62.     ON_COMMAND(IDM_ENC_PROGRAM, OnEncProgram)
  63.     ON_UPDATE_COMMAND_UI(IDM_ENC_AUDIO, OnUpdateEncAudio)
  64.     ON_UPDATE_COMMAND_UI(IDM_ENC_VIDEO, OnUpdateEncVideo)
  65.     ON_UPDATE_COMMAND_UI(IDM_ENC_AV, OnUpdateEncAv)
  66.     ON_UPDATE_COMMAND_UI(IDM_ENC_PROGRAM, OnUpdateEncProgram)
  67.     ON_COMMAND(IDM_ENC_STOP, OnEncStop)
  68.     ON_UPDATE_COMMAND_UI(IDM_ENC_STOP, OnUpdateEncStop)
  69.     ON_UPDATE_COMMAND_UI(ID_APP_EXIT, OnUpdateAppExit)
  70.     ON_UPDATE_COMMAND_UI(IDM_SET_AUDIO_PARAM, OnUpdateSetAudioParam)
  71.     ON_UPDATE_COMMAND_UI(IDM_SET_AUDIO_ENC_PARAM, OnUpdateSetAudioEncParam)
  72.     ON_UPDATE_COMMAND_UI(IDM_SET_VIDEO_PARAM, OnUpdateSetVideoParam)
  73.     ON_UPDATE_COMMAND_UI(IDM_SET_VIDEO_ENC_PARAM, OnUpdateSetVideoEncParam)
  74.     ON_UPDATE_COMMAND_UI(IDM_SET_TIME, OnUpdateSetTime)
  75.     ON_COMMAND(IDM_SET_OVERLAY, OnSetOverlay)
  76.     ON_UPDATE_COMMAND_UI(IDM_SET_OVERLAY, OnUpdateSetOverlay)
  77.     ON_COMMAND(IDM_SET_MONITOR, OnSetMonitor)
  78.     ON_UPDATE_COMMAND_UI(IDM_SET_MONITOR, OnUpdateSetMonitor)
  79.     ON_COMMAND(IDM_SET_VIDEO_CD, OnSetVideoCd)
  80.     ON_UPDATE_COMMAND_UI(IDM_SET_VIDEO_CD, OnUpdateSetVideoCd)
  81.     ON_COMMAND(IDM_SET_AUDIO_FORMAT_MPEG, OnSetAudioFormatMpeg)
  82.     ON_COMMAND(IDM_SET_AUDIO_FORMAT_MONO, OnSetAudioFormatMono)
  83.     ON_COMMAND(IDM_SET_AUDIO_FORMAT_STEREO, OnSetAudioFormatStereo)
  84.     ON_UPDATE_COMMAND_UI(IDM_SET_AUDIO_FORMAT_MPEG, OnUpdateSetAudioFormatMpeg)
  85.     ON_UPDATE_COMMAND_UI(IDM_SET_AUDIO_FORMAT_MONO, OnUpdateSetAudioFormatMono)
  86.     ON_UPDATE_COMMAND_UI(IDM_SET_AUDIO_FORMAT_STEREO, OnUpdateSetAudioFormatStereo)
  87.     ON_COMMAND(IDM_SET_VIDEO_ENC_PARAM_EX, OnSetVideoEncParamEx)
  88.     ON_UPDATE_COMMAND_UI(IDM_SET_VIDEO_ENC_PARAM_EX, OnUpdateSetVideoEncParamEx)
  89.     ON_COMMAND(IDM_SET_OVERLAY_ADJUST, OnSetOverlayAdjust)
  90.     ON_COMMAND(IDM_SET_GET_LAST_ERROR, OnSetGetLastError)
  91.     ON_COMMAND(IDB_SET_ENCODE_FILE, OnSetEncodeFile)
  92.     ON_COMMAND(IDM_SET_OVERLAY_RECT, OnSetOverlayRect)
  93.     ON_UPDATE_COMMAND_UI(IDM_SET_OVERLAY_RECT, OnUpdateSetOverlayRect)
  94.     //}}AFX_MSG_MAP
  95. END_MESSAGE_MAP()
  96.  
  97. /////////////////////////////////////////////////////////////////////////////
  98. // CMainFrame クラスの構築/消滅
  99. CMainFrame::CMainFrame()
  100. {
  101.     // TODO: この位置にメンバの初期化処理コードを追加してください。
  102.     hWndOverlay = NULL;
  103.     nWidth = 720;
  104.     nHeight = 480;
  105. }
  106.  
  107. CMainFrame::~CMainFrame()
  108. {
  109. }
  110.  
  111. BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
  112. {
  113.     // TODO: この位置で CREATESTRUCT cs を修正して、Window クラスやスタイルを
  114.     //       修正してください。
  115.  
  116.     return CFrameWnd::PreCreateWindow(cs);
  117. }
  118.  
  119. /////////////////////////////////////////////////////////////////////////////
  120. // CMainFrame クラスの診断
  121.  
  122. #ifdef _DEBUG
  123. void CMainFrame::AssertValid() const
  124. {
  125.     CFrameWnd::AssertValid();
  126. }
  127.  
  128. void CMainFrame::Dump(CDumpContext& dc) const
  129. {
  130.     CFrameWnd::Dump(dc);
  131. }
  132.  
  133. #endif //_DEBUG
  134.  
  135. /////////////////////////////////////////////////////////////////////////////
  136. // CMainFrame メッセージ ハンドラ
  137.  
  138.  
  139. //----------------------------------------------------------------------
  140. // #[ CMainFrame::OnCreate ]                                            
  141. //                                                                      
  142. // 機能     初期化処理                                                  
  143. //                                                                      
  144. //  引数:      LPCREATESTRUCT lpCreateStruct;                          
  145. //                                                                      
  146. //  戻り値:    int     0;      成功                                    
  147. //                      -1;     失敗                                    
  148. //----------------------------------------------------------------------
  149. // #[ CMainFrame::OnCreate ]                                            
  150. //                                                                      
  151. //  Function:   Initialize                                              
  152. //                                                                      
  153. //      Parameters:     LPCREATESTRUCT lpCreateStruct;                  
  154. //                                                                      
  155. //      Return value:   int     0;      success                         
  156. //                              -1;     fail                            
  157. //----------------------------------------------------------------------
  158. int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) 
  159. {
  160.     ENC_RETURN  enc_return;
  161.     CString     strMessage;
  162.     UINT        nNumber=0;
  163.     ENC_CONFIG    config;
  164.     UINT        ui;
  165.  
  166.     if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
  167.         return -1;
  168.  
  169.     pMain = this;
  170.  
  171.     // コールバックの設定
  172.     // Set CallbackProc
  173.     enc_return = ENC_Set_Callback(ENC_ID, StatusProc, ErrorProc, TmapProc, NULL, NULL);
  174.     if(enc_return != ENC_SUCCESS)
  175.     {
  176.         return -1;
  177.     }
  178.  
  179.     for (int i = 1; i < __argc; i++) {
  180.         LPCTSTR pszParam = __targv[i];
  181.         if ((pszParam[0] == _T('-') || pszParam[0] == _T('/')) && !_tcsnicmp(pszParam + 1, _T("id:"), _tcslen(_T("id:"))))
  182.             // id number is specified by /id:n
  183.             nNumber = atoi(pszParam + 4);
  184.     }
  185.  
  186.     if(nNumber==0)
  187.     {
  188.         memset(&config,0,sizeof(ENC_CONFIG));
  189.         ENC_Get_Codec_Config(ENC_ID,&config);
  190.  
  191.         for(ui=0;ui<=config.NumberCodecs;ui++)
  192.         {
  193.             config.CodecNumber=ui;
  194.             ENC_Get_Codec_Config(ENC_ID,&config);
  195.             if(config.CurrentUtilization==FALSE)
  196.             {
  197.                 if(config.CodecCaps & ENCCAP_ENCODE)
  198.                 {
  199.                     nNumber=ui;
  200.                     break;
  201.                 }
  202.             }
  203.         }
  204.     }
  205.     
  206.     ENC_ID=nNumber;
  207.     
  208.     ENC_Set_Codec_Number(ENC_ID, nNumber);
  209.  
  210.     // ライブラリの初期化
  211.     // Initialize library
  212.     enc_return = ENC_Initialize(ENC_ID);
  213.     if(enc_return != ENC_SUCCESS)
  214.     {
  215.         int a;
  216.         char b[50];
  217.         a = ENC_Get_Last_Error(ENC_ID);
  218.         wsprintf(b, "%d", a);
  219.         strMessage.LoadString(IDC_ERROR_INIT_LIBRARY);
  220.         MessageBox(strMessage,b);
  221.         return -1;
  222.     }
  223.  
  224.     // オーバーレイウィンドウの作成
  225.     // Create overlay window
  226.     if(hWndOverlay == NULL)
  227.         CreateOverlayWindow();
  228.  
  229.     // 入力ソースの検出
  230.     // Detect input source
  231.     AutoDetect();
  232.     
  233.     // モニタ開始
  234.     // Start monitor
  235.     ENC_Start_Monitor(ENC_ID);
  236.  
  237.     return 0;
  238. }
  239.  
  240. //----------------------------------------------------------------------
  241. // #[ CMainFrame::OnClose ]                                             
  242. //                                                                      
  243. // 機能     アプリケーションを終了します                                
  244. //                                                                      
  245. //  引数:      なし                                                    
  246. //                                                                      
  247. //  戻り値:    なし                                                    
  248. //                                                                      
  249. //----------------------------------------------------------------------
  250. // #[ CMainFrame::OnClose ]                                             
  251. //                                                                      
  252. //  Function:   End application                                         
  253. //                                                                      
  254. //      Parameters:     none                                            
  255. //                                                                      
  256. //      Return value:   none                                            
  257. //                                                                      
  258. //----------------------------------------------------------------------
  259. void CMainFrame::OnClose() 
  260. {
  261.     ENC_RETURN  enc_return;
  262.     CString     strMessage;
  263.  
  264.     // モニタ停止
  265.     // Stop monitor
  266.     ENC_Stop_Monitor(ENC_ID);
  267.  
  268.     // オーバーレイウィンドウを破棄する
  269.     // Destroy overlay window
  270.     if(hWndOverlay != NULL)
  271.     {
  272.         enc_return = ENC_Destroy_Overlay_Window(ENC_ID);
  273.         if(enc_return != ENC_SUCCESS)
  274.         {
  275.             strMessage.LoadString(IDC_ERROR_DESTROY_OVERLAY);
  276.             MessageBox(strMessage);
  277.         }
  278.     }
  279.  
  280.     // エンコーダを終了する
  281.     // Terminate decode
  282.     enc_return = ENC_Terminate(ENC_ID);
  283.     if(enc_return != ENC_SUCCESS)
  284.     {
  285.         strMessage.LoadString(IDC_ERROR_TERMINATE_ENCODE);
  286.         MessageBox(strMessage);
  287.     }
  288.     
  289.     CFrameWnd::OnClose();
  290. }
  291.  
  292. //----------------------------------------------------------------------
  293. // #[ CMainFrame::CreateOverlayWindow ]                                 
  294. //                                                                      
  295. // 機能     オーバーレイウィンドウを作成する                            
  296. //                                                                      
  297. //  引数:      なし                                                    
  298. //                                                                      
  299. //  戻り値:    BOOL    TRUE    ウィンドウ作成に成功                    
  300. //                      FALSE   ウィンドウ作成に失敗                    
  301. //                                                                      
  302. //----------------------------------------------------------------------
  303. // #[ CMainFrame::CreateOverlayWindow ]                                 
  304. //                                                                      
  305. //  Function:   Create overlay window                                   
  306. //                                                                      
  307. //      Parameters:  none                                               
  308. //                                                                      
  309. //      Return value:   BOOL    TRUE    success                         
  310. //                              FALSE   fail                            
  311. //                                                                      
  312. //----------------------------------------------------------------------
  313. BOOL CMainFrame::CreateOverlayWindow()
  314. {
  315.     ENC_RETURN  enc_return;
  316.     RECT        rc;
  317.     CString     strMessage;
  318.  
  319.     GetClientRect(&rc);
  320.  
  321.     enc_return = ENC_Can_Overlay_Window(ENC_ID, NULL, rc.right, rc.bottom);
  322.     if(enc_return != ENC_SUCCESS)
  323.     {
  324.         strMessage.LoadString(IDC_ERROR_CAN_OVERLAY);
  325.         MessageBox(strMessage);
  326.     }
  327.     else
  328.     {
  329.         // オーバーレイウィンドウの作成
  330.         // Create overlay window
  331.         enc_return = ENC_Create_Overlay_Window(ENC_ID, m_hWnd, &hWndOverlay, 0, 0, rc.right, rc.bottom);
  332.     
  333.         if(enc_return != ENC_SUCCESS)
  334.         {
  335.             strMessage.LoadString(IDC_ERROR_CREATE_OVERLAY);
  336.             MessageBox(strMessage);
  337.         }
  338.     }
  339.  
  340.     return TRUE;
  341. }
  342.  
  343. //----------------------------------------------------------------------
  344. // #[ CMainFrame::OnMove ]                                              
  345. //                                                                      
  346. // 機能     オーバーレイウィンドウの位置の移動                          
  347. //                                                                      
  348. //  引数:      int     x                                               
  349. //              int     y                                               
  350. //                                                                      
  351. //  戻り値:    なし                                                    
  352. //                                                                      
  353. //----------------------------------------------------------------------
  354. // #[ CMainFrame::OnMove ]                                              
  355. //                                                                      
  356. //  Function:   Move overlay window                                     
  357. //                                                                      
  358. //      Parameters:     int     x                                       
  359. //                      int     y                                       
  360. //                                                                      
  361. //      Return value:   none                                            
  362. //                                                                      
  363. //----------------------------------------------------------------------
  364. void CMainFrame::OnMove(int x, int y) 
  365. {
  366.     CFrameWnd::OnMove(x, y);
  367.  
  368.     if(hWndOverlay)
  369.         ENC_Move_Overlay_Window(ENC_ID, x, y);
  370. }
  371.  
  372. //----------------------------------------------------------------------
  373. // #[ CMainFrame::OnSize ]                                              
  374. //                                                                      
  375. // 機能     オーバーレイウィンドウのサイズ変更                          
  376. //                                                                      
  377. //  引数:      UINT    nType                                           
  378. //              int     cx                                              
  379. //              int     cy                                              
  380. //                                                                      
  381. //  戻り値:    なし                                                    
  382. //                                                                      
  383. //----------------------------------------------------------------------
  384. // #[ CMainFrame::OnSize ]                                              
  385. //                                                                      
  386. //  Function:   Resize overlay window                                   
  387. //                                                                      
  388. //      Parameters:     UINT    nType                                   
  389. //                      int     cx                                      
  390. //                      int     cy                                      
  391. //                                                                      
  392. //      Return value:   none                                            
  393. //                                                                      
  394. //----------------------------------------------------------------------
  395. void CMainFrame::OnSize(UINT nType, int cx, int cy) 
  396. {
  397.     CFrameWnd::OnSize(nType, cx, cy);
  398.  
  399.     if(hWndOverlay)
  400.         ENC_Resize_Overlay_Window(ENC_ID, cx, cy);
  401. }
  402.  
  403. //----------------------------------------------------------------------
  404. // #[ CMainFrame::OnSetTime ]                                           
  405. //                                                                      
  406. // 機能     キャプチャ時間の設定ダイアログ呼び出し                      
  407. //                                                                      
  408. //  引数:      なし                                                    
  409. //                                                                      
  410. //  戻り値:    なし                                                    
  411. //                                                                      
  412. //----------------------------------------------------------------------
  413. // #[ CMainFrame::OnSetTime ]                                           
  414. //                                                                      
  415. //  Function:   Set recorde time                                        
  416. //                                                                      
  417. //      Parameters:     none                                            
  418. //                                                                      
  419. //      Return value:   none                                            
  420. //                                                                      
  421. //----------------------------------------------------------------------
  422. void CMainFrame::OnSetTime() 
  423. {
  424.     CTimeDlg    dlg;
  425.  
  426.     dlg.DoModal();
  427. }
  428.  
  429. //----------------------------------------------------------------------
  430. // #[ CMainFrame::OnSetAudioParam ]                                     
  431. //                                                                      
  432. // 機能     オーディオパラメータ設定ダイアログ呼び出し                  
  433. //                                                                      
  434. //  引数:      なし                                                    
  435. //                                                                      
  436. //  戻り値:    なし                                                    
  437. //                                                                      
  438. //----------------------------------------------------------------------
  439. // #[ CMainFrame::OnSetAudioParam ]                                     
  440. //                                                                      
  441. //  Function:   Set audio parameters                                    
  442. //                                                                      
  443. //      Parameters:     none                                            
  444. //                                                                      
  445. //      Return value:   none                                            
  446. //                                                                      
  447. //----------------------------------------------------------------------
  448. void CMainFrame::OnSetAudioParam() 
  449. {
  450.     CAudioDlg   dlg;
  451.  
  452.     dlg.DoModal();
  453. }
  454.  
  455. //----------------------------------------------------------------------
  456. // #[ CMainFrame::OnSetAudioEncParam ]                                  
  457. //                                                                      
  458. // 機能     オーディオエンコードパラメータ設定ダイアログ呼び出し        
  459. //                                                                      
  460. //  引数:      なし                                                    
  461. //                                                                      
  462. //  戻り値:    なし                                                    
  463. //                                                                      
  464. //----------------------------------------------------------------------
  465. // #[ CMainFrame::OnSetAudioEncParam ]                                  
  466. //                                                                      
  467. //  Function:   Set audio encode parameters                             
  468. //                                                                      
  469. //      Parameters:     none                                            
  470. //                                                                      
  471. //      Return value:   none                                            
  472. //                                                                      
  473. //----------------------------------------------------------------------
  474. void CMainFrame::OnSetAudioEncParam() 
  475. {
  476.     CAudioEncDlg    dlg;
  477.     RECT            rc;
  478.  
  479.     if(dlg.DoModal() == IDOK)
  480.     {
  481.         GetClientRect(&rc);
  482.         ENC_Resize_Overlay_Window(ENC_ID, rc.right, rc.bottom);
  483.     }
  484. }
  485.  
  486. //----------------------------------------------------------------------
  487. // #[ CMainFrame::OnSetVideoParam ]                                     
  488. //                                                                      
  489. // 機能     ビデオパラメータ設定ダイアログ呼び出し                      
  490. //                                                                      
  491. //  引数:      なし                                                    
  492. //                                                                      
  493. //  戻り値:    なし                                                    
  494. //                                                                      
  495. //----------------------------------------------------------------------
  496. // #[ CMainFrame::OnSetVideoParam ]                                     
  497. //                                                                      
  498. //  Function:   Set video parameters                                    
  499. //                                                                      
  500. //      Parameters:     none                                            
  501. //                                                                      
  502. //      Return value:   none                                            
  503. //                                                                      
  504. //----------------------------------------------------------------------
  505. void CMainFrame::OnSetVideoParam() 
  506. {
  507.     ENC_RETURN  enc_return;
  508.     CVideoDlg   dlg;
  509.     CString     strMessage;
  510.     RECT        rc;
  511.  
  512.     if(dlg.DoModal() == IDOK)
  513.     {
  514.         // ウィンドウハンドルの更新
  515.         // Get a handle of overlay window
  516.         enc_return = ENC_Get_Overlay_Window(ENC_ID, &hWndOverlay);
  517.         if(enc_return != ENC_SUCCESS)
  518.         {
  519.             strMessage.LoadString(IDC_ERROR_GET_OVERLAY);
  520.             MessageBox(strMessage);
  521.             return;
  522.         }
  523.         
  524.         GetClientRect(&rc);
  525.         ENC_Resize_Overlay_Window(ENC_ID, rc.right, rc.bottom);
  526.     }
  527. }
  528.  
  529. //----------------------------------------------------------------------
  530. // #[ CMainFrame::OnSetVideoEncParam ]                                  
  531. //                                                                      
  532. // 機能     ビデオエンコードパラメータ設定ダイアログ呼び出し            
  533. //                                                                      
  534. //  引数:      なし                                                    
  535. //                                                                      
  536. //  戻り値:    なし                                                    
  537. //                                                                      
  538. //----------------------------------------------------------------------
  539. // #[ CMainFrame::OnSetVideoEncParam ]                                  
  540. //                                                                      
  541. //  Function:   Set video encode parameters                             
  542. //                                                                      
  543. //      Parameters:     none                                            
  544. //                                                                      
  545. //      Return value:   none                                            
  546. //                                                                      
  547. //----------------------------------------------------------------------
  548. void CMainFrame::OnSetVideoEncParam() 
  549. {
  550.     CVideoEncDlg    dlg;
  551.  
  552.     dlg.DoModal();
  553. }
  554.  
  555. //----------------------------------------------------------------------
  556. // #[ CMainFrame::OnEncAudio ]                                          
  557. //                                                                      
  558. // 機能     エンコード(オーディオ)                                    
  559. //                                                                      
  560. //  引数:      なし                                                    
  561. //                                                                      
  562. //  戻り値:    なし                                                    
  563. //                                                                      
  564. //----------------------------------------------------------------------
  565. // #[ CMainFrame::OnEncAudio ]                                          
  566. //                                                                      
  567. //  Function:   Audio encode                                            
  568. //                                                                      
  569. //      Parameters:     none                                            
  570. //                                                                      
  571. //      Return value:   none                                            
  572. //                                                                      
  573. //----------------------------------------------------------------------
  574. void CMainFrame::OnEncAudio() 
  575. {
  576.     ENC_RETURN  enc_return;
  577.     CString strMessage;
  578.     CString strFileName;
  579.     char    szFile[MAX_PATH];
  580.     char    szFilter[] = {"Mpeg2 Audio(*,m2a)|*.m2a|Mpeg1 Audio(*.mpa)|*.mpa||"};
  581.  
  582.     // ダイアログの設定
  583.     // Initialize dialog
  584.     CFileDialog dlg(FALSE, NULL, NULL,
  585.                     OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter);
  586.  
  587.     // ファイル名の取得
  588.     // Get file name
  589.     enc_return = ENC_Get_Movie_File(ENC_ID, ENC_RECORD_AUDIO, szFile);
  590.     if(enc_return == ENC_SUCCESS)
  591.         dlg.m_ofn.lpstrFile = szFile;
  592.  
  593.     if(dlg.DoModal() == IDOK)
  594.     {
  595.         strFileName = dlg.GetPathName();
  596.         lstrcpy(szFile, strFileName);
  597.  
  598.         SetWindowText(szFile);
  599.  
  600.         // ファイル名を設定する
  601.         // Set audio encode file name
  602.         enc_return = ENC_Set_Movie_File(ENC_ID, ENC_RECORD_AUDIO, szFile);
  603.         if(enc_return == ENC_SUCCESS)
  604.         {
  605.             enc_return = ENC_Init_Movie(ENC_ID);
  606.             if(enc_return == ENC_SUCCESS)
  607.             {
  608.                 strMessage.LoadString(IDC_MESSAGE_START_CAPTURE);
  609.                 MessageBox(strMessage);
  610.                 enc_return = ENC_Record_Movie(ENC_ID, ENC_RECORD_AUDIO);
  611.                 if(enc_return != ENC_SUCCESS)
  612.                 {
  613.                     strMessage.LoadString(IDC_ERROR_START_CAPTURE);
  614.                     MessageBox(strMessage);
  615.                     return;
  616.                 }
  617.             }
  618.         }
  619.     }
  620. }
  621.  
  622. //----------------------------------------------------------------------
  623. // #[ CMainFrame::OnEncVideo ]                                          
  624. //                                                                      
  625. // 機能     エンコード(ビデオ)                                        
  626. //                                                                      
  627. //  引数:      なし                                                    
  628. //                                                                      
  629. //  戻り値:    なし                                                    
  630. //                                                                      
  631. //----------------------------------------------------------------------
  632. // #[ CMainFrame::OnEncVideo ]                                          
  633. //                                                                      
  634. //  Function:   Video encode                                            
  635. //                                                                      
  636. //      Parameters:     none                                            
  637. //                                                                      
  638. //      Return value:   none                                            
  639. //                                                                      
  640. //----------------------------------------------------------------------
  641. void CMainFrame::OnEncVideo() 
  642. {
  643.     ENC_RETURN  enc_return;
  644.     CString strMessage;
  645.     CString strFileName;
  646.     char    szFile[MAX_PATH];
  647.     char    szFilter[] = {"Mpeg2 Video(*,m2v)|*.m2v|Mpeg1 Video(*.mpv)|*.mpv||"};
  648.  
  649.     // ダイアログの設定
  650.     // Initialize dialog
  651.     CFileDialog dlg(FALSE, NULL, NULL,
  652.                     OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter);
  653.  
  654.     // ファイル名の取得
  655.     // Get file name
  656.     enc_return = ENC_Get_Movie_File(ENC_ID, ENC_RECORD_VIDEO, szFile);
  657.     if(enc_return == ENC_SUCCESS)
  658.         dlg.m_ofn.lpstrFile = szFile;
  659.  
  660.     if(dlg.DoModal() == IDOK)
  661.     {
  662.         strFileName = dlg.GetPathName();
  663.         lstrcpy(szFile, strFileName);
  664.  
  665.         SetWindowText(szFile);
  666.  
  667.         // ファイル名を設定する
  668.         // Set audio encode file name
  669.         enc_return = ENC_Set_Movie_File(ENC_ID, ENC_RECORD_VIDEO, szFile);
  670.         if(enc_return == ENC_SUCCESS)
  671.         {
  672.             enc_return = ENC_Init_Movie(ENC_ID);
  673.             if(enc_return == ENC_SUCCESS)
  674.             {
  675.                 strMessage.LoadString(IDC_MESSAGE_START_CAPTURE);
  676.                 MessageBox(strMessage);
  677.                 enc_return = ENC_Record_Movie(ENC_ID, ENC_RECORD_VIDEO);
  678.                 if(enc_return != ENC_SUCCESS)
  679.                 {
  680.                     strMessage.LoadString(IDC_ERROR_START_CAPTURE);
  681.                     MessageBox(strMessage);
  682.                     return;
  683.                 }
  684.             }
  685.         }
  686.     }
  687. }
  688.  
  689. //----------------------------------------------------------------------
  690. // #[ CMainFrame::OnEncAV ]                                             
  691. //                                                                      
  692. // 機能     エンコード(オーディオ+ビデオ)                            
  693. //                                                                      
  694. //  引数:      なし                                                    
  695. //                                                                      
  696. //  戻り値:    なし                                                    
  697. //                                                                      
  698. //----------------------------------------------------------------------
  699. // #[ CMainFrame::OnEncAV ]                                             
  700. //                                                                      
  701. //  Function:   Audio and video encode                                  
  702. //                                                                      
  703. //      Parameters:     none                                            
  704. //                                                                      
  705. //      Return value:   none                                            
  706. //                                                                      
  707. //----------------------------------------------------------------------
  708. void CMainFrame::OnEncAv() 
  709. {
  710.     ENC_RETURN  enc_return;
  711.     CString     strMessage;
  712.  
  713.     enc_return = ENC_Init_Movie(ENC_ID);
  714.     if(enc_return == ENC_SUCCESS)
  715.     {
  716.         strMessage.LoadString(IDC_MESSAGE_START_CAPTURE);
  717.         MessageBox(strMessage);
  718.         enc_return = ENC_Record_Movie(ENC_ID, ENC_RECORD_AUDIO | ENC_RECORD_VIDEO);
  719.         if(enc_return != ENC_SUCCESS)
  720.         {
  721.             strMessage.LoadString(IDC_ERROR_START_CAPTURE);
  722.             MessageBox(strMessage);
  723.             return;
  724.         }
  725.     }
  726. }
  727.  
  728. //----------------------------------------------------------------------
  729. // #[ CMainFrame::OnEncProgram ]                                        
  730. //                                                                      
  731. // 機能     エンコード(プログラムストリーム)                          
  732. //                                                                      
  733. //  引数:      なし                                                    
  734. //                                                                      
  735. //  戻り値:    なし                                                    
  736. //                                                                      
  737. //----------------------------------------------------------------------
  738. // #[ CMainFrame::OnEncProgram ]                                        
  739. //                                                                      
  740. //  Function:   Program stream encode                                   
  741. //                                                                      
  742. //      Parameters:     none                                            
  743. //                                                                      
  744. //      Return value:   none                                            
  745. //                                                                      
  746. //----------------------------------------------------------------------
  747. void CMainFrame::OnEncProgram() 
  748. {
  749.     ENC_RETURN  enc_return;
  750.     CString strMessage;
  751.     CString strFileName;
  752.     char    szFile[MAX_PATH];
  753.     char    szFilter[] = {"Mpeg2 Program Stream(*,m2p)|*.m2p|Mpeg1 System Stream(*.mpg)|*.mpg||"};
  754.  
  755.     // ダイアログの設定
  756.     // Initialize dialog
  757.     CFileDialog dlg(FALSE, NULL, NULL,
  758.                     OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter);
  759.  
  760.     // ファイル名の取得
  761.     // Get file name
  762.     enc_return = ENC_Get_Movie_File(ENC_ID, ENC_RECORD_PS, szFile);
  763.     if(enc_return == ENC_SUCCESS)
  764.         dlg.m_ofn.lpstrFile = szFile;
  765.  
  766.     if(dlg.DoModal() == IDOK)
  767.     {
  768.         strFileName = dlg.GetPathName();
  769.         lstrcpy(szFile, strFileName);
  770.  
  771.         SetWindowText(szFile);
  772.  
  773.         // ファイル名の取得
  774.         // Get file name
  775.         enc_return = ENC_Set_Movie_File(ENC_ID, ENC_RECORD_PS, szFile);
  776.         if(enc_return == ENC_SUCCESS)
  777.         {
  778.             enc_return = ENC_Init_Movie(ENC_ID);
  779.             if(enc_return == ENC_SUCCESS)
  780.             {
  781.                 strMessage.LoadString(IDC_MESSAGE_START_CAPTURE);
  782.                 MessageBox(strMessage);
  783.                 enc_return = ENC_Record_Movie(ENC_ID, ENC_RECORD_PS);
  784.                 if(enc_return != ENC_SUCCESS)
  785.                 {
  786.                     strMessage.LoadString(IDC_ERROR_START_CAPTURE);
  787.                     MessageBox(strMessage);
  788.                     return;
  789.                 }
  790.             }
  791.         }
  792.     }
  793. }
  794.  
  795. //----------------------------------------------------------------------
  796. // #[ CMainFrame::OnSetOverlay ]                                        
  797. //                                                                      
  798. // 機能     オーバーレイの表示/非表示の切り替え                         
  799. //                                                                      
  800. //  引数:      なし                                                    
  801. //                                                                      
  802. //  戻り値:    なし                                                    
  803. //                                                                      
  804. //----------------------------------------------------------------------
  805. // #[ CMainFrame::OnSetOverlay ]                                        
  806. //                                                                      
  807. //  Function:   Set overlay state                                       
  808. //                                                                      
  809. //      Parameters:     none                                            
  810. //                                                                      
  811. //      Return value:   none                                            
  812. //                                                                      
  813. //----------------------------------------------------------------------
  814. void CMainFrame::OnSetOverlay() 
  815. {
  816.     ENC_RETURN  enc_return;
  817.     CString     strMessage;
  818.     CMenu*      pMenu;
  819.     CMenu*      pPopup;
  820.     UINT        nState;
  821.  
  822.     pMenu = GetMenu();
  823.     pPopup = pMenu->GetSubMenu(1);
  824.     nState = pPopup->GetMenuState(IDM_SET_OVERLAY, MF_BYCOMMAND);
  825.  
  826.     // ウィンドウハンドルの更新
  827.     // Get a handle of overlay window
  828.     enc_return = ENC_Get_Overlay_Window(ENC_ID, &hWndOverlay);
  829.  
  830.     if(hWndOverlay != NULL)
  831.     {
  832.         enc_return = ENC_Show_Overlay_Window(ENC_ID, nState & MF_CHECKED ? FALSE : TRUE);
  833.  
  834.         if(enc_return == ENC_SUCCESS)
  835.             pPopup->CheckMenuItem(IDM_SET_OVERLAY, MF_BYCOMMAND | (nState & MF_CHECKED ? MF_UNCHECKED : MF_CHECKED));
  836.     }
  837. }
  838.  
  839. //----------------------------------------------------------------------
  840. // #[ CMainFrame::OnUpdateEncAudio ]                                    
  841. //                                                                      
  842. // 機能     エンコード中は選択できないようにする                        
  843. //                                                                      
  844. //  引数:      CCmdUI* pCmdUI                                          
  845. //                                                                      
  846. //  戻り値:    なし                                                    
  847. //                                                                      
  848. //----------------------------------------------------------------------
  849. // #[ CMainFrame::OnUpdateEncAudio ]                                    
  850. //                                                                      
  851. //  Function:   If encoder is working, user cannot select the item.     
  852. //                                                                      
  853. //      Parameters:     CCmdUI* pCmdUI                                  
  854. //                                                                      
  855. //      Return value:   none                                            
  856. //                                                                      
  857. //----------------------------------------------------------------------
  858. void CMainFrame::OnUpdateEncAudio(CCmdUI* pCmdUI) 
  859. {
  860.     ENC_STATUS  enc_status;
  861.  
  862.     if(ENC_Can_Record(ENC_ID) != ENC_SUCCESS)
  863.     {
  864.         pCmdUI->Enable(FALSE);
  865.         return;
  866.     }
  867.  
  868.     ENC_Get_Status(ENC_ID, &enc_status);
  869.     pCmdUI->Enable(enc_status == ENC_STATUS_STOP ? TRUE : FALSE);
  870. }
  871.  
  872. //----------------------------------------------------------------------
  873. // #[ CMainFrame::OnUpdateEncVideo ]                                    
  874. //                                                                      
  875. // 機能     エンコード中は選択できないようにする                        
  876. //                                                                      
  877. //  引数:      CCmdUI* pCmdUI                                          
  878. //                                                                      
  879. //  戻り値:    なし                                                    
  880. //                                                                      
  881. //----------------------------------------------------------------------
  882. // #[ CMainFrame::OnUpdateEncVideo ]                                    
  883. //                                                                      
  884. //  Function:   If encoder is working, user cannot select the item.     
  885. //                                                                      
  886. //      Parameters:     CCmdUI* pCmdUI                                  
  887. //                                                                      
  888. //      Return value:   none                                            
  889. //                                                                      
  890. //----------------------------------------------------------------------
  891. void CMainFrame::OnUpdateEncVideo(CCmdUI* pCmdUI) 
  892. {
  893.     ENC_STATUS  enc_status;
  894.  
  895.     if(ENC_Can_Record(ENC_ID) != ENC_SUCCESS)
  896.     {
  897.         pCmdUI->Enable(FALSE);
  898.         return;
  899.     }
  900.  
  901.     ENC_Get_Status(ENC_ID, &enc_status);
  902.     pCmdUI->Enable(enc_status == ENC_STATUS_STOP ? TRUE : FALSE);
  903. }
  904.  
  905. //----------------------------------------------------------------------
  906. // #[ CMainFrame::OnUpdateEncAv ]                                       
  907. //                                                                      
  908. // 機能     エンコード中は選択できないようにする                        
  909. //                                                                      
  910. //  引数:      CCmdUI* pCmdUI                                          
  911. //                                                                      
  912. //  戻り値:    なし                                                    
  913. //                                                                      
  914. //----------------------------------------------------------------------
  915. // #[ CMainFrame::OnUpdateEncAv ]                                       
  916. //                                                                      
  917. //  Function:   If encoder is working, user cannot select the item.     
  918. //                                                                      
  919. //      Parameters:     CCmdUI* pCmdUI                                  
  920. //                                                                      
  921. //      Return value:   none                                            
  922. //                                                                      
  923. //----------------------------------------------------------------------
  924. void CMainFrame::OnUpdateEncAv(CCmdUI* pCmdUI) 
  925. {
  926.     ENC_STATUS  enc_status;
  927.  
  928.     if(ENC_Can_Record(ENC_ID) != ENC_SUCCESS)
  929.     {
  930.         pCmdUI->Enable(FALSE);
  931.         return;
  932.     }
  933.  
  934.     ENC_Get_Status(ENC_ID, &enc_status);
  935.     pCmdUI->Enable(enc_status == ENC_STATUS_STOP ? TRUE : FALSE);
  936. }
  937.  
  938. //----------------------------------------------------------------------
  939. // #[ CMainFrame::OnUpdateEncProgram ]                                  
  940. //                                                                      
  941. // 機能     エンコード中は選択できないようにする                        
  942. //                                                                      
  943. //  引数:      CCmdUI* pCmdUI                                          
  944. //                                                                      
  945. //  戻り値:    なし                                                    
  946. //                                                                      
  947. //----------------------------------------------------------------------
  948. // #[ CMainFrame::OnUpdateEncProgram ]                                  
  949. //                                                                      
  950. //  Function:   If encoder is working, user cannot select the item.     
  951. //                                                                      
  952. //      Parameters:     CCmdUI* pCmdUI                                  
  953. //                                                                      
  954. //      Return value:   none                                            
  955. //                                                                      
  956. //----------------------------------------------------------------------
  957. void CMainFrame::OnUpdateEncProgram(CCmdUI* pCmdUI) 
  958. {
  959.     ENC_STATUS  enc_status;
  960.  
  961.     if(ENC_Can_Record(ENC_ID) != ENC_SUCCESS)
  962.     {
  963.         pCmdUI->Enable(FALSE);
  964.         return;
  965.     }
  966.  
  967.     ENC_Get_Status(ENC_ID, &enc_status);
  968.     pCmdUI->Enable(enc_status == ENC_STATUS_STOP ? TRUE : FALSE);
  969. }
  970.  
  971. //----------------------------------------------------------------------
  972. // #[ CMainFrame::OnEncStop ]                                           
  973. //                                                                      
  974. // 機能     エンコードを中止する                                        
  975. //                                                                      
  976. //  引数:      なし                                                    
  977. //                                                                      
  978. //  戻り値:    なし                                                    
  979. //                                                                      
  980. //----------------------------------------------------------------------
  981. // #[ CMainFrame::OnEncStop ]                                           
  982. //                                                                      
  983. //  Function:   Stop the encode                                         
  984. //                                                                      
  985. //      Parameters:     none                                            
  986. //                                                                      
  987. //      Return value:   none                                            
  988. //                                                                      
  989. //----------------------------------------------------------------------
  990. void CMainFrame::OnEncStop() 
  991. {
  992.     ENC_RETURN  enc_return;
  993.     CString     strMessage;
  994.  
  995.     enc_return = ENC_Stop(ENC_ID);
  996.     if(enc_return != ENC_SUCCESS)
  997.     {
  998.         strMessage.LoadString(IDC_ERROR_STOP_CAPTURE);
  999.         MessageBox(strMessage);
  1000.         return;
  1001.     }
  1002. }
  1003.  
  1004. //----------------------------------------------------------------------
  1005. // #[ CMainFrame::OnUpdateEncStop ]                                     
  1006. //                                                                      
  1007. // 機能     エンコード中以外は選択できないようにする                    
  1008. //                                                                      
  1009. //  引数:      CCmdUI* pCmdUI                                          
  1010. //                                                                      
  1011. //  戻り値:    なし                                                    
  1012. //                                                                      
  1013. //----------------------------------------------------------------------
  1014. // #[ CMainFrame::OnUpdateEncStop ]                                     
  1015. //                                                                      
  1016. //  Function:   If encoder is working, user can select the item.        
  1017. //                                                                      
  1018. //      Parameters:     CCmdUI* pCmdUI                                  
  1019. //                                                                      
  1020. //      Return value:   none                                            
  1021. //                                                                      
  1022. //----------------------------------------------------------------------
  1023. void CMainFrame::OnUpdateEncStop(CCmdUI* pCmdUI) 
  1024. {
  1025.     ENC_STATUS  enc_status;
  1026.  
  1027.     ENC_Get_Status(ENC_ID, &enc_status);
  1028.     pCmdUI->Enable(enc_status == ENC_STATUS_MOVIE ? TRUE : FALSE);
  1029. }
  1030.  
  1031. //----------------------------------------------------------------------
  1032. // #[ CMainFrame::OnUpdateAppExit ]                                     
  1033. //                                                                      
  1034. // 機能     エンコード中は選択できないようにする                        
  1035. //                                                                      
  1036. //  引数:      CCmdUI* pCmdUI                                          
  1037. //                                                                      
  1038. //  戻り値:    なし                                                    
  1039. //                                                                      
  1040. //----------------------------------------------------------------------
  1041. // #[ CMainFrame::OnUpdateAppExit ]                                     
  1042. //                                                                      
  1043. //  Function:   If encoder is working, user cannot select the item.     
  1044. //                                                                      
  1045. //      Parameters:     CCmdUI* pCmdUI                                  
  1046. //                                                                      
  1047. //      Return value:   none                                            
  1048. //                                                                      
  1049. //----------------------------------------------------------------------
  1050. void CMainFrame::OnUpdateAppExit(CCmdUI* pCmdUI) 
  1051. {
  1052.     ENC_STATUS  enc_status;
  1053.  
  1054.     ENC_Get_Status(ENC_ID, &enc_status);
  1055.     pCmdUI->Enable(enc_status == ENC_STATUS_STOP ? TRUE : FALSE);
  1056. }
  1057.  
  1058. //----------------------------------------------------------------------
  1059. // #[ CMainFrame::OnUpdateSetAudioParam ]                               
  1060. //                                                                      
  1061. // 機能     エンコード中は選択できないようにする                        
  1062. //                                                                      
  1063. //  引数:      CCmdUI* pCmdUI                                          
  1064. //                                                                      
  1065. //  戻り値:    なし                                                    
  1066. //                                                                      
  1067. //----------------------------------------------------------------------
  1068. // #[ CMainFrame::OnUpdateSetAudioParam ]                               
  1069. //                                                                      
  1070. //  Function:   If encoder is working, user cannot select the item.     
  1071. //                                                                      
  1072. //      Parameters:     CCmdUI* pCmdUI                                  
  1073. //                                                                      
  1074. //      Return value:   none                                            
  1075. //                                                                      
  1076. //----------------------------------------------------------------------
  1077. void CMainFrame::OnUpdateSetAudioParam(CCmdUI* pCmdUI) 
  1078. {
  1079.     ENC_STATUS  enc_status;
  1080.  
  1081.     ENC_Get_Status(ENC_ID, &enc_status);
  1082.     pCmdUI->Enable(enc_status == ENC_STATUS_STOP ? TRUE : FALSE);
  1083. }
  1084.  
  1085. //----------------------------------------------------------------------
  1086. // #[ CMainFrame::OnUpdateSetAudioEncParam ]                            
  1087. //                                                                      
  1088. // 機能     エンコード中は選択できないようにする                        
  1089. //                                                                      
  1090. //  引数:      CCmdUI* pCmdUI                                          
  1091. //                                                                      
  1092. //  戻り値:    なし                                                    
  1093. //                                                                      
  1094. //----------------------------------------------------------------------
  1095. // #[ CMainFrame::OnUpdateSetAudioEncParam ]                            
  1096. //                                                                      
  1097. //  Function:   If encoder is working, user cannot select the item.     
  1098. //                                                                      
  1099. //      Parameters:     CCmdUI* pCmdUI                                  
  1100. //                                                                      
  1101. //      Return value:   none                                            
  1102. //                                                                      
  1103. //----------------------------------------------------------------------
  1104. void CMainFrame::OnUpdateSetAudioEncParam(CCmdUI* pCmdUI) 
  1105. {
  1106.     ENC_STATUS  enc_status;
  1107.  
  1108.     ENC_Get_Status(ENC_ID, &enc_status);
  1109.     pCmdUI->Enable(enc_status == ENC_STATUS_STOP ? TRUE : FALSE);
  1110. }
  1111.  
  1112. //----------------------------------------------------------------------
  1113. // #[ CMainFrame::OnUpdateSetVideoParam ]                               
  1114. //                                                                      
  1115. // 機能     エンコード中は選択できないようにする                        
  1116. //                                                                      
  1117. //  引数:      CCmdUI* pCmdUI                                          
  1118. //                                                                      
  1119. //  戻り値:    なし                                                    
  1120. //                                                                      
  1121. //----------------------------------------------------------------------
  1122. // #[ CMainFrame::OnUpdateSetVideoParam ]                               
  1123. //                                                                      
  1124. //  Function:   If encoder is working, user cannot select the item.     
  1125. //                                                                      
  1126. //      Parameters:     CCmdUI* pCmdUI                                  
  1127. //                                                                      
  1128. //      Return value:   none                                            
  1129. //                                                                      
  1130. //----------------------------------------------------------------------
  1131. void CMainFrame::OnUpdateSetVideoParam(CCmdUI* pCmdUI) 
  1132. {
  1133.     ENC_STATUS  enc_status;
  1134.  
  1135.     ENC_Get_Status(ENC_ID, &enc_status);
  1136.     pCmdUI->Enable(enc_status == ENC_STATUS_STOP ? TRUE : FALSE);
  1137. }
  1138.  
  1139. //----------------------------------------------------------------------
  1140. // #[ CMainFrame::OnUpdateSetVideoEncParam ]                            
  1141. //                                                                      
  1142. // 機能     エンコード中は選択できないようにする                        
  1143. //                                                                      
  1144. //  引数:      CCmdUI* pCmdUI                                          
  1145. //                                                                      
  1146. //  戻り値:    なし                                                    
  1147. //                                                                      
  1148. //----------------------------------------------------------------------
  1149. // #[ CMainFrame::OnUpdateSetVideoEncParam ]                            
  1150. //                                                                      
  1151. //  Function:   If encoder is working, user cannot select the item.     
  1152. //                                                                      
  1153. //      Parameters:     CCmdUI* pCmdUI                                  
  1154. //                                                                      
  1155. //      Return value:   none                                            
  1156. //                                                                      
  1157. //----------------------------------------------------------------------
  1158. void CMainFrame::OnUpdateSetVideoEncParam(CCmdUI* pCmdUI) 
  1159. {
  1160.     ENC_STATUS  enc_status;
  1161.  
  1162.     ENC_Get_Status(ENC_ID, &enc_status);
  1163.     pCmdUI->Enable(enc_status == ENC_STATUS_STOP ? TRUE : FALSE);
  1164. }
  1165.  
  1166. //----------------------------------------------------------------------
  1167. // #[ CMainFrame::OnUpdateSetTime ]                                     
  1168. //                                                                      
  1169. // 機能     エンコード中は選択できないようにする                        
  1170. //                                                                      
  1171. //  引数:      CCmdUI* pCmdUI                                          
  1172. //                                                                      
  1173. //  戻り値:    なし                                                    
  1174. //                                                                      
  1175. //----------------------------------------------------------------------
  1176. // #[ CMainFrame::OnUpdateSetTime ]                                     
  1177. //                                                                      
  1178. //  Function:   If encoder is working, user cannot select the item.     
  1179. //                                                                      
  1180. //      Parameters:     CCmdUI* pCmdUI                                  
  1181. //                                                                      
  1182. //      Return value:   none                                            
  1183. //                                                                      
  1184. //----------------------------------------------------------------------
  1185. void CMainFrame::OnUpdateSetTime(CCmdUI* pCmdUI) 
  1186. {
  1187.     ENC_STATUS  enc_status;
  1188.  
  1189.     ENC_Get_Status(ENC_ID, &enc_status);
  1190.     pCmdUI->Enable(enc_status == ENC_STATUS_STOP ? TRUE : FALSE);
  1191. }
  1192.  
  1193. //----------------------------------------------------------------------
  1194. // #[ CMainFrame::OnUpdateSetOverlay ]                                  
  1195. //                                                                      
  1196. // 機能     オーバーレイ表示の切り替えの有効・無効を設定する            
  1197. //                                                                      
  1198. //  引数:      CCmdUI* pCmdUI                                          
  1199. //                                                                      
  1200. //  戻り値:    なし                                                    
  1201. //                                                                      
  1202. //----------------------------------------------------------------------
  1203. // #[ CMainFrame::OnUpdateSetOverlay ]                                  
  1204. //                                                                      
  1205. //  Function:   Check the item                                          
  1206. //                                                                      
  1207. //      Parameters:     CCmdUI* pCmdUI                                  
  1208. //                                                                      
  1209. //      Return value:   none                                            
  1210. //                                                                      
  1211. //----------------------------------------------------------------------
  1212. void CMainFrame::OnUpdateSetOverlay(CCmdUI* pCmdUI) 
  1213. {
  1214.     // オーバーレイウィンドウが存在しない場合は無効
  1215.     // If overlay window isn't found, the item disables.
  1216.     if(hWndOverlay == NULL)
  1217.         pCmdUI->Enable(FALSE);
  1218.     else
  1219.         pCmdUI->Enable(TRUE);
  1220. }
  1221.  
  1222. //----------------------------------------------------------------------
  1223. // #[ CMainFrame::OnSetMonitor ]                                        
  1224. //                                                                      
  1225. // 機能     モニターの切り替え                                          
  1226. //                                                                      
  1227. //  引数:      なし                                                    
  1228. //                                                                      
  1229. //  戻り値:    なし                                                    
  1230. //                                                                      
  1231. //----------------------------------------------------------------------
  1232. // #[ CMainFrame::OnSetMonitor ]                                        
  1233. //                                                                      
  1234. //  Function:   Change a monitor status                                 
  1235. //                                                                      
  1236. //      Parameters:     none                                            
  1237. //                                                                      
  1238. //      Return value:   none                                            
  1239. //                                                                      
  1240. //----------------------------------------------------------------------
  1241. void CMainFrame::OnSetMonitor() 
  1242. {
  1243.     ENC_RETURN  enc_return;
  1244.     CString     strMessage;
  1245.     CMenu*      pMenu;
  1246.     CMenu*      pPopup;
  1247.     UINT        nState;
  1248.     RECT        rc;
  1249.  
  1250.     pMenu = GetMenu();
  1251.     pPopup = pMenu->GetSubMenu(1);
  1252.     nState = pPopup->GetMenuState(IDM_SET_MONITOR, MF_BYCOMMAND);
  1253.  
  1254.     if(nState == MF_CHECKED)
  1255.     {
  1256.         enc_return = ENC_Stop_Monitor(ENC_ID);
  1257.         
  1258.         // ウィンドウハンドルの更新
  1259.         // Get a handle of overlay window
  1260.         enc_return = ENC_Get_Overlay_Window(ENC_ID, &hWndOverlay);
  1261.     }
  1262.     else
  1263.     {
  1264.         enc_return = ENC_Start_Monitor(ENC_ID);
  1265.  
  1266.         // ウィンドウハンドルの更新
  1267.         // Get a handle of overlay window
  1268.         enc_return = ENC_Get_Overlay_Window(ENC_ID, &hWndOverlay);
  1269.  
  1270.         GetClientRect(&rc);
  1271.         ENC_Resize_Overlay_Window(ENC_ID, rc.right, rc.bottom);
  1272.     }
  1273.     
  1274.     // メニューにチェックを付ける
  1275.     // Check menu item
  1276.     if(enc_return == ENC_SUCCESS)
  1277.         pPopup->CheckMenuItem(IDM_SET_MONITOR, MF_BYCOMMAND | (nState & MF_CHECKED ? MF_UNCHECKED : MF_CHECKED));
  1278. }
  1279.  
  1280. //----------------------------------------------------------------------
  1281. // #[ CMainFrame::OnUpdateSetMonitor ]                                  
  1282. //                                                                      
  1283. // 機能     メニューのモニターのチェックを更新する                      
  1284. //                                                                      
  1285. //  引数:      CCmdUI* pCmdUI                                          
  1286. //                                                                      
  1287. //  戻り値:    なし                                                    
  1288. //                                                                      
  1289. //----------------------------------------------------------------------
  1290. // #[ CMainFrame::OnUpdateSetMonitor ]                                  
  1291. //                                                                      
  1292. //  Function:   Check the item                                          
  1293. //                                                                      
  1294. //      Parameters:     CCmdUI* pCmdUI                                  
  1295. //                                                                      
  1296. //      Return value:   none                                            
  1297. //                                                                      
  1298. //----------------------------------------------------------------------
  1299. void CMainFrame::OnUpdateSetMonitor(CCmdUI* pCmdUI) 
  1300. {
  1301.     ENC_RETURN  enc_return;
  1302.     UINT        monitor;
  1303.  
  1304.     enc_return = ENC_Get_Monitor_Status(ENC_ID, &monitor);
  1305.  
  1306.     if(enc_return == ENC_SUCCESS)
  1307.     {
  1308.         if(monitor)
  1309.             pCmdUI->SetCheck(1);
  1310.         else
  1311.             pCmdUI->SetCheck(0);
  1312.     }
  1313.     else
  1314.         pCmdUI->Enable(FALSE);
  1315. }
  1316.  
  1317. //----------------------------------------------------------------------
  1318. // #[ CMainFrame::AutoDetect ]                                          
  1319. //                                                                      
  1320. // 機能     入力ソースの自動検出                                        
  1321. //                                                                      
  1322. //  引数:      なし                                                    
  1323. //                                                                      
  1324. //  戻り値:    なし                                                    
  1325. //                                                                      
  1326. //----------------------------------------------------------------------
  1327. // #[ CMainFrame::AutoDetect ]                                          
  1328. //                                                                      
  1329. //  Function:   Detect input source                                     
  1330. //                                                                      
  1331. //      Parameters:     none                                            
  1332. //                                                                      
  1333. //      Return value:   none                                            
  1334. //                                                                      
  1335. //----------------------------------------------------------------------
  1336. void CMainFrame::AutoDetect()
  1337. {
  1338.     ENC_RETURN  enc_return;
  1339.     ENC_VIDEO_PARAMETER enc_video_param;
  1340.     int         nInputSource;
  1341.     CString     strMessage;
  1342.     UINT        fMonitor;
  1343.  
  1344.     // モニターの状態の取得
  1345.     // Get monitor state
  1346.     enc_return = ENC_Get_Monitor_Status(ENC_ID, &fMonitor);
  1347.     if(enc_return == ENC_SUCCESS)
  1348.     {
  1349.         if(fMonitor)
  1350.         {
  1351.             // モニター出力を止める
  1352.             // Stop output monitor
  1353.             ENC_Stop_Monitor(ENC_ID);
  1354.         }
  1355.     }
  1356.  
  1357.     // 現在の設定値を取得する
  1358.     // Get video parameter
  1359.     enc_return = ENC_Get_Video_Parameter(ENC_ID, &enc_video_param);
  1360.     if(enc_return != ENC_SUCCESS)
  1361.     {
  1362.         strMessage.LoadString(IDC_ERROR_GET_PARAMETER);
  1363.         MessageBox(strMessage);
  1364.         return;
  1365.     }
  1366.  
  1367.     enc_return = ENC_Detect_Video_Input_Source(ENC_ID, &nInputSource);
  1368.     if(enc_return == ENC_SUCCESS)
  1369.     {
  1370.         // 入力ソースを設定する
  1371.         // Set input source
  1372.         enc_video_param.fInputSource = nInputSource;
  1373.     }
  1374.  
  1375.     // 新しい値を設定する
  1376.     // Set video parameters
  1377.     enc_return = ENC_Set_Video_Parameter(ENC_ID, &enc_video_param);
  1378.     if(enc_return != ENC_SUCCESS)
  1379.     {
  1380.         strMessage.LoadString(IDC_ERROR_SET_PARAMETER);
  1381.         MessageBox(strMessage);
  1382.     }
  1383.  
  1384.     if(fMonitor)
  1385.     {
  1386.         // モニター出力を開始する
  1387.         // Start output monitor
  1388.         enc_return = ENC_Start_Monitor(ENC_ID);
  1389.         if(enc_return != ENC_SUCCESS)
  1390.         {
  1391.             strMessage.LoadString(IDC_ERROR_START_MONITOR);
  1392.             MessageBox(strMessage);
  1393.         }
  1394.     }
  1395. }
  1396.  
  1397. //----------------------------------------------------------------------
  1398. // #[ CMainFrame::OnSetVideoCd ]                                        
  1399. //                                                                      
  1400. // 機能     Video CDモード に設定する                                   
  1401. //                                                                      
  1402. //  引数:      なし                                                    
  1403. //                                                                      
  1404. //  戻り値:    なし                                                    
  1405. //                                                                      
  1406. //----------------------------------------------------------------------
  1407. // #[ CMainFrame::OnSetVideoCd ]                                        
  1408. //                                                                      
  1409. //  Function:   Set Video CD mode                                       
  1410. //                                                                      
  1411. //      Parameters:     none                                            
  1412. //                                                                      
  1413. //      Return value:   none                                            
  1414. //                                                                      
  1415. //----------------------------------------------------------------------
  1416. void CMainFrame::OnSetVideoCd() 
  1417. {
  1418.     ENC_RETURN  enc_return;
  1419.     int         bEnable;
  1420.  
  1421.     enc_return = ENC_Get_VideoCD_Mode(ENC_ID, &bEnable);
  1422.  
  1423.     if(enc_return == ENC_SUCCESS)
  1424.     {
  1425.         bEnable = !bEnable;
  1426.         ENC_Set_VideoCD_Mode(ENC_ID, bEnable);
  1427.     }
  1428. }
  1429.  
  1430. //----------------------------------------------------------------------
  1431. // #[ CMainFrame::OnUpdateSetVideoCd ]                                  
  1432. //                                                                      
  1433. // 機能     メニューのVideo CD形式のチェックを更新する                  
  1434. //                                                                      
  1435. //  引数:      CCmdUI* pCmdUI                                          
  1436. //                                                                      
  1437. //  戻り値:    なし                                                    
  1438. //                                                                      
  1439. //----------------------------------------------------------------------
  1440. // #[ CMainFrame::OnUpdateSetVideoCd ]                                  
  1441. //                                                                      
  1442. //  Function:   Check the item                                          
  1443. //                                                                      
  1444. //      Parameters:     CCmdUI* pCmdUI                                  
  1445. //                                                                      
  1446. //      Return value:   none                                            
  1447. //                                                                      
  1448. //----------------------------------------------------------------------
  1449. void CMainFrame::OnUpdateSetVideoCd(CCmdUI* pCmdUI) 
  1450. {
  1451.     ENC_RETURN  enc_return;
  1452.     int         bEnable;
  1453.  
  1454.     enc_return = ENC_Get_VideoCD_Mode(ENC_ID, &bEnable);
  1455.  
  1456.     if(enc_return == ENC_SUCCESS)
  1457.     {
  1458.         if(bEnable)
  1459.             pCmdUI->SetCheck(1);
  1460.         else
  1461.             pCmdUI->SetCheck(0);
  1462.     }
  1463.     else
  1464.         pCmdUI->Enable(FALSE);
  1465. }
  1466.  
  1467. //----------------------------------------------------------------------
  1468. // #[ CMainFrame::OnSetAudioFormatMpeg ]                                
  1469. //                                                                      
  1470. // 機能     メニューのオーディオフォーマットの MPEG                     
  1471. //                                                                      
  1472. //  引数:      CCmdUI* pCmdUI                                          
  1473. //                                                                      
  1474. //  戻り値:    なし                                                    
  1475. //                                                                      
  1476. //----------------------------------------------------------------------
  1477. // #[ CMainFrame::OnSetAudioFormatMpeg ]                                
  1478. //                                                                      
  1479. //  Function:   Select audio format...MPEG                              
  1480. //                                                                      
  1481. //      Parameters:     CCmdUI* pCmdUI                                  
  1482. //                                                                      
  1483. //      Return value:   none                                            
  1484. //                                                                      
  1485. //----------------------------------------------------------------------
  1486. void CMainFrame::OnSetAudioFormatMpeg() 
  1487. {
  1488.     ENC_RETURN          enc_return;
  1489.     ENC_AUDIO_FORMAT    enc_audio_format;
  1490.  
  1491.     enc_return = ENC_Get_Audio_Format(ENC_ID, &enc_audio_format);
  1492.  
  1493.     if(enc_return == ENC_SUCCESS)
  1494.     {
  1495.         enc_audio_format = ENC_AUDIO_FORMAT_MPEG;
  1496.         ENC_Set_Audio_Format(ENC_ID, enc_audio_format);
  1497.     }
  1498. }
  1499.  
  1500. //----------------------------------------------------------------------
  1501. // #[ CMainFrame::OnSetAudioFormatMono ]                                
  1502. //                                                                      
  1503. // 機能     メニューのオーディオフォーマットの PCM Mono                 
  1504. //                                                                      
  1505. //  引数:      CCmdUI* pCmdUI                                          
  1506. //                                                                      
  1507. //  戻り値:    なし                                                    
  1508. //                                                                      
  1509. //----------------------------------------------------------------------
  1510. // #[ CMainFrame::OnSetAudioFormatMono ]                                
  1511. //                                                                      
  1512. //  Function:   Select audio format...PCM Mono                          
  1513. //                                                                      
  1514. //      Parameters:     CCmdUI* pCmdUI                                  
  1515. //                                                                      
  1516. //      Return value:   none                                            
  1517. //                                                                      
  1518. //----------------------------------------------------------------------
  1519. void CMainFrame::OnSetAudioFormatMono() 
  1520. {
  1521.     ENC_RETURN          enc_return;
  1522.     ENC_AUDIO_FORMAT    enc_audio_format;
  1523.  
  1524.     enc_return = ENC_Get_Audio_Format(ENC_ID, &enc_audio_format);
  1525.  
  1526.     if(enc_return == ENC_SUCCESS)
  1527.     {
  1528.         enc_audio_format = ENC_AUDIO_FORMAT_PCM_MONO;
  1529.         ENC_Set_Audio_Format(ENC_ID, enc_audio_format);
  1530.     }
  1531. }
  1532.  
  1533. //----------------------------------------------------------------------
  1534. // #[ CMainFrame::OnSetAudioFormatStereo ]                                
  1535. //                                                                      
  1536. // 機能     メニューのオーディオフォーマットの PCM Stereo               
  1537. //                                                                      
  1538. //  引数:      CCmdUI* pCmdUI                                          
  1539. //                                                                      
  1540. //  戻り値:    なし                                                    
  1541. //                                                                      
  1542. //----------------------------------------------------------------------
  1543. // #[ CMainFrame::OnSetAudioFormatStereo ]                                
  1544. //                                                                      
  1545. //  Function:   Select audio format...PCM Mono                          
  1546. //                                                                      
  1547. //      Parameters:     CCmdUI* pCmdUI                                  
  1548. //                                                                      
  1549. //      Return value:   none                                            
  1550. //                                                                      
  1551. //----------------------------------------------------------------------
  1552. void CMainFrame::OnSetAudioFormatStereo() 
  1553. {
  1554.     ENC_RETURN          enc_return;
  1555.     ENC_AUDIO_FORMAT    enc_audio_format;
  1556.  
  1557.     enc_return = ENC_Get_Audio_Format(ENC_ID, &enc_audio_format);
  1558.  
  1559.     if(enc_return == ENC_SUCCESS)
  1560.     {
  1561.         enc_audio_format = ENC_AUDIO_FORMAT_PCM_STEREO;
  1562.         ENC_Set_Audio_Format(ENC_ID, enc_audio_format);
  1563.     }
  1564. }
  1565.  
  1566. //----------------------------------------------------------------------
  1567. // #[ CMainFrame::OnSetAudioFormatMpeg ]                                
  1568. //                                                                      
  1569. // 機能     メニューのオーディオフォーマットの MPEG をチェックする      
  1570. //                                                                      
  1571. //  引数:      CCmdUI* pCmdUI                                          
  1572. //                                                                      
  1573. //  戻り値:    なし                                                    
  1574. //                                                                      
  1575. //----------------------------------------------------------------------
  1576. // #[ CMainFrame::OnSetAudioFormatMpeg ]                                
  1577. //                                                                      
  1578. //  Function:   Check menu -[Audio format]-[MPEG]                       
  1579. //                                                                      
  1580. //      Parameters:     CCmdUI* pCmdUI                                  
  1581. //                                                                      
  1582. //      Return value:   none                                            
  1583. //                                                                      
  1584. //----------------------------------------------------------------------
  1585. void CMainFrame::OnUpdateSetAudioFormatMpeg(CCmdUI* pCmdUI) 
  1586. {
  1587.     ENC_RETURN          enc_return;
  1588.     ENC_AUDIO_FORMAT    enc_audio_format;
  1589.  
  1590.     enc_return = ENC_Get_Audio_Format(ENC_ID, &enc_audio_format);
  1591.     
  1592.     if(enc_return == ENC_SUCCESS)
  1593.     {
  1594.         if(enc_audio_format == ENC_AUDIO_FORMAT_MPEG)
  1595.             pCmdUI->SetCheck(1);
  1596.         else
  1597.             pCmdUI->SetCheck(0);
  1598.     }
  1599.     else
  1600.         pCmdUI->Enable(FALSE);
  1601. }
  1602.  
  1603. //----------------------------------------------------------------------
  1604. // #[ CMainFrame::OnSetAudioFormatMono ]                                
  1605. //                                                                      
  1606. // 機能     メニューのオーディオフォーマットの PCM Mono をチェックする  
  1607. //                                                                      
  1608. //  引数:      CCmdUI* pCmdUI                                          
  1609. //                                                                      
  1610. //  戻り値:    なし                                                    
  1611. //                                                                      
  1612. //----------------------------------------------------------------------
  1613. // #[ CMainFrame::OnSetAudioFormatMono ]                                
  1614. //                                                                      
  1615. //  Function:   Check menu -[Audio format]-[PCM Mono]                   
  1616. //                                                                      
  1617. //      Parameters:     CCmdUI* pCmdUI                                  
  1618. //                                                                      
  1619. //      Return value:   none                                            
  1620. //                                                                      
  1621. //----------------------------------------------------------------------
  1622. void CMainFrame::OnUpdateSetAudioFormatMono(CCmdUI* pCmdUI) 
  1623. {
  1624.     ENC_RETURN          enc_return;
  1625.     ENC_AUDIO_FORMAT    enc_audio_format;
  1626.  
  1627.     enc_return = ENC_Get_Audio_Format(ENC_ID, &enc_audio_format);
  1628.     if(enc_return == ENC_SUCCESS)
  1629.     {
  1630.         if(enc_audio_format == ENC_AUDIO_FORMAT_PCM_MONO)
  1631.             pCmdUI->SetCheck(1);
  1632.         else
  1633.             pCmdUI->SetCheck(0);
  1634.     }
  1635.     else
  1636.         pCmdUI->Enable(FALSE);
  1637. }
  1638.  
  1639. //----------------------------------------------------------------------
  1640. // #[ CMainFrame::OnSetAudioFormatStereo ]                                
  1641. //                                                                      
  1642. // 機能     メニューのオーディオフォーマットの PCM Stereo をチェックする
  1643. //                                                                      
  1644. //  引数:      CCmdUI* pCmdUI                                          
  1645. //                                                                      
  1646. //  戻り値:    なし                                                    
  1647. //                                                                      
  1648. //----------------------------------------------------------------------
  1649. // #[ CMainFrame::OnSetAudioFormatStereo ]                                
  1650. //                                                                      
  1651. //  Function:   Check menu -[Audio format]-[PCM Stereo]                 
  1652. //                                                                      
  1653. //      Parameters:     CCmdUI* pCmdUI                                  
  1654. //                                                                      
  1655. //      Return value:   none                                            
  1656. //                                                                      
  1657. //----------------------------------------------------------------------
  1658. void CMainFrame::OnUpdateSetAudioFormatStereo(CCmdUI* pCmdUI) 
  1659. {
  1660.     ENC_RETURN          enc_return;
  1661.     ENC_AUDIO_FORMAT    enc_audio_format;
  1662.  
  1663.     enc_return = ENC_Get_Audio_Format(ENC_ID, &enc_audio_format);
  1664.     if(enc_return == ENC_SUCCESS)
  1665.     {
  1666.         if(enc_audio_format == ENC_AUDIO_FORMAT_PCM_STEREO)
  1667.             pCmdUI->SetCheck(1);
  1668.         else
  1669.             pCmdUI->SetCheck(0);
  1670.     }
  1671.     else
  1672.         pCmdUI->Enable(FALSE);
  1673. }
  1674.  
  1675. //----------------------------------------------------------------------
  1676. // #[ CMainFrame::OnSetVideoEncParamEx ]                                
  1677. //                                                                      
  1678. // 機能     拡張ビデオエンコードパラメータ設定ダイアログ呼び出し        
  1679. //                                                                      
  1680. //  引数:      なし                                                    
  1681. //                                                                      
  1682. //  戻り値:    なし                                                    
  1683. //                                                                      
  1684. //----------------------------------------------------------------------
  1685. // #[ CMainFrame::OnSetVideoEncParamEx ]                                
  1686. //                                                                      
  1687. //  Function:   Set video encode parameter ex                           
  1688. //                                                                      
  1689. //      Parameters:     none                                            
  1690. //                                                                      
  1691. //      Return value:   none                                            
  1692. //                                                                      
  1693. //----------------------------------------------------------------------
  1694. void CMainFrame::OnSetVideoEncParamEx() 
  1695. {
  1696.     CVideoEncExDlg  dlg;
  1697.  
  1698.     dlg.DoModal();
  1699. }
  1700.  
  1701. //----------------------------------------------------------------------
  1702. // #[ CMainFrame::OnUpdateSetVideoEncParamEx ]                          
  1703. //                                                                      
  1704. // 機能     停止中のみ拡張ビデオエンコードダイアログを呼ぶようにする    
  1705. //                                                                      
  1706. //  引数:      CCmdUI* pCmdUI                                          
  1707. //                                                                      
  1708. //  戻り値:    なし                                                    
  1709. //                                                                      
  1710. //----------------------------------------------------------------------
  1711. // #[ CMainFrame::OnUpdateSetVideoEncParamEx ]                          
  1712. //                                                                      
  1713. //  Function:   Select the item only encoder is stopped                 
  1714. //                                                                      
  1715. //      Parameters:     CCmdUI* pCmdUI                                  
  1716. //                                                                      
  1717. //      Return value:   none                                            
  1718. //                                                                      
  1719. //----------------------------------------------------------------------
  1720. void CMainFrame::OnUpdateSetVideoEncParamEx(CCmdUI* pCmdUI) 
  1721. {
  1722.     ENC_STATUS  enc_status;
  1723.  
  1724.     ENC_Get_Status(ENC_ID, &enc_status);
  1725.     pCmdUI->Enable(enc_status == ENC_STATUS_STOP ? TRUE : FALSE);
  1726. }
  1727.  
  1728. //----------------------------------------------------------------------
  1729. // #[ StatusProc ]                                                      
  1730. //                                                                      
  1731. // 機能     コールバック関数                                            
  1732. //                                                                      
  1733. //  引数:      UINT                enc_id                              
  1734. //              ENC_STATUS_NOTIFY   enc_state                           
  1735. //                                                                      
  1736. //  戻り値:    なし                                                    
  1737. //                                                                      
  1738. //----------------------------------------------------------------------
  1739. // #[ StatusProc ]                                                      
  1740. //                                                                      
  1741. //  Function:   Callback function                                       
  1742. //                                                                      
  1743. //      Paraneters:     UINT                enc_id                      
  1744. //                      ENC_STATUS_NOTIFY   enc_state                   
  1745. //                                                                      
  1746. //      Return value:   none                                            
  1747. //                                                                      
  1748. //----------------------------------------------------------------------
  1749. void CALLBACK StatusProc(UINT enc_id, ENC_STATUS_NOTIFY enc_state)
  1750. {
  1751.     UINT        count;
  1752.     double      time;
  1753.     char        szText[MAX_PATH];
  1754.  
  1755.     if(enc_state == ENC_NOTIFY_STOP)
  1756.     {
  1757.         ENC_Get_Frame_Count(enc_id, &count);
  1758.         ENC_Get_Time(enc_id, &time);
  1759.         sprintf(szText,"Encode Frame : %ld\nEncode Time   : %.2f[sec]", count, time);
  1760.  
  1761.         MessageBox(AfxGetMainWnd()->GetSafeHwnd(), szText, "Encode", MB_OK);
  1762.     }
  1763. }
  1764.  
  1765. //----------------------------------------------------------------------
  1766. // #[ ErrorProc ]                                                       
  1767. //                                                                      
  1768. // 機能     コールバック関数(エラー)                                  
  1769. //                                                                      
  1770. //  引数:      UINT        enc_id                                      
  1771. //              ULONG       error                                       
  1772. //                                                                      
  1773. //  戻り値:    なし                                                    
  1774. //                                                                      
  1775. //----------------------------------------------------------------------
  1776. // #[ ErrorProc ]                                                       
  1777. //                                                                      
  1778. //  Function:   Callback function (error)                               
  1779. //                                                                      
  1780. //      Parameters:     UINT        enc_id                              
  1781. //                      ULONG       error                               
  1782. //                                                                      
  1783. //      Return value:   none                                            
  1784. //                                                                      
  1785. //----------------------------------------------------------------------
  1786. void CALLBACK ErrorProc(UINT enc_id, ULONG error)
  1787. {
  1788.     CString strText;
  1789.     switch (error)
  1790.     {
  1791.     case MVR_ERROR_SUCCESS:
  1792.         strText = "MVR_ERROR_SUCCESS";
  1793.         break;
  1794.     case MVR_ERROR_PENDING:
  1795.         strText = "MVR_ERROR_PENDING";
  1796.         break;
  1797.     case MVR_ERROR_SYSTEM_ERROR:
  1798.         strText = "MVR_ERROR_SYSTEM_ERROR";
  1799.         break;
  1800.     case MVR_ERROR_NOT_PENDING:
  1801.         strText = "MVR_ERROR_NOT_PENDING";
  1802.         break;
  1803.     case MVR_ERROR_INVALID_ASYNCOP:
  1804.         strText = "MVR_ERROR_INVALID_ASYNCOP";
  1805.         break;
  1806.     case MVR_ERROR_UNSUPPORTED:
  1807.         strText = "MVR_ERROR_UNSUPPORTED";
  1808.         break;
  1809.     case MVR_ERROR_INVALID_TYPE:
  1810.         strText = "MVR_ERROR_INVALID_TYPE";
  1811.         break;
  1812.     case MVR_ERROR_INVALID_OPTION:
  1813.         strText = "MVR_ERROR_INVALID_OPTION";
  1814.         break;
  1815.     case MVR_ERROR_INVALID_ADDRESS:
  1816.         strText = "MVR_ERROR_INVALID_ADDRESS";
  1817.         break;
  1818.     case MVR_ERROR_LIMIT_EXCEEDED:
  1819.         strText = "MVR_ERROR_LIMIT_EXCEEDED";
  1820.         break;
  1821.     case MVR_ERROR_INVALID_HANDLE:
  1822.         strText = "MVR_ERROR_INVALID_HANDLE";
  1823.         break;
  1824.     case MVR_ERROR_INVALID_STREAM:
  1825.         strText = "MVR_ERROR_INVALID_STREAM";
  1826.         break;
  1827.     case MVR_ERROR_INVALID_BUFFER:
  1828.         strText = "MVR_ERROR_INVALID_BUFFER";
  1829.         break;
  1830.     case MVR_ERROR_INVALID_MESSAGE:
  1831.         strText = "MVR_ERROR_INVALID_MESSAGE";
  1832.         break;
  1833.     case MVR_ERROR_CANCELED:
  1834.         strText = "MVR_ERROR_CANCELED";
  1835.         break;
  1836.     case MVR_ERROR_BUSY:
  1837.         strText = "MVR_ERROR_BUSY";
  1838.         break;
  1839.     case MVR_ERROR_BUFFER_ERROR:
  1840.         strText = "MVR_ERROR_BUFFER_ERROR";
  1841.         break;
  1842.     case MVR_ERROR_MESSAGE_ERROR:
  1843.         strText = "MVR_ERROR_MESSAGE_ERROR";
  1844.         break;
  1845.     case MVR_ERROR_BAD_PARAM:
  1846.         strText = "MVR_ERROR_BAD_PARAM";
  1847.         break;
  1848.     case MVR_ERROR_HARDWARE_ERROR:
  1849.         strText = "MVR_ERROR_HARDWARE_ERROR";
  1850.         break;
  1851.     case MVR_ERROR_ALLOC_FAILURE:
  1852.         strText = "MVR_ERROR_ALLOC_FAILURE";
  1853.         break;
  1854.     case MVR_ERROR_INVALID_EVENT:
  1855.         strText = "MVR_ERROR_INVALID_EVENT";
  1856.         break;
  1857.     case MVR_ERROR_INVALID_STATE:
  1858.         strText = "MVR_ERROR_INVALID_STATE";
  1859.         break;
  1860.     case MVR_ERROR_CURRENT_STATE:
  1861.         strText = "MVR_ERROR_CURRENT_STATE";
  1862.         break;
  1863.     case MVR_ERROR_INVALID_FRAME_TYPE:
  1864.         strText = "MVR_ERROR_INVALID_FRAME_TYPE";
  1865.         break;
  1866.     case MVR_ERROR_INSUFFICIENT_BUFFERS:
  1867.         strText = "MVR_ERROR_INSUFFICIENT_BUFFERS";
  1868.         break;
  1869.     case MVR_ERROR_TIMEOUT:
  1870.         strText = "MVR_ERROR_TIMEOUT";
  1871.         break;
  1872.     case MVR_ERROR_INVALID_CODEC_STATE:
  1873.         strText = "MVR_ERROR_INVALID_CODEC_STATE";
  1874.         break;
  1875.     case MVR_ERROR_INVALID_FORMAT:
  1876.         strText = "MVR_ERROR_INVALID_FORMAT";
  1877.         break;
  1878.     case MVR_ERROR_INVALID_OPERATION:
  1879.         strText = "MVR_ERROR_INVALID_OPERATION";
  1880.         break;
  1881.     case MVR_ERROR_OVERFLOW:
  1882.         strText = "MVR_ERROR_OVERFLOW";
  1883.         break;
  1884.     case MVR_ERROR_UNDERFLOW:
  1885.         strText = "MVR_ERROR_UNDERFLOW";
  1886.         break;
  1887.     case MVR_ERROR_SESSION_CANCELED:
  1888.         strText = "MVR_ERROR_SESSION_CANCELED";
  1889.         break;
  1890.     case MVR_ERROR_UCODE_NOT_FOUND:
  1891.         strText = "MVR_ERROR_UCODE_NOT_FOUND";
  1892.         break;
  1893.     case MVR_ERROR_AUDIO_UCODE_NOT_FOUND:
  1894.         strText = "MVR_ERROR_AUDIO_UCODE_NOT_FOUND";
  1895.         break;
  1896.     case MVR_ERROR_PARSE_ERROR:
  1897.         strText = "MVR_ERROR_PARSE_ERROR";
  1898.         break;
  1899.     case MVR_ERROR_END_OF_STREAM:
  1900.         strText = "MVR_ERROR_END_OF_STREAM";
  1901.         break;
  1902.     case MVR_ERROR_DISK_FULL:
  1903.         strText = "MVR_ERROR_DISK_FULL";
  1904.         break;
  1905.     case MVR_ERROR_STREAMS_CLOSED:
  1906.         strText = "MVR_ERROR_STREAMS_CLOSED";
  1907.         break;
  1908.     case MVR_ERROR_INTERNAL_ERROR:
  1909.         strText = "MVR_ERROR_INTERNAL_ERROR";
  1910.         break;
  1911.     case MVR_ERROR_INVALID_SHORT_BUFFER:
  1912.         strText = "MVR_ERROR_INVALID_SHORT_BUFFER";
  1913.         break;
  1914.     case MVR_ERROR_EVENT_DATA_OVERRUN:
  1915.         strText = "MVR_ERROR_EVENT_DATA_OVERRUN";
  1916.         break;
  1917.     case MVR_ERROR_EVENT_DATA_UNDERRUN:
  1918.         strText = "MVR_ERROR_EVENT_DATA_UNDERRUN";
  1919.         break;
  1920.     case MVR_ERROR_EVENT_DEVICE_ERROR:
  1921.         strText = "MVR_ERROR_EVENT_DEVICE_ERROR";
  1922.         break;
  1923.     case MVR_ERROR_EVENT_LOSS_OF_VIDEO:
  1924.         strText = "MVR_ERROR_EVENT_LOSS_OF_VIDEO";
  1925.         break;
  1926.     case MVR_ERROR_EVENT_EVENT_LOSS:
  1927.         strText = "MVR_ERROR_EVENT_EVENT_LOSS";
  1928.         break;
  1929.     case MVR_ERROR_EVENT_UNRECOVERABLE_ERROR:
  1930.         strText = "MVR_ERROR_EVENT_UNRECOVERABLE_ERROR";
  1931.         break;
  1932.     default:
  1933.         strText = "????";
  1934.         break;
  1935.     }
  1936.     AfxMessageBox(strText);
  1937. }
  1938.  
  1939. //----------------------------------------------------------------------
  1940. // #[ TmapProc ]                                                        
  1941. //                                                                      
  1942. // 機能     コールバック関数                                            
  1943. //                                                                      
  1944. //  引数:      UINT        enc_id                                      
  1945. //              ENC_VOBU_ENT_INFO   *tmap                                       
  1946. //                                                                      
  1947. //  戻り値:    なし                                                    
  1948. //                                                                      
  1949. //----------------------------------------------------------------------
  1950. // #[ TmapProc ]                                                        
  1951. //                                                                      
  1952. //  Function:   Callback function                                       
  1953. //                                                                      
  1954. //      Parameters:     UINT        enc_id                              
  1955. //                      ENC_VOBU_ENT_INFO   *tmap                               
  1956. //                                                                      
  1957. //      Return value:   none                                            
  1958. //                                                                      
  1959. //----------------------------------------------------------------------
  1960. void CALLBACK TmapProc(UINT enc_id, ENC_VOBU_ENT_INFO *tmap, UINT)
  1961. {
  1962.     TRACE1("TmapProc (ID = %d)\n", enc_id);
  1963.     char    szText[256];
  1964.     wsprintf(szText, "VOBU size = %d, 1st reference picture = %d, playback = %d", 
  1965.                 tmap->Vobu_Sz, tmap->Fstref_Sz, tmap->Vobu_Pb_Tm);
  1966.     ::SetWindowText(pMain->m_hWnd, szText);
  1967. }
  1968.  
  1969. //----------------------------------------------------------------------
  1970. // #[ CMainFrame::OnSetOverlayAdjust ]                                  
  1971. //                                                                      
  1972. // 機能     オーバーレイの画質を調整する                                
  1973. //                                                                      
  1974. //  引数:      なし                                                    
  1975. //                                                                      
  1976. //  戻り値:    なし                                                    
  1977. //                                                                      
  1978. //----------------------------------------------------------------------
  1979. // #[ CMainFrame::OnSetOverlayAdjust ]                                  
  1980. //                                                                      
  1981. //  Function:   Set Adjust (Overlay Window)                             
  1982. //                                                                      
  1983. //      Parameters:     none                                            
  1984. //                                                                      
  1985. //      Return value:   none                                            
  1986. //                                                                      
  1987. //----------------------------------------------------------------------
  1988. void CMainFrame::OnSetOverlayAdjust() 
  1989. {
  1990.     COverlayDlg dlg;
  1991.  
  1992.     dlg.DoModal();
  1993. }
  1994.  
  1995. //----------------------------------------------------------------------
  1996. // #[ CMainFrame::OnSetGetLastError ]                                   
  1997. //                                                                      
  1998. // 機能     エラーを取得する                                            
  1999. //                                                                      
  2000. //  引数:      なし                                                    
  2001. //                                                                      
  2002. //  戻り値:    なし                                                    
  2003. //                                                                      
  2004. //----------------------------------------------------------------------
  2005. // #[ CMainFrame::OnSetGetLastError ]                                   
  2006. //                                                                      
  2007. //  Function:   Get Last Error                                          
  2008. //                                                                      
  2009. //      Parameters:     none                                            
  2010. //                                                                      
  2011. //      Return value:   none                                            
  2012. //                                                                      
  2013. //----------------------------------------------------------------------
  2014. void CMainFrame::OnSetGetLastError() 
  2015. {
  2016.     ULONG   Err;
  2017.     char    szText[4];
  2018.  
  2019.     Err = ENC_Get_Last_Error(ENC_ID);
  2020.     
  2021.     if(Err == MVR_ERROR_SUCCESS)
  2022.         return;
  2023.  
  2024.     wsprintf(szText, "Error = %d\n", Err);
  2025.     MessageBox(szText);
  2026. }   
  2027.  
  2028. //----------------------------------------------------------------------
  2029. // #[ CMainFrame::OnSetEncodeFile ]                                     
  2030. //                                                                      
  2031. // 機能     詳細エンコードパラメータの設定                              
  2032. //                                                                      
  2033. //  引数:      なし                                                    
  2034. //                                                                      
  2035. //  戻り値:    なし                                                    
  2036. //                                                                      
  2037. //----------------------------------------------------------------------
  2038. // #[ CMainFrame::OnSetEncodeFile ]                                     
  2039. //                                                                      
  2040. //  Function:   Set encode parameter.                                   
  2041. //                                                                      
  2042. //      Parameters:     none                                            
  2043. //                                                                      
  2044. //      Return value:   none                                            
  2045. //                                                                      
  2046. //----------------------------------------------------------------------
  2047. void CMainFrame::OnSetEncodeFile() 
  2048. {
  2049.     CString strMessage;
  2050.     CString strFile;
  2051.     char    szFile[MAX_PATH];
  2052.  
  2053.     // ダイアログの設定
  2054.     // Initialize dialog
  2055.     CFileDialog dlg(TRUE, NULL, NULL,
  2056.                     OFN_HIDEREADONLY |
  2057.                     OFN_FILEMUSTEXIST |
  2058.                     OFN_PATHMUSTEXIST,
  2059.                     NULL, this);
  2060.  
  2061.     if(dlg.DoModal() == IDOK)
  2062.     {
  2063.         strFile = dlg.GetPathName();
  2064.         lstrcpy(szFile, strFile);
  2065.  
  2066.         if(ENC_Set_Video_Encode_File(ENC_ID, szFile) == ENC_FAIL)
  2067.         {
  2068.             strMessage.LoadString(IDS_ERROR_OPEN_FILE);
  2069.             MessageBox(strMessage);
  2070.         }
  2071.     }
  2072. }
  2073.  
  2074. //----------------------------------------------------------------------
  2075. // #[ CMainFrame::OnSetOverlayRect ]                                    
  2076. //                                                                      
  2077. // 機能     オーバーレイの表示領域を設定する                            
  2078. //                                                                      
  2079. //  引数:      なし                                                    
  2080. //                                                                      
  2081. //  戻り値:    なし                                                    
  2082. //                                                                      
  2083. //----------------------------------------------------------------------
  2084. // #[ CMainFrame::OnSetOverlayRect ]                                    
  2085. //                                                                      
  2086. //  Function:   Set overlay rect                                        
  2087. //                                                                      
  2088. //      Parameters:     none                                            
  2089. //                                                                      
  2090. //      Return value:   none                                            
  2091. //                                                                      
  2092. //----------------------------------------------------------------------
  2093. void CMainFrame::OnSetOverlayRect() 
  2094. {
  2095.     COverlayRectDlg dlg;
  2096.     RECT            rc;
  2097.  
  2098.     if(ENC_Get_Overlay_Rect(ENC_ID, &rc) == ENC_FAIL)
  2099.         return;
  2100.     
  2101.     dlg.m_edit_top  = rc.top;
  2102.     dlg.m_edit_left = rc.left;
  2103.     dlg.m_edit_bottom   = rc.bottom;
  2104.     dlg.m_edit_right    = rc.right;
  2105.  
  2106.     if(dlg.DoModal() == IDOK)
  2107.     {
  2108.         rc.top      = dlg.m_edit_top;
  2109.         rc.left     = dlg.m_edit_left;
  2110.         rc.bottom   = dlg.m_edit_bottom;
  2111.         rc.right    = dlg.m_edit_right;
  2112.         
  2113.         ENC_Set_Overlay_Rect(ENC_ID, &rc);
  2114.     }
  2115. }
  2116.  
  2117. //----------------------------------------------------------------------
  2118. // #[ CMainFrame::OnUpdateSetOverlayRect ]                              
  2119. //                                                                      
  2120. // 機能     エンコード中は選択できないようにする                        
  2121. //                                                                      
  2122. //  引数:      CCmdUI* pCmdUI                                          
  2123. //                                                                      
  2124. //  戻り値:    なし                                                    
  2125. //                                                                      
  2126. //----------------------------------------------------------------------
  2127. // #[ CMainFrame::OnUpdateSetOverlayRect ]                              
  2128. //                                                                      
  2129. //  Function:   If encoder is working, user cannot select the item.     
  2130. //                                                                      
  2131. //      Parameters:     CCmdUI* pCmdUI                                  
  2132. //                                                                      
  2133. //      Return value:   none                                            
  2134. //                                                                      
  2135. //----------------------------------------------------------------------
  2136. void CMainFrame::OnUpdateSetOverlayRect(CCmdUI* pCmdUI) 
  2137. {
  2138.     ENC_STATUS  enc_status;
  2139.  
  2140.     if(ENC_Can_Record(ENC_ID) != ENC_SUCCESS)
  2141.     {
  2142.         pCmdUI->Enable(FALSE);
  2143.         return;
  2144.     }
  2145.  
  2146.     ENC_Get_Status(ENC_ID, &enc_status);
  2147.     pCmdUI->Enable(enc_status == ENC_STATUS_STOP ? TRUE : FALSE);
  2148. }
  2149.