[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