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

📄 mpegac.cpp

📁 音频编码
💻 CPP
📖 第 1 页 / 共 3 页
字号:
    mec.dwForceMS = dwFlag;    m_Encoder.SetOutputType(mec);    DbgLog((LOG_TRACE, 1, TEXT("set_ForceMS(%d)"), dwFlag));    return S_OK;}STDMETHODIMP CMpegAudEnc::get_CRCFlag(DWORD *dwFlag){    MPEG_ENCODER_CONFIG mec;    m_Encoder.GetOutputType(&mec);    *dwFlag = mec.bCRCProtect;    DbgLog((LOG_TRACE, 1, TEXT("get_CRCFlag -> %d"), *dwFlag));    return S_OK;}STDMETHODIMP CMpegAudEnc::get_ForceMono(DWORD *dwFlag){    MPEG_ENCODER_CONFIG mec;    m_Encoder.GetOutputType(&mec);    *dwFlag = mec.bForceMono;    DbgLog((LOG_TRACE, 1, TEXT("get_ForceMono -> %d"), *dwFlag));    return S_OK;}STDMETHODIMP CMpegAudEnc::get_SetDuration(DWORD *dwFlag){    MPEG_ENCODER_CONFIG mec;    m_Encoder.GetOutputType(&mec);    *dwFlag = mec.bSetDuration;    DbgLog((LOG_TRACE, 1, TEXT("get_SetDuration -> %d"), *dwFlag));    return S_OK;}STDMETHODIMP CMpegAudEnc::set_CRCFlag(DWORD dwFlag){    MPEG_ENCODER_CONFIG mec;    m_Encoder.GetOutputType(&mec);    mec.bCRCProtect = dwFlag;    m_Encoder.SetOutputType(mec);    DbgLog((LOG_TRACE, 1, TEXT("set_CRCFlag(%d)"), dwFlag));    return S_OK;}STDMETHODIMP CMpegAudEnc::set_ForceMono(DWORD dwFlag){    MPEG_ENCODER_CONFIG mec;    m_Encoder.GetOutputType(&mec);    mec.bForceMono = dwFlag;    m_Encoder.SetOutputType(mec);    DbgLog((LOG_TRACE, 1, TEXT("set_ForceMono(%d)"), dwFlag));    return S_OK;}STDMETHODIMP CMpegAudEnc::set_SetDuration(DWORD dwFlag){    MPEG_ENCODER_CONFIG mec;    m_Encoder.GetOutputType(&mec);    mec.bSetDuration = dwFlag;    m_Encoder.SetOutputType(mec);    DbgLog((LOG_TRACE, 1, TEXT("set_SetDuration(%d)"), dwFlag));    return S_OK;}STDMETHODIMP CMpegAudEnc::get_EnforceVBRmin(DWORD *dwFlag){    MPEG_ENCODER_CONFIG mec;    m_Encoder.GetOutputType(&mec);    *dwFlag = mec.dwEnforceVBRmin;    DbgLog((LOG_TRACE, 1, TEXT("get_EnforceVBRmin -> %d"), *dwFlag));    return S_OK;}STDMETHODIMP CMpegAudEnc::set_EnforceVBRmin(DWORD dwFlag){    MPEG_ENCODER_CONFIG mec;    m_Encoder.GetOutputType(&mec);    mec.dwEnforceVBRmin = dwFlag;    m_Encoder.SetOutputType(mec);    DbgLog((LOG_TRACE, 1, TEXT("set_EnforceVBRmin(%d)"), dwFlag));    return S_OK;}STDMETHODIMP CMpegAudEnc::get_VoiceMode(DWORD *dwFlag){    MPEG_ENCODER_CONFIG mec;    m_Encoder.GetOutputType(&mec);    *dwFlag = mec.dwVoiceMode;    DbgLog((LOG_TRACE, 1, TEXT("get_VoiceMode -> %d"), *dwFlag));    return S_OK;}STDMETHODIMP CMpegAudEnc::set_VoiceMode(DWORD dwFlag){    MPEG_ENCODER_CONFIG mec;    m_Encoder.GetOutputType(&mec);    mec.dwVoiceMode = dwFlag;    m_Encoder.SetOutputType(mec);    DbgLog((LOG_TRACE, 1, TEXT("set_VoiceMode(%d)"), dwFlag));    return S_OK;}STDMETHODIMP CMpegAudEnc::get_KeepAllFreq(DWORD *dwFlag){    MPEG_ENCODER_CONFIG mec;    m_Encoder.GetOutputType(&mec);    *dwFlag = mec.dwKeepAllFreq;    DbgLog((LOG_TRACE, 1, TEXT("get_KeepAllFreq -> %d"), *dwFlag));    return S_OK;}STDMETHODIMP CMpegAudEnc::set_KeepAllFreq(DWORD dwFlag){    MPEG_ENCODER_CONFIG mec;    m_Encoder.GetOutputType(&mec);    mec.dwKeepAllFreq = dwFlag;    m_Encoder.SetOutputType(mec);    DbgLog((LOG_TRACE, 1, TEXT("set_KeepAllFreq(%d)"), dwFlag));    return S_OK;}STDMETHODIMP CMpegAudEnc::get_StrictISO(DWORD *dwFlag){    MPEG_ENCODER_CONFIG mec;    m_Encoder.GetOutputType(&mec);    *dwFlag = mec.dwStrictISO;    DbgLog((LOG_TRACE, 1, TEXT("get_StrictISO -> %d"), *dwFlag));    return S_OK;}STDMETHODIMP CMpegAudEnc::set_StrictISO(DWORD dwFlag){    MPEG_ENCODER_CONFIG mec;    m_Encoder.GetOutputType(&mec);    mec.dwStrictISO = dwFlag;    m_Encoder.SetOutputType(mec);    DbgLog((LOG_TRACE, 1, TEXT("set_StrictISO(%d)"), dwFlag));    return S_OK;}STDMETHODIMP CMpegAudEnc::get_NoShortBlock(DWORD *dwNoShortBlock){    MPEG_ENCODER_CONFIG mec;    m_Encoder.GetOutputType(&mec);    *dwNoShortBlock = mec.dwNoShortBlock;    DbgLog((LOG_TRACE, 1, TEXT("get_NoShortBlock -> %d"), *dwNoShortBlock));    return S_OK;}STDMETHODIMP CMpegAudEnc::set_NoShortBlock(DWORD dwNoShortBlock){    MPEG_ENCODER_CONFIG mec;    m_Encoder.GetOutputType(&mec);    mec.dwNoShortBlock = dwNoShortBlock;    m_Encoder.SetOutputType(mec);    DbgLog((LOG_TRACE, 1, TEXT("set_NoShortBlock(%d)"), dwNoShortBlock));    return S_OK;}STDMETHODIMP CMpegAudEnc::get_XingTag(DWORD *dwXingTag){    MPEG_ENCODER_CONFIG mec;    m_Encoder.GetOutputType(&mec);    *dwXingTag = mec.dwXingTag;    DbgLog((LOG_TRACE, 1, TEXT("get_XingTag -> %d"), *dwXingTag));    return S_OK;}STDMETHODIMP CMpegAudEnc::set_XingTag(DWORD dwXingTag){    MPEG_ENCODER_CONFIG mec;    m_Encoder.GetOutputType(&mec);    mec.dwXingTag = dwXingTag;    m_Encoder.SetOutputType(mec);    DbgLog((LOG_TRACE, 1, TEXT("set_XingTag(%d)"), dwXingTag));    return S_OK;}STDMETHODIMP CMpegAudEnc::get_OriginalFlag(DWORD *dwFlag){    MPEG_ENCODER_CONFIG mec;    m_Encoder.GetOutputType(&mec);    *dwFlag = mec.bOriginal;    DbgLog((LOG_TRACE, 1, TEXT("get_OriginalFlag -> %d"), *dwFlag));    return S_OK;}STDMETHODIMP CMpegAudEnc::set_OriginalFlag(DWORD dwFlag){    MPEG_ENCODER_CONFIG mec;    m_Encoder.GetOutputType(&mec);    mec.bOriginal = dwFlag;    m_Encoder.SetOutputType(mec);    DbgLog((LOG_TRACE, 1, TEXT("set_OriginalFlag(%d)"), dwFlag));    return S_OK;}STDMETHODIMP CMpegAudEnc::get_CopyrightFlag(DWORD *dwFlag){    MPEG_ENCODER_CONFIG mec;    m_Encoder.GetOutputType(&mec);    *dwFlag = mec.bCopyright;    DbgLog((LOG_TRACE, 1, TEXT("get_CopyrightFlag -> %d"), *dwFlag));    return S_OK;}STDMETHODIMP CMpegAudEnc::set_CopyrightFlag(DWORD dwFlag){    MPEG_ENCODER_CONFIG mec;    m_Encoder.GetOutputType(&mec);    mec.bCopyright = dwFlag;    m_Encoder.SetOutputType(mec);    DbgLog((LOG_TRACE, 1, TEXT("set_CopyrightFlag(%d)"), dwFlag));    return S_OK;}STDMETHODIMP CMpegAudEnc::get_ModeFixed(DWORD *dwModeFixed){    MPEG_ENCODER_CONFIG mec;    m_Encoder.GetOutputType(&mec);    *dwModeFixed = mec.dwModeFixed;    DbgLog((LOG_TRACE, 1, TEXT("get_ModeFixed -> %d"), *dwModeFixed));    return S_OK;}STDMETHODIMP CMpegAudEnc::set_ModeFixed(DWORD dwModeFixed){    MPEG_ENCODER_CONFIG mec;    m_Encoder.GetOutputType(&mec);    mec.dwModeFixed = dwModeFixed;    m_Encoder.SetOutputType(mec);    DbgLog((LOG_TRACE, 1, TEXT("set_ModeFixed(%d)"), dwModeFixed));    return S_OK;}STDMETHODIMP CMpegAudEnc::get_ParameterBlockSize(BYTE *pcBlock, DWORD *pdwSize){    DbgLog((LOG_TRACE, 1, TEXT("get_ParameterBlockSize -> %d%d"), *pcBlock, *pdwSize));    if (pcBlock != NULL) {        if (*pdwSize >= sizeof(MPEG_ENCODER_CONFIG)) {            m_Encoder.GetOutputType((MPEG_ENCODER_CONFIG*)pcBlock);            return S_OK;        }        else {            *pdwSize = sizeof(MPEG_ENCODER_CONFIG);            return E_FAIL;        }    }    else if (pdwSize != NULL) {        *pdwSize = sizeof(MPEG_ENCODER_CONFIG);        return S_OK;    }    return E_FAIL;}STDMETHODIMP CMpegAudEnc::set_ParameterBlockSize(BYTE *pcBlock, DWORD dwSize){    DbgLog((LOG_TRACE, 1, TEXT("get_ParameterBlockSize(%d, %d)"), *pcBlock, dwSize));    if (sizeof(MPEG_ENCODER_CONFIG) == dwSize){        m_Encoder.SetOutputType(*(MPEG_ENCODER_CONFIG*)pcBlock);        return S_OK;    }    else return E_FAIL; }STDMETHODIMP CMpegAudEnc::DefaultAudioEncoderProperties(){    DbgLog((LOG_TRACE, 1, TEXT("DefaultAudioEncoderProperties()")));    HRESULT hr = InputTypeDefined();    if (FAILED(hr))        return hr;    DWORD dwSourceSampleRate;    get_SourceSampleRate(&dwSourceSampleRate);    set_PESOutputEnabled(DEFAULT_PES);    set_MPEGLayer(DEFAULT_LAYER);    set_Bitrate(DEFAULT_BITRATE);    set_Variable(FALSE);    set_VariableMin(DEFAULT_VARIABLEMIN);    set_VariableMax(DEFAULT_VARIABLEMAX);    set_Quality(DEFAULT_ENCODING_QUALITY);    set_VariableQ(DEFAULT_VBR_QUALITY);    set_SampleRate(dwSourceSampleRate);    set_CRCFlag(FALSE);    set_ForceMono(FALSE);    set_SetDuration(FALSE);    set_OriginalFlag(FALSE);    set_CopyrightFlag(FALSE);    set_EnforceVBRmin(DEFAULT_ENFORCE_MIN);    set_VoiceMode(DEFAULT_VOICE);    set_KeepAllFreq(DEFAULT_KEEP_ALL_FREQ);    set_StrictISO(DEFAULT_STRICT_ISO);    set_NoShortBlock(DEFAULT_DISABLE_SHORT_BLOCK);    set_XingTag(DEFAULT_XING_TAG);    set_ForceMS(DEFAULT_FORCE_MS);    set_ChannelMode(DEFAULT_STEREO_MODE);    set_ModeFixed(DEFAULT_MODE_FIXED);    return S_OK;}STDMETHODIMP CMpegAudEnc::LoadAudioEncoderPropertiesFromRegistry(){    DbgLog((LOG_TRACE, 1, TEXT("LoadAudioEncoderPropertiesFromRegistry()")));    MPEG_ENCODER_CONFIG mec;    ReadPresetSettings(&mec);    if(m_Encoder.SetOutputType(mec) == S_FALSE)        return S_FALSE;    return S_OK;}STDMETHODIMP CMpegAudEnc::SaveAudioEncoderPropertiesToRegistry(){    DbgLog((LOG_TRACE, 1, TEXT("SaveAudioEncoderPropertiesToRegistry()")));    CRegKey rk;    MPEG_ENCODER_CONFIG mec;    if(m_Encoder.GetOutputType(&mec) == S_FALSE)        return E_FAIL;    if(rk.Create(HKEY_CURRENT_USER, KEY_LAME_ENCODER))    {        rk.setDWORD(VALUE_BITRATE, mec.dwBitrate);        rk.setDWORD(VALUE_VARIABLE, mec.vmVariable);        rk.setDWORD(VALUE_VARIABLEMIN, mec.dwVariableMin);        rk.setDWORD(VALUE_VARIABLEMAX, mec.dwVariableMax);        rk.setDWORD(VALUE_QUALITY, mec.dwQuality);        rk.setDWORD(VALUE_VBR_QUALITY, mec.dwVBRq);        rk.setDWORD(VALUE_CRC, mec.bCRCProtect);        rk.setDWORD(VALUE_FORCE_MONO, mec.bForceMono);        rk.setDWORD(VALUE_SET_DURATION, mec.bSetDuration);        rk.setDWORD(VALUE_PES, mec.dwPES);        rk.setDWORD(VALUE_COPYRIGHT, mec.bCopyright);        rk.setDWORD(VALUE_ORIGINAL, mec.bOriginal);        rk.setDWORD(VALUE_SAMPLE_RATE, mec.dwSampleRate);        rk.setDWORD(VALUE_STEREO_MODE, mec.ChMode);        rk.setDWORD(VALUE_FORCE_MS, mec.dwForceMS);        rk.setDWORD(VALUE_XING_TAG, mec.dwXingTag);        rk.setDWORD(VALUE_DISABLE_SHORT_BLOCK, mec.dwNoShortBlock);        rk.setDWORD(VALUE_STRICT_ISO, mec.dwStrictISO);        rk.setDWORD(VALUE_KEEP_ALL_FREQ, mec.dwKeepAllFreq);        rk.setDWORD(VALUE_VOICE, mec.dwVoiceMode);        rk.setDWORD(VALUE_ENFORCE_MIN, mec.dwEnforceVBRmin);        rk.setDWORD(VALUE_MODE_FIXED, mec.dwModeFixed);        rk.Close();    }    // Reconnect filter graph    Reconnect();    return S_OK;}STDMETHODIMP CMpegAudEnc::InputTypeDefined(){    WAVEFORMATEX wf;    if(FAILED(m_Encoder.GetInputType(&wf)))    {        DbgLog((LOG_TRACE, 1, TEXT("!InputTypeDefined()")));        return E_FAIL;    }    DbgLog((LOG_TRACE, 1, TEXT("InputTypeDefined()")));    return S_OK;}STDMETHODIMP CMpegAudEnc::ApplyChanges(){    return Reconnect();}//// CPersistStream stuff//// what is our class ID?STDMETHODIMP CMpegAudEnc::GetClassID(CLSID *pClsid){    CheckPointer(pClsid, E_POINTER);    *pClsid = CLSID_LAMEDShowFilter;    return S_OK;}HRESULT CMpegAudEnc::WriteToStream(IStream *pStream){    DbgLog((LOG_TRACE,1,TEXT("WriteToStream()")));	MPEG_ENCODER_CONFIG mec;	if(m_Encoder.GetOutputType(&mec) == S_FALSE)		return E_FAIL;    return pStream->Write(&mec, sizeof(mec), 0);}// what device should we use?  Used to re-create a .GRF file that we// are inHRESULT CMpegAudEnc::ReadFromStream(IStream *pStream){	MPEG_ENCODER_CONFIG mec;    HRESULT hr = pStream->Read(&mec, sizeof(mec), 0);    if(FAILED(hr))        return hr;	if(m_Encoder.SetOutputType(mec) == S_FALSE)		return S_FALSE;    DbgLog((LOG_TRACE,1,TEXT("ReadFromStream() succeeded")));    hr = S_OK;    return hr;}// How long is our data?int CMpegAudEnc::SizeMax(){    return sizeof(MPEG_ENCODER_CONFIG);}////////////////////////////////////////////STDAPI DllRegisterServer(){	// Create entry in HKEY_CLASSES_ROOT\Filter	OLECHAR szCLSID[CHARS_IN_GUID];	TCHAR achTemp[MAX_PATH];	HKEY hKey;	HRESULT hr = StringFromGUID2(*g_Templates[0].m_ClsID, szCLSID, CHARS_IN_GUID);	wsprintf(achTemp, TEXT("Filter\\%ls"), szCLSID);	// create key	RegCreateKey(HKEY_CLASSES_ROOT, (LPCTSTR)achTemp, &hKey);	RegCloseKey(hKey);	return AMovieDllRegisterServer2(TRUE);}STDAPI DllUnregisterServer(){	// Delete entry in HKEY_CLASSES_ROOT\Filter	OLECHAR szCLSID[CHARS_IN_GUID];	TCHAR achTemp[MAX_PATH];	HRESULT hr = StringFromGUID2(*g_Templates[0].m_ClsID, szCLSID, CHARS_IN_GUID);	wsprintf(achTemp, TEXT("Filter\\%ls"), szCLSID);	// create key	RegDeleteKey(HKEY_CLASSES_ROOT, (LPCTSTR)achTemp);	return AMovieDllRegisterServer2(FALSE);}

⌨️ 快捷键说明

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