T264EncProp.cpp
上传用户:sunbaby
上传日期:2013-05-31
资源大小:242k
文件大小:6k
源码类别:

mpeg/mp3

开发平台:

Visual C++

  1. #include "StdAfx.h"
  2. #include "t264encprop.h"
  3. #include "initguid.h"
  4. #include "iprop.h"
  5. #include "resource.h"
  6. #include "..commont264.h"
  7. #include "stdio.h"
  8. //
  9. // CreateInstance
  10. //
  11. // This goes in the factory template table to create new filter instances
  12. //
  13. CUnknown * WINAPI CT264EncProp::CreateInstance(LPUNKNOWN lpunk, HRESULT *phr)
  14. {
  15.     ASSERT(phr);
  16.     CUnknown *punk = new CT264EncProp(lpunk, phr);
  17.     if(punk == NULL)
  18.     {
  19.         if (phr)
  20.             *phr = E_OUTOFMEMORY;
  21.     }
  22.     return punk;
  23. } // CreateInstance
  24. //
  25. // Constructor
  26. //
  27. CT264EncProp::CT264EncProp(LPUNKNOWN pUnk, HRESULT *phr) :
  28. CBasePropertyPage(NAME("T264 Property Page"), pUnk,
  29.                   IDD_DIALOG_PROP, IDS_TITLE)
  30. {
  31.     m_pProp = 0;
  32. } // (Constructor)
  33. CT264EncProp::~CT264EncProp(void)
  34. {
  35. }
  36. //
  37. // SetDirty
  38. //
  39. // Sets m_bDirty and notifies the property page site of the change
  40. //
  41. void CT264EncProp::SetDirty()
  42. {
  43.     m_bDirty = TRUE;
  44.     if(m_pPageSite)
  45.     {
  46.         m_pPageSite->OnStatusChange(PROPPAGESTATUS_DIRTY);
  47.     }
  48. } // SetDirty
  49. //
  50. // OnReceiveMessage
  51. //
  52. // Virtual method called by base class with Window messages
  53. //
  54. BOOL CT264EncProp::OnReceiveMessage(HWND hwnd,
  55.                                            UINT uMsg,
  56.                                            WPARAM wParam,
  57.                                            LPARAM lParam)
  58. {
  59.     switch(uMsg)
  60.     {
  61.     case WM_INITDIALOG:
  62.         {
  63.             m_hWnd = hwnd;
  64.             return (LRESULT) 1;
  65.         }
  66.     case WM_VSCROLL:
  67.         {
  68.             return (LRESULT) 1;
  69.         }
  70.     case WM_COMMAND:
  71.         {
  72.             INT lcode = LOWORD(wParam);
  73.             INT hcode = HIWORD(wParam);
  74.             if(lcode == IDC_BUTTON_DEFAULT)
  75.             {
  76.                 m_pProp->put_Default();
  77.                 SetDirty();
  78.                 OnActivate();
  79.             }
  80.             if (hcode == EN_CHANGE)
  81.             {
  82.                 SetDirty();
  83.             }
  84.             return (LRESULT) 1;
  85.         }
  86.     case WM_DESTROY:
  87.         {
  88.             return (LRESULT) 1;
  89.         }
  90.     }
  91.     return CBasePropertyPage::OnReceiveMessage(hwnd,uMsg,wParam,lParam);
  92. } // OnReceiveMessage
  93. //
  94. // OnConnect
  95. //
  96. // Called when the property page connects to a filter
  97. //
  98. HRESULT CT264EncProp::OnConnect(IUnknown *pUnknown)
  99. {
  100.     ASSERT(m_pProp == NULL);
  101.     CheckPointer(pUnknown,E_POINTER);
  102.     HRESULT hr = pUnknown->QueryInterface(IID_IProp, (void **) &m_pProp);
  103.     if(FAILED(hr))
  104.     {
  105.         return E_NOINTERFACE;
  106.     }
  107.     ASSERT(m_pProp);
  108.     OnActivate();
  109.     
  110.     return NOERROR;
  111. } // OnConnect
  112. //
  113. // OnDisconnect
  114. //
  115. // Called when we're disconnected from a filter
  116. //
  117. HRESULT CT264EncProp::OnDisconnect()
  118. {
  119.     // Release of Interface after setting the appropriate contrast value
  120.     if (!m_pProp)
  121.         return E_UNEXPECTED;
  122.     m_pProp->Release();
  123.     m_pProp = NULL;
  124.     return NOERROR;
  125. } // OnDisconnect
  126. //
  127. // OnDeactivate
  128. //
  129. // We are being deactivated
  130. //
  131. HRESULT CT264EncProp::OnDeactivate(void)
  132. {
  133.     // Remember the present contrast level for the next activate
  134.     TCHAR szBuf[20];
  135.     T264_param_t* param;
  136.     ASSERT(m_pProp);
  137.     m_pProp->get_Para((INT**)&param);
  138.     BOOL bSuceed;
  139.     param->iframe = GetDlgItemInt(m_hWnd, IDC_EDIT_IFRAME, &bSuceed, false);
  140.     param->bitrate = GetDlgItemInt(m_hWnd, IDC_EDIT_BITRATE, &bSuceed, false);
  141.     param->qp = GetDlgItemInt(m_hWnd, IDC_EDIT_IQP, &bSuceed, false);
  142.     param->min_qp = GetDlgItemInt(m_hWnd, IDC_EDIT_MINQP, &bSuceed, false);
  143.     param->max_qp = GetDlgItemInt(m_hWnd, IDC_EDIT_MAXQP, &bSuceed, false);
  144.     param->search_x = param->search_y = GetDlgItemInt(m_hWnd, IDC_EDIT_SEARCH, &bSuceed, false);
  145.     param->ref_num = GetDlgItemInt(m_hWnd, IDC_EDIT_REFNUM, &bSuceed, false);
  146.     param->b_num = GetDlgItemInt(m_hWnd, IDC_EDIT_BFRAMENUM, &bSuceed, false);
  147.     GetDlgItemText(m_hWnd, IDC_EDIT_FRAMEFATE, szBuf, 20);
  148.     param->framerate = (float)atof(szBuf);
  149.     m_pProp->put_InfoWnd(0);
  150.     if (param->bitrate != 0)
  151.         param->enable_rc = 1;
  152.     return NOERROR;
  153. } // OnDeactivate
  154. HRESULT CT264EncProp::OnActivate(void)
  155. {
  156.     // Remember the present contrast level for the next activate
  157.     HWND hWnd = GetDlgItem(m_hWnd, IDC_STATIC_INFO);
  158.     m_pProp->put_InfoWnd((INT)hWnd);
  159.     
  160.     T264_param_t* param;
  161.     TCHAR szBuf[20];
  162.     ASSERT(m_pProp);
  163.     m_pProp->put_InfoWnd((INT)hWnd);
  164.     m_pProp->get_Para((INT**)&param);
  165.     SetDlgItemInt(m_hWnd, IDC_EDIT_IFRAME, param->iframe, false);
  166.     SetDlgItemInt(m_hWnd, IDC_EDIT_BITRATE, param->bitrate, false);
  167.     SetDlgItemInt(m_hWnd, IDC_EDIT_IQP, param->qp, false);
  168.     SetDlgItemInt(m_hWnd, IDC_EDIT_MINQP, param->min_qp, false);
  169.     SetDlgItemInt(m_hWnd, IDC_EDIT_MAXQP, param->max_qp, false);
  170.     SetDlgItemInt(m_hWnd, IDC_EDIT_SEARCH, param->search_x, false);
  171.     SetDlgItemInt(m_hWnd, IDC_EDIT_REFNUM, param->ref_num, false);
  172.     SetDlgItemInt(m_hWnd, IDC_EDIT_BFRAMENUM, param->b_num, false);
  173.     sprintf(szBuf, "%.2f", param->framerate);
  174.     SetDlgItemText(m_hWnd, IDC_EDIT_FRAMEFATE, szBuf);
  175.     sprintf(szBuf, "T264 ver: %d.%02d", T264_MAJOR, T264_MINOR);
  176.     SetDlgItemText(m_hWnd, IDC_STATIC_VER, szBuf);
  177.     return NOERROR;
  178. } // OnDeactivate
  179. //
  180. // OnApplyChanges
  181. //
  182. // Changes made should be kept. Change the m_cContrastOnExit variable
  183. //
  184. HRESULT CT264EncProp::OnApplyChanges()
  185. {
  186.     T264_param_t* param;
  187.     TCHAR szBuf[20];
  188.     ASSERT(m_pProp);
  189.     m_pProp->get_Para((INT**)&param);
  190.     m_bDirty = FALSE;
  191.     BOOL bSuceed;
  192.     param->iframe = GetDlgItemInt(m_hWnd, IDC_EDIT_IFRAME, &bSuceed, false);
  193.     param->bitrate = GetDlgItemInt(m_hWnd, IDC_EDIT_BITRATE, &bSuceed, false);
  194.     param->qp = GetDlgItemInt(m_hWnd, IDC_EDIT_IQP, &bSuceed, false);
  195.     param->min_qp = GetDlgItemInt(m_hWnd, IDC_EDIT_MINQP, &bSuceed, false);
  196.     param->max_qp = GetDlgItemInt(m_hWnd, IDC_EDIT_MAXQP, &bSuceed, false);
  197.     param->search_x = param->search_y = GetDlgItemInt(m_hWnd, IDC_EDIT_SEARCH, &bSuceed, false);
  198.     param->ref_num = GetDlgItemInt(m_hWnd, IDC_EDIT_REFNUM, &bSuceed, false);
  199.     param->b_num = GetDlgItemInt(m_hWnd, IDC_EDIT_BFRAMENUM, &bSuceed, false);
  200.     GetDlgItemText(m_hWnd, IDC_EDIT_FRAMEFATE, szBuf, 20);
  201.     param->framerate = (float)atof(szBuf);
  202.     if (param->bitrate != 0)
  203.         param->enable_rc = 1;
  204.     else
  205.         param->enable_rc = 0;
  206.     return(NOERROR);
  207. } // OnApplyChanges