⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 qcdmp4.c

📁 the mpeg2/4 aac decoder
💻 C
📖 第 1 页 / 共 5 页
字号:
    fseek(f, 0, SEEK_END);    end = ftell(f);    fseek(f, cur, SEEK_SET);    return end;}static void show_error(HWND hwnd, char *message, ...){    if (m_show_errors)        MessageBox(hwnd, message, "Error", MB_OK);}static void config_init(){    //char *p=INI_FILE;    //GetModuleFileName(NULL,INI_FILE,_MAX_PATH);    //while (*p) p++;    //while (p >= INI_FILE && *p != '.') p--;    //strcpy(p+1,"ini");	module.QCDCallbacks.Service(opGetPluginSettingsFile, INI_FILE, MAX_PATH, 0);}void config_read(){    char priority[10];    char resolution[10];    char show_errors[10];    char use_for_aac[10];    char downmix[10];    char vbr_display[10];    config_init();    strcpy(show_errors, "1");    strcpy(priority, "3");    strcpy(resolution, "0");    strcpy(use_for_aac, "1");    strcpy(downmix, "0");    strcpy(vbr_display, "1");    //strcpy(titleformat, "%7");    RS(priority);    RS(resolution);    RS(show_errors);    RS(use_for_aac);    RS(downmix);    RS(vbr_display);    //RS(titleformat);    m_priority = atoi(priority);    m_resolution = atoi(resolution);    m_show_errors = atoi(show_errors);    m_use_for_aac = atoi(use_for_aac);    m_downmix = atoi(downmix);    m_vbr_display = atoi(vbr_display);}void config_write(){    char priority[10];    char resolution[10];    char show_errors[10];    char use_for_aac[10];    char downmix[10];    char vbr_display[10];    itoa(m_priority, priority, 10);    itoa(m_resolution, resolution, 10);    itoa(m_show_errors, show_errors, 10);    itoa(m_use_for_aac, use_for_aac, 10);    itoa(m_downmix, downmix, 10);    itoa(m_vbr_display, vbr_display, 10);    WS(priority);    WS(resolution);    WS(show_errors);    WS(use_for_aac);    WS(downmix);    WS(vbr_display);    //WS(titleformat);}int Initialize(QCDModInfo *ModInfo, int flags){	ModInfo->moduleString = "MP4 Plug-in v" FAAD2_VERSION;	module.hMainWindow = (HWND)module.QCDCallbacks.Service(opGetParentWnd, 0, 0, 0);	// read config from config file    config_read();	ModInfo->moduleExtensions = !m_use_for_aac ? "MP4:M4A" : "MP4:M4A:AAC";	// return TRUE for successful initialization	return 1;}//----------------------------------------------------------------------------void ShutDown(int flags) {	Stop(mp4state.filename, STOPFLAG_FORCESTOP);}///* Convert UNICODE to UTF-8//   Return number of bytes written *///int unicodeToUtf8 ( const WCHAR* lpWideCharStr, char* lpMultiByteStr, int cwcChars )//{//    const unsigned short*   pwc = (unsigned short *)lpWideCharStr;//    unsigned char*          pmb = (unsigned char  *)lpMultiByteStr;//    const unsigned short*   pwce;//    size_t  cBytes = 0;////    if ( cwcChars >= 0 ) {//        pwce = pwc + cwcChars;//    } else {//        pwce = (unsigned short *)((size_t)-1);//    }////    while ( pwc < pwce ) {//        unsigned short  wc = *pwc++;////        if ( wc < 0x00000080 ) {//            *pmb++ = (char)wc;//            cBytes++;//        } else//        if ( wc < 0x00000800 ) {//            *pmb++ = (char)(0xC0 | ((wc >>  6) & 0x1F));//            cBytes++;//            *pmb++ = (char)(0x80 |  (wc        & 0x3F));//            cBytes++;//        } else//        if ( wc < 0x00010000 ) {//            *pmb++ = (char)(0xE0 | ((wc >> 12) & 0x0F));//            cBytes++;//            *pmb++ = (char)(0x80 | ((wc >>  6) & 0x3F));//            cBytes++;//            *pmb++ = (char)(0x80 |  (wc        & 0x3F));//            cBytes++;//        }//        if ( wc == L'\0' )//            return cBytes;//    }////    return cBytes;//}/////* Convert UTF-8 coded string to UNICODE//   Return number of characters converted *///int utf8ToUnicode ( const char* lpMultiByteStr, WCHAR* lpWideCharStr, int cmbChars )//{//    const unsigned char*    pmb = (unsigned char  *)lpMultiByteStr;//    unsigned short*         pwc = (unsigned short *)lpWideCharStr;//    const unsigned char*    pmbe;//    size_t  cwChars = 0;////    if ( cmbChars >= 0 ) {//        pmbe = pmb + cmbChars;//    } else {//        pmbe = (unsigned char *)((size_t)-1);//    }////    while ( pmb < pmbe ) {//        char            mb = *pmb++;//        unsigned int    cc = 0;//        unsigned int    wc;////        while ( (cc < 7) && (mb & (1 << (7 - cc)))) {//            cc++;//        }////        if ( cc == 1 || cc > 6 )                    // illegal character combination for UTF-8//            continue;////        if ( cc == 0 ) {//            wc = mb;//        } else {//            wc = (mb & ((1 << (7 - cc)) - 1)) << ((cc - 1) * 6);//            while ( --cc > 0 ) {//                if ( pmb == pmbe )                  // reached end of the buffer//                    return cwChars;//                mb = *pmb++;//                if ( ((mb >> 6) & 0x03) != 2 )      // not part of multibyte character//                    return cwChars;//                wc |= (mb & 0x3F) << ((cc - 1) * 6);//            }//        }////        if ( wc & 0xFFFF0000 )//            wc = L'?';//        *pwc++ = wc;//        cwChars++;//        if ( wc == L'\0' )//            return cwChars;//    }////    return cwChars;//}/////* convert Windows ANSI to UTF-8 *///int ConvertANSIToUTF8 ( const char* ansi, char* utf8 )//{//    WCHAR*  wszValue;          // Unicode value//    size_t  ansi_len;//    size_t  len;////    *utf8 = '\0';//    if ( ansi == NULL )//        return 0;////    ansi_len = strlen ( ansi );////    if ( (wszValue = (WCHAR *)malloc ( (ansi_len + 1) * 2 )) == NULL )//        return 0;////    /* Convert ANSI value to Unicode *///    if ( (len = MultiByteToWideChar ( CP_ACP, 0, ansi, ansi_len + 1, wszValue, (ansi_len + 1) * 2 )) == 0 ) {//        free ( wszValue );//        return 0;//    }////    /* Convert Unicode value to UTF-8 *///    if ( (len = unicodeToUtf8 ( wszValue, utf8, -1 )) == 0 ) {//        free ( wszValue );//        return 0;//    }////    free ( wszValue );////    return len-1;//}/////* convert UTF-8 to Windows ANSI *///int ConvertUTF8ToANSI ( const char* utf8, char* ansi )//{//    WCHAR*  wszValue;          // Unicode value//    size_t  utf8_len;//    size_t  len;////    *ansi = '\0';//    if ( utf8 == NULL )//        return 0;////    utf8_len = strlen ( utf8 );////    if ( (wszValue = (WCHAR *)malloc ( (utf8_len + 1) * 2 )) == NULL )//        return 0;////    /* Convert UTF-8 value to Unicode *///    if ( (len = utf8ToUnicode ( utf8, wszValue, utf8_len + 1 )) == 0 ) {//        free ( wszValue );//        return 0;//    }////    /* Convert Unicode value to ANSI *///    if ( (len = WideCharToMultiByte ( CP_ACP, 0, wszValue, -1, ansi, (utf8_len + 1) * 2, NULL, NULL )) == 0 ) {//        free ( wszValue );//        return 0;//    }////    free ( wszValue );////    return len-1;//}////BOOL uSetDlgItemText(HWND hwnd, int id, const char *str)//{//    char *temp;//    size_t len;//    int r;////    if (!str) return FALSE;//    if (!*str) return TRUE;//    len = strlen(str);//    temp = malloc(len+1);//    if (!temp) return FALSE;//    r = ConvertUTF8ToANSI(str, temp);//    if (r > 0)//        SetDlgItemText(hwnd, id, temp);//    free(temp);////    return r>0 ? TRUE : FALSE;//}////UINT uGetDlgItemText(HWND hwnd, int id, char *str, int max)//{//    char *temp, *utf8;//    int len;//    HWND w;////    if (!str || !max) return 0;//    *str = '\0';//    w = GetDlgItem(hwnd, id);//    len = GetWindowTextLength(w);//    temp = malloc(len+1);//    if (!temp) return 0;//    utf8 = malloc((len+1)*4);//    if (!utf8)//    {//        free(temp);//        return 0;//    }////    len = GetWindowText(w, temp, len+1);//    if (len > 0)//    {//        len = ConvertANSIToUTF8(temp, utf8);//        if (len > max-1)//        {//            len = max-1;//            utf8[max] = '\0';//        }//        memcpy(str, utf8, len+1);//    }////    free(temp);//    free(utf8);////    return len;//}////BOOL CALLBACK mp4_info_dialog_proc(HWND hwndDlg, UINT message,//                                   WPARAM wParam, LPARAM lParam)//{//    char *file_info;//    MP4FileHandle file;//    char *pVal, dummy1[1024], dummy3;//    short dummy, dummy2;//    char temp[1024];//    struct medialib_tags tags;//    tags.count = 0;//    tags.tags = NULL;////#ifdef DEBUG_OUTPUT//    in_mp4_DebugOutput("mp4_info_dialog_proc");//#endif////    switch (message) {//    case WM_INITDIALOG://        EnableWindow(GetDlgItem(hwndDlg,IDC_CONVERT), FALSE);//        ShowWindow(GetDlgItem(hwndDlg,IDC_CONVERT), SW_HIDE);//        EnableWindow(GetDlgItem(hwndDlg,IDC_CONVERT1), FALSE);//        ShowWindow(GetDlgItem(hwndDlg,IDC_CONVERT1), SW_HIDE);//        EnableWindow(GetDlgItem(hwndDlg,IDC_CONVERT2), FALSE);//        ShowWindow(GetDlgItem(hwndDlg,IDC_CONVERT2), SW_HIDE);////        file = MP4Read(info_fn, 0);////        if (file == MP4_INVALID_FILE_HANDLE)//            return FALSE;////        file_info = MP4Info(file, MP4_INVALID_TRACK_ID);//        SetDlgItemText(hwndDlg, IDC_INFOTEXT, file_info);//        free(file_info);////        /* get Metadata */////        pVal = NULL;//        if (MP4GetMetadataName(file, &pVal))//            uSetDlgItemText(hwndDlg,IDC_METANAME, pVal);////        pVal = NULL;//        if (MP4GetMetadataArtist(file, &pVal))//            uSetDlgItemText(hwndDlg,IDC_METAARTIST, pVal);////        pVal = NULL;//        if (MP4GetMetadataWriter(file, &pVal))//            uSetDlgItemText(hwndDlg,IDC_METAWRITER, pVal);////        pVal = NULL;//        if (MP4GetMetadataComment(file, &pVal))//            uSetDlgItemText(hwndDlg,IDC_METACOMMENTS, pVal);////        pVal = NULL;//        if (MP4GetMetadataAlbum(file, &pVal))//            uSetDlgItemText(hwndDlg,IDC_METAALBUM, pVal);////        pVal = NULL;//        if (MP4GetMetadataGenre(file, &pVal))//            uSetDlgItemText(hwndDlg,IDC_METAGENRE, pVal);////        dummy = 0;//        MP4GetMetadataTempo(file, &dummy);//        if (dummy)//        {//            wsprintf(dummy1, "%d", dummy);//            SetDlgItemText(hwndDlg,IDC_METATEMPO, dummy1);//        }////        dummy = 0; dummy2 = 0;//        MP4GetMetadataTrack(file, &dummy, &dummy2);//        if (dummy)//        {//            wsprintf(dummy1, "%d", dummy);//            SetDlgItemText(hwndDlg,IDC_METATRACK1, dummy1);//        }//        if (dummy2)//        {//            wsprintf(dummy1, "%d", dummy2);//            SetDlgItemText(hwndDlg,IDC_METATRACK2, dummy1);//        }////        dummy = 0; dummy2 = 0;//        MP4GetMetadataDisk(file, &dummy, &dummy2);//        if (dummy)//        {//            wsprintf(dummy1, "%d", dummy);//            SetDlgItemText(hwndDlg,IDC_METADISK1, dummy1);//        }//        if (dummy2)//        {//            wsprintf(dummy1, "%d", dummy2);//            SetDlgItemText(hwndDlg,IDC_METADISK2, dummy1);//        }////        pVal = NULL;//        if (MP4GetMetadataYear(file, &pVal))//            uSetDlgItemText(hwndDlg,IDC_METAYEAR, pVal);////        dummy3 = 0;//        MP4GetMetadataCompilation(file, &dummy3);//        if (dummy3)//            SendMessage(GetDlgItem(hwndDlg, IDC_METACOMPILATION), BM_SETCHECK, BST_CHECKED, 0);////        /* ! Metadata */////        MP4Close(file);////        return TRUE;////    case WM_COMMAND://        switch (LOWORD(wParam)) {//        case IDCANCEL://            EndDialog(hwndDlg, wParam);//            return TRUE;//        case IDOK:////            /* save Metadata changes */////            tag_delete(&tags);//            file = MP4Read(info_fn, 0);//            if (file != MP4_INVALID_FILE_HANDLE)//            {//                ReadMP4Tag(file, &tags);//                MP4Close(file);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -