]> git.vomp.tv Git - vompclient-marten.git/blob - dsallocator.h
PES Packet object: dynamic sizing
[vompclient-marten.git] / dsallocator.h
1 /*
2     Copyright 2004-2005 Chris Tallon
3
4     This file is part of VOMP.
5
6     VOMP is free software; you can redistribute it and/or modify
7     it under the terms of the GNU General Public License as published by
8     the Free Software Foundation; either version 2 of the License, or
9     (at your option) any later version.
10
11     VOMP is distributed in the hope that it will be useful,
12     but WITHOUT ANY WARRANTY; without even the implied warranty of
13     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14     GNU General Public License for more details.
15
16     You should have received a copy of the GNU General Public License
17     along with VOMP; if not, write to the Free Software
18     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
19 */
20 #ifndef DSALLOCATOR_H
21 #define DSALLOCATOR_H
22
23 #include <vector>
24 using namespace std;
25 #include <winsock2.h>
26
27 #include <d3d9.h>
28 #include <dshow.h> 
29 #include <vmr9.h>
30 #include "mutex.h"
31
32
33
34
35 class DsAllocator: public IVMRSurfaceAllocator9, IVMRImagePresenter9,Mutex {
36 public:
37         DsAllocator();
38         virtual ~DsAllocator();
39
40         virtual HRESULT STDMETHODCALLTYPE StartPresenting(DWORD_PTR userid);
41         virtual HRESULT STDMETHODCALLTYPE StopPresenting(DWORD_PTR userid);
42         virtual HRESULT STDMETHODCALLTYPE PresentImage(DWORD_PTR userid,VMR9PresentationInfo* presinf);
43
44         virtual HRESULT STDMETHODCALLTYPE InitializeDevice(DWORD_PTR userid,
45                 VMR9AllocationInfo* allocinf,DWORD* numbuf);
46         virtual HRESULT STDMETHODCALLTYPE TerminateDevice(DWORD_PTR userid); 
47         virtual HRESULT STDMETHODCALLTYPE GetSurface(DWORD_PTR userid,DWORD surfindex,DWORD surfflags, IDirect3DSurface9** surf);
48         virtual HRESULT STDMETHODCALLTYPE AdviseNotify(IVMRSurfaceAllocatorNotify9* allnoty);
49         
50
51         virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID refiid,void ** obj);
52         virtual ULONG STDMETHODCALLTYPE AddRef();
53         virtual ULONG STDMETHODCALLTYPE Release();
54
55     void LostDevice(IDirect3DDevice9 *d3ddev, IDirect3D9* d3d);
56
57 protected:
58         
59         vector<IDirect3DSurface9* > surfaces;
60         //CCritSec objCritSec;
61         IVMRSurfaceAllocatorNotify9* surfallocnotify;
62         void CleanupSurfaces();
63         LONG refcount;
64
65
66 };
67
68
69
70
71
72
73
74 #endif