Index: /dsfilters/dec_mpc/dec_mpc.rc
===================================================================
--- /dsfilters/dec_mpc/dec_mpc.rc	(revision 370)
+++ /dsfilters/dec_mpc/dec_mpc.rc	(revision 370)
@@ -0,0 +1,142 @@
+// 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
+
+/////////////////////////////////////////////////////////////////////////////
+// Slovak resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_SKY)
+#ifdef _WIN32
+LANGUAGE LANG_SLOVAK, SUBLANG_DEFAULT
+#pragma code_page(1250)
+#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
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Bitmap
+//
+
+IDB_BITMAP_LOGO         BITMAP                  "bitmap_logo.bmp"
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// String Table
+//
+
+STRINGTABLE 
+BEGIN
+    IDS_PAGE_DECODER        "Musepack Decoder"
+END
+
+#endif    // Slovak resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+/////////////////////////////////////////////////////////////////////////////
+// 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
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog
+//
+
+IDD_PAGE_DECODER DIALOGEX 0, 0, 280, 146
+STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD
+FONT 8, "MS Shell Dlg", 0, 0, 0x0
+BEGIN
+    CONTROL         102,IDC_STATIC,"Static",SS_BITMAP,0,0,280,30
+    GROUPBOX        "Stream attributes",IDC_STATIC,6,36,144,102
+    LTEXT           "Stream version:",IDC_STATIC,18,54,52,8
+    LTEXT           "Sample rate:",IDC_STATIC,18,66,42,8
+    LTEXT           "Channels:",IDC_STATIC,18,78,33,8
+    LTEXT           "Output format:",IDC_STATIC,18,90,50,8
+    LTEXT           "Frames decoded:",IDC_STATIC,18,102,56,8
+    LTEXT           "SV8",IDC_STATIC_VERSION,78,54,60,8
+    LTEXT           "44100 Hz",IDC_STATIC_SAMPLERATE,78,66,60,8
+    LTEXT           "Stereo (2)",IDC_STATIC_CHANNELS,78,78,60,8
+    LTEXT           "16-bit Integer",IDC_STATIC_OUTPUT,78,90,60,8
+    LTEXT           "0",IDC_STATIC_FRAMES,78,102,60,8
+    CTEXT           "DirectShow filter implemented by Igor Janos",IDC_STATIC,162,66,108,16
+    CTEXT           "http://blog.monogram.sk/janos",IDC_STATIC,162,114,108,8
+    CTEXT           "This software is released under the GNU LGPL licence.",IDC_STATIC,162,42,108,22
+    CTEXT           "http://www.musepack.net",IDC_STATIC,162,126,108,8
+    LTEXT           "Replay gain:",IDC_STATIC,18,114,41,8
+    LTEXT           "0.00 dB",IDC_STATIC_REPLAYGAIN,78,114,60,8
+END
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// DESIGNINFO
+//
+
+#ifdef APSTUDIO_INVOKED
+GUIDELINES DESIGNINFO 
+BEGIN
+    IDD_PAGE_DECODER, DIALOG
+    BEGIN
+        LEFTMARGIN, 7
+        RIGHTMARGIN, 273
+        TOPMARGIN, 7
+        BOTTOMMARGIN, 139
+    END
+END
+#endif    // APSTUDIO_INVOKED
+
+#endif    // English (U.S.) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+
+
+/////////////////////////////////////////////////////////////////////////////
+#endif    // not APSTUDIO_INVOKED
+
Index: /dsfilters/dec_mpc/dec_mpc.vcproj
===================================================================
--- /dsfilters/dec_mpc/dec_mpc.vcproj	(revision 369)
+++ /dsfilters/dec_mpc/dec_mpc.vcproj	(revision 370)
@@ -192,4 +192,12 @@
 			</File>
 			<File
+				RelativePath=".\src\mpc_filter.cpp"
+				>
+			</File>
+			<File
+				RelativePath=".\src\mpc_prop.cpp"
+				>
+			</File>
+			<File
 				RelativePath=".\src\mpc_reg.cpp"
 				>
@@ -202,5 +210,17 @@
 			>
 			<File
+				RelativePath=".\src\mpc_filter.h"
+				>
+			</File>
+			<File
+				RelativePath=".\src\mpc_prop.h"
+				>
+			</File>
+			<File
 				RelativePath=".\src\mpc_types.h"
