Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
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-winehq
Commits
8aca3799
Commit
8aca3799
authored
Aug 11, 2022
by
Nikolay Sivov
Committed by
Alexandre Julliard
Aug 11, 2022
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
mf: Add archive sink creation exported functions.
Signed-off-by:
Nikolay Sivov
<
nsivov@codeweavers.com
>
parent
857ec56f
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
158 additions
and
3 deletions
+158
-3
main.c
dlls/mf/main.c
+85
-0
mf.spec
dlls/mf/mf.spec
+6
-3
Makefile.in
include/Makefile.in
+1
-0
mfidl.idl
include/mfidl.idl
+11
-0
mfinternal.idl
include/wine/mfinternal.idl
+54
-0
mfuuid.c
libs/mfuuid/mfuuid.c
+1
-0
No files found.
dlls/mf/main.c
View file @
8aca3799
...
...
@@ -30,6 +30,7 @@
#include "wine/debug.h"
#include "wine/list.h"
#include "wine/mfinternal.h"
WINE_DEFAULT_DEBUG_CHANNEL
(
mfplat
);
...
...
@@ -1383,6 +1384,9 @@ static const IMFMediaTypeHandlerVtbl simple_type_handler_vtbl =
simple_type_handler_GetMajorType
,
};
/*******************************************************************************
* MFCreateSimpleTypeHandler (mf.@)
*/
HRESULT
WINAPI
MFCreateSimpleTypeHandler
(
IMFMediaTypeHandler
**
handler
)
{
struct
simple_type_handler
*
object
;
...
...
@@ -1401,6 +1405,9 @@ HRESULT WINAPI MFCreateSimpleTypeHandler(IMFMediaTypeHandler **handler)
return
S_OK
;
}
/*******************************************************************************
* MFRequireProtectedEnvironment (mf.@)
*/
HRESULT
WINAPI
MFRequireProtectedEnvironment
(
IMFPresentationDescriptor
*
pd
)
{
BOOL
selected
,
protected
=
FALSE
;
...
...
@@ -1419,3 +1426,81 @@ HRESULT WINAPI MFRequireProtectedEnvironment(IMFPresentationDescriptor *pd)
return
protected
?
S_OK
:
S_FALSE
;
}
static
HRESULT
create_media_sink
(
const
CLSID
*
clsid
,
IMFByteStream
*
stream
,
IMFMediaType
*
video_type
,
IMFMediaType
*
audio_type
,
IMFMediaSink
**
sink
)
{
IMFSinkClassFactory
*
factory
;
HRESULT
hr
;
if
(
FAILED
(
hr
=
CoCreateInstance
(
clsid
,
NULL
,
CLSCTX_INPROC_SERVER
,
&
IID_IMFSinkClassFactory
,
(
void
**
)
&
factory
)))
return
hr
;
hr
=
IMFSinkClassFactory_CreateMediaSink
(
factory
,
stream
,
video_type
,
audio_type
,
sink
);
IMFSinkClassFactory_Release
(
factory
);
return
hr
;
}
/*******************************************************************************
* MFCreate3GPMediaSink (mf.@)
*/
HRESULT
WINAPI
MFCreate3GPMediaSink
(
IMFByteStream
*
stream
,
IMFMediaType
*
video_type
,
IMFMediaType
*
audio_type
,
IMFMediaSink
**
sink
)
{
TRACE
(
"%p, %p, %p, %p.
\n
"
,
stream
,
video_type
,
audio_type
,
sink
);
return
create_media_sink
(
&
CLSID_MF3GPSinkClassFactory
,
stream
,
video_type
,
audio_type
,
sink
);
}
/*******************************************************************************
* MFCreateAC3MediaSink (mf.@)
*/
HRESULT
WINAPI
MFCreateAC3MediaSink
(
IMFByteStream
*
stream
,
IMFMediaType
*
audio_type
,
IMFMediaSink
**
sink
)
{
TRACE
(
"%p, %p, %p.
\n
"
,
stream
,
audio_type
,
sink
);
return
create_media_sink
(
&
CLSID_MFAC3SinkClassFactory
,
stream
,
NULL
,
audio_type
,
sink
);
}
/*******************************************************************************
* MFCreateADTSMediaSink (mf.@)
*/
HRESULT
WINAPI
MFCreateADTSMediaSink
(
IMFByteStream
*
stream
,
IMFMediaType
*
audio_type
,
IMFMediaSink
**
sink
)
{
TRACE
(
"%p, %p, %p.
\n
"
,
stream
,
audio_type
,
sink
);
return
create_media_sink
(
&
CLSID_MFADTSSinkClassFactory
,
stream
,
NULL
,
audio_type
,
sink
);
}
/*******************************************************************************
* MFCreateMP3MediaSink (mf.@)
*/
HRESULT
WINAPI
MFCreateMP3MediaSink
(
IMFByteStream
*
stream
,
IMFMediaSink
**
sink
)
{
TRACE
(
"%p, %p.
\n
"
,
stream
,
sink
);
return
create_media_sink
(
&
CLSID_MFMP3SinkClassFactory
,
stream
,
NULL
,
NULL
,
sink
);
}
/*******************************************************************************
* MFCreateMPEG4MediaSink (mf.@)
*/
HRESULT
WINAPI
MFCreateMPEG4MediaSink
(
IMFByteStream
*
stream
,
IMFMediaType
*
video_type
,
IMFMediaType
*
audio_type
,
IMFMediaSink
**
sink
)
{
TRACE
(
"%p, %p, %p, %p.
\n
"
,
stream
,
video_type
,
audio_type
,
sink
);
return
create_media_sink
(
&
CLSID_MFMPEG4SinkClassFactory
,
stream
,
video_type
,
audio_type
,
sink
);
}
/*******************************************************************************
* MFCreateFMPEG4MediaSink (mf.@)
*/
HRESULT
WINAPI
MFCreateFMPEG4MediaSink
(
IMFByteStream
*
stream
,
IMFMediaType
*
video_type
,
IMFMediaType
*
audio_type
,
IMFMediaSink
**
sink
)
{
TRACE
(
"%p, %p, %p, %p.
\n
"
,
stream
,
video_type
,
audio_type
,
sink
);
return
create_media_sink
(
&
CLSID_MFFMPEG4SinkClassFactory
,
stream
,
video_type
,
audio_type
,
sink
);
}
dlls/mf/mf.spec
View file @
8aca3799
...
...
@@ -7,7 +7,9 @@
@ stdcall -private DllRegisterServer()
@ stdcall -private DllUnregisterServer()
@ stub ExtractPropVariant
@ stub MFCreate3GPMediaSink
@ stdcall MFCreate3GPMediaSink(ptr ptr ptr ptr)
@ stdcall MFCreateAC3MediaSink(ptr ptr ptr)
@ stdcall MFCreateADTSMediaSink(ptr ptr ptr)
@ stub MFCreateASFByteStreamPlugin
@ stub MFCreateASFContentInfo
@ stub MFCreateASFIndexer
...
...
@@ -33,11 +35,12 @@
@ stub MFCreateDrmNetNDSchemePlugin
@ stub MFCreateFileBlockMap
@ stub MFCreateFileSchemePlugin
@ stdcall MFCreateFMPEG4MediaSink(ptr ptr ptr ptr)
@ stub MFCreateHttpSchemePlugin
@ stub MFCreateLPCMByteStreamPlugin
@ stub MFCreateMP3ByteStreamPlugin
@ st
ub MFCreateMP3MediaSink
@ st
ub MFCreateMPEG4MediaSink
@ st
dcall MFCreateMP3MediaSink(ptr ptr)
@ st
dcall MFCreateMPEG4MediaSink(ptr ptr ptr ptr)
@ stub MFCreateMediaProcessor
@ stdcall MFCreateMediaSession(ptr ptr)
@ stub MFCreateNSCByteStreamPlugin
...
...
include/Makefile.in
View file @
8aca3799
...
...
@@ -833,6 +833,7 @@ SOURCES = \
wine/irpcss.idl
\
wine/itss.idl
\
wine/list.h
\
wine/mfinternal.idl
\
wine/mmsystem16.h
\
wine/mscvpdb.h
\
wine/mssign.h
\
...
...
include/mfidl.idl
View file @
8aca3799
...
...
@@ -686,11 +686,22 @@ interface IMFSeekInfo : IUnknown
}
cpp_quote
(
"HRESULT WINAPI CreatePropertyStore(IPropertyStore **store);"
)
cpp_quote
(
"HRESULT WINAPI MFCreate3GPMediaSink(IMFByteStream *stream, IMFMediaType *video_type,"
)
cpp_quote
(
" IMFMediaType *audio_type, IMFMediaSink **sink);"
)
cpp_quote
(
"HRESULT WINAPI MFCreateAC3MediaSink(IMFByteStream *stream, IMFMediaType *audio_type,"
)
cpp_quote
(
" IMFMediaSink **sink);"
)
cpp_quote
(
"HRESULT WINAPI MFCreateADTSMediaSink(IMFByteStream *stream, IMFMediaType *audio_type,"
)
cpp_quote
(
" IMFMediaSink **sink);"
)
cpp_quote
(
"HRESULT WINAPI MFCreateAudioRenderer(IMFAttributes *config, IMFMediaSink **sink);"
)
cpp_quote
(
"HRESULT WINAPI MFCreateAudioRendererActivate(IMFActivate **activate);"
)
cpp_quote
(
"HRESULT WINAPI MFCreateFMPEG4MediaSink(IMFByteStream *stream, IMFMediaType *video_type,"
)
cpp_quote
(
" IMFMediaType *audio_type, IMFMediaSink **sink);"
)
cpp_quote
(
"HRESULT WINAPI MFCreateMediaSession(IMFAttributes *config, IMFMediaSession **session);"
)
cpp_quote
(
"HRESULT WINAPI MFCreateMFByteStreamOnStream(IStream *stream, IMFByteStream **bytestream);"
)
cpp_quote
(
"HRESULT WINAPI MFCreateMFByteStreamOnStreamEx(IUnknown *stream, IMFByteStream **bytestream);"
)
cpp_quote
(
"HRESULT WINAPI MFCreateMP3MediaSink(IMFByteStream *stream, IMFMediaSink **sink);"
)
cpp_quote
(
"HRESULT WINAPI MFCreateMPEG4MediaSink(IMFByteStream *stream, IMFMediaType *video_type,"
)
cpp_quote
(
" IMFMediaType *audio_type, IMFMediaSink **sink);"
)
cpp_quote
(
"HRESULT WINAPI MFCreatePresentationClock(IMFPresentationClock **clock);"
)
cpp_quote
(
"HRESULT WINAPI MFCreatePresentationDescriptor(DWORD count, IMFStreamDescriptor **descriptors,"
)
cpp_quote
(
" IMFPresentationDescriptor **presentation_desc);"
)
...
...
include/wine/mfinternal.idl
0 → 100644
View file @
8aca3799
/*
*
Copyright
2022
Nikolay
Sivov
for
CodeWeavers
*
*
This
library
is
free
software
; you can redistribute it and/or
*
modify
it
under
the
terms
of
the
GNU
Lesser
General
Public
*
License
as
published
by
the
Free
Software
Foundation
; either
*
version
2.1
of
the
License
,
or
(
at
your
option
)
any
later
version
.
*
*
This
library
is
distributed
in
the
hope
that
it
will
be
useful
,
*
but
WITHOUT
ANY
WARRANTY
; without even the implied warranty of
*
MERCHANTABILITY
or
FITNESS
FOR
A
PARTICULAR
PURPOSE
.
See
the
GNU
*
Lesser
General
Public
License
for
more
details
.
*
*
You
should
have
received
a
copy
of
the
GNU
Lesser
General
Public
*
License
along
with
this
library
; if not, write to the Free Software
*
Foundation
,
Inc
.
,
51
Franklin
St
,
Fifth
Floor
,
Boston
,
MA
02110
-
1301
,
USA
*/
#
if
0
#
pragma
makedep
header
install
#
endif
import
"unknwn.idl"
;
interface
IMFByteStream
;
interface
IMFMediaSink
;
interface
IMFMediaType
;
/*
Internal
interface
used
to
instantiate
registered
sinks
.
It
should
be
compatible
,
except
for
used
method
names
.
*/
[
uuid
(
37
aa1c3b
-
620
f
-
477
e
-
bef9
-
ac4aa85be95d
),
object
,
local
]
interface
IMFSinkClassFactory
:
IUnknown
{
HRESULT
CreateMediaSink
(
[
in
]
IMFByteStream
*
stream
,
[
in
]
IMFMediaType
*
video_type
,
[
in
]
IMFMediaType
*
audio_type
,
[
out
]
IMFMediaSink
**
sink
)
;
}
cpp_quote
(
"DEFINE_GUID(CLSID_MF3GPSinkClassFactory, 0xe54cdfaf, 0x2381, 0x4cad, 0xab, 0x99, 0xf3, 0x85, 0x17, 0x12, 0x7d, 0x5c);"
)
cpp_quote
(
"DEFINE_GUID(CLSID_MFAC3SinkClassFactory, 0x255a6fda, 0x6f93, 0x4e8a, 0x96, 0x11, 0xde, 0xd1, 0x16, 0x9e, 0xef, 0xb4);"
)
cpp_quote
(
"DEFINE_GUID(CLSID_MFADTSSinkClassFactory, 0xd7ca55ab, 0x5022, 0x4db3, 0xa5, 0x99, 0xab, 0xaf, 0xa3, 0x58, 0xe6, 0xf3);"
)
cpp_quote
(
"DEFINE_GUID(CLSID_MFAVISinkClassFactory, 0xaf4b1274, 0xb78a, 0x4979, 0xae, 0xf5, 0x20, 0xe7, 0x8f, 0xee, 0x10, 0x2e);"
)
cpp_quote
(
"DEFINE_GUID(CLSID_MFFMPEG4SinkClassFactory, 0x60f9f51e, 0x4613, 0x4b35, 0xae, 0x88, 0x33, 0x25, 0x42, 0xb5, 0x67, 0xb8);"
)
cpp_quote
(
"DEFINE_GUID(CLSID_MFMP3SinkClassFactory, 0x11275a82, 0x5e5a, 0x47fd, 0xa0, 0x1c, 0x36, 0x83, 0xc1, 0x2f, 0xb1, 0x96);"
)
cpp_quote
(
"DEFINE_GUID(CLSID_MFMPEG4SinkClassFactory, 0xa22c4fc7, 0x6e91, 0x4e1d, 0x89, 0xe9, 0x53, 0xb2, 0x66, 0x7b, 0x72, 0xba);"
)
cpp_quote
(
"DEFINE_GUID(CLSID_MFWAVESinkClassFactory, 0x36f99745, 0x23c9, 0x4c9c, 0x8d, 0xd5, 0xcc, 0x31, 0xce, 0x96, 0x43, 0x90);"
)
libs/mfuuid/mfuuid.c
View file @
8aca3799
...
...
@@ -32,6 +32,7 @@
#include "mfidl.h"
#include "mfreadwrite.h"
#include "mfmediaengine.h"
#include "wine/mfinternal.h"
DEFINE_GUID
(
MF_SCRUBBING_SERVICE
,
0xdd0ac3d8
,
0x40e3
,
0x4128
,
0xac
,
0x48
,
0xc0
,
0xad
,
0xd0
,
0x67
,
0xb7
,
0x14
);
DEFINE_GUID
(
CLSID_FileSchemePlugin
,
0x477ec299
,
0x1421
,
0x4bdd
,
0x97
,
0x1f
,
0x7c
,
0xcb
,
0x93
,
0x3f
,
0x21
,
0xad
);
...
...
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