Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-cw
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-cw
Commits
c567d1e4
Commit
c567d1e4
authored
Jan 12, 2011
by
Michael Stefaniuc
Committed by
Alexandre Julliard
Jan 12, 2011
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
avifil32: Avoid the forward declaration of the IAVIStream methods.
parent
1f8e505d
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
79 additions
and
98 deletions
+79
-98
acmstream.c
dlls/avifil32/acmstream.c
+79
-98
No files found.
dlls/avifil32/acmstream.c
View file @
c567d1e4
...
...
@@ -36,38 +36,6 @@ WINE_DEFAULT_DEBUG_CHANNEL(avifile);
/***********************************************************************/
static
HRESULT
WINAPI
ACMStream_fnQueryInterface
(
IAVIStream
*
iface
,
REFIID
refiid
,
LPVOID
*
obj
);
static
ULONG
WINAPI
ACMStream_fnAddRef
(
IAVIStream
*
iface
);
static
ULONG
WINAPI
ACMStream_fnRelease
(
IAVIStream
*
iface
);
static
HRESULT
WINAPI
ACMStream_fnCreate
(
IAVIStream
*
iface
,
LPARAM
lParam1
,
LPARAM
lParam2
);
static
HRESULT
WINAPI
ACMStream_fnInfo
(
IAVIStream
*
iface
,
AVISTREAMINFOW
*
psi
,
LONG
size
);
static
LONG
WINAPI
ACMStream_fnFindSample
(
IAVIStream
*
iface
,
LONG
pos
,
LONG
flags
);
static
HRESULT
WINAPI
ACMStream_fnReadFormat
(
IAVIStream
*
iface
,
LONG
pos
,
LPVOID
format
,
LONG
*
formatsize
);
static
HRESULT
WINAPI
ACMStream_fnSetFormat
(
IAVIStream
*
iface
,
LONG
pos
,
LPVOID
format
,
LONG
formatsize
);
static
HRESULT
WINAPI
ACMStream_fnRead
(
IAVIStream
*
iface
,
LONG
start
,
LONG
samples
,
LPVOID
buffer
,
LONG
buffersize
,
LONG
*
bytesread
,
LONG
*
samplesread
);
static
HRESULT
WINAPI
ACMStream_fnWrite
(
IAVIStream
*
iface
,
LONG
start
,
LONG
samples
,
LPVOID
buffer
,
LONG
buffersize
,
DWORD
flags
,
LONG
*
sampwritten
,
LONG
*
byteswritten
);
static
HRESULT
WINAPI
ACMStream_fnDelete
(
IAVIStream
*
iface
,
LONG
start
,
LONG
samples
);
static
HRESULT
WINAPI
ACMStream_fnReadData
(
IAVIStream
*
iface
,
DWORD
fcc
,
LPVOID
lp
,
LONG
*
lpread
);
static
HRESULT
WINAPI
ACMStream_fnWriteData
(
IAVIStream
*
iface
,
DWORD
fcc
,
LPVOID
lp
,
LONG
size
);
static
HRESULT
WINAPI
ACMStream_fnSetInfo
(
IAVIStream
*
iface
,
AVISTREAMINFOW
*
info
,
LONG
infolen
);
static
const
struct
IAVIStreamVtbl
iacmst
=
{
ACMStream_fnQueryInterface
,
ACMStream_fnAddRef
,
ACMStream_fnRelease
,
ACMStream_fnCreate
,
ACMStream_fnInfo
,
ACMStream_fnFindSample
,
ACMStream_fnReadFormat
,
ACMStream_fnSetFormat
,
ACMStream_fnRead
,
ACMStream_fnWrite
,
ACMStream_fnDelete
,
ACMStream_fnReadData
,
ACMStream_fnWriteData
,
ACMStream_fnSetInfo
};
typedef
struct
_IAVIStreamImpl
{
/* IUnknown stuff */
IAVIStream
IAVIStream_iface
;
...
...
@@ -102,28 +70,63 @@ typedef struct _IAVIStreamImpl {
&__bytes, ACM_STREAMSIZEF_DESTINATION); \
*(a) = __bytes / This->lpInFormat->nBlockAlign; } while(0)
static
HRESULT
AVIFILE_OpenCompressor
(
IAVIStreamImpl
*
This
);
HRESULT
AVIFILE_CreateACMStream
(
REFIID
riid
,
LPVOID
*
ppv
)
static
HRESULT
AVIFILE_OpenCompressor
(
IAVIStreamImpl
*
This
)
{
IAVIStreamImpl
*
pstream
;
HRESULT
hr
;
HRESULT
hr
;
assert
(
riid
!=
NULL
&&
ppv
!=
NULL
);
/* pre-conditions */
assert
(
This
!=
NULL
);
assert
(
This
->
pStream
!=
NULL
);
*
ppv
=
NULL
;
if
(
This
->
has
!=
NULL
)
return
AVIERR_OK
;
pstream
=
HeapAlloc
(
GetProcessHeap
(),
HEAP_ZERO_MEMORY
,
sizeof
(
IAVIStreamImpl
));
if
(
pstream
==
NULL
)
return
AVIERR_MEMORY
;
if
(
This
->
lpInFormat
==
NULL
)
{
/* decode or encode the data from pStream */
hr
=
AVIStreamFormatSize
(
This
->
pStream
,
This
->
sInfo
.
dwStart
,
&
This
->
cbInFormat
);
if
(
FAILED
(
hr
))
return
hr
;
This
->
lpInFormat
=
HeapAlloc
(
GetProcessHeap
(),
0
,
This
->
cbInFormat
);
if
(
This
->
lpInFormat
==
NULL
)
return
AVIERR_MEMORY
;
pstream
->
IAVIStream_iface
.
lpVtbl
=
&
iacmst
;
hr
=
IAVIStream_ReadFormat
(
This
->
pStream
,
This
->
sInfo
.
dwStart
,
This
->
lpInFormat
,
&
This
->
cbInFormat
);
if
(
FAILED
(
hr
))
return
hr
;
hr
=
IAVIStream_QueryInterface
(
&
pstream
->
IAVIStream_iface
,
riid
,
ppv
);
if
(
FAILED
(
hr
))
HeapFree
(
GetProcessHeap
(),
0
,
pstream
);
if
(
This
->
lpOutFormat
==
NULL
)
{
/* we must decode to default format */
This
->
cbOutFormat
=
sizeof
(
PCMWAVEFORMAT
);
This
->
lpOutFormat
=
HeapAlloc
(
GetProcessHeap
(),
0
,
This
->
cbOutFormat
);
if
(
This
->
lpOutFormat
==
NULL
)
return
AVIERR_MEMORY
;
return
hr
;
This
->
lpOutFormat
->
wFormatTag
=
WAVE_FORMAT_PCM
;
if
(
acmFormatSuggest
(
NULL
,
This
->
lpInFormat
,
This
->
lpOutFormat
,
This
->
cbOutFormat
,
ACM_FORMATSUGGESTF_WFORMATTAG
)
!=
S_OK
)
return
AVIERR_NOCOMPRESSOR
;
}
}
else
if
(
This
->
lpOutFormat
==
NULL
)
return
AVIERR_ERROR
;
/* To what should I encode? */
if
(
acmStreamOpen
(
&
This
->
has
,
NULL
,
This
->
lpInFormat
,
This
->
lpOutFormat
,
NULL
,
0
,
0
,
ACM_STREAMOPENF_NONREALTIME
)
!=
S_OK
)
return
AVIERR_NOCOMPRESSOR
;
/* update AVISTREAMINFO structure */
This
->
sInfo
.
dwSampleSize
=
This
->
lpOutFormat
->
nBlockAlign
;
This
->
sInfo
.
dwScale
=
This
->
lpOutFormat
->
nBlockAlign
;
This
->
sInfo
.
dwRate
=
This
->
lpOutFormat
->
nAvgBytesPerSec
;
This
->
sInfo
.
dwQuality
=
(
DWORD
)
ICQUALITY_DEFAULT
;
SetRectEmpty
(
&
This
->
sInfo
.
rcFrame
);
/* convert positions and sizes to output format */
CONVERT_STREAM_to_THIS
(
&
This
->
sInfo
.
dwStart
);
CONVERT_STREAM_to_THIS
(
&
This
->
sInfo
.
dwLength
);
CONVERT_STREAM_to_THIS
(
&
This
->
sInfo
.
dwSuggestedBufferSize
);
return
AVIERR_OK
;
}
static
inline
IAVIStreamImpl
*
impl_from_IAVIStream
(
IAVIStream
*
iface
)
...
...
@@ -681,63 +684,41 @@ static HRESULT WINAPI ACMStream_fnSetInfo(IAVIStream *iface,
return
E_FAIL
;
}
/***********************************************************************/
static
const
struct
IAVIStreamVtbl
iacmst
=
{
ACMStream_fnQueryInterface
,
ACMStream_fnAddRef
,
ACMStream_fnRelease
,
ACMStream_fnCreate
,
ACMStream_fnInfo
,
ACMStream_fnFindSample
,
ACMStream_fnReadFormat
,
ACMStream_fnSetFormat
,
ACMStream_fnRead
,
ACMStream_fnWrite
,
ACMStream_fnDelete
,
ACMStream_fnReadData
,
ACMStream_fnWriteData
,
ACMStream_fnSetInfo
};
static
HRESULT
AVIFILE_OpenCompressor
(
IAVIStreamImpl
*
This
)
HRESULT
AVIFILE_CreateACMStream
(
REFIID
riid
,
LPVOID
*
ppv
)
{
HRESULT
hr
;
/* pre-conditions */
assert
(
This
!=
NULL
);
assert
(
This
->
pStream
!=
NULL
);
if
(
This
->
has
!=
NULL
)
return
AVIERR_OK
;
if
(
This
->
lpInFormat
==
NULL
)
{
/* decode or encode the data from pStream */
hr
=
AVIStreamFormatSize
(
This
->
pStream
,
This
->
sInfo
.
dwStart
,
&
This
->
cbInFormat
);
if
(
FAILED
(
hr
))
return
hr
;
This
->
lpInFormat
=
HeapAlloc
(
GetProcessHeap
(),
0
,
This
->
cbInFormat
);
if
(
This
->
lpInFormat
==
NULL
)
return
AVIERR_MEMORY
;
hr
=
IAVIStream_ReadFormat
(
This
->
pStream
,
This
->
sInfo
.
dwStart
,
This
->
lpInFormat
,
&
This
->
cbInFormat
);
if
(
FAILED
(
hr
))
return
hr
;
IAVIStreamImpl
*
pstream
;
HRESULT
hr
;
if
(
This
->
lpOutFormat
==
NULL
)
{
/* we must decode to default format */
This
->
cbOutFormat
=
sizeof
(
PCMWAVEFORMAT
);
This
->
lpOutFormat
=
HeapAlloc
(
GetProcessHeap
(),
0
,
This
->
cbOutFormat
);
if
(
This
->
lpOutFormat
==
NULL
)
return
AVIERR_MEMORY
;
assert
(
riid
!=
NULL
&&
ppv
!=
NULL
);
This
->
lpOutFormat
->
wFormatTag
=
WAVE_FORMAT_PCM
;
if
(
acmFormatSuggest
(
NULL
,
This
->
lpInFormat
,
This
->
lpOutFormat
,
This
->
cbOutFormat
,
ACM_FORMATSUGGESTF_WFORMATTAG
)
!=
S_OK
)
return
AVIERR_NOCOMPRESSOR
;
}
}
else
if
(
This
->
lpOutFormat
==
NULL
)
return
AVIERR_ERROR
;
/* To what should I encode? */
*
ppv
=
NULL
;
if
(
acmStreamOpen
(
&
This
->
has
,
NULL
,
This
->
lpInFormat
,
This
->
lpOutFormat
,
NULL
,
0
,
0
,
ACM_STREAMOPENF_NONREALTIME
)
!=
S_OK
)
return
AVIERR_
NOCOMPRESSOR
;
pstream
=
HeapAlloc
(
GetProcessHeap
(),
HEAP_ZERO_MEMORY
,
sizeof
(
IAVIStreamImpl
));
if
(
pstream
==
NULL
)
return
AVIERR_
MEMORY
;
/* update AVISTREAMINFO structure */
This
->
sInfo
.
dwSampleSize
=
This
->
lpOutFormat
->
nBlockAlign
;
This
->
sInfo
.
dwScale
=
This
->
lpOutFormat
->
nBlockAlign
;
This
->
sInfo
.
dwRate
=
This
->
lpOutFormat
->
nAvgBytesPerSec
;
This
->
sInfo
.
dwQuality
=
(
DWORD
)
ICQUALITY_DEFAULT
;
SetRectEmpty
(
&
This
->
sInfo
.
rcFrame
);
pstream
->
IAVIStream_iface
.
lpVtbl
=
&
iacmst
;
/* convert positions and sizes to output format */
CONVERT_STREAM_to_THIS
(
&
This
->
sInfo
.
dwStart
);
CONVERT_STREAM_to_THIS
(
&
This
->
sInfo
.
dwLength
);
CONVERT_STREAM_to_THIS
(
&
This
->
sInfo
.
dwSuggestedBufferSize
);
hr
=
IAVIStream_QueryInterface
(
&
pstream
->
IAVIStream_iface
,
riid
,
ppv
);
if
(
FAILED
(
hr
))
HeapFree
(
GetProcessHeap
(),
0
,
pstream
);
return
AVIERR_OK
;
return
hr
;
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment