1
0
mirror of https://github.com/mpv-player/mpv synced 2024-12-16 20:05:07 +00:00
mpv/loader/dshow/allocator.h
arpi_esp c8b40d3bd0 avifile-0.6-CVS merge
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@714 b3059339-0415-0410-9bf9-f77b7e298cf2
2001-05-06 21:43:45 +00:00

60 lines
1.5 KiB
C++

#ifndef ALLOCATOR_H
#define ALLOCATOR_H
#include "interfaces.h"
#include "cmediasample.h"
#include <list>
#include "iunk.h"
#include "default.h"
class MemAllocator: public IMemAllocator
{
ALLOCATOR_PROPERTIES props;
std::list<CMediaSample*> used_list;
std::list<CMediaSample*> free_list;
char* new_pointer;
CMediaSample* modified_sample;
static GUID interfaces[];
DECLARE_IUNKNOWN(MemAllocator)
public:
MemAllocator();
~MemAllocator(){delete vt;}
static long CreateAllocator(GUID* clsid, GUID* iid, void** ppv);
void SetPointer(char* pointer) { new_pointer=pointer; }
void ResetPointer()
{
if(modified_sample)
{
modified_sample->ResetPointer();
modified_sample=0;
}
}
static HRESULT STDCALL SetProperties (
IMemAllocator * This,
/* [in] */ ALLOCATOR_PROPERTIES *pRequest,
/* [out] */ ALLOCATOR_PROPERTIES *pActual);
static HRESULT STDCALL GetProperties (
IMemAllocator * This,
/* [out] */ ALLOCATOR_PROPERTIES *pProps);
static HRESULT STDCALL Commit (
IMemAllocator * This);
static HRESULT STDCALL Decommit (
IMemAllocator * This);
static HRESULT STDCALL GetBuffer (
IMemAllocator * This,
/* [out] */ IMediaSample **ppBuffer,
/* [in] */ REFERENCE_TIME *pStartTime,
/* [in] */ REFERENCE_TIME *pEndTime,
/* [in] */ DWORD dwFlags);
static HRESULT STDCALL ReleaseBuffer (
IMemAllocator * This,
/* [in] */ IMediaSample *pBuffer);
};
#endif