bool CMPCVideoDecSettingsWnd::OnActivate() { ASSERT(IPP_FONTSIZE == 13); const int h20 = IPP_SCALE(20); const int h25 = IPP_SCALE(25); DWORD dwStyle = WS_VISIBLE | WS_CHILD | WS_TABSTOP; CPoint p(10, 10); GUID* DxvaGui = NULL; #if HAS_FFMPEG_VIDEO_DECODERS m_grpFFMpeg.Create(ResStr(IDS_VDF_FFSETTINGS), WS_VISIBLE | WS_CHILD | BS_GROUPBOX, CRect(p + CPoint(-5, 0), CSize(IPP_SCALE(350), h20 + h25 * 4 + h20)), this, (UINT)IDC_STATIC); p.y += h20; // Decoding threads m_txtThreadNumber.Create(ResStr(IDS_VDF_THREADNUMBER), WS_VISIBLE | WS_CHILD, CRect(p, CSize(IPP_SCALE(220), m_fontheight)), this, (UINT)IDC_STATIC); m_cbThreadNumber.Create(dwStyle | CBS_DROPDOWNLIST | WS_VSCROLL, CRect(p + CPoint(IPP_SCALE(230), -4), CSize(IPP_SCALE(110), 200)), this, IDC_PP_THREAD_NUMBER); m_cbThreadNumber.AddString(ResStr(IDS_VDF_IDCT_AUTO)); CString ThreadNumberStr; for (int i = 0; i < 16; i++) { ThreadNumberStr.Format(_T("%d"), i + 1); m_cbThreadNumber.AddString(ThreadNumberStr); } p.y += h25; #if INTERNAL_DECODER_H264 // H264 deblocking mode m_txtDiscardMode.Create(ResStr(IDS_VDF_SKIPDEBLOCK), WS_VISIBLE | WS_CHILD, CRect(p, CSize(IPP_SCALE(220), m_fontheight)), this, (UINT)IDC_STATIC); m_cbDiscardMode.Create(dwStyle | CBS_DROPDOWNLIST | WS_VSCROLL, CRect(p + CPoint(IPP_SCALE(230), -4), CSize(IPP_SCALE(110), 200)), this, IDC_PP_DISCARD_MODE); m_cbDiscardMode.AddString(ResStr(IDS_VDF_DBLK_NONE)); m_cbDiscardMode.AddString(ResStr(IDS_VDF_DBLK_DEFAULT)); m_cbDiscardMode.AddString(ResStr(IDS_VDF_DBLK_NONREF)); m_cbDiscardMode.AddString(ResStr(IDS_VDF_DBLK_BIDIR)); m_cbDiscardMode.AddString(ResStr(IDS_VDF_DBLK_NONKFRM)); m_cbDiscardMode.AddString(ResStr(IDS_VDF_DBLK_ALL)); #endif /* INTERNAL_DECODER_H264 */ p.y += h25; // Error recognition m_txtErrorRecognition.Create(ResStr(IDS_VDF_ERROR_RECOGNITION), WS_VISIBLE | WS_CHILD, CRect(p, CSize(IPP_SCALE(220), m_fontheight)), this, (UINT)IDC_STATIC); m_cbErrorRecognition.Create(dwStyle | CBS_DROPDOWNLIST | WS_VSCROLL, CRect(p + CPoint(IPP_SCALE(230), -4), CSize(IPP_SCALE(110), 200)), this, IDC_PP_DISCARD_MODE); m_cbErrorRecognition.AddString(ResStr(IDS_VDF_ERR_CAREFUL)); m_cbErrorRecognition.AddString(ResStr(IDS_VDF_ERR_COMPLIANT)); m_cbErrorRecognition.AddString(ResStr(IDS_VDF_ERR_AGGRESSIVE)); p.y += h25; // IDCT Algorithm m_txtIDCTAlgo.Create(ResStr(IDS_VDF_IDCT_ALGO), WS_VISIBLE | WS_CHILD, CRect(p, CSize(IPP_SCALE(220), m_fontheight)), this, (UINT)IDC_STATIC); m_cbIDCTAlgo.Create(dwStyle | CBS_DROPDOWNLIST | WS_VSCROLL, CRect(p + CPoint(IPP_SCALE(230), -4), CSize(IPP_SCALE(110), 200)), this, IDC_PP_DISCARD_MODE); m_cbIDCTAlgo.AddString(ResStr(IDS_VDF_IDCT_AUTO)); m_cbIDCTAlgo.AddString(ResStr(IDS_VDF_IDCT_LIBMPEG2)); m_cbIDCTAlgo.AddString(ResStr(IDS_VDF_IDCT_SIMPLE_MMX)); m_cbIDCTAlgo.AddString(ResStr(IDS_VDF_IDCT_XVID)); m_cbIDCTAlgo.AddString(ResStr(IDS_VDF_IDCT_SIMPLE)); p.y += h25; m_cbARMode.Create(ResStr(IDS_VDF_AR_MODE), dwStyle | BS_AUTOCHECKBOX | BS_LEFTTEXT, CRect(p, CSize(IPP_SCALE(340), m_fontheight)), this, IDC_PP_AR); m_cbARMode.SetCheck(FALSE); p.y += h25; #endif /* HAS_FFMPEG_VIDEO_DECODERS */ m_grpDXVA.Create(ResStr(IDS_VDF_DXVA_SETTING), WS_VISIBLE | WS_CHILD | BS_GROUPBOX, CRect(p + CPoint(-5, 0), CSize(IPP_SCALE(350), h20 + h25 + h20 * 3 + m_fontheight)), this, (UINT)IDC_STATIC); p.y += h20; // DXVA Compatibility check m_txtDXVACompatibilityCheck.Create(ResStr(IDS_VDF_DXVACOMPATIBILITY), WS_VISIBLE | WS_CHILD, CRect(p, CSize(IPP_SCALE(225), m_fontheight)), this, (UINT)IDC_STATIC); m_cbDXVACompatibilityCheck.Create(dwStyle | CBS_DROPDOWNLIST | WS_VSCROLL, CRect(p + CPoint(IPP_SCALE(230), -4), CSize(IPP_SCALE(110), 200)), this, IDC_PP_DXVA_CHECK); m_cbDXVACompatibilityCheck.AddString(ResStr(IDS_VDF_DXVA_FULLCHECK)); m_cbDXVACompatibilityCheck.AddString(ResStr(IDS_VDF_DXVA_SKIP_LEVELCHECK)); m_cbDXVACompatibilityCheck.AddString(ResStr(IDS_VDF_DXVA_SKIP_REFCHECK)); m_cbDXVACompatibilityCheck.AddString(ResStr(IDS_VDF_DXVA_SKIP_ALLCHECK)); p.y += h25; m_cbDXVA_SD.Create(ResStr(IDS_VDF_DXVA_SD), dwStyle | BS_AUTOCHECKBOX | BS_LEFTTEXT, CRect(p, CSize(IPP_SCALE(340), m_fontheight)), this, IDC_PP_DXVA_SD); m_cbDXVA_SD.SetCheck(FALSE); p.y += h20; // DXVA mode m_txtDXVAMode.Create(ResStr(IDS_VDF_DXVA_MODE), WS_VISIBLE | WS_CHILD, CRect(p, CSize(IPP_SCALE(120), m_fontheight)), this, (UINT)IDC_STATIC); m_edtDXVAMode.Create(WS_CHILD | WS_VISIBLE | WS_DISABLED, CRect(p + CPoint(IPP_SCALE(120), 0), CSize(IPP_SCALE(220), m_fontheight)), this, 0); p.y += h20; // Video card description m_txtVideoCardDescription.Create(ResStr(IDS_VDF_VIDEOCARD), WS_VISIBLE | WS_CHILD, CRect(p, CSize(IPP_SCALE(120), m_fontheight)), this, (UINT)IDC_STATIC); m_edtVideoCardDescription.Create(ES_MULTILINE | WS_CHILD | WS_VISIBLE | WS_DISABLED, CRect(p + CPoint(IPP_SCALE(120), 0), CSize(IPP_SCALE(220), m_fontheight * 2)), this, 0); m_edtVideoCardDescription.SetWindowText(m_pMDF->GetVideoCardDescription()); DxvaGui = m_pMDF->GetDXVADecoderGuid(); if (DxvaGui != NULL) { CString DXVAMode = GetDXVAMode(DxvaGui); m_edtDXVAMode.SetWindowText(DXVAMode); } else { m_txtDXVAMode.ShowWindow(SW_HIDE); m_edtDXVAMode.ShowWindow(SW_HIDE); } for (CWnd* pWnd = GetWindow(GW_CHILD); pWnd; pWnd = pWnd->GetNextWindow()) { pWnd->SetFont(&m_font, FALSE); } CorrectComboListWidth(m_cbDXVACompatibilityCheck); #if INTERNAL_DECODER_H264 CorrectComboListWidth(m_cbDiscardMode); #endif if (m_pMDF) { #if HAS_FFMPEG_VIDEO_DECODERS #if INTERNAL_DECODER_H264 m_cbThreadNumber.SetCurSel(m_pMDF->GetThreadNumber()); m_cbDiscardMode.SetCurSel(FindDiscardIndex(m_pMDF->GetDiscardMode())); #endif m_cbErrorRecognition.SetCurSel(FindErrRecognitionIndex(m_pMDF->GetErrorRecognition())); m_cbIDCTAlgo.SetCurSel(m_pMDF->GetIDCTAlgo()); m_cbARMode.SetCheck(m_pMDF->GetARMode()); #endif /* HAS_FFMPEG_VIDEO_DECODERS */ m_cbDXVACompatibilityCheck.SetCurSel(m_pMDF->GetDXVACheckCompatibility()); m_cbDXVA_SD.SetCheck(m_pMDF->GetDXVA_SD()); } return true; }
bool CMPCVideoDecSettingsWnd::OnActivate() { int nPosY = 10; GUID* DxvaGui = NULL; #if HAS_FFMPEG_VIDEO_DECODERS m_grpFFMpeg.Create (ResStr (IDS_VDF_FFSETTINGS), WS_VISIBLE|WS_CHILD | BS_GROUPBOX, CRect (5, nPosY, 350, nPosY+150), this, (UINT)IDC_STATIC); // Decoding threads nPosY += VERTICAL_SPACING; m_txtThreadNumber.Create (ResStr (IDS_VDF_THREADNUMBER), WS_VISIBLE|WS_CHILD, CRect (LEFT_SPACING, nPosY, 220, nPosY+15), this, (UINT)IDC_STATIC); m_cbThreadNumber.Create (WS_VISIBLE|WS_CHILD|CBS_DROPDOWNLIST|WS_VSCROLL, CRect (230, nPosY-4, 345, nPosY+90), this, IDC_PP_THREAD_NUMBER); m_cbThreadNumber.AddString(ResStr(IDS_VDF_IDCT_AUTO)); CString ThreadNumberStr; for (int i=0; i<16; i++) { ThreadNumberStr.Format(_T("%d"), i+1); m_cbThreadNumber.AddString(ThreadNumberStr); } #if INTERNAL_DECODER_H264 // H264 deblocking mode nPosY += VERTICAL_SPACING; m_txtDiscardMode.Create (ResStr (IDS_VDF_SKIPDEBLOCK), WS_VISIBLE|WS_CHILD, CRect (LEFT_SPACING, nPosY, 220, nPosY+15), this, (UINT)IDC_STATIC); m_cbDiscardMode.Create (WS_VISIBLE|WS_CHILD|CBS_DROPDOWNLIST|WS_VSCROLL, CRect (230, nPosY-4, 345, nPosY+90), this, IDC_PP_DISCARD_MODE); m_cbDiscardMode.AddString (ResStr (IDS_VDF_DBLK_NONE)); m_cbDiscardMode.AddString (ResStr (IDS_VDF_DBLK_DEFAULT)); m_cbDiscardMode.AddString (ResStr (IDS_VDF_DBLK_NONREF)); m_cbDiscardMode.AddString (ResStr (IDS_VDF_DBLK_BIDIR)); m_cbDiscardMode.AddString (ResStr (IDS_VDF_DBLK_NONKFRM)); m_cbDiscardMode.AddString (ResStr (IDS_VDF_DBLK_ALL)); #endif /* INTERNAL_DECODER_H264 */ // Error recognition nPosY += VERTICAL_SPACING; m_txtErrorRecognition.Create (ResStr (IDS_VDF_ERROR_RECOGNITION), WS_VISIBLE|WS_CHILD, CRect (LEFT_SPACING, nPosY, 220, nPosY+15), this, (UINT)IDC_STATIC); m_cbErrorRecognition.Create (WS_VISIBLE|WS_CHILD|CBS_DROPDOWNLIST|WS_VSCROLL, CRect (230, nPosY-4, 345, nPosY+90), this, IDC_PP_DISCARD_MODE); m_cbErrorRecognition.AddString (ResStr (IDS_VDF_ERR_CAREFUL)); m_cbErrorRecognition.AddString (ResStr (IDS_VDF_ERR_COMPLIANT)); m_cbErrorRecognition.AddString (ResStr (IDS_VDF_ERR_AGGRESSIVE)); // IDCT Algo nPosY += VERTICAL_SPACING; m_txtIDCTAlgo.Create (ResStr (IDS_VDF_IDCT_ALGO), WS_VISIBLE|WS_CHILD, CRect (LEFT_SPACING, nPosY, 220, nPosY+15), this, (UINT)IDC_STATIC); m_cbIDCTAlgo.Create (WS_VISIBLE|WS_CHILD|CBS_DROPDOWNLIST|WS_VSCROLL, CRect (230, nPosY-4, 345, nPosY+90), this, IDC_PP_DISCARD_MODE); m_cbIDCTAlgo.AddString (ResStr (IDS_VDF_IDCT_AUTO)); m_cbIDCTAlgo.AddString (ResStr (IDS_VDF_IDCT_LIBMPEG2)); m_cbIDCTAlgo.AddString (ResStr (IDS_VDF_IDCT_SIMPLE_MMX)); m_cbIDCTAlgo.AddString (ResStr (IDS_VDF_IDCT_XVID)); m_cbIDCTAlgo.AddString (ResStr (IDS_VDF_IDCT_SIMPLE)); nPosY += VERTICAL_SPACING; m_cbARMode.Create (ResStr (IDS_VDF_AR_MODE), WS_VISIBLE|WS_CHILD|BS_AUTOCHECKBOX|BS_LEFTTEXT, CRect (LEFT_SPACING, nPosY, 345, nPosY+15), this, IDC_PP_AR); m_cbARMode.SetCheck(FALSE); nPosY = 170; #endif /* HAS_FFMPEG_VIDEO_DECODERS */ m_grpDXVA.Create (ResStr (IDS_VDF_DXVA_SETTING), WS_VISIBLE|WS_CHILD | BS_GROUPBOX, CRect (5, nPosY, 350, nPosY+135), this, (UINT)IDC_STATIC); // DXVA Compatibility check nPosY += VERTICAL_SPACING; m_txtDXVACompatibilityCheck.Create (ResStr (IDS_VDF_DXVACOMPATIBILITY), WS_VISIBLE|WS_CHILD, CRect (LEFT_SPACING, nPosY, 225, nPosY+15), this, (UINT)IDC_STATIC); m_cbDXVACompatibilityCheck.Create (WS_VISIBLE|WS_CHILD|CBS_DROPDOWNLIST|WS_VSCROLL, CRect (230, nPosY-4, 345, nPosY+90), this, IDC_PP_DXVA_CHECK); m_cbDXVACompatibilityCheck.AddString(ResStr(IDS_VDF_DXVA_FULLCHECK)); m_cbDXVACompatibilityCheck.AddString(ResStr(IDS_VDF_DXVA_SKIP_LEVELCHECK)); m_cbDXVACompatibilityCheck.AddString(ResStr(IDS_VDF_DXVA_SKIP_REFCHECK)); m_cbDXVACompatibilityCheck.AddString(ResStr(IDS_VDF_DXVA_SKIP_ALLCHECK)); nPosY += VERTICAL_SPACING; m_cbDXVA_SD.Create (ResStr (IDS_VDF_DXVA_SD), WS_VISIBLE|WS_CHILD|BS_AUTOCHECKBOX|BS_LEFTTEXT, CRect (LEFT_SPACING, nPosY, 345, nPosY+15), this, IDC_PP_DXVA_SD); m_cbDXVA_SD.SetCheck(FALSE); // DXVA mode nPosY += VERTICAL_SPACING; m_txtDXVAMode.Create (ResStr (IDS_VDF_DXVA_MODE), WS_VISIBLE|WS_CHILD, CRect (LEFT_SPACING, nPosY, 120, nPosY+15), this, (UINT)IDC_STATIC); m_edtDXVAMode.Create (WS_CHILD|WS_VISIBLE|WS_DISABLED, CRect (120, nPosY, 345, nPosY+20), this, 0); // Video card description nPosY += VERTICAL_SPACING; m_txtVideoCardDescription.Create (ResStr (IDS_VDF_VIDEOCARD), WS_VISIBLE|WS_CHILD, CRect (LEFT_SPACING, nPosY, 120, nPosY+15), this, (UINT)IDC_STATIC); m_edtVideoCardDescription.Create (ES_MULTILINE|WS_CHILD|WS_VISIBLE|WS_DISABLED, CRect (120, nPosY, 345, nPosY+30), this, 0); m_edtVideoCardDescription.SetWindowText (m_pMDF->GetVideoCardDescription()); DxvaGui = m_pMDF->GetDXVADecoderGuid(); if (DxvaGui != NULL) { CString DXVAMode = GetDXVAMode (DxvaGui); m_edtDXVAMode.SetWindowText (DXVAMode); } else { m_txtDXVAMode.ShowWindow (SW_HIDE); m_edtDXVAMode.ShowWindow (SW_HIDE); } for (CWnd* pWnd = GetWindow(GW_CHILD); pWnd; pWnd = pWnd->GetNextWindow()) { pWnd->SetFont(&m_font, FALSE); } CorrectComboListWidth(m_cbDXVACompatibilityCheck); #if INTERNAL_DECODER_H264 CorrectComboListWidth(m_cbDiscardMode); #endif if (m_pMDF) { #if HAS_FFMPEG_VIDEO_DECODERS #if INTERNAL_DECODER_H264 m_cbThreadNumber.SetCurSel (m_pMDF->GetThreadNumber()); m_cbDiscardMode.SetCurSel (FindDiscardIndex (m_pMDF->GetDiscardMode())); #endif m_cbErrorRecognition.SetCurSel (FindErrRecognitionIndex (m_pMDF->GetErrorRecognition())); m_cbIDCTAlgo.SetCurSel (m_pMDF->GetIDCTAlgo()); m_cbARMode.SetCheck(m_pMDF->GetARMode()); #endif /* HAS_FFMPEG_VIDEO_DECODERS */ m_cbDXVACompatibilityCheck.SetCurSel(m_pMDF->GetDXVACheckCompatibility()); m_cbDXVA_SD.SetCheck(m_pMDF->GetDXVA_SD()); } return true; }