annotate loader/dshow/cmediasample.c @ 713:9355b2ae634e

avifile-0.6-CVS merge
author arpi_esp
date Sun, 06 May 2001 21:43:45 +0000
parents a4d3c83eeb52
children da26060c81ef
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
168
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
1 #include <stdio.h>
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
2 #include <string.h>
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
3 #include "cmediasample.h"
170
a4d3c83eeb52 small cosmetic to avoid gcc warnings
arpi_esp
parents: 168
diff changeset
4 //#define E_NOTIMPL 0x80004003
168
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
5 CMediaSample::CMediaSample(IMemAllocator* allocator, long _size):refcount(0)
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
6 {
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
7 vt=new IMediaSample_vt;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
8
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
9 vt->QueryInterface=QueryInterface;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
10 vt->AddRef=AddRef;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
11 vt->Release=Release;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
12 vt->GetPointer=GetPointer ;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
13 vt->GetSize=GetSize ;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
14 vt->GetTime=GetTime ;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
15 vt->SetTime=SetTime ;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
16 vt->IsSyncPoint=IsSyncPoint ;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
17 vt->SetSyncPoint=SetSyncPoint;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
18 vt->IsPreroll=IsPreroll;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
19 vt->SetPreroll=SetPreroll;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
20 vt->GetActualDataLength=GetActualDataLength;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
21 vt->SetActualDataLength=SetActualDataLength;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
22 vt->GetMediaType=GetMediaType;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
23 vt->SetMediaType=SetMediaType;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
24 vt->IsDiscontinuity=IsDiscontinuity;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
25 vt->SetDiscontinuity=SetDiscontinuity;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
26 vt->GetMediaTime=GetMediaTime;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
27 vt->SetMediaTime=SetMediaTime;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
28
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
29 all=allocator;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
30 size=_size;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
31 actual_size=0;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
32 media_type.pbFormat=0;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
33 isPreroll=0;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
34 type_valid=0;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
35 block=new char[size];
713
9355b2ae634e avifile-0.6-CVS merge
arpi_esp
parents: 170
diff changeset
36 old_block=0;
168
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
37 Debug printf("%x: Creating media sample with size %d, buffer 0x%x\n", this, _size, block);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
38 }
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
39 CMediaSample::~CMediaSample()
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
40 {
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
41 Debug printf("%x: CMediaSample::~CMediaSample() called\n", this);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
42 delete vt;
713
9355b2ae634e avifile-0.6-CVS merge
arpi_esp
parents: 170
diff changeset
43 if(old_block)
9355b2ae634e avifile-0.6-CVS merge
arpi_esp
parents: 170
diff changeset
44 block=old_block;
168
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
45 delete[] block;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
46 if(media_type.pbFormat)
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
47 CoTaskMemFree(media_type.pbFormat);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
48 }
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
49
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
50 long STDCALL CMediaSample::QueryInterface (
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
51 IUnknown * This,
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
52 /* [in] */ IID* iid,
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
53 /* [iid_is][out] */ void **ppv)
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
54 {
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
55 Debug printf("CMediaSample::QueryInterface() called\n");
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
56 if(!ppv)return 0x80004003;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
57 if(!memcmp(iid, &IID_IUnknown, 16))
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
58 {
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
59 *ppv=(void*)This;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
60 This->vt->AddRef(This);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
61 return 0;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
62 }
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
63 if(!memcmp(iid, &IID_IMediaSample, 16))
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
64 {
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
65 *ppv=(void*)This;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
66 This->vt->AddRef(This);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
67 return 0;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
68 }
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
69 return 0x80004002;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
70 }
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
71
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
72 long STDCALL CMediaSample::AddRef (
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
73 IUnknown * This)
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
74 {
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
75 Debug printf("CMediaSample::AddRef() called\n");
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
76 ((CMediaSample*)This)->refcount++;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
77 return 0;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
78 }
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
79
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
80 long STDCALL CMediaSample::Release (
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
81 IUnknown * This)
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
82 {
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
83 Debug printf("%x: CMediaSample::Release() called, new refcount %d\n", This,
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
84 ((CMediaSample*)This)->refcount-1);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
85 CMediaSample* parent=(CMediaSample*)This;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
86 if(--((CMediaSample*)This)->refcount==0)
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
87 parent->
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
88 all->
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
89 vt->
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
90 ReleaseBuffer(
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
91 (IMemAllocator*)(parent->all),
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
92 (IMediaSample*)This);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
93 return 0;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
94 }
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
95 HRESULT STDCALL CMediaSample::GetPointer (
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
96 IMediaSample * This,
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
97 /* [out] */ BYTE **ppBuffer)
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
98 {
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
99 Debug printf("%x: CMediaSample::GetPointer() called\n", This);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
100 if(!ppBuffer)return 0x80004003;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
101 *ppBuffer=(BYTE *)((CMediaSample*)This)->block;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
102 return 0;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
103 }
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
104
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
105 long STDCALL CMediaSample::GetSize (
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
106 IMediaSample * This)
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
107 {
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
108 Debug printf("%x: CMediaSample::GetSize() called -> %d\n", This, ((CMediaSample*)This)->size);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
109 return ((CMediaSample*)This)->size;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
110 }
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
111
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
112 HRESULT STDCALL CMediaSample::GetTime (
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
113 IMediaSample * This,
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
114 /* [out] */ REFERENCE_TIME *pTimeStart,
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
115 /* [out] */ REFERENCE_TIME *pTimeEnd)
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
116 {
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
117 Debug printf("%x: CMediaSample::GetTime() called\n", This);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
118 return E_NOTIMPL;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
119 }
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
120
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
121 HRESULT STDCALL CMediaSample::SetTime (
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
122 IMediaSample * This,
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
123 /* [in] */ REFERENCE_TIME *pTimeStart,
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
124 /* [in] */ REFERENCE_TIME *pTimeEnd)
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
125 {
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
126 Debug printf("%x: CMediaSample::SetTime() called\n", This);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
127 return E_NOTIMPL;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
128 }
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
129
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
130 HRESULT STDCALL CMediaSample::IsSyncPoint (
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
131 IMediaSample * This)
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
132 {
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
133 Debug printf("%x: CMediaSample::IsSyncPoint() called\n", This);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
134 if(((CMediaSample*)This)->isSyncPoint)return 0;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
135 return 1;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
136 }
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
137
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
138 HRESULT STDCALL CMediaSample::SetSyncPoint (
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
139 IMediaSample * This,
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
140 long bIsSyncPoint)
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
141 {
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
142 Debug printf("%x: CMediaSample::SetSyncPoint() called\n", This);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
143 ((CMediaSample*)This)->isSyncPoint=bIsSyncPoint;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
144 return 0;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
145 }
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
146
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
147 HRESULT STDCALL CMediaSample::IsPreroll (
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
148 IMediaSample * This)
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
149 {
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
150 Debug printf("%x: CMediaSample::IsPreroll() called\n", This);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
151 if(((CMediaSample*)This)->isPreroll==0)
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
152 return 1;//S_FALSE
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
153 else
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
154 return 0;//S_OK
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
155 }
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
156
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
157 HRESULT STDCALL CMediaSample::SetPreroll (
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
158 IMediaSample * This,
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
159 long bIsPreroll)
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
160 {
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
161 Debug printf("%x: CMediaSample::SetPreroll() called\n", This);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
162 ((CMediaSample*)This)->isPreroll=bIsPreroll;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
163 return 0;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
164 }
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
165
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
166 long STDCALL CMediaSample::GetActualDataLength (
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
167 IMediaSample * This)
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
168 {
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
169 Debug printf("%x: CMediaSample::GetActualDataLength() called -> %d\n", This, ((CMediaSample*)This)->actual_size);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
170 return ((CMediaSample*)This)->actual_size;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
171 }
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
172
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
173 HRESULT STDCALL CMediaSample::SetActualDataLength (
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
174 IMediaSample * This,
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
175 long __MIDL_0010)
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
176 {
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
177 Debug printf("%x: CMediaSample::SetActualDataLength(%d) called\n", This, __MIDL_0010);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
178 if(__MIDL_0010>((CMediaSample*)This)->size)
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
179 {
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
180 printf("%x: ERROR: CMediaSample buffer overflow\n", This);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
181 }
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
182 ((CMediaSample*)This)->actual_size=__MIDL_0010;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
183 return 0;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
184 }
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
185
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
186 HRESULT STDCALL CMediaSample::GetMediaType (
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
187 IMediaSample * This,
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
188 AM_MEDIA_TYPE **ppMediaType)
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
189 {
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
190 Debug printf("%x: CMediaSample::GetMediaType() called\n", This);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
191 if(!ppMediaType)
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
192 return 0x80004003;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
193 if(!((CMediaSample*)This)->type_valid)
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
194 {
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
195 *ppMediaType=0;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
196 return 1;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
197 }
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
198 AM_MEDIA_TYPE& t=((CMediaSample*)This)->media_type;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
199 // if(t.pbFormat)CoTaskMemFree(t.pbFormat);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
200 (*ppMediaType)=(AM_MEDIA_TYPE*)CoTaskMemAlloc(sizeof(AM_MEDIA_TYPE));
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
201 memcpy(*ppMediaType, &t, sizeof(AM_MEDIA_TYPE));
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
202 (*ppMediaType)->pbFormat=(char*)CoTaskMemAlloc(t.cbFormat);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
203 memcpy((*ppMediaType)->pbFormat, t.pbFormat, t.cbFormat);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
204 // *ppMediaType=0; //media type was not changed
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
205 return 0;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
206 }
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
207
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
208 HRESULT STDCALL CMediaSample::SetMediaType (
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
209 IMediaSample * This,
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
210 AM_MEDIA_TYPE *pMediaType)
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
211 {
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
212 Debug printf("%x: CMediaSample::SetMediaType() called\n", This);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
213 if(!pMediaType)return 0x80004003;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
214 AM_MEDIA_TYPE& t=((CMediaSample*)This)->media_type;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
215 if(t.pbFormat)CoTaskMemFree(t.pbFormat);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
216 t=*pMediaType;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
217 t.pbFormat=(char*)CoTaskMemAlloc(t.cbFormat);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
218 memcpy(t.pbFormat, pMediaType->pbFormat, t.cbFormat);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
219 ((CMediaSample*)This)->type_valid=1;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
220 return 0;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
221 }
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
222
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
223 HRESULT STDCALL CMediaSample::IsDiscontinuity (
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
224 IMediaSample * This)
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
225 {
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
226 Debug printf("%x: CMediaSample::IsDiscontinuity() called\n", This);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
227 return 1;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
228 }
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
229
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
230 HRESULT STDCALL CMediaSample::SetDiscontinuity (
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
231 IMediaSample * This,
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
232 long bDiscontinuity)
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
233 {
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
234 Debug printf("%x: CMediaSample::SetDiscontinuity() called\n", This);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
235 return E_NOTIMPL;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
236 }
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
237
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
238 HRESULT STDCALL CMediaSample::GetMediaTime (
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
239 IMediaSample * This,
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
240 /* [out] */ LONGLONG *pTimeStart,
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
241 /* [out] */ LONGLONG *pTimeEnd)
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
242 {
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
243 Debug printf("%x: CMediaSample::GetMediaTime() called\n", This);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
244 return E_NOTIMPL;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
245 }
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
246
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
247 HRESULT STDCALL CMediaSample::SetMediaTime (
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
248 IMediaSample * This,
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
249 /* [in] */ LONGLONG *pTimeStart,
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
250 /* [in] */ LONGLONG *pTimeEnd)
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
251 {
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
252 Debug printf("%x: CMediaSample::SetMediaTime() called\n", This);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
253 return E_NOTIMPL;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
254 }