📄 qcdmp4.c
字号:
//}
#ifdef DEBUG_OUTPUT
void in_mp4_DebugOutput(char *message)
{
char s[1024];
sprintf(s, "in_mp4: %s: %s", mp4state.filename, message);
OutputDebugString(s);
}
#endif
int file_length(FILE *f)
{
long end = 0;
long cur = ftell(f);
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)
// {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -