[xiph-commits] r11923 -
trunk/oggdsf/src/lib/codecs/speex/filters/dsfSpeexEncoder
illiminable at svn.xiph.org
illiminable at svn.xiph.org
Tue Oct 17 07:20:09 PDT 2006
Author: illiminable
Date: 2006-10-17 07:19:56 -0700 (Tue, 17 Oct 2006)
New Revision: 11923
Added:
trunk/oggdsf/src/lib/codecs/speex/filters/dsfSpeexEncoder/ISpeexEncodeSettings.h
trunk/oggdsf/src/lib/codecs/speex/filters/dsfSpeexEncoder/PropsSpeexEncoder.cpp
trunk/oggdsf/src/lib/codecs/speex/filters/dsfSpeexEncoder/PropsSpeexEncoder.h
trunk/oggdsf/src/lib/codecs/speex/filters/dsfSpeexEncoder/dsfSpeexEncoder.aps
trunk/oggdsf/src/lib/codecs/speex/filters/dsfSpeexEncoder/dsfSpeexEncoder.rc
trunk/oggdsf/src/lib/codecs/speex/filters/dsfSpeexEncoder/resource.h
Modified:
trunk/oggdsf/src/lib/codecs/speex/filters/dsfSpeexEncoder/SpeexEncodeFilter.cpp
trunk/oggdsf/src/lib/codecs/speex/filters/dsfSpeexEncoder/SpeexEncodeFilter.h
trunk/oggdsf/src/lib/codecs/speex/filters/dsfSpeexEncoder/SpeexEncodeInputPin.cpp
trunk/oggdsf/src/lib/codecs/speex/filters/dsfSpeexEncoder/SpeexEncodeInputPin.h
trunk/oggdsf/src/lib/codecs/speex/filters/dsfSpeexEncoder/dsfSpeexEncoder.vcproj
trunk/oggdsf/src/lib/codecs/speex/filters/dsfSpeexEncoder/speexencoderdllstuff.h
trunk/oggdsf/src/lib/codecs/speex/filters/dsfSpeexEncoder/stdafx.h
Log:
* Encoder property page for speex encode filter
Added: trunk/oggdsf/src/lib/codecs/speex/filters/dsfSpeexEncoder/ISpeexEncodeSettings.h
===================================================================
--- trunk/oggdsf/src/lib/codecs/speex/filters/dsfSpeexEncoder/ISpeexEncodeSettings.h 2006-10-16 15:30:40 UTC (rev 11922)
+++ trunk/oggdsf/src/lib/codecs/speex/filters/dsfSpeexEncoder/ISpeexEncodeSettings.h 2006-10-17 14:19:56 UTC (rev 11923)
@@ -0,0 +1,53 @@
+#pragma once
+
+#ifndef __ISPEEXENCODESETTINGS__
+#define __ISPEEXENCODESETTINGS__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "SpeexEncodeSettings.h"
+
+DECLARE_INTERFACE_(ISpeexEncodeSettings, IUnknown) {
+
+ //virtual STDMETHODIMP_(bool) setQuality(signed char inQuality) PURE;
+ virtual STDMETHODIMP_(SpeexEncodeSettings) getEncoderSettings() PURE;
+
+
+ virtual STDMETHODIMP_(bool) setMode(SpeexEncodeSettings::eSpeexEncodeMode inMode) PURE;
+ virtual STDMETHODIMP_(bool) setComplexity(long inComplexity) PURE;
+
+ virtual STDMETHODIMP_(bool) setupVBRQualityMode(long inQuality, long inVBRMaxBitrate) PURE;
+ virtual STDMETHODIMP_(bool) setupVBRBitrateMode(long inBitrate, long inVBRMaxBitrate) PURE;
+ virtual STDMETHODIMP_(bool) setupABR(long inABRBitrate) PURE;
+ virtual STDMETHODIMP_(bool) setupCBRBitrateMode(long inCBRBitrate) PURE;
+ virtual STDMETHODIMP_(bool) setupCBRQualityMode(long inQuality) PURE;
+
+ virtual STDMETHODIMP_(bool) setEncodingFlags(bool inUseDTX, bool inUseVAD, bool inUseAGC, bool inUseDenoise) PURE;
+
+ //unsigned long sampleRate() { return mSampleRate; }
+ //unsigned long numChannels() { return mNumChannels; }
+
+ //long encodingComplexity() { return mComplexity; }
+ //long quality() { return mQuality; }
+ //long targetBitrate() { return mBitrate; }
+ //long maxVBRBitrate() { return mVBRMaxBitrate; }
+ //long framesPerPacket() { return mFramesPerPacket;}
+
+ //eSpeexEncodeBitrateControl bitrateControlMode() { return mBitrateControlMode; }
+ //eSpeexEncodeMode encodingMode() { return mEncodingMode; }
+
+ //bool isUsingDTX() { return mUsingDTX; }
+ //bool isUsingVAD() { return mUsingVAD; }
+ //bool isUsingAGC() { return mUsingAGC; }
+ //bool isUsingDenoise() { return mUsingDenoise; }
+};
+
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
\ No newline at end of file
Added: trunk/oggdsf/src/lib/codecs/speex/filters/dsfSpeexEncoder/PropsSpeexEncoder.cpp
===================================================================
--- trunk/oggdsf/src/lib/codecs/speex/filters/dsfSpeexEncoder/PropsSpeexEncoder.cpp 2006-10-16 15:30:40 UTC (rev 11922)
+++ trunk/oggdsf/src/lib/codecs/speex/filters/dsfSpeexEncoder/PropsSpeexEncoder.cpp 2006-10-17 14:19:56 UTC (rev 11923)
@@ -0,0 +1,368 @@
+#include "StdAfx.h"
+#include "PropsSpeexEncoder.h"
+
+
+PropsSpeexEncoder::PropsSpeexEncoder( LPUNKNOWN inUnk
+ , HRESULT* outHR)
+ : CBasePropertyPage( NAME("illiminable Speex Encoder")
+ , inUnk
+ , IDD_SPEEX_ENCODE_SETTINGS
+ , IDS_SPEEX_ENC_PROPS_STRING)
+ , mSpeexEncodeSettings(NULL)
+{
+}
+
+PropsSpeexEncoder::~PropsSpeexEncoder(void)
+{
+}
+
+CUnknown* WINAPI PropsSpeexEncoder::CreateInstance(LPUNKNOWN inUnk, HRESULT* outHR)
+{
+ return new PropsSpeexEncoder(inUnk, outHR);
+}
+
+void PropsSpeexEncoder::updateActiveControlsForBitrateMode(int inMode)
+{
+
+ //Order is dependant on the order added to the combo control
+ switch (inMode) {
+ case 0:
+ //VBR Quality
+ EnableWindow(GetDlgItem(m_hwnd, IDC_SLIDER_BITRATE), FALSE);
+ EnableWindow(GetDlgItem(m_hwnd, IDC_SLIDER_QUALITY), TRUE);
+ EnableWindow(GetDlgItem(m_hwnd, IDC_SLIDER_PEAK_BITRATE), FALSE);
+
+ EnableWindow(GetDlgItem(m_hwnd, IDC_STATIC_BITRATE_TEXT), FALSE);
+ EnableWindow(GetDlgItem(m_hwnd, IDC_STATIC_QUALITY_TEXT), TRUE);
+ EnableWindow(GetDlgItem(m_hwnd, IDC_STATIC_PEAK_BITRATE_TEXT), FALSE);
+
+ EnableWindow(GetDlgItem(m_hwnd, IDC_STATIC_BITRATE), FALSE);
+ EnableWindow(GetDlgItem(m_hwnd, IDC_STATIC_QUALITY), TRUE);
+ EnableWindow(GetDlgItem(m_hwnd, IDC_STATIC_PEAK_BITRATE), FALSE);
+
+ EnableWindow(GetDlgItem(m_hwnd, IDC_CHECK_USE_PEAK), TRUE);
+ SendDlgItemMessage(m_Dlg, IDC_CHECK_USE_PEAK, BM_SETCHECK, (WPARAM)BST_UNCHECKED, 0);
+
+
+
+
+ break;
+ case 1:
+ //VBR Bitrate
+ EnableWindow(GetDlgItem(m_hwnd, IDC_SLIDER_BITRATE), TRUE);
+ EnableWindow(GetDlgItem(m_hwnd, IDC_SLIDER_QUALITY), FALSE);
+ EnableWindow(GetDlgItem(m_hwnd, IDC_SLIDER_PEAK_BITRATE), FALSE);
+
+ EnableWindow(GetDlgItem(m_hwnd, IDC_STATIC_BITRATE_TEXT), TRUE);
+ EnableWindow(GetDlgItem(m_hwnd, IDC_STATIC_QUALITY_TEXT), FALSE);
+ EnableWindow(GetDlgItem(m_hwnd, IDC_STATIC_PEAK_BITRATE_TEXT), FALSE);
+
+ EnableWindow(GetDlgItem(m_hwnd, IDC_STATIC_BITRATE), TRUE);
+ EnableWindow(GetDlgItem(m_hwnd, IDC_STATIC_QUALITY), FALSE);
+ EnableWindow(GetDlgItem(m_hwnd, IDC_STATIC_PEAK_BITRATE), FALSE);
+
+ EnableWindow(GetDlgItem(m_hwnd, IDC_CHECK_USE_PEAK), TRUE);
+ SendDlgItemMessage(m_Dlg, IDC_CHECK_USE_PEAK, BM_SETCHECK, (WPARAM)BST_UNCHECKED, 0);
+ break;
+
+ case 2:
+ //ABR Bitrate
+ EnableWindow(GetDlgItem(m_hwnd, IDC_SLIDER_BITRATE), TRUE);
+ EnableWindow(GetDlgItem(m_hwnd, IDC_SLIDER_QUALITY), FALSE);
+ EnableWindow(GetDlgItem(m_hwnd, IDC_SLIDER_PEAK_BITRATE), FALSE);
+
+ EnableWindow(GetDlgItem(m_hwnd, IDC_STATIC_BITRATE_TEXT), TRUE);
+ EnableWindow(GetDlgItem(m_hwnd, IDC_STATIC_QUALITY_TEXT), FALSE);
+ EnableWindow(GetDlgItem(m_hwnd, IDC_STATIC_PEAK_BITRATE_TEXT), FALSE);
+
+ EnableWindow(GetDlgItem(m_hwnd, IDC_STATIC_BITRATE), TRUE);
+ EnableWindow(GetDlgItem(m_hwnd, IDC_STATIC_QUALITY), FALSE);
+ EnableWindow(GetDlgItem(m_hwnd, IDC_STATIC_PEAK_BITRATE), FALSE);
+
+ SendDlgItemMessage(m_Dlg, IDC_CHECK_USE_PEAK, BM_SETCHECK, (WPARAM)BST_UNCHECKED, 0);
+ EnableWindow(GetDlgItem(m_hwnd, IDC_CHECK_USE_PEAK), FALSE);
+ break;
+ case 3:
+ //CBR Quality
+ EnableWindow(GetDlgItem(m_hwnd, IDC_SLIDER_BITRATE), FALSE);
+ EnableWindow(GetDlgItem(m_hwnd, IDC_SLIDER_QUALITY), TRUE );
+ EnableWindow(GetDlgItem(m_hwnd, IDC_SLIDER_PEAK_BITRATE), FALSE);
+
+ EnableWindow(GetDlgItem(m_hwnd, IDC_STATIC_BITRATE_TEXT), FALSE);
+ EnableWindow(GetDlgItem(m_hwnd, IDC_STATIC_QUALITY_TEXT), TRUE);
+ EnableWindow(GetDlgItem(m_hwnd, IDC_STATIC_PEAK_BITRATE_TEXT), FALSE);
+
+ EnableWindow(GetDlgItem(m_hwnd, IDC_STATIC_BITRATE), FALSE);
+ EnableWindow(GetDlgItem(m_hwnd, IDC_STATIC_QUALITY), TRUE);
+ EnableWindow(GetDlgItem(m_hwnd, IDC_STATIC_PEAK_BITRATE), FALSE);
+
+ SendDlgItemMessage(m_Dlg, IDC_CHECK_USE_PEAK, BM_SETCHECK, (WPARAM)BST_UNCHECKED, 0);
+ EnableWindow(GetDlgItem(m_hwnd, IDC_CHECK_USE_PEAK), FALSE);
+
+ break;
+ case 4:
+ //CBR Bitrate
+ EnableWindow(GetDlgItem(m_hwnd, IDC_SLIDER_BITRATE), TRUE);
+ EnableWindow(GetDlgItem(m_hwnd, IDC_SLIDER_QUALITY), FALSE);
+ EnableWindow(GetDlgItem(m_hwnd, IDC_SLIDER_PEAK_BITRATE), FALSE);
+
+ EnableWindow(GetDlgItem(m_hwnd, IDC_STATIC_BITRATE_TEXT), TRUE);
+ EnableWindow(GetDlgItem(m_hwnd, IDC_STATIC_QUALITY_TEXT), FALSE);
+ EnableWindow(GetDlgItem(m_hwnd, IDC_STATIC_PEAK_BITRATE_TEXT), FALSE);
+
+ EnableWindow(GetDlgItem(m_hwnd, IDC_STATIC_BITRATE), TRUE);
+ EnableWindow(GetDlgItem(m_hwnd, IDC_STATIC_QUALITY), FALSE);
+ EnableWindow(GetDlgItem(m_hwnd, IDC_STATIC_PEAK_BITRATE), FALSE);
+
+ SendDlgItemMessage(m_Dlg, IDC_CHECK_USE_PEAK, BM_SETCHECK, (WPARAM)BST_UNCHECKED, 0);
+ EnableWindow(GetDlgItem(m_hwnd, IDC_CHECK_USE_PEAK), FALSE);
+ break;
+ default:
+ break;
+
+
+ };
+
+}
+HRESULT PropsSpeexEncoder::OnActivate(void)
+{
+
+ wstring locListString = L"Automatic";
+ SendDlgItemMessage(m_Dlg, IDC_COMBO_ENCODE_MODE, CB_ADDSTRING, 0, (LPARAM)locListString.c_str());
+
+ locListString = L"Narrowband";
+ SendDlgItemMessage(m_Dlg, IDC_COMBO_ENCODE_MODE, CB_ADDSTRING, 0, (LPARAM)locListString.c_str());
+
+ locListString = L"Wideband";
+ SendDlgItemMessage(m_Dlg, IDC_COMBO_ENCODE_MODE, CB_ADDSTRING, 0, (LPARAM)locListString.c_str());
+
+ locListString = L"Ultra-Wideband";
+ SendDlgItemMessage(m_Dlg, IDC_COMBO_ENCODE_MODE, CB_ADDSTRING, 0, (LPARAM)locListString.c_str());
+
+ locListString = L"VBR Quality";
+ SendDlgItemMessage(m_Dlg, IDC_COMBO_BITRATE_CONTROL, CB_ADDSTRING, 0, (LPARAM)locListString.c_str());
+
+ locListString = L"VBR Bitrate";
+ SendDlgItemMessage(m_Dlg, IDC_COMBO_BITRATE_CONTROL, CB_ADDSTRING, 0, (LPARAM)locListString.c_str());
+
+ locListString = L"ABR Bitrate";
+ SendDlgItemMessage(m_Dlg, IDC_COMBO_BITRATE_CONTROL, CB_ADDSTRING, 0, (LPARAM)locListString.c_str());
+
+ locListString = L"CBR Quality (default)";
+ SendDlgItemMessage(m_Dlg, IDC_COMBO_BITRATE_CONTROL, CB_ADDSTRING, 0, (LPARAM)locListString.c_str());
+
+ locListString = L"CBR Bitrate";
+ SendDlgItemMessage(m_Dlg, IDC_COMBO_BITRATE_CONTROL, CB_ADDSTRING, 0, (LPARAM)locListString.c_str());
+
+
+
+
+ SpeexEncodeSettings locSettings = mSpeexEncodeSettings->getEncoderSettings();
+
+ wchar_t* locStrBuff = new wchar_t[16];
+
+ SendDlgItemMessage(m_Dlg, IDC_SLIDER_QUALITY, TBM_SETRANGE, TRUE, MAKELONG(0, 10));
+ SendDlgItemMessage(m_Dlg, IDC_SLIDER_QUALITY, TBM_SETTICFREQ, 1, 0);
+ SendDlgItemMessage(m_Dlg, IDC_SLIDER_QUALITY, TBM_SETPOS, 1, locSettings.quality());
+ _itow(locSettings.quality(), locStrBuff, 10);
+ SendDlgItemMessage(m_Dlg, IDC_STATIC_QUALITY_TEXT, WM_SETTEXT, 0, (LPARAM)locStrBuff);
+
+ SendDlgItemMessage(m_Dlg, IDC_SLIDER_BITRATE, TBM_SETRANGE, TRUE, MAKELONG(2, 96));
+ SendDlgItemMessage(m_Dlg, IDC_SLIDER_BITRATE, TBM_SETTICFREQ, 2, 0);
+ SendDlgItemMessage(m_Dlg, IDC_SLIDER_BITRATE, TBM_SETPOS, 1, locSettings.targetBitrate());
+ _itow(locSettings.targetBitrate(), locStrBuff, 10);
+ SendDlgItemMessage(m_Dlg, IDC_STATIC_BITRATE_TEXT, WM_SETTEXT, 0, (LPARAM)locStrBuff);
+
+ SendDlgItemMessage(m_Dlg, IDC_SLIDER_PEAK_BITRATE, TBM_SETRANGE, TRUE, MAKELONG(2, 96));
+ SendDlgItemMessage(m_Dlg, IDC_SLIDER_PEAK_BITRATE, TBM_SETTICFREQ, 2, 0);
+ SendDlgItemMessage(m_Dlg, IDC_SLIDER_PEAK_BITRATE, TBM_SETPOS, 1, locSettings.maxVBRBitrate());
+ _itow(locSettings.maxVBRBitrate(), locStrBuff, 10);
+ SendDlgItemMessage(m_Dlg, IDC_STATIC_PEAK_BITRATE_TEXT, WM_SETTEXT, 0, (LPARAM)locStrBuff);
+
+ SendDlgItemMessage(m_Dlg, IDC_CHECK_USE_PEAK, BM_SETCHECK, (WPARAM)BST_UNCHECKED, 0);
+ EnableWindow(GetDlgItem(m_hwnd, IDC_CHECK_USE_PEAK), FALSE);
+
+ SendDlgItemMessage(m_Dlg, IDC_COMBO_BITRATE_CONTROL, CB_SETCURSEL, 3, 0);
+ SendDlgItemMessage(m_Dlg, IDC_COMBO_ENCODE_MODE, CB_SETCURSEL, 0, 0);
+
+
+
+ return S_OK;
+
+
+}
+
+
+HRESULT PropsSpeexEncoder::OnConnect(IUnknown *pUnk)
+{
+ if (mSpeexEncodeSettings != NULL) {
+ mSpeexEncodeSettings->Release();
+ mSpeexEncodeSettings = NULL;
+ }
+
+ HRESULT locHR;
+ // Query pUnk for the filter's custom interface.
+ locHR = pUnk->QueryInterface(IID_ISpeexEncodeSettings, (void**)(&mSpeexEncodeSettings));
+ return locHR;
+}
+HRESULT PropsSpeexEncoder::OnDisconnect(void)
+{
+ if (mSpeexEncodeSettings != NULL) {
+ mSpeexEncodeSettings->Release();
+ mSpeexEncodeSettings = NULL;
+ }
+ return S_OK;
+}
+INT_PTR PropsSpeexEncoder::OnReceiveMessage(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
+{
+
+ wchar_t locBuff[16];
+
+
+ switch (uMsg) {
+ case WM_COMMAND:
+ if (HIWORD(wParam) == CBN_SELCHANGE) {
+ if (HWND(lParam) == GetDlgItem(m_hwnd, IDC_COMBO_BITRATE_CONTROL)) {
+ SetDirty();
+ updateActiveControlsForBitrateMode(SendDlgItemMessage(m_hwnd,IDC_COMBO_BITRATE_CONTROL, CB_GETCURSEL, 0, 0));
+ return (INT_PTR)TRUE;
+ } else if (HWND(lParam) == GetDlgItem(m_hwnd, IDC_COMBO_ENCODE_MODE)) {
+ SetDirty();
+ //updateActiveControlsForBitrateMode(SendDlgItemMessage(m_hwnd,IDC_COMBO_BITRATE_CONTROL, CB_GETCURSEL, 0, 0));
+ return (INT_PTR)TRUE;
+ }
+ } else if (HWND(lParam) == GetDlgItem(m_hwnd, IDC_CHECK_USE_PEAK)) {
+ //Only allowed this in VBR modes
+ int locBitrateMode = SendDlgItemMessage(m_Dlg, IDC_COMBO_BITRATE_CONTROL, CB_GETCURSEL, 0, 0);
+ if ((locBitrateMode == 0) || (locBitrateMode == 1)) {
+ SetDirty();
+ if (SendDlgItemMessage(m_hwnd,IDC_CHECK_USE_PEAK, BM_GETCHECK, 0, 0)) {
+ //USE Peak just checked
+ EnableWindow(GetDlgItem(m_hwnd, IDC_SLIDER_PEAK_BITRATE), TRUE);
+ EnableWindow(GetDlgItem(m_hwnd, IDC_STATIC_PEAK_BITRATE), TRUE);
+ EnableWindow(GetDlgItem(m_hwnd, IDC_STATIC_PEAK_BITRATE_TEXT), TRUE);
+ } else {
+ //Use peak unchecked
+ EnableWindow(GetDlgItem(m_hwnd, IDC_SLIDER_PEAK_BITRATE), FALSE);
+ EnableWindow(GetDlgItem(m_hwnd, IDC_STATIC_PEAK_BITRATE), FALSE);
+ EnableWindow(GetDlgItem(m_hwnd, IDC_STATIC_PEAK_BITRATE_TEXT), FALSE);
+ }
+ }
+ }
+ break;
+ case WM_HSCROLL:
+ if (HWND(lParam) == GetDlgItem(m_hwnd, IDC_SLIDER_QUALITY)) {
+ SetDirty();
+ _itow(SendDlgItemMessage(m_hwnd,IDC_SLIDER_QUALITY, TBM_GETPOS, 0, 0), locBuff, 10);
+ SendDlgItemMessage(m_hwnd, IDC_STATIC_QUALITY_TEXT, WM_SETTEXT, 0, (LPARAM)&locBuff);
+ return (INT_PTR)TRUE;
+ } else if (HWND(lParam) == GetDlgItem(m_hwnd, IDC_SLIDER_BITRATE)) {
+ SetDirty();
+ int locBitrate = SendDlgItemMessage(m_hwnd,IDC_SLIDER_BITRATE, TBM_GETPOS, 0, 0);
+ _itow(locBitrate, locBuff, 10);
+ SendDlgItemMessage(m_hwnd, IDC_STATIC_BITRATE_TEXT, WM_SETTEXT, 0, (LPARAM)&locBuff);
+
+ int locPeakBitrate = SendDlgItemMessage(m_hwnd,IDC_SLIDER_PEAK_BITRATE, TBM_GETPOS, 0, 0);
+ if (locBitrate > locPeakBitrate) {
+ _itow(locBitrate, locBuff, 10);
+ SendDlgItemMessage(m_hwnd, IDC_STATIC_PEAK_BITRATE_TEXT, WM_SETTEXT, 0, (LPARAM)&locBuff);
+ SendDlgItemMessage(m_Dlg, IDC_SLIDER_PEAK_BITRATE, TBM_SETPOS, 1, locBitrate);
+ }
+
+ return (INT_PTR)TRUE;
+ } else if (HWND(lParam) == GetDlgItem(m_hwnd, IDC_SLIDER_PEAK_BITRATE)) {
+ SetDirty();
+ int locPeakBitrate = SendDlgItemMessage(m_hwnd,IDC_SLIDER_PEAK_BITRATE, TBM_GETPOS, 0, 0);
+ _itow(locPeakBitrate, locBuff, 10);
+
+ int locBitrate = SendDlgItemMessage(m_hwnd,IDC_SLIDER_BITRATE, TBM_GETPOS, 0, 0);
+
+ if (locPeakBitrate < locBitrate) {
+ _itow(locPeakBitrate, locBuff, 10);
+ SendDlgItemMessage(m_hwnd, IDC_STATIC_BITRATE_TEXT, WM_SETTEXT, 0, (LPARAM)&locBuff);
+ SendDlgItemMessage(m_Dlg, IDC_SLIDER_BITRATE, TBM_SETPOS, 1, locPeakBitrate);
+ }
+ SendDlgItemMessage(m_hwnd, IDC_STATIC_PEAK_BITRATE_TEXT, WM_SETTEXT, 0, (LPARAM)&locBuff);
+ return (INT_PTR)TRUE;
+ }
+ break;
+ default:
+ break;
+ }
+
+
+
+ return CBasePropertyPage::OnReceiveMessage(hwnd, uMsg, wParam, lParam);
+
+}
+HRESULT PropsSpeexEncoder::OnApplyChanges(void)
+{
+ if (mSpeexEncodeSettings == NULL) {
+ return E_POINTER;
+ }
+ //TODO::: Apply the settings.
+
+ int locEncodingMode = SendDlgItemMessage(m_hwnd,IDC_COMBO_ENCODE_MODE, CB_GETCURSEL, 0, 0);
+ mSpeexEncodeSettings->setMode((SpeexEncodeSettings::eSpeexEncodeMode)locEncodingMode);
+
+
+ int locBitrateMode = SendDlgItemMessage(m_hwnd,IDC_COMBO_BITRATE_CONTROL, CB_GETCURSEL, 0, 0);
+
+ switch (locBitrateMode) {
+ case 0:
+ //VBR Quality
+ {
+ long locMaxBitrate = (SendDlgItemMessage(m_hwnd,IDC_CHECK_USE_PEAK, BM_GETCHECK, 0, 0)) ? SendDlgItemMessage(m_hwnd,IDC_SLIDER_PEAK_BITRATE, TBM_GETPOS, 0, 0)
+ : -1;
+
+ mSpeexEncodeSettings->setupVBRQualityMode( SendDlgItemMessage(m_hwnd,IDC_SLIDER_QUALITY, TBM_GETPOS, 0, 0)
+ , locMaxBitrate);
+ }
+ break;
+ case 1:
+ //VBR Bitrate
+ {
+ long locMaxBitrate = (SendDlgItemMessage(m_hwnd,IDC_CHECK_USE_PEAK, BM_GETCHECK, 0, 0)) ? SendDlgItemMessage(m_hwnd,IDC_SLIDER_PEAK_BITRATE, TBM_GETPOS, 0, 0)
+ : -1;
+ mSpeexEncodeSettings->setupVBRQualityMode( SendDlgItemMessage(m_hwnd,IDC_SLIDER_BITRATE, TBM_GETPOS, 0, 0)
+ , locMaxBitrate);
+ }
+ break;
+
+ case 2:
+ //ABR
+ mSpeexEncodeSettings->setupABR( SendDlgItemMessage(m_hwnd,IDC_SLIDER_BITRATE, TBM_GETPOS, 0, 0));
+
+ break;
+ case 3:
+ mSpeexEncodeSettings->setupCBRBitrateMode( SendDlgItemMessage(m_hwnd,IDC_SLIDER_BITRATE, TBM_GETPOS, 0, 0));
+ break;
+ case 4:
+ mSpeexEncodeSettings->setupCBRQualityMode( SendDlgItemMessage(m_hwnd,IDC_SLIDER_QUALITY, TBM_GETPOS, 0, 0));
+ break;
+ default:
+ break;
+
+ }
+
+ SetClean();
+ return S_OK;
+}
+
+void PropsSpeexEncoder::SetDirty()
+{
+ m_bDirty = TRUE;
+ if (m_pPageSite)
+ {
+ m_pPageSite->OnStatusChange(PROPPAGESTATUS_DIRTY);
+ }
+}
+
+void PropsSpeexEncoder::SetClean()
+{
+ m_bDirty = FALSE;
+ if (m_pPageSite)
+ {
+ m_pPageSite->OnStatusChange(PROPPAGESTATUS_CLEAN);
+ }
+}
\ No newline at end of file
Added: trunk/oggdsf/src/lib/codecs/speex/filters/dsfSpeexEncoder/PropsSpeexEncoder.h
===================================================================
--- trunk/oggdsf/src/lib/codecs/speex/filters/dsfSpeexEncoder/PropsSpeexEncoder.h 2006-10-16 15:30:40 UTC (rev 11922)
+++ trunk/oggdsf/src/lib/codecs/speex/filters/dsfSpeexEncoder/PropsSpeexEncoder.h 2006-10-17 14:19:56 UTC (rev 11923)
@@ -0,0 +1,31 @@
+#pragma once
+
+#include "resource.h"
+
+#include <commctrl.h>
+
+class PropsSpeexEncoder
+ : public CBasePropertyPage
+{
+public:
+ PropsSpeexEncoder(LPUNKNOWN inUnk, HRESULT* outHR);
+ virtual ~PropsSpeexEncoder(void);
+
+ static CUnknown* WINAPI CreateInstance(LPUNKNOWN inUnk, HRESULT* outHR);
+
+ //CBasePropertyPage Virtual Overrides
+ HRESULT OnActivate(void);
+ HRESULT OnConnect(IUnknown *pUnk);
+ HRESULT OnDisconnect(void);
+ INT_PTR OnReceiveMessage(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
+ HRESULT OnApplyChanges(void);
+
+protected:
+ void SetDirty();
+ void SetClean();
+
+ void updateActiveControlsForBitrateMode(int inMode);
+
+
+ ISpeexEncodeSettings* mSpeexEncodeSettings;
+};
\ No newline at end of file
Modified: trunk/oggdsf/src/lib/codecs/speex/filters/dsfSpeexEncoder/SpeexEncodeFilter.cpp
===================================================================
--- trunk/oggdsf/src/lib/codecs/speex/filters/dsfSpeexEncoder/SpeexEncodeFilter.cpp 2006-10-16 15:30:40 UTC (rev 11922)
+++ trunk/oggdsf/src/lib/codecs/speex/filters/dsfSpeexEncoder/SpeexEncodeFilter.cpp 2006-10-17 14:19:56 UTC (rev 11923)
@@ -44,6 +44,13 @@
SpeexEncodeFilter::CreateInstance, // Method to create an instance of MyComponent
NULL, // Initialization function
NULL // Set-up information (for filters)
+ },
+ {
+ L"Speex Encode Properties", // Name
+ &CLSID_PropsSpeexEncoder, // CLSID
+ PropsSpeexEncoder::CreateInstance, // Method to create an instance of MyComponent
+ NULL, // Initialization function
+ NULL // Set-up information (for filters)
}
};
@@ -61,6 +68,39 @@
return pNewObject;
}
+STDMETHODIMP SpeexEncodeFilter::NonDelegatingQueryInterface(REFIID riid, void **ppv)
+{
+ if (riid == IID_ISpeexEncodeSettings) {
+ *ppv = (ISpeexEncodeSettings*)this;
+ ((IUnknown*)*ppv)->AddRef();
+ return NOERROR;
+ } else if (riid == IID_ISpecifyPropertyPages) {
+ *ppv = (ISpecifyPropertyPages*)this;
+ ((IUnknown*)*ppv)->AddRef();
+ return NOERROR;
+ }
+ return AbstractTransformFilter::NonDelegatingQueryInterface(riid, ppv);
+}
+
+//SpecifyPropertyPages Implementation
+STDMETHODIMP SpeexEncodeFilter::GetPages(CAUUID* outPropPages)
+{
+ if (outPropPages == NULL) return E_POINTER;
+
+ const int NUM_PROP_PAGES = 1;
+ outPropPages->cElems = NUM_PROP_PAGES;
+ outPropPages->pElems = (GUID*)(CoTaskMemAlloc(sizeof(GUID) * NUM_PROP_PAGES));
+ if (outPropPages->pElems == NULL)
+ {
+ return E_OUTOFMEMORY;
+ }
+
+ outPropPages->pElems[0] = CLSID_PropsSpeexEncoder;
+
+ return S_OK;
+
+}
+
SpeexEncodeFilter::SpeexEncodeFilter(void)
: AbstractTransformFilter(NAME("Speex Encoder"), CLSID_SpeexEncodeFilter)
{
@@ -103,4 +143,47 @@
mInputPin = new SpeexEncodeInputPin(this, m_pLock, mOutputPin, locAcceptableTypes); //Deleted in base class filter destructor.
return true;
-}
\ No newline at end of file
+}
+
+STDMETHODIMP_(SpeexEncodeSettings) SpeexEncodeFilter::getEncoderSettings()
+{
+ return ((SpeexEncodeInputPin*)mInputPin)->mEncoderSettings;
+}
+
+
+STDMETHODIMP_(bool) SpeexEncodeFilter::setMode(SpeexEncodeSettings::eSpeexEncodeMode inMode)
+{
+ return ((SpeexEncodeInputPin*)mInputPin)->mEncoderSettings.setMode(inMode);
+
+}
+STDMETHODIMP_(bool) SpeexEncodeFilter::setComplexity(long inComplexity)
+{
+ return ((SpeexEncodeInputPin*)mInputPin)->mEncoderSettings.setComplexity(inComplexity);
+}
+
+STDMETHODIMP_(bool) SpeexEncodeFilter::setupVBRQualityMode(long inQuality, long inVBRMaxBitrate)
+{
+ return ((SpeexEncodeInputPin*)mInputPin)->mEncoderSettings.setupVBRQualityMode(inQuality, inVBRMaxBitrate);
+}
+STDMETHODIMP_(bool) SpeexEncodeFilter::setupVBRBitrateMode(long inBitrate, long inVBRMaxBitrate)
+{
+ return ((SpeexEncodeInputPin*)mInputPin)->mEncoderSettings.setupVBRBitrateMode(inBitrate, inVBRMaxBitrate);
+}
+STDMETHODIMP_(bool) SpeexEncodeFilter::setupABR(long inABRBitrate)
+{
+ return ((SpeexEncodeInputPin*)mInputPin)->mEncoderSettings.setupABR(inABRBitrate);
+}
+STDMETHODIMP_(bool) SpeexEncodeFilter::setupCBRBitrateMode(long inCBRBitrate)
+{
+ return ((SpeexEncodeInputPin*)mInputPin)->mEncoderSettings.setupCBRBitrateMode(inCBRBitrate);
+}
+STDMETHODIMP_(bool) SpeexEncodeFilter::setupCBRQualityMode(long inQuality)
+{
+ return ((SpeexEncodeInputPin*)mInputPin)->mEncoderSettings.setupCBRQualityMode(inQuality);
+}
+
+STDMETHODIMP_(bool) SpeexEncodeFilter::setEncodingFlags(bool inUseDTX, bool inUseVAD, bool inUseAGC, bool inUseDenoise)
+{
+ return ((SpeexEncodeInputPin*)mInputPin)->mEncoderSettings.setEncodingFlags(inUseDTX, inUseVAD, inUseAGC, inUseDenoise);
+
+}
Modified: trunk/oggdsf/src/lib/codecs/speex/filters/dsfSpeexEncoder/SpeexEncodeFilter.h
===================================================================
--- trunk/oggdsf/src/lib/codecs/speex/filters/dsfSpeexEncoder/SpeexEncodeFilter.h 2006-10-16 15:30:40 UTC (rev 11922)
+++ trunk/oggdsf/src/lib/codecs/speex/filters/dsfSpeexEncoder/SpeexEncodeFilter.h 2006-10-17 14:19:56 UTC (rev 11923)
@@ -33,6 +33,8 @@
//Local Includes
#include "speexencoderdllstuff.h"
+#include "ISpeexEncodeSettings.h"
+#include "PropsSpeexEncoder.h"
//External Includes
#include "AbstractTransformFilter.h"
@@ -45,6 +47,8 @@
class SpeexEncodeFilter
//Base Classes
: public AbstractTransformFilter
+ , public ISpeexEncodeSettings
+ , public ISpecifyPropertyPages
{
public:
//Friend Classes
@@ -55,9 +59,32 @@
SpeexEncodeFilter(void);
virtual ~SpeexEncodeFilter(void);
+ //COM Initialisation
+ DECLARE_IUNKNOWN
+ STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, void **ppv);
+
//COM Creator function
static CUnknown* WINAPI SpeexEncodeFilter::CreateInstance(LPUNKNOWN pUnk, HRESULT *pHr);
+ /// ISpecifyPropertyPages::GetPages Implementation
+ STDMETHODIMP GetPages(CAUUID* outPropPages);
+
+
+ virtual STDMETHODIMP_(SpeexEncodeSettings) getEncoderSettings();
+
+
+ virtual STDMETHODIMP_(bool) setMode(SpeexEncodeSettings::eSpeexEncodeMode inMode);
+ virtual STDMETHODIMP_(bool) setComplexity(long inComplexity);
+
+ virtual STDMETHODIMP_(bool) setupVBRQualityMode(long inQuality, long inVBRMaxBitrate);
+ virtual STDMETHODIMP_(bool) setupVBRBitrateMode(long inBitrate, long inVBRMaxBitrate);
+ virtual STDMETHODIMP_(bool) setupABR(long inABRBitrate);
+ virtual STDMETHODIMP_(bool) setupCBRBitrateMode(long inCBRBitrate);
+ virtual STDMETHODIMP_(bool) setupCBRQualityMode(long inQuality);
+
+ virtual STDMETHODIMP_(bool) setEncodingFlags(bool inUseDTX, bool inUseVAD, bool inUseAGC, bool inUseDenoise);
+
+
protected:
//Implementation of pure virtual from AbstractTransformFilter.
virtual bool ConstructPins();
Modified: trunk/oggdsf/src/lib/codecs/speex/filters/dsfSpeexEncoder/SpeexEncodeInputPin.cpp
===================================================================
--- trunk/oggdsf/src/lib/codecs/speex/filters/dsfSpeexEncoder/SpeexEncodeInputPin.cpp 2006-10-16 15:30:40 UTC (rev 11922)
+++ trunk/oggdsf/src/lib/codecs/speex/filters/dsfSpeexEncoder/SpeexEncodeInputPin.cpp 2006-10-17 14:19:56 UTC (rev 11923)
@@ -195,4 +195,23 @@
}
return S_OK;
+}
+
+HRESULT SpeexEncodeInputPin::CompleteConnect (IPin *inReceivePin)
+{
+ //This data is captured in setmedia type. We set it on the settings class
+ // here so that when we are setting options which depend on knowing audio
+ // parameters, ie some settings require stereo. This gets it ready
+ // before the user can touch it from a properties page
+
+ //Defaults
+ SpeexEncodeSettings locSettings;
+ mEncoderSettings = locSettings;
+
+
+ mEncoderSettings.setAudioParameters( ((SpeexEncodeFilter*)mParentFilter)->mSpeexFormatBlock.samplesPerSec
+ ,((SpeexEncodeFilter*)mParentFilter)->mSpeexFormatBlock.numChannels);
+
+ return AbstractTransformInputPin::CompleteConnect(inReceivePin);
+
}
\ No newline at end of file
Modified: trunk/oggdsf/src/lib/codecs/speex/filters/dsfSpeexEncoder/SpeexEncodeInputPin.h
===================================================================
--- trunk/oggdsf/src/lib/codecs/speex/filters/dsfSpeexEncoder/SpeexEncodeInputPin.h 2006-10-16 15:30:40 UTC (rev 11922)
+++ trunk/oggdsf/src/lib/codecs/speex/filters/dsfSpeexEncoder/SpeexEncodeInputPin.h 2006-10-17 14:19:56 UTC (rev 11923)
@@ -41,6 +41,8 @@
: public AbstractTransformInputPin
{
public:
+ friend class SpeexEncodeFilter;
+
SpeexEncodeInputPin( AbstractTransformFilter* inFilter
, CCritSec* inFilterLock
, AbstractTransformOutputPin* inOutputPin
@@ -49,6 +51,7 @@
virtual HRESULT SetMediaType(const CMediaType* inMediaType);
virtual STDMETHODIMP EndOfStream();
+ virtual HRESULT CompleteConnect (IPin *inReceivePin);
protected:
virtual HRESULT TransformData(unsigned char* inBuf, long inNumBytes);
Added: trunk/oggdsf/src/lib/codecs/speex/filters/dsfSpeexEncoder/dsfSpeexEncoder.aps
===================================================================
(Binary files differ)
Property changes on: trunk/oggdsf/src/lib/codecs/speex/filters/dsfSpeexEncoder/dsfSpeexEncoder.aps
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/oggdsf/src/lib/codecs/speex/filters/dsfSpeexEncoder/dsfSpeexEncoder.rc
===================================================================
--- trunk/oggdsf/src/lib/codecs/speex/filters/dsfSpeexEncoder/dsfSpeexEncoder.rc 2006-10-16 15:30:40 UTC (rev 11922)
+++ trunk/oggdsf/src/lib/codecs/speex/filters/dsfSpeexEncoder/dsfSpeexEncoder.rc 2006-10-17 14:19:56 UTC (rev 11923)
@@ -0,0 +1,119 @@
+// Microsoft Visual C++ generated resource script.
+//
+#include "resource.h"
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+#include "afxres.h"
+
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// English (U.S.) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
+#ifdef _WIN32
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+#pragma code_page(1252)
+#endif //_WIN32
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE
+BEGIN
+ "resource.h\0"
+END
+
+2 TEXTINCLUDE
+BEGIN
+ "#include ""afxres.h""\r\n"
+ "\0"
+END
+
+3 TEXTINCLUDE
+BEGIN
+ "\r\n"
+ "\0"
+END
+
+#endif // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// DESIGNINFO
+//
+
+#ifdef APSTUDIO_INVOKED
+GUIDELINES DESIGNINFO
+BEGIN
+ IDD_SPEEX_ENCODE_SETTINGS, DIALOG
+ BEGIN
+ LEFTMARGIN, 7
+ RIGHTMARGIN, 189
+ TOPMARGIN, 7
+ BOTTOMMARGIN, 140
+ END
+END
+#endif // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog
+//
+
+IDD_SPEEX_ENCODE_SETTINGS DIALOGEX 0, 0, 196, 147
+STYLE DS_SETFONT | WS_CHILD | WS_BORDER
+FONT 8, "Microsoft Sans Serif", 400, 0, 0x0
+BEGIN
+ COMBOBOX IDC_COMBO_ENCODE_MODE,7,17,86,58,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP
+ COMBOBOX IDC_COMBO_BITRATE_CONTROL,103,18,86,58,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP
+ LTEXT "Encoding Mode",IDC_STATIC_ENCODE_MODE,7,7,84,10
+ LTEXT "Bitrate Control",IDC_STATIC_BITRATE_CONTROL,105,7,84,10
+ RTEXT "Quality",IDC_STATIC_QUALITY,112,34,44,11
+ RTEXT "Bitrate",IDC_STATIC_BITRATE,106,58,49,11
+ RTEXT "Peak Bitrate",IDC_STATIC_PEAK_BITRATE,105,83,49,11
+ CONTROL "",IDC_SLIDER_QUALITY,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,7,47,182,11
+ RTEXT "0",IDC_STATIC_QUALITY_TEXT,159,34,30,12,WS_BORDER
+ CONTROL "",IDC_SLIDER_BITRATE,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,7,72,182,11
+ CONTROL "",IDC_SLIDER_PEAK_BITRATE,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,7,97,182,11
+ RTEXT "0",IDC_STATIC_BITRATE_TEXT,159,58,30,12,WS_BORDER
+ RTEXT "0",IDC_STATIC_PEAK_BITRATE_TEXT,159,83,30,12,WS_BORDER
+ CONTROL "Use Peak",IDC_CHECK_USE_PEAK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,21,85,60,11
+END
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// String Table
+//
+
+STRINGTABLE
+BEGIN
+ IDS_SPEEX_ENC_PROPS_STRING "Speex Settings"
+END
+
+#endif // English (U.S.) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+
+
+/////////////////////////////////////////////////////////////////////////////
+#endif // not APSTUDIO_INVOKED
+
Modified: trunk/oggdsf/src/lib/codecs/speex/filters/dsfSpeexEncoder/dsfSpeexEncoder.vcproj
===================================================================
--- trunk/oggdsf/src/lib/codecs/speex/filters/dsfSpeexEncoder/dsfSpeexEncoder.vcproj 2006-10-16 15:30:40 UTC (rev 11922)
+++ trunk/oggdsf/src/lib/codecs/speex/filters/dsfSpeexEncoder/dsfSpeexEncoder.vcproj 2006-10-17 14:19:56 UTC (rev 11923)
@@ -1283,6 +1283,10 @@
Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm"
>
<File
+ RelativePath=".\PropsSpeexEncoder.cpp"
+ >
+ </File>
+ <File
RelativePath="SpeexEncodeFilter.cpp"
>
</File>
@@ -1436,6 +1440,18 @@
>
</File>
<File
+ RelativePath=".\ISpeexEncodeSettings.h"
+ >
+ </File>
+ <File
+ RelativePath=".\PropsSpeexEncoder.h"
+ >
+ </File>
+ <File
+ RelativePath=".\resource.h"
+ >
+ </File>
+ <File
RelativePath="SpeexEncodeFilter.h"
>
</File>
@@ -1460,6 +1476,10 @@
Name="Resource Files"
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
>
+ <File
+ RelativePath=".\dsfSpeexEncoder.rc"
+ >
+ </File>
</Filter>
<File
RelativePath="ReadMe.txt"
Added: trunk/oggdsf/src/lib/codecs/speex/filters/dsfSpeexEncoder/resource.h
===================================================================
--- trunk/oggdsf/src/lib/codecs/speex/filters/dsfSpeexEncoder/resource.h 2006-10-16 15:30:40 UTC (rev 11922)
+++ trunk/oggdsf/src/lib/codecs/speex/filters/dsfSpeexEncoder/resource.h 2006-10-17 14:19:56 UTC (rev 11923)
@@ -0,0 +1,32 @@
+//{{NO_DEPENDENCIES}}
+// Microsoft Visual C++ generated include file.
+// Used by dsfSpeexEncoder.rc
+//
+#define IDD_SPEEX_ENCODE_SETTINGS 9
+#define IDS_SPEEX_ENC_PROPS_STRING 102
+#define IDC_COMBO_ENCODE_MODE 1001
+#define IDC_COMBO_BITRATE_CONTROL 1002
+#define IDC_STATIC_ENCODE_MODE 1003
+#define IDC_STATIC_BITRATE_CONTROL 1004
+#define IDC_STATIC_QUALITY 1005
+#define IDC_STATIC_BITRATE 1006
+#define IDC_STATIC_PEAK_BITRATE 1007
+#define IDC_SLIDER_QUALITY 1008
+#define IDC_STATIC_QUALITY_TEXT 1009
+#define IDC_SLIDER_BITRATE 1010
+#define IDC_SLIDER_PEAK_BITRATE 1011
+#define IDC_STATIC_BITRATE_TEXT 1012
+#define IDC_STATIC_PEAK_BITRATE_TEXT 1013
+#define IDC_CHECK1 1014
+#define IDC_CHECK_USE_PEAK 1014
+
+// Next default values for new objects
+//
+#ifdef APSTUDIO_INVOKED
+#ifndef APSTUDIO_READONLY_SYMBOLS
+#define _APS_NEXT_RESOURCE_VALUE 103
+#define _APS_NEXT_COMMAND_VALUE 40001
+#define _APS_NEXT_CONTROL_VALUE 1015
+#define _APS_NEXT_SYMED_VALUE 101
+#endif
+#endif
Modified: trunk/oggdsf/src/lib/codecs/speex/filters/dsfSpeexEncoder/speexencoderdllstuff.h
===================================================================
--- trunk/oggdsf/src/lib/codecs/speex/filters/dsfSpeexEncoder/speexencoderdllstuff.h 2006-10-16 15:30:40 UTC (rev 11922)
+++ trunk/oggdsf/src/lib/codecs/speex/filters/dsfSpeexEncoder/speexencoderdllstuff.h 2006-10-17 14:19:56 UTC (rev 11923)
@@ -31,6 +31,10 @@
#pragma once
+#include <streams.h>
+#include <pullpin.h>
+#include <initguid.h>
+
struct sSpeexFormatBlock {
unsigned long speexVersion;
unsigned long samplesPerSec;
@@ -54,8 +58,15 @@
#endif
+// {ED79AEC0-68AD-4be6-B06E-B4D3C8101624}
+DEFINE_GUID(CLSID_PropsSpeexEncoder,
+0xed79aec0, 0x68ad, 0x4be6, 0xb0, 0x6e, 0xb4, 0xd3, 0xc8, 0x10, 0x16, 0x24);
+// {479038D2-57FF-41ee-B397-FB98199BF1E8}
+DEFINE_GUID(IID_ISpeexEncodeSettings,
+0x479038d2, 0x57ff, 0x41ee, 0xb3, 0x97, 0xfb, 0x98, 0x19, 0x9b, 0xf1, 0xe8);
+
// {7036C2FE-A209-464c-97AB-95B9260EDBF7}
DEFINE_GUID(CLSID_SpeexEncodeFilter,
0x7036c2fe, 0xa209, 0x464c, 0x97, 0xab, 0x95, 0xb9, 0x26, 0xe, 0xdb, 0xf7);
Modified: trunk/oggdsf/src/lib/codecs/speex/filters/dsfSpeexEncoder/stdafx.h
===================================================================
--- trunk/oggdsf/src/lib/codecs/speex/filters/dsfSpeexEncoder/stdafx.h 2006-10-16 15:30:40 UTC (rev 11922)
+++ trunk/oggdsf/src/lib/codecs/speex/filters/dsfSpeexEncoder/stdafx.h 2006-10-17 14:19:56 UTC (rev 11923)
@@ -10,3 +10,4 @@
#include <windows.h>
// TODO: reference additional headers your program requires here
+#include "speexencoderdllstuff.h"
\ No newline at end of file
More information about the commits
mailing list