00001
00002
00003
00004
00005
00006 #include "stdafx.h"
00007 #include "FdmApp.h"
00008 #include "Dlg_Convert.h"
00009
00010 #ifdef _DEBUG
00011 #define new DEBUG_NEW
00012 #undef THIS_FILE
00013 static char THIS_FILE[] = __FILE__;
00014 #endif
00015
00016 CDlg_Convert::CDlg_Convert(vmsMediaFileConvertSettings *stgs, CWnd* pParent )
00017 : CDialog(CDlg_Convert::IDD, pParent)
00018 {
00019
00020
00021
00022 m_bCustomizingDefSettings = false;
00023 m_stgs = stgs;
00024 }
00025
00026 void CDlg_Convert::DoDataExchange(CDataExchange* pDX)
00027 {
00028 CDialog::DoDataExchange(pDX);
00029
00030 DDX_Control(pDX, IDC_VIDEOSIZE, m_wndVideoSize);
00031 DDX_Control(pDX, IDC_QUALITY, m_wndQuality);
00032 DDX_Control(pDX, IDC_FORMAT, m_wndFormat);
00033
00034 }
00035
00036 BEGIN_MESSAGE_MAP(CDlg_Convert, CDialog)
00037
00038
00039 END_MESSAGE_MAP()
00040
00041 SIZE _aQualityRates [] = {
00042 {384, 64},
00043 {512, 80},
00044 {640, 96},
00045 {800, 96},
00046 {1000, 128},
00047 {1200, 128},
00048 };
00049 UINT _anQualityNames [] = {
00050 L_VERYLOW_2,
00051 L_LOW_2,
00052 L_NORMAL_2,
00053 L_AVERAGE_2,
00054 L_HIGH_2,
00055 L_VERYHIGH_2,
00056 };
00057
00058 LPCSTR _apszFormats [] = {
00059
00060 NULL, "avi", "avi", "msmpeg4v2", "mp3",
00061 NULL, "avi", "avi", "xvid", "mp3",
00062 "FLV (*.flv)", "flv", "flv", "", "",
00063 "WMV (*.wmv)" , "wmv", "asf", "wmv2", "mp3",
00064 "MPEG1 (*.mpg)", "mpg", "mpegvideo", "", "",
00065 "MPEG2 (*.mpg)", "mpg", "mpegts", "", "",
00066 NULL, "mp4", "mp4", "mpeg4", "aac",
00067 "MP3 (*.mp3)", "mp3", "mp3", "none", "mp3",
00068 };
00069
00070 SIZE _aVideoSizes [] = {
00071
00072 {-1, -1},
00073 {160, 120},
00074 {240, 180},
00075 {320, 240},
00076 {640, 480},
00077 {720, 480},
00078 {720, 756},
00079 };
00080
00081 BOOL CDlg_Convert::OnInitDialog()
00082 {
00083 CDialog::OnInitDialog();
00084
00085 _apszFormats [0*5] = LS (L_AVI_USING_MPEG);
00086 _apszFormats [1*5] = LS (L_AVI_USING_XVID);
00087 _apszFormats [6*5] = LS (L_MP4_FORMAT);
00088
00089 for (int i = 0; i < sizeof (_apszFormats) / sizeof (LPCSTR) / 5; i++)
00090 {
00091 m_wndFormat.AddString (_apszFormats [i * 5]);
00092 if (m_stgs->strFormat == _apszFormats [i * 5 + 2] &&
00093 m_stgs->strVideoCodec == _apszFormats [i * 5 + 3])
00094 m_wndFormat.SetCurSel (i);
00095 }
00096 if (m_wndFormat.GetCurSel () == CB_ERR)
00097 m_wndFormat.SetCurSel (0);
00098
00099 for (i = 0; i < sizeof (_aVideoSizes) / sizeof (SIZE); i++)
00100 {
00101 if (i == 0)
00102 {
00103 m_wndVideoSize.AddString (LS (L_DONT_CHANGE));
00104 }
00105 else
00106 {
00107 CString str;
00108 str.Format ("%d x %d", _aVideoSizes [i].cx, _aVideoSizes [i].cy);
00109 m_wndVideoSize.AddString (str);
00110 }
00111 if (m_stgs->sizeVideo == _aVideoSizes [i])
00112 m_wndVideoSize.SetCurSel (i);
00113 }
00114 if (m_wndVideoSize.GetCurSel () == CB_ERR)
00115 m_wndVideoSize.SetCurSel (0);
00116
00117 int m = 0;
00118 for (i = 0; i < sizeof (_anQualityNames) / sizeof (UINT); i++)
00119 m = max (m, lstrlen (LS (_anQualityNames [i])));
00120 for (i = 0; i < sizeof (_anQualityNames) / sizeof (UINT); i++)
00121 {
00122 CString str, str2;
00123 int k = m - lstrlen (LS (_anQualityNames [i]));
00124 k = (int)(k * 1.6);
00125 while (k--)
00126 str2 += ' ';
00127 str.Format ("%s %s (%s: %dkbps; %s: %dkbps)", LS (_anQualityNames [i]), str2,
00128 LS (L_VIDEO_BITRATE), _aQualityRates [i].cx,
00129 LS (L_AUDIO_BITRATE), _aQualityRates [i].cy);
00130 m_wndQuality.AddString (str);
00131
00132 if (m_stgs->nVideoBitrate == _aQualityRates [i].cx &&
00133 m_stgs->nAudioBitrate == _aQualityRates [i].cy)
00134 m_wndQuality.SetCurSel (i);
00135 }
00136 if (m_wndQuality.GetCurSel () == CB_ERR)
00137 m_wndQuality.SetCurSel (0);
00138
00139 if (m_bCustomizingDefSettings)
00140 {
00141 CheckDlgButton (IDC_SET_AS_DEF, BST_CHECKED);
00142 GetDlgItem (IDC_SET_AS_DEF)->EnableWindow (FALSE);
00143 }
00144
00145 ApplyLanguage ();
00146
00147 return TRUE;
00148 }
00149
00150 void CDlg_Convert::OnOK()
00151 {
00152 int fmt = m_wndFormat.GetCurSel ();
00153 m_stgs->strExtension = _apszFormats [fmt * 5 + 1];
00154 m_stgs->strFormat = _apszFormats [fmt * 5 + 2];
00155 m_stgs->strVideoCodec = _apszFormats [fmt * 5 + 3];
00156 m_stgs->strAudioCodec = _apszFormats [fmt * 5 + 4];
00157
00158 int vs = m_wndVideoSize.GetCurSel ();
00159 m_stgs->sizeVideo = _aVideoSizes [vs];
00160
00161 int q = m_wndQuality.GetCurSel ();
00162 m_stgs->nVideoBitrate = _aQualityRates [q].cx;
00163 m_stgs->nAudioBitrate = _aQualityRates [q].cy;
00164
00165 if (IsDlgButtonChecked (IDC_SET_AS_DEF) == BST_CHECKED)
00166 vmsMediaConvertMgr::SaveSettingsAsDefault (*m_stgs);
00167
00168 CDialog::OnOK();
00169 }
00170
00171 void CDlg_Convert::ApplyLanguage()
00172 {
00173 fsDlgLngInfo lnginfo [] = {
00174 fsDlgLngInfo (IDC__FORMAT, L_FILE_FORMAT, TRUE),
00175 fsDlgLngInfo (IDC__VIDEOSIZE, L_VIDEO_SIZE, TRUE),
00176 fsDlgLngInfo (IDC__QUALITY, L_QUALITY, TRUE),
00177 fsDlgLngInfo (IDC_SET_AS_DEF, L_REMEMBER_AS_DEFAULT),
00178 fsDlgLngInfo (IDCANCEL, L_CANCEL),
00179 };
00180
00181 _LngMgr.ApplyLanguage (this, lnginfo, sizeof (lnginfo) / sizeof (fsDlgLngInfo), L_CONVERT_OPTS);
00182 }