同步操作将从 雷霄骅/AAC_Analysis 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
/** AAC分析器* AAC Analysis** 雷霄骅 Lei Xiaohua* leixiaohua1020@126.com* 中国传媒大学/数字电视技术* Communication University of China / Digital TV Technology* http://blog.csdn.net/leixiaohua1020**/#include "stdafx.h"#include "SpecialAAAC.h"#include "SpecialAAACDlg.h"#include "afxdialogex.h"#ifdef _DEBUG#define new DEBUG_NEW#endif// 用于应用程序"关于"菜单项的 CAboutDlg 对话框class CAboutDlg : public CDialogEx{public:CAboutDlg();// 对话框数据enum { IDD = IDD_ABOUTBOX };protected:virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持// 实现protected:DECLARE_MESSAGE_MAP()};CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD){}void CAboutDlg::DoDataExchange(CDataExchange* pDX){CDialogEx::DoDataExchange(pDX);}BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)END_MESSAGE_MAP()// CSpecialAAACDlg 对话框CSpecialAAACDlg::CSpecialAAACDlg(CWnd* pParent /*=NULL*/): CDialogEx(CSpecialAAACDlg::IDD, pParent){m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);}void CSpecialAAACDlg::DoDataExchange(CDataExchange* pDX){CDialogEx::DoDataExchange(pDX);DDX_Control(pDX, IDC_A_AAC_BASICINFO, m_aaacbasicinfo);DDX_Control(pDX, IDC_A_AAC_INPUTURL, m_aaacinputurl);DDX_Control(pDX, IDC_A_AAC_CONSOLE, m_aaacconsole);DDX_Control(pDX, IDC_A_AAC_OUTPUT_FMT, m_aaacoutputfmt);DDX_Control(pDX, IDC_A_AAC_OUTPUT_SR, m_aaacoutputsr);DDX_Control(pDX, IDC_A_AAC_LANG, m_aaaclang);DDX_Control(pDX, IDC_A_AAC_PROGRESS, m_aaacprogress);DDX_Control(pDX, IDC_A_AAC_PROGRESS_TEXT, m_aaacprogresstext);}BEGIN_MESSAGE_MAP(CSpecialAAACDlg, CDialogEx)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_A_AAC_INPUTURL_OPEN, &CSpecialAAACDlg::OnBnClickedAAacInputurlOpen)ON_BN_CLICKED(IDC_A_AAC_ABOUT, &CSpecialAAACDlg::OnBnClickedAAacAbout)ON_WM_DROPFILES()ON_CBN_SELCHANGE(IDC_A_AAC_LANG, &CSpecialAAACDlg::OnSelchangeAAacLang)END_MESSAGE_MAP()//处理线程UINT Thread_Process(LPVOID lpParam){CSpecialAAACDlg *dlg=(CSpecialAAACDlg *)lpParam;int argc=6;char **argv=(char **)malloc(MAX_URL_LENGTH);argv[0]=(char *)malloc(MAX_URL_LENGTH);argv[1]=(char *)malloc(MAX_URL_LENGTH);argv[2]=(char *)malloc(MAX_URL_LENGTH);argv[3]=(char *)malloc(MAX_URL_LENGTH);argv[4]=(char *)malloc(MAX_URL_LENGTH);argv[5]=(char *)malloc(MAX_URL_LENGTH);strcpy(argv[0],"dummy");strcpy(argv[1],"-f");switch(dlg->m_aaacoutputfmt.GetCurSel()){case 0:strcpy(argv[2],"1");break;case 1:strcpy(argv[2],"2");break;default:strcpy(argv[2],"1");break;}strcpy(argv[3],"-b");switch(dlg->m_aaacoutputsr.GetCurSel()){case 0:strcpy(argv[4],"1");break;case 1:strcpy(argv[4],"2");break;case 2:strcpy(argv[4],"3");break;case 3:strcpy(argv[4],"4");break;case 4:strcpy(argv[4],"5");break;default:strcpy(argv[4],"1");break;}strcpy(argv[5],dlg->fileurl);aac_decode(dlg,argc,argv);free(argv[0]);free(argv[1]);free(argv[2]);free(argv[3]);free(argv[4]);free(argv[5]);free(argv);dlg->ShowBInfo();//FIX:100%dlg->m_aaacprogress.SetPos(100);CString progresstext(_T("100%"));dlg->m_aaacprogresstext.SetWindowText(progresstext);return 0;}// CSpecialAAACDlg 消息处理程序BOOL CSpecialAAACDlg::OnInitDialog(){CDialogEx::OnInitDialog();// 将"关于..."菜单项添加到系统菜单中。// IDM_ABOUTBOX 必须在系统命令范围内。ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX < 0xF000);CMenu* pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != NULL){BOOL bNameValid;CString strAboutMenu;bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);ASSERT(bNameValid);if (!strAboutMenu.IsEmpty()){pSysMenu->AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);}}//----------m_aaacbasicinfo.EnableHeaderCtrl(FALSE);m_aaacbasicinfo.SetVSDotNetLook();//把第一列调整宽一些-----------------------HDITEM item;item.cxy=120;item.mask=HDI_WIDTH;m_aaacbasicinfo.GetHeaderCtrl().SetItem(0, new HDITEM(item));text.LoadString(IDS_INFO_FRAMEINFO);FrameInfogroup=new CMFCPropertyGridProperty(text);text.LoadString(IDS_INFO_CONTAINERINFO);Containergroup=new CMFCPropertyGridProperty(text);text.LoadString(IDS_INFO_METAINFO);MetaDatagroup=new CMFCPropertyGridProperty(text);cinfo.Format(_T(""));UpdateData(FALSE);//------------m_aaacoutputfmt.InsertString(0,_T("Microsoft WAV format"));m_aaacoutputfmt.InsertString(1,_T("RAW PCM data"));m_aaacoutputsr.InsertString(0,_T("16 bit PCM data"));m_aaacoutputsr.InsertString(1,_T("24 bit PCM data"));m_aaacoutputsr.InsertString(2,_T("32 bit PCM data"));m_aaacoutputsr.InsertString(3,_T("32 bit floating point data"));m_aaacoutputsr.InsertString(4,_T("64 bit floating point data"));m_aaacoutputfmt.SetCurSel(0);m_aaacoutputsr.SetCurSel(0);//--------------------m_aaacinputurl.EnableFileBrowseButton(NULL,_T("AAC Raw Files (*.aac)|*.aac|M4A Files (*.m4a)|*.m4a|All Files (*.*)|*.*||"));// 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动// 执行此操作SetIcon(m_hIcon, TRUE); // 设置大图标SetIcon(m_hIcon, FALSE); // 设置小图标// TODO: 在此添加额外的初始化代码m_aaaclang.InsertString(0,_T("Chinese"));m_aaaclang.InsertString(1,_T("English"));//---------m_aaacprogress.SetRange(0,100);m_aaacprogress.SetPos(0);m_aaacprogresstext.SetWindowText(_T("0%"));return TRUE; // 除非将焦点设置到控件,否则返回 TRUE}void CSpecialAAACDlg::OnSysCommand(UINT nID, LPARAM lParam){if ((nID & 0xFFF0) == IDM_ABOUTBOX){CAboutDlg dlgAbout;dlgAbout.DoModal();}else{CDialogEx::OnSysCommand(nID, lParam);}}// 如果向对话框添加最小化按钮,则需要下面的代码// 来绘制该图标。对于使用文档/视图模型的 MFC 应用程序,// 这将由框架自动完成。void CSpecialAAACDlg::OnPaint(){if (IsIconic()){CPaintDC dc(this); // 用于绘制的设备上下文SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);// 使图标在工作区矩形中居中int cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;// 绘制图标dc.DrawIcon(x, y, m_hIcon);}else{CDialogEx::OnPaint();}//画对话框不应该添加到OnInitDialog中,否则没有效果}//当用户拖动最小化窗口时系统调用此函数取得光标//显示。HCURSOR CSpecialAAACDlg::OnQueryDragIcon(){return static_cast<HCURSOR>(m_hIcon);}// SpecialAAAC 消息处理程序void CSpecialAAACDlg::OnBnClickedAAacInputurlOpen(){//---------SystemClear();CString strFilePath;//m_aaacinputurl.GetWindowText(fileurl,MAX_URL_LENGTH);m_aaacinputurl.GetWindowText(strFilePath);if(strFilePath.IsEmpty()==TRUE){text.LoadString(IDS_INPUTURL_ERROR);AfxMessageBox(text);return ;}#ifdef _UNICODEUSES_CONVERSION;strcpy(fileurl,W2A(strFilePath));#elsestrcpy(fileurl,strFilePath);#endifUpdateData(TRUE);m_aaacprogress.SetPos(0);pThreadProcess=AfxBeginThread(Thread_Process,this);//开启线程}int CSpecialAAACDlg::AppendBInfo(CString dst_group,CString property_name,CString value,CString remark){if(dst_group.Compare(_T("FrameInfo"))==0){FrameInfogroup->AddSubItem(new CMFCPropertyGridProperty(property_name,(variant_t)value, remark));}else if(dst_group.Compare(_T("Container"))==0){Containergroup->AddSubItem(new CMFCPropertyGridProperty(property_name, (variant_t)value, remark));}else if(dst_group.Compare(_T("MetaData"))==0){MetaDatagroup->AddSubItem(new CMFCPropertyGridProperty(property_name, (variant_t)value, remark));}return 0;}int CSpecialAAACDlg::ShowBInfo(){m_aaacbasicinfo.AddProperty(FrameInfogroup);m_aaacbasicinfo.AddProperty(Containergroup);m_aaacbasicinfo.AddProperty(MetaDatagroup);return TRUE;}//设置CInfoint CSpecialAAACDlg::AppendCInfo(CString str){m_aaacconsole.AddString(str);m_aaacconsole.Invalidate();return 0;}void CSpecialAAACDlg::SystemClear(){cinfo.Format(_T(""));m_aaacbasicinfo.RemoveAll();m_aaacconsole.ResetContent();text.LoadString(IDS_INFO_FRAMEINFO);FrameInfogroup=new CMFCPropertyGridProperty(text);text.LoadString(IDS_INFO_CONTAINERINFO);Containergroup=new CMFCPropertyGridProperty(text);text.LoadString(IDS_INFO_METAINFO);MetaDatagroup=new CMFCPropertyGridProperty(text);}void CSpecialAAACDlg::OnBnClickedAAacAbout(){CAboutDlg dlg;dlg.DoModal();}void CSpecialAAACDlg::OnDropFiles(HDROP hDropInfo){// TODO: 在此添加消息处理程序代码和/或调用默认值CDialogEx::OnDropFiles(hDropInfo);LPTSTR pFilePathName =(LPTSTR)malloc(MAX_URL_LENGTH);::DragQueryFile(hDropInfo, 0, pFilePathName,MAX_URL_LENGTH); // 获取拖放文件的完整文件名,最关键!m_aaacinputurl.SetWindowText(pFilePathName);::DragFinish(hDropInfo); // 注意这个不能少,它用于释放Windows 为处理文件拖放而分配的内存free(pFilePathName);}void CSpecialAAACDlg::OnSelchangeAAacLang(){//配置文件路径char conf_path[300]={0};//获得exe绝对路径GetModuleFileNameA(NULL,(LPSTR)conf_path,300);////获得exe文家夹路径strrchr( conf_path, '\\')[0]= '0円';////_getcwd(realpath,MYSQL_S_LENGTH);printf("%s",conf_path);strcat(conf_path,"\\configure.ini");//写入配置文件switch(m_aaaclang.GetCurSel()){case 0:WritePrivateProfileStringA("Settings","language","Chinese",conf_path);break;case 1:WritePrivateProfileStringA("Settings","language","English",conf_path);break;default:break;}//重启软件char exe_path[300]={0};//获得exe绝对路径GetModuleFileNameA(NULL,(LPSTR)exe_path,300);ShellExecuteA( NULL,"open",exe_path,NULL,NULL,SW_SHOWNORMAL);exit(0);}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。