+				>
+			</File>
+			<File
+				RelativePath=".\resource.h"
 				>
 			</File>
@@ -215,4 +235,12 @@
 			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
 			>
+			<File
+				RelativePath=".\bitmap_logo.bmp"
+				>
+			</File>
+			<File
+				RelativePath=".\dec_mpc.rc"
+				>
+			</File>
 		</Filter>
 	</Files>
Index: /dsfilters/dec_mpc/resource.h
===================================================================
--- /dsfilters/dec_mpc/resource.h	(revision 370)
+++ /dsfilters/dec_mpc/resource.h	(revision 370)
@@ -0,0 +1,24 @@
+//{{NO_DEPENDENCIES}}
+// Microsoft Visual C++ generated include file.
+// Used by dec_mpc.rc
+//
+#define IDS_PAGE_DECODER                101
+#define IDB_BITMAP_LOGO                 102
+#define IDD_PAGE_DECODER                105
+#define IDC_STATIC_VERSION              1001
+#define IDC_STATIC_SAMPLERATE           1002
+#define IDC_STATIC_CHANNELS             1003
+#define IDC_STATIC_OUTPUT               1004
+#define IDC_STATIC_FRAMES               1005
+#define IDC_STATIC_REPLAYGAIN           1006
+
+// 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         1007
+#define _APS_NEXT_SYMED_VALUE           101
+#endif
+#endif
Index: /dsfilters/dec_mpc/src/mpc_filter.cpp
===================================================================
--- /dsfilters/dec_mpc/src/mpc_filter.cpp	(revision 370)
+++ /dsfilters/dec_mpc/src/mpc_filter.cpp	(revision 370)
@@ -0,0 +1,216 @@
+//-----------------------------------------------------------------------------
+//
+//	Musepack Decoder
+//
+//	Author : Igor Janos
+//
+//-----------------------------------------------------------------------------
+#include "stdafx.h"
+
+
+void MakeNiceSpeed(__int64 bps, CString &v)
+{
+	int r=0;
+	__int64	c=bps;
+	LPCTSTR		rady[] = {
+		_T("bps"),
+		_T("kbps"),
+		_T("mbps"),
+		_T("gbps"),
+		_T("tbps")
+	};
+
+	// spocitame rad
+	while (c > 1000 && r<4) {
+		r++;
+		c = c / 1000;
+	}
+
+	c=bps;
+	for (int i=1; i<r; i++) { c = c/1000; }
+	double d=c / 1000.0;
+
+	v.Format(_T("%5.3f %s"), (float)d, rady[r]);
+}
+
+//-----------------------------------------------------------------------------
+//
+//	CMPCDecoder class
+//
+//-----------------------------------------------------------------------------
+
+CUnknown *CMPCDecoder::CreateInstance(LPUNKNOWN pUnk, HRESULT *phr)
+{
+	return new CMPCDecoder(pUnk, phr);
+}
+
+CMPCDecoder::CMPCDecoder(LPUNKNOWN pUnk, HRESULT *phr) :
+	CTransformFilter(_T("MPC Decoder"), pUnk, CLSID_MusepackDecoder)
+{
+	m_pInput = new CTransformInputPin(NAME("Input"), this, phr, L"Input");
+	m_pOutput = new CTransformOutputPin(NAME("Output"), this, phr, L"Output");
+}
+
+CMPCDecoder::~CMPCDecoder()
+{
+}
+
+STDMETHODIMP CMPCDecoder::NonDelegatingQueryInterface(REFIID riid,void **ppv)
+{
+    CheckPointer(ppv,E_POINTER);
+
+	if (riid == IID_ISpecifyPropertyPages) {
+		return GetInterface((ISpecifyPropertyPages*)this, ppv);
+	} else
+		return CBaseFilter::NonDelegatingQueryInterface(riid,ppv);
+}
+
+STDMETHODIMP CMPCDecoder::GetPages(CAUUID *pPages)
+{
+    CheckPointer(pPages,E_POINTER);
+
+    pPages->cElems = 1;
+    pPages->pElems = (GUID *) CoTaskMemAlloc(sizeof(GUID));
+    if (pPages->pElems == NULL) {
+        return E_OUTOFMEMORY;
+    }
+
+	*(pPages->pElems) = CLSID_MusepackDecoderPage;
+    return NOERROR;
+
+} // GetPages
+
+HRESULT CMPCDecoder::CheckInputType(const CMediaType *mtIn)
+{
+	// we only accept these
+	if (mtIn->majortype != MEDIATYPE_Audio) return E_FAIL;
+	if (mtIn->subtype != MEDIASUBTYPE_MusepackPacket) return E_FAIL;
+	if (mtIn->formattype != FORMAT_WaveFormatEx) return E_FAIL;
+
+	return NOERROR;
+}
+
+HRESULT CMPCDecoder::CheckTransform(const CMediaType *mtIn, const CMediaType *mtOut)
+{
+	HRESULT hr = CheckInputType(mtIn);
+	if (FAILED(hr)) return hr;
+
+	// output is fixed
+	if (mtOut->majortype != MEDIATYPE_Audio) return E_FAIL;
+	if (mtOut->subtype != MEDIASUBTYPE_PCM) return E_FAIL;
+
+	return NOERROR;
+}
+
+HRESULT CMPCDecoder::SetMediaType(PIN_DIRECTION direction, const CMediaType *pmt)
+{
+	if (direction == PINDIR_INPUT) {
+		if (pmt->formattype != FORMAT_WaveFormatEx) return E_FAIL;
+
+		WAVEFORMATEX *wfx = (WAVEFORMATEX*)pmt->pbFormat;
+
+		// we assemble output format
+		wfOut.cbSize = 0;
+		wfOut.nChannels = wfx->nChannels;
+		wfOut.nSamplesPerSec = wfx->nSamplesPerSec;
+		wfOut.wFormatTag = WAVE_FORMAT_PCM;
+		wfOut.wBitsPerSample = 16;				// currently only 16-bit
+		wfOut.nBlockAlign = (wfOut.wBitsPerSample * wfOut.nChannels) >> 3;
+		wfOut.nAvgBytesPerSec = wfOut.nBlockAlign * wfOut.nSamplesPerSec;
+
+	}
+	return NOERROR;
+}
+
+HRESULT CMPCDecoder::BreakConnect(PIN_DIRECTION dir)
+{
+	if (dir == PINDIR_INPUT) {
+		memset(&wfOut, 0, sizeof(WAVEFORMATEX));
+
+		// disconnect output
+		if (m_pOutput->IsConnected()) {
+			m_pOutput->GetConnected()->Disconnect();
+			m_pOutput->Disconnect();
+		}
+	}
+	return __super::BreakConnect(dir);
+}
+
+HRESULT CMPCDecoder::DecideBufferSize(IMemAllocator *pAlloc, ALLOCATOR_PROPERTIES *pProp)
+{
+	// since the frames are of fixed size we can be sure
+	// that the size won't be larger than....
+	pProp->cbBuffer = (wfOut.nBlockAlign * 1152) * 1.5;		// + some extra space
+	pProp->cBuffers = 3;
+
+	ALLOCATOR_PROPERTIES	act;
+	HRESULT hr = pAlloc->SetProperties(pProp, &act);
+	if (FAILED(hr)) return hr;
+
+	if (act.cbBuffer < pProp->cbBuffer) return E_FAIL;
+	return NOERROR;
+}
+
+HRESULT CMPCDecoder::GetMediaType(int iPosition, CMediaType *pmt)
+{
+	if (iPosition < 0) return E_INVALIDARG;
+	if (iPosition > 0) return VFW_S_NO_MORE_ITEMS;
+
+	// don't accept connections until input pin is connected
+	if (m_pInput->IsConnected() == FALSE) return E_FAIL;
+
+	pmt->majortype  = MEDIATYPE_Audio;
+	pmt->subtype    = MEDIASUBTYPE_PCM;
+	pmt->formattype	= FORMAT_WaveFormatEx;
+
+	// we already know...
+	WAVEFORMATEX	*pwf = (WAVEFORMATEX*)pmt->AllocFormatBuffer(sizeof(WAVEFORMATEX));
+	memcpy(pwf, &wfOut, sizeof(WAVEFORMATEX));
+
+	return NOERROR;
+}
+
+HRESULT CMPCDecoder::GetDeliveryBuffer(IMediaSample **sample)
+{
+    IMediaSample *pOutSample;
+    HRESULT hr = m_pOutput->GetDeliveryBuffer(&pOutSample, NULL, NULL, 0);
+    *sample = pOutSample;
+    if (FAILED(hr)) {
+        return hr;
+    }
+
+	// check for type change
+	AM_MEDIA_TYPE *mt;
+	if (pOutSample->GetMediaType(&mt) == NOERROR) {
+		CMediaType _mt(*mt);
+		SetMediaType(PINDIR_OUTPUT, &_mt);
+		DeleteMediaType(mt);
+	}
+
+	return NOERROR;
+}
+
+HRESULT CMPCDecoder::StartStreaming()
+{
+	HRESULT hr = __super::StartStreaming();
+	if (FAILED(hr)) return hr;
+	return hr;
+}
+
+HRESULT CMPCDecoder::StopStreaming()
+{
+	HRESULT hr = __super::StopStreaming();
+	if (FAILED(hr)) return hr;
+	return hr;
+}
+
+HRESULT CMPCDecoder::Receive(IMediaSample *pSample)
+{
+	if (!m_pOutput->IsConnected()) return NOERROR;
+
+	// todo:
+	return NOERROR;
+}
+
+
+
Index: /dsfilters/dec_mpc/src/mpc_filter.h
===================================================================
--- /dsfilters/dec_mpc/src/mpc_filter.h	(revision 370)
+++ /dsfilters/dec_mpc/src/mpc_filter.h	(revision 370)
@@ -0,0 +1,61 @@
+//-----------------------------------------------------------------------------
+//
+//	Musepack Decoder
+//
+//	Author : Igor Janos
+//
+//-----------------------------------------------------------------------------
+#pragma once
+
+#define CMD_EXIT		0
+#define CMD_STOP		1
+#define CMD_RUN			2
+
+
+//-----------------------------------------------------------------------------
+//
+//	CMPCDecoder class
+//
+//-----------------------------------------------------------------------------
+class CMPCDecoder : 
+	public CTransformFilter,
+	public ISpecifyPropertyPages
+{
+public:
+
+	CCritSec			lock_filter;
+	WAVEFORMATEX		wfOut;
+
+public:
+	// constructor
+	CMPCDecoder(LPUNKNOWN pUnk, HRESULT *phr);
+	virtual ~CMPCDecoder();
+	static CUnknown * WINAPI CreateInstance(LPUNKNOWN pUnk, HRESULT *phr);
+
+	// override this to publicise our interfaces
+	DECLARE_IUNKNOWN;
+	STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, void **ppv);
+
+    // ISpecifyPropertyPages interface
+    STDMETHODIMP GetPages(CAUUID *pPages);
+
+	// Pure virtual methods
+	virtual HRESULT CheckInputType(const CMediaType *mtIn);
+	virtual HRESULT CheckTransform(const CMediaType *mtIn, const CMediaType *mtOut);
+	virtual HRESULT DecideBufferSize(IMemAllocator *pAlloc, ALLOCATOR_PROPERTIES *pProp);
+	virtual HRESULT GetMediaType(int iPosition, CMediaType *pmt);
+	virtual HRESULT SetMediaType(PIN_DIRECTION direction, const CMediaType *pmt);
+	virtual HRESULT BreakConnect(PIN_DIRECTION dir);
+
+	// activate/deactivate decoder
+	virtual HRESULT StartStreaming();
+	virtual HRESULT StopStreaming();
+
+	// decoding input packets
+	virtual HRESULT Receive(IMediaSample *pSample);
+	//HRESULT DeliverSamples(int16 *input, int time_count);
+	virtual HRESULT GetDeliveryBuffer(IMediaSample **sample);
+
+};
+
+
Index: /dsfilters/dec_mpc/src/mpc_prop.cpp
===================================================================
--- /dsfilters/dec_mpc/src/mpc_prop.cpp	(revision 370)
+++ /dsfilters/dec_mpc/src/mpc_prop.cpp	(revision 370)
@@ -0,0 +1,158 @@
+//-----------------------------------------------------------------------------
+//
+//	Musepack Decoder
+//
+//	Author : Igor Janos
+//
+//-----------------------------------------------------------------------------
+#include "stdafx.h"
+
+#include "..\resource.h"
+
+
+#define ITEM(x)					GetDlgItem(m_Dlg, x)
+
+void MakeNiceTime(int time_ms, CString &v)
+{
+	int		ms = time_ms%1000;	
+	time_ms -= ms;
+	time_ms /= 1000;
+
+	int		h, m, s;
+	h = time_ms / 3600;		time_ms -= h*3600;
+	m = time_ms / 60;		time_ms -= m*60;
+	s = time_ms;
+
+	v.Format(_T("%.2d:%.2d:%.2d,%.3d"), h, m, s, ms);
+}
+
+
+//-----------------------------------------------------------------------------
+//
+//	CMPCPropertyPage class
+//
+//-----------------------------------------------------------------------------
+
+CUnknown *CMPCPropertyPage::CreateInstance(LPUNKNOWN lpUnk, HRESULT *phr)
+{
+	return new CMPCPropertyPage(lpUnk, phr);
+}
+
+CMPCPropertyPage::CMPCPropertyPage(LPUNKNOWN lpUnk, HRESULT *phr) :
+	CBasePropertyPage(NAME("MPC Property Page"), lpUnk, IDD_PAGE_DECODER, IDS_PAGE_DECODER)
+	//,
+	//demux(NULL)
+{
+}
+
+CMPCPropertyPage::~CMPCPropertyPage()
+{
+}
+
+HRESULT CMPCPropertyPage::OnConnect(IUnknown *pUnknown)
+{
+	// hold a pointer
+	//ASSERT(!demux);
+	//HRESULT hr = pUnknown->QueryInterface(IID_IMusepackSplitter, (void**)&demux);
+	//if (FAILED(hr)) return hr;
+
+	// okej
+	return NOERROR;
+}
+
+HRESULT CMPCPropertyPage::OnDisconnect()
+{
+	//if (demux) { demux->Release(); demux = NULL; }
+	return NOERROR;
+}
+
+HRESULT CMPCPropertyPage::OnActivate()
+{
+	return NOERROR;
+	/*
+	demux->SetPropertyPageWindow(m_Dlg);
+
+	// initialize out controls
+	LVCOLUMN	col;
+	col.mask = LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
+
+	col.pszText = _T("Name");	col.cx = 150;	col.iSubItem = 0;
+	ListView_InsertColumn(ITEM(IDC_LIST_CONTENT), 0, &col);
+
+	col.pszText = _T("Value");	col.cx = 200;	col.iSubItem = 1;
+	ListView_InsertColumn(ITEM(IDC_LIST_CONTENT), 1, &col);
+
+	UpdateList();
+	return NOERROR;
+	*/
+}
+
+HRESULT CMPCPropertyPage::OnDeactivate()
+{
+	//demux->SetPropertyPageWindow(NULL);
+	return NOERROR;
+}
+
+/*
+void CMPCPropertyPage::UpdateList()
+{
+	// first reset everything
+	ListView_DeleteAllItems(ITEM(IDC_LIST_CONTENT));
+
+	// now check for the file
+	MPC_File_Info		info;
+	HRESULT hr = demux->GetFileInfo(&info);
+	if (FAILED(hr)) return ;
+
+	// now fill in the values
+	CString		name, val;
+	LVITEM		i;
+	int			item;
+
+	i.mask = LVIF_TEXT;
+	i.iSubItem = 0;
+
+	// Duration
+	i.pszText = _T("Duration");	i.iItem = 0;
+	MakeNiceTime(info.duration * 1000, val);
+	item = ListView_InsertItem(ITEM(IDC_LIST_CONTENT), &i);
+	ListView_SetItemText(ITEM(IDC_LIST_CONTENT), item, 1, val.GetBuffer());
+
+	// Stream version
+	i.pszText = _T("Stream version");	i.iItem = 1;
+	val.Format(_T("%d"), info.stream_version);
+	item = ListView_InsertItem(ITEM(IDC_LIST_CONTENT), &i);
+	ListView_SetItemText(ITEM(IDC_LIST_CONTENT), item, 1, val.GetBuffer());
+
+	// Stream version
+	i.pszText = _T("Sample rate");	i.iItem = 2;
+	val.Format(_T("%d Hz"), info.sample_rate);
+	item = ListView_InsertItem(ITEM(IDC_LIST_CONTENT), &i);
+	ListView_SetItemText(ITEM(IDC_LIST_CONTENT), item, 1, val.GetBuffer());
+
+	// Channels
+	i.pszText = _T("Channels");	i.iItem = 3;
+	val.Format(_T("%d"), info.channels);
+	item = ListView_InsertItem(ITEM(IDC_LIST_CONTENT), &i);
+	ListView_SetItemText(ITEM(IDC_LIST_CONTENT), item, 1, val.GetBuffer());
+
+	if (info.stream_version == 8) {
+
+		// Channels
+		i.pszText = _T("Frames per packet");	i.iItem = 4;
+		val.Format(_T("%d"), info.block_frames);
+		item = ListView_InsertItem(ITEM(IDC_LIST_CONTENT), &i);
+		ListView_SetItemText(ITEM(IDC_LIST_CONTENT), item, 1, val.GetBuffer());
+
+	}
+}
+*/
+
+INT_PTR CMPCPropertyPage::OnReceiveMessage(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
+{
+	switch (uMsg) {
+	case WM_UPDATE_VISUALS:	break; //		UpdateList(); break;
+	}
+	return __super::OnReceiveMessage(hwnd, uMsg, wParam, lParam);
+}
+
Index: /dsfilters/dec_mpc/src/mpc_prop.h
===================================================================
--- /dsfilters/dec_mpc/src/mpc_prop.h	(revision 370)
+++ /dsfilters/dec_mpc/src/mpc_prop.h	(revision 370)
@@ -0,0 +1,40 @@
+//-----------------------------------------------------------------------------
+//
+//	Musepack Decoder
+//
+//	Author : Igor Janos
+//
+//-----------------------------------------------------------------------------
+#pragma once
+
+
+#define WM_UPDATE_VISUALS		(WM_USER + 1003)
+
+//-----------------------------------------------------------------------------
+//
+//	CMPCPropertyPage class
+//
+//-----------------------------------------------------------------------------
+class CMPCPropertyPage : public CBasePropertyPage
+{
+public:
+
+	//IMusepackSplitter		*demux;
+	//void UpdateList();
+
+public:
+	CMPCPropertyPage(LPUNKNOWN lpUnk, HRESULT *phr);
+	virtual ~CMPCPropertyPage();
+	static CUnknown *WINAPI CreateInstance(LPUNKNOWN lpUnk, HRESULT *phr);
+
+	// CBasePropertyPage
+	HRESULT OnConnect(IUnknown *pUnknown);
+	HRESULT OnDisconnect();
+	HRESULT OnActivate();
+	HRESULT OnDeactivate();
+
+	// message
+	INT_PTR OnReceiveMessage(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
+};
+
+
Index: /dsfilters/dec_mpc/src/mpc_reg.cpp
===================================================================
--- /dsfilters/dec_mpc/src/mpc_reg.cpp	(revision 369)
+++ /dsfilters/dec_mpc/src/mpc_reg.cpp	(revision 370)
@@ -71,5 +71,5 @@
 				L"MONOGRAM Musepack Decoder",
 				&CLSID_MusepackDecoder,
-				NULL, //CMPCDemux::CreateInstance, 
+				CMPCDecoder::CreateInstance, 
 				NULL,
 				&sudMPCDecoder 
@@ -78,5 +78,5 @@
 				L"MONOGRAM Musepack Decoder",
 				&CLSID_MusepackDecoderPage,
-				NULL, //CMPCPropertyPage::CreateInstance
+				CMPCPropertyPage::CreateInstance
 			}
 		};
Index: /dsfilters/dec_mpc/src/stdafx.h
===================================================================
--- /dsfilters/dec_mpc/src/stdafx.h	(revision 369)
+++ /dsfilters/dec_mpc/src/stdafx.h	(revision 370)
@@ -57,5 +57,5 @@
 //#include "mpc_file.h"
 //#include "mpc_pin.h"
-//#include "mpc_filter.h"
-//#include "mpc_prop.h"
+#include "mpc_filter.h"
+#include "mpc_prop.h"
 
