winegstreamer: Add gstreamer splitter filter.

This commit is contained in:
Aric Stewart 2010-10-26 11:39:15 -05:00 committed by Alexandre Julliard
parent ae7d41bfa2
commit a2916f3a0b
5 changed files with 1269 additions and 3 deletions

View File

@ -5,6 +5,7 @@ EXTRALIBS = @GSTREAMER_LIBS@ @LIBPTHREAD@
C_SRCS = \
glibthread.c \
gstdemux.c \
main.c
RC_SRCS = \

View File

@ -22,4 +22,5 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
DEFINE_GUID(CLSID_Gstreamer_Splitter, 0xf9d8d64e, 0xa144, 0x47dc, 0x8e, 0xe0, 0xf5, 0x34, 0x98, 0x37, 0x2c, 0x29);
DEFINE_GUID(WINESUBTYPE_Gstreamer, 0xffffffff, 0x128f, 0x4dd1, 0xad, 0x22, 0xbe, 0xcf, 0xa6, 0x6c, 0xe7, 0xaa);

View File

@ -35,9 +35,13 @@
#include "strmif.h"
#include "wine/strmbase.h"
#define MEDIATIME_FROM_BYTES(x) ((LONGLONG)(x) * 10000000)
/* enum media */
void dump_AM_MEDIA_TYPE(const AM_MEDIA_TYPE * pmt);
IUnknown * CALLBACK Gstreamer_Splitter_create(IUnknown *pUnkOuter, HRESULT *phr);
void g_thread_impl_init(void);
DWORD Gstreamer_init(void);
#endif /* __GST_PRIVATE_INCLUDED__ */

File diff suppressed because it is too large Load Diff

View File

@ -26,7 +26,6 @@
#include <gst/app/gstappsrc.h>
#include <gst/app/gstappbuffer.h>
#include "initguid.h"
#include "windef.h"
#include "winbase.h"
#include "winuser.h"
@ -37,16 +36,74 @@
#include "wine/unicode.h"
#include "gst_private.h"
#include "initguid.h"
#include "gst_guids.h"
static HINSTANCE hInst = NULL;
WINE_DEFAULT_DEBUG_CHANNEL(gstreamer);
FactoryTemplate const g_Templates[] = {
static const WCHAR wGstreamer_Splitter[] =
{'G','S','t','r','e','a','m','e','r',' ','s','p','l','i','t','t','e','r',' ','f','i','l','t','e','r',0};
static WCHAR wNull[] = {'\0'};
static const AMOVIESETUP_MEDIATYPE amfMTstream[] =
{ { &MEDIATYPE_Stream, &WINESUBTYPE_Gstreamer },
{ &MEDIATYPE_Stream, &MEDIASUBTYPE_NULL },
};
const int g_cTemplates = 0;
static const AMOVIESETUP_MEDIATYPE amfMTaudio[] =
{ { &MEDIATYPE_Audio, &MEDIASUBTYPE_NULL } };
static const AMOVIESETUP_MEDIATYPE amfMTvideo[] =
{ { &MEDIATYPE_Video, &MEDIASUBTYPE_NULL } };
static const AMOVIESETUP_PIN amfSplitPin[] =
{ { wNull,
FALSE, FALSE, FALSE, FALSE,
&GUID_NULL,
NULL,
2,
amfMTstream
},
{
wNull,
FALSE, TRUE, FALSE, FALSE,
&GUID_NULL,
NULL,
1,
amfMTaudio
},
{
wNull,
FALSE, TRUE, FALSE, FALSE,
&GUID_NULL,
NULL,
1,
amfMTvideo
}
};
static const AMOVIESETUP_FILTER amfSplitter =
{ &CLSID_Gstreamer_Splitter,
wGstreamer_Splitter,
MERIT_PREFERRED,
3,
amfSplitPin
};
FactoryTemplate const g_Templates[] = {
{
wGstreamer_Splitter,
&CLSID_Gstreamer_Splitter,
Gstreamer_Splitter_create,
NULL,
&amfSplitter,
},
};
const int g_cTemplates = sizeof(g_Templates) / sizeof (g_Templates[0]);
BOOL WINAPI DllMain(HINSTANCE hInstDLL, DWORD fdwReason, LPVOID lpv)
{