// // warning -- this function is implemented twice for ansi applications // linking to the unicode library // void WINAPI DbgLogInfo(DWORD Type,DWORD Level,const TCHAR *pFormat,...) { /* Check the current level for this type combination */ BOOL bAccept = DbgCheckModuleLevel(Type,Level); if (bAccept == FALSE) { return; } TCHAR szInfo[2000]; /* Format the variable length parameter list */ va_list va; va_start(va, pFormat); lstrcpy(szInfo,m_ModuleName); wsprintf(szInfo + lstrlen(szInfo), TEXT("(tid %x) %8d : "), GetCurrentThreadId(), timeGetTime() - dwTimeOffset); _vstprintf(szInfo + lstrlen(szInfo), pFormat, va); lstrcat(szInfo, TEXT("\r\n")); DbgOutString(szInfo); va_end(va); }
// // warning -- this function is implemented twice for ansi applications // linking to the unicode library // void WINAPI DbgLogInfo(DWORD Type,DWORD Level,const CHAR *pFormat,...) { /* Check the current level for this type combination */ BOOL bAccept = DbgCheckModuleLevel(Type,Level); if (bAccept == FALSE) { return; } TCHAR szInfo[2000]; /* Format the variable length parameter list */ va_list va; va_start(va, pFormat); lstrcpy(szInfo,m_ModuleName); wsprintf(szInfo + lstrlen(szInfo), TEXT("(tid %x) %8d : "), GetCurrentThreadId(), timeGetTime() - dwTimeOffset); CHAR szInfoA[2000]; WideCharToMultiByte(CP_ACP, 0, szInfo, -1, szInfoA, NUMELMS(szInfoA), 0, 0); wvsprintfA(szInfoA + lstrlenA(szInfoA), pFormat, va); lstrcatA(szInfoA, "\r\n"); WCHAR wszOutString[2000]; MultiByteToWideChar(CP_ACP, 0, szInfoA, -1, wszOutString, NUMELMS(wszOutString)); DbgOutString(wszOutString); va_end(va); }
// // warning -- this function is implemented twice for ansi applications // linking to the unicode library // void WINAPI DbgLogInfo(DWORD Type,DWORD Level,LPCTSTR pFormat,...) { /* Check the current level for this type combination */ BOOL bAccept = DbgCheckModuleLevel(Type,Level); if (bAccept == FALSE) { return; } TCHAR szInfo[2000]; /* Format the variable length parameter list */ va_list va; va_start(va, pFormat); (void)StringCchPrintf(szInfo, NUMELMS(szInfo), TEXT("%s(tid %x) %8d : "), m_ModuleName, GetCurrentThreadId(), timeGetTime() - dwTimeOffset); (void)StringCchVPrintf(szInfo + lstrlen(szInfo), NUMELMS(szInfo) - lstrlen(szInfo), pFormat, va); (void)StringCchCat(szInfo, NUMELMS(szInfo), TEXT("\r\n")); DbgOutString(szInfo); va_end(va); }
void WINAPI DbgInitLogTo( HKEY hKey) { LONG lReturn; DWORD dwKeyType; DWORD dwKeySize; TCHAR szFile[MAX_PATH] = {0}; static const TCHAR cszKey[] = TEXT("LogToFile"); dwKeySize = MAX_PATH; lReturn = RegQueryValueEx(hKey, // Handle to an open key cszKey, // Subkey name derivation NULL, // Reserved field &dwKeyType, // Returns the field type (LPBYTE) szFile, // Returns the field's value &dwKeySize); // Number of bytes transferred // create an empty key if it does not already exist // if(lReturn != ERROR_SUCCESS || dwKeyType != REG_SZ) { dwKeySize = sizeof(TCHAR); lReturn = RegSetValueEx(hKey, // Handle of an open key cszKey, // Address of subkey name (DWORD) 0, // Reserved field REG_SZ, // Type of the key field (PBYTE)szFile, // Value for the field dwKeySize); // Size of the field buffer } // if an output-to was specified. try to open it. // if(m_hOutput != INVALID_HANDLE_VALUE) { EXECUTE_ASSERT(CloseHandle(m_hOutput)); m_hOutput = INVALID_HANDLE_VALUE; } if(szFile[0] != 0) { if(!lstrcmpi(szFile, TEXT("Console"))) { m_hOutput = GetStdHandle(STD_OUTPUT_HANDLE); if(m_hOutput == INVALID_HANDLE_VALUE) { AllocConsole(); m_hOutput = GetStdHandle(STD_OUTPUT_HANDLE); } SetConsoleTitle(TEXT("ActiveX Debug Output")); } else if(szFile[0] && lstrcmpi(szFile, TEXT("Debug")) && lstrcmpi(szFile, TEXT("Debugger")) && lstrcmpi(szFile, TEXT("Deb"))) { m_hOutput = CreateFile(szFile, GENERIC_WRITE, FILE_SHARE_READ, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); if(INVALID_HANDLE_VALUE != m_hOutput) { static const TCHAR cszBar[] = TEXT("\r\n\r\n=====DbgInitialize()=====\r\n\r\n"); SetFilePointer(m_hOutput, 0, NULL, FILE_END); DbgOutString(cszBar); } } } }
WAVEFORMATEX *CLAVFAudioHelper::CreateWVFMTEX(const AVStream *avstream, ULONG *size) { WAVEFORMATEX *wvfmt = (WAVEFORMATEX *)CoTaskMemAlloc(sizeof(WAVEFORMATEX) + avstream->codec->extradata_size); if (!wvfmt) return nullptr; memset(wvfmt, 0, sizeof(WAVEFORMATEX)); wvfmt->wFormatTag = avstream->codec->codec_tag; wvfmt->nChannels = avstream->codec->channels ? avstream->codec->channels : 2; wvfmt->nSamplesPerSec = avstream->codec->sample_rate ? avstream->codec->sample_rate : 48000; wvfmt->nAvgBytesPerSec = (DWORD)(avstream->codec->bit_rate / 8); if(avstream->codec->codec_id == AV_CODEC_ID_AAC || avstream->codec->codec_id == AV_CODEC_ID_AAC_LATM) { wvfmt->wBitsPerSample = 0; wvfmt->nBlockAlign = 1; } else { wvfmt->wBitsPerSample = get_bits_per_sample(avstream->codec); if ( avstream->codec->block_align > 0 ) { wvfmt->nBlockAlign = avstream->codec->block_align; } else { if ( wvfmt->wBitsPerSample == 0 ) { DbgOutString(L"BitsPerSample is 0, no good!"); } wvfmt->nBlockAlign = (WORD)(wvfmt->nChannels * av_get_bytes_per_sample(avstream->codec->sample_fmt)); } } if (!wvfmt->nAvgBytesPerSec) wvfmt->nAvgBytesPerSec = (wvfmt->nSamplesPerSec * wvfmt->nChannels * wvfmt->wBitsPerSample) >> 3; if (avstream->codec->extradata_size > 0) { wvfmt->cbSize = avstream->codec->extradata_size; memcpy((BYTE *)wvfmt + sizeof(WAVEFORMATEX), avstream->codec->extradata, avstream->codec->extradata_size); } *size = sizeof(WAVEFORMATEX) + avstream->codec->extradata_size; return wvfmt; }