104{
109 LONG cbDstStream, cbSrcStream;
115
116
117
118
119
120 if (!
This->source.pMemInputPin)
121 {
122 WARN(
"Source is not connected, returning VFW_E_NOT_CONNECTED.\n");
124 }
125
127
128 if (
This->filter.state == State_Stopped)
130
131 if (
This->sink.flushing)
133
134 hr = IMediaSample_GetPointer(pSample, &pbSrcStream);
136 {
137 ERR(
"Failed to get input buffer pointer, hr %#lx.\n",
hr);
139 }
140
141 cbSrcStream = IMediaSample_GetActualDataLength(pSample);
142
143
144 This->pBihIn->biSizeImage = cbSrcStream;
145
147 {
148 ERR(
"Failed to get sample, hr %#lx.\n",
hr);
150 }
151
152 hr = IMediaSample_SetActualDataLength(pOutSample, 0);
154
155 hr = IMediaSample_GetPointer(pOutSample, &pbDstStream);
157 ERR(
"Failed to get output buffer pointer, hr %#lx.\n",
hr);
158 IMediaSample_Release(pOutSample);
160 }
161 cbDstStream = IMediaSample_GetSize(pOutSample);
162 if (cbDstStream < source_format->bmiHeader.biSizeImage)
163 {
165 IMediaSample_Release(pOutSample);
167 }
168
169 if (IMediaSample_IsPreroll(pSample) ==
S_OK)
171 if (IMediaSample_IsSyncPoint(pSample) !=
S_OK)
173 hr = IMediaSample_GetTime(pSample, &tStart, &tStop);
178
181 ERR(
"Failed to decompress, error %Id.\n",
res);
182
183
185 IMediaSample_Release(pOutSample);
187 }
188
190
191 IMediaSample_SetPreroll(pOutSample, (IMediaSample_IsPreroll(pSample) ==
S_OK));
192 IMediaSample_SetDiscontinuity(pOutSample, (IMediaSample_IsDiscontinuity(pSample) ==
S_OK));
193 IMediaSample_SetSyncPoint(pOutSample, (IMediaSample_IsSyncPoint(pSample) ==
S_OK));
194
196 IMediaSample_SetTime(pOutSample, &tStart, &tStop);
198 IMediaSample_SetTime(pOutSample, &tStart,
NULL);
199 else
200 IMediaSample_SetTime(pOutSample,
NULL,
NULL);
201
202 hr = IMemInputPin_Receive(
This->source.pMemInputPin, pOutSample);
204 ERR(
"Failed to send sample, hr %#lx.\n",
hr);
205
206 IMediaSample_Release(pOutSample);
208}
static int AVIDec_DropSample(struct avi_decompressor *This, REFERENCE_TIME tStart)
DWORD VFWAPIV ICDecompress(HIC hic, DWORD dwFlags, LPBITMAPINFOHEADER lpbiFormat, LPVOID lpData, LPBITMAPINFOHEADER lpbi, LPVOID lpBits)
#define ICDECOMPRESS_NOTKEYFRAME
#define ICDECOMPRESS_PREROLL
#define ICDECOMPRESS_HURRYUP
#define VFW_S_NO_STOP_TIME
#define VFW_E_WRONG_STATE
#define VFW_E_NOT_CONNECTED