From 3152fa1872c90ab90971112d5e7717dcd439deec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Moutte?= Date: Fri, 3 Mar 2006 23:45:23 +0000 Subject: sys/: sinks are now using GST_RANK_PRIMARY to be used with autodectection Original commit message from CVS: * sys/directdraw: * sys/directsound: sinks are now using GST_RANK_PRIMARY to be used with autodectection * win32/vs6: project files updated to fix some bugs * win32/vs7: * win32/vs8: vs7 and vs8 project files added --- ChangeLog | 11 ++ sys/directdraw/gstdirectdrawplugin.c | 2 +- sys/directdraw/gstdirectdrawsink.c | 32 +++-- sys/directdraw/gstdirectdrawsink.h | 5 + sys/directsound/gstdirectsoundplugin.c | 2 +- sys/directsound/gstdirectsoundsink.c | 5 +- win32/vs6/libgstdirectdraw.dsp | 4 +- win32/vs6/libgstdirectsound.dsp | 5 +- win32/vs7/gst-plugins-bad.sln | 29 +++++ win32/vs7/libgstdirectdraw.vcproj | 145 ++++++++++++++++++++++ win32/vs7/libgstdirectsound.vcproj | 145 ++++++++++++++++++++++ win32/vs8/gst-plugins-bad.sln | 25 ++++ win32/vs8/libgstdirectdraw.vcproj | 214 +++++++++++++++++++++++++++++++++ win32/vs8/libgstdirectsound.vcproj | 214 +++++++++++++++++++++++++++++++++ 14 files changed, 821 insertions(+), 17 deletions(-) create mode 100644 win32/vs7/gst-plugins-bad.sln create mode 100644 win32/vs7/libgstdirectdraw.vcproj create mode 100644 win32/vs7/libgstdirectsound.vcproj create mode 100644 win32/vs8/gst-plugins-bad.sln create mode 100644 win32/vs8/libgstdirectdraw.vcproj create mode 100644 win32/vs8/libgstdirectsound.vcproj diff --git a/ChangeLog b/ChangeLog index c50f7bbf..0311c360 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2006-03-04 Sebastien Moutte + + * sys/directdraw: + * sys/directsound: + sinks are now using GST_RANK_PRIMARY to be used with autodectection + * win32/vs6: + project files updated to fix some bugs + * win32/vs7: + * win32/vs8: + vs7 and vs8 project files added + 2006-03-03 Tim-Philipp Müller * ext/xvid/gstxviddec.c: (gst_xviddec_chain): diff --git a/sys/directdraw/gstdirectdrawplugin.c b/sys/directdraw/gstdirectdrawplugin.c index 69d79507..de5452f3 100644 --- a/sys/directdraw/gstdirectdrawplugin.c +++ b/sys/directdraw/gstdirectdrawplugin.c @@ -28,7 +28,7 @@ static gboolean plugin_init (GstPlugin * plugin) { - if (!gst_element_register (plugin, "directdrawsink", GST_RANK_NONE, + if (!gst_element_register (plugin, "directdrawsink", GST_RANK_PRIMARY, GST_TYPE_DIRECTDRAW_SINK)) return FALSE; diff --git a/sys/directdraw/gstdirectdrawsink.c b/sys/directdraw/gstdirectdrawsink.c index 55a0d54a..2f837496 100644 --- a/sys/directdraw/gstdirectdrawsink.c +++ b/sys/directdraw/gstdirectdrawsink.c @@ -296,6 +296,8 @@ gst_ddrawsurface_init (GstDDrawSurface * surface, gpointer g_class) surface->width = 0; surface->height = 0; surface->ddrawsink = NULL; + surface->locked = FALSE; + surface->system_memory = FALSE; memset (&surface->dd_pixel_format, 0, sizeof (DDPIXELFORMAT)); } @@ -1184,9 +1186,10 @@ gst_directdrawsink_setup_ddraw (GstDirectDrawSink * ddrawsink) bRet = FALSE; /*for fullscreen mode, setup display mode */ - if (ddrawsink->bFullScreen) { +/* if (ddrawsink->bFullScreen) { hRes = IDirectDraw_SetDisplayMode (ddrawsink->ddraw_object, 640, 480, 32); } + */ if (!ddrawsink->extern_surface) { /*create our primary surface */ @@ -1309,8 +1312,6 @@ gst_directdrawsink_window_thread (GstDirectDrawSink * ddrawsink) if (ddrawsink->video_window == NULL) return FALSE; - ShowWindow (ddrawsink->video_window, SW_SHOW); - /*start message loop processing our default window messages */ while (1) { MSG msg; @@ -1422,7 +1423,7 @@ gst_directdrawsink_get_depth (LPDDPIXELFORMAT lpddpfPixelFormat) } HRESULT WINAPI -EnumModesCallback2 (LPDDSURFACEDESC2 lpDDSurfaceDesc, LPVOID lpContext) +EnumModesCallback2 (LPDDSURFACEDESC lpDDSurfaceDesc, LPVOID lpContext) { GstDirectDrawSink *ddrawsink = (GstDirectDrawSink *) lpContext; GstCaps *format_caps = NULL; @@ -1537,6 +1538,7 @@ gst_directdrawsink_surface_create (GstDirectDrawSink * ddrawsink, { GstDDrawSurface *surface = NULL; GstStructure *structure = NULL; + gint pitch; HRESULT hRes; DDSURFACEDESC surf_desc, surf_lock_desc; @@ -1559,6 +1561,8 @@ gst_directdrawsink_surface_create (GstDirectDrawSink * ddrawsink, GST_WARNING ("failed getting geometry from caps %" GST_PTR_FORMAT, caps); } + pitch = GST_ROUND_UP_8 (size / surface->height); + if (!gst_ddrawvideosink_get_format_from_caps (caps, &surface->dd_pixel_format)) { GST_WARNING ("failed getting pixel format from caps %" GST_PTR_FORMAT, @@ -1568,9 +1572,6 @@ gst_directdrawsink_surface_create (GstDirectDrawSink * ddrawsink, if (ddrawsink->ddraw_object) { /* Creating an internal surface which will be used as GstBuffer, we used the detected pixel format and video dimensions */ - gint pitch = GST_ROUND_UP_8 (size / surface->height); - - surf_desc.lPitch = pitch; surf_desc.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN; surf_desc.dwFlags = @@ -1600,7 +1601,9 @@ gst_directdrawsink_surface_create (GstDirectDrawSink * ddrawsink, GST_DEBUG ("DDraw stride/pitch %d isn't as expected value %d, let's continue allocating buffer.", surf_lock_desc.lPitch, pitch); - IDirectDrawSurface_Release (surface->surface); + + /*Unlock the surface as we will change it to use system memory with a GStreamer compatible pitch */ + hRes = IDirectDrawSurface_Unlock (surface->surface, NULL); goto surface_pitch_bad; } @@ -1614,6 +1617,19 @@ gst_directdrawsink_surface_create (GstDirectDrawSink * ddrawsink, GST_BUFFER (surface)->malloc_data = g_malloc (size); GST_BUFFER_DATA (surface) = GST_BUFFER (surface)->malloc_data; GST_BUFFER_SIZE (surface) = size; + +/* surf_desc.dwSize = sizeof(DDSURFACEDESC); + surf_desc.dwFlags = DDSD_PITCH | DDSD_LPSURFACE | DDSD_HEIGHT | DDSD_WIDTH ||DDSD_PIXELFORMAT; + surf_desc.lpSurface = GST_BUFFER (surface)->malloc_data; + surf_desc.lPitch = pitch; + //surf_desc.dwHeight = surface->height; + surf_desc.dwWidth = surface->width; + hRes = IDirectDrawSurface7_SetSurfaceDesc(surface->surface, &surf_desc, 0); + printf("%\n", DDErrorString(hRes)); + + hRes = IDirectDrawSurface7_Lock (surface->surface, NULL, &surf_lock_desc, + DDLOCK_WAIT | DDLOCK_NOSYSLOCK, NULL); +*/ surface->surface = NULL; printf ("allocating a buffer of %d bytes\n", size); } diff --git a/sys/directdraw/gstdirectdrawsink.h b/sys/directdraw/gstdirectdrawsink.h index 7476eaac..c144f646 100644 --- a/sys/directdraw/gstdirectdrawsink.h +++ b/sys/directdraw/gstdirectdrawsink.h @@ -56,7 +56,12 @@ struct _GstDDrawSurface gint width; gint height; + + /*TRUE when surface is locked*/ gboolean locked; + /*TRUE when surface is using a system memory buffer + (i'm using system memory when directdraw optimized pitch is not the same as the GStreamer one)*/ + gboolean system_memory; DDPIXELFORMAT dd_pixel_format; diff --git a/sys/directsound/gstdirectsoundplugin.c b/sys/directsound/gstdirectsoundplugin.c index c789b2bf..aaa496f3 100644 --- a/sys/directsound/gstdirectsoundplugin.c +++ b/sys/directsound/gstdirectsoundplugin.c @@ -29,7 +29,7 @@ static gboolean plugin_init (GstPlugin * plugin) { - if (!gst_element_register (plugin, "directsoundsink", GST_RANK_NONE, + if (!gst_element_register (plugin, "directsoundsink", GST_RANK_PRIMARY, GST_TYPE_DIRECTSOUND_SINK)) return FALSE; diff --git a/sys/directsound/gstdirectsoundsink.c b/sys/directsound/gstdirectsoundsink.c index 3d7ab997..13e077a1 100644 --- a/sys/directsound/gstdirectsoundsink.c +++ b/sys/directsound/gstdirectsoundsink.c @@ -121,7 +121,7 @@ gst_directsoundsink_class_init (GstDirectSoundSinkClass * klass) gstbaseaudiosink_class = (GstBaseAudioSinkClass *) klass; gstaudiosink_class = (GstAudioSinkClass *) klass; - parent_class = g_type_class_ref (GST_TYPE_DIRECTSOUND_SINK); + parent_class = g_type_class_ref (GST_TYPE_BASE_AUDIO_SINK); gobject_class->dispose = GST_DEBUG_FUNCPTR (gst_directsoundsink_dispose); gobject_class->get_property = @@ -212,8 +212,7 @@ gst_directsoundsink_open (GstAudioSink * asink) return FALSE; } - if (FAILED (hRes = - IDirectSound_SetCooperativeLevel (dsoundsink->pDS, + if (FAILED (hRes = IDirectSound_SetCooperativeLevel (dsoundsink->pDS, GetDesktopWindow (), DSSCL_PRIORITY))) { GST_ELEMENT_ERROR (dsoundsink, RESOURCE, OPEN_READ, ("gst_directsoundsink_open: IDirectSound_SetCooperativeLevel: %s", diff --git a/win32/vs6/libgstdirectdraw.dsp b/win32/vs6/libgstdirectdraw.dsp index 37432a96..a9e6d23d 100644 --- a/win32/vs6/libgstdirectdraw.dsp +++ b/win32/vs6/libgstdirectdraw.dsp @@ -53,7 +53,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 -# ADD LINK32 libgstreamer-0.10.lib libgstbase-0.10.lib libgstvideo-0.10.lib glib-2.0.lib gobject-2.0.lib user32.lib gdi32.lib ddraw.lib /nologo /dll /machine:I386 /libpath:"../../../gstreamer/win32/vs6/release" /libpath:"../../../gst-plugins-base/win32/vs6/release" /libpath:"./release" +# ADD LINK32 glib-2.0.lib gobject-2.0.lib libgstreamer-0.10.lib libgstbase-0.10.lib libgstvideo-0.10.lib ddraw.lib user32.lib gdi32.lib Rpcrt4.lib /nologo /dll /machine:I386 /libpath:"../../../gstreamer/win32/vs6/release" /libpath:"../../../gst-plugins-base/win32/vs6/release" /libpath:"./release" # Begin Special Build Tool TargetPath=.\Release\libgstdirectdraw.dll SOURCE="$(InputPath)" @@ -84,7 +84,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept -# ADD LINK32 libgstreamer-0.10.lib libgstbase-0.10.lib libgstvideo-0.10.lib glib-2.0D.lib gobject-2.0D.lib ddraw.lib user32.lib gdi32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept /libpath:"../../../gstreamer/win32/vs6/debug" /libpath:"../../../gst-plugins-base/win32/vs6/debug" /libpath:"./debug" +# ADD LINK32 glib-2.0D.lib gobject-2.0D.lib libgstreamer-0.10.lib libgstbase-0.10.lib libgstvideo-0.10.lib ddraw.lib user32.lib gdi32.lib Rpcrt4.lib /nologo /dll /debug /machine:I386 /pdbtype:sept /libpath:"../../../gstreamer/win32/vs6/debug" /libpath:"../../../gst-plugins-base/win32/vs6/debug" /libpath:"./debug" # Begin Special Build Tool TargetPath=.\Debug\libgstdirectdraw.dll SOURCE="$(InputPath)" diff --git a/win32/vs6/libgstdirectsound.dsp b/win32/vs6/libgstdirectsound.dsp index 859dd7df..b2ec7cb5 100644 --- a/win32/vs6/libgstdirectsound.dsp +++ b/win32/vs6/libgstdirectsound.dsp @@ -53,7 +53,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 -# ADD LINK32 libgstreamer-0.10.lib libgstbase-0.10.lib libgstaudio-0.10.lib glib-2.0.lib gobject-2.0.lib dsound.lib dxerr9.lib user32.lib /nologo /dll /machine:I386 /libpath:"../../../gstreamer/win32/vs6/release" /libpath:"../../../gst-plugins-base/win32/vs6/release" /libpath:"./release" +# ADD LINK32 libgstreamer-0.10.lib libgstbase-0.10.lib libgstaudio-0.10.lib glib-2.0.lib gobject-2.0.lib dsound.lib dxerr9.lib user32.lib /nologo /dll /machine:I386 /libpath:"../../../gstreamer/win32/vs6/release" /libpath:"../../../gst-plugins-base/win32/vs6/release" /libpath:"./release" # Begin Special Build Tool TargetPath=.\Release\libgstdirectsound.dll SOURCE="$(InputPath)" @@ -84,7 +84,8 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept -# ADD LINK32 libgstreamer-0.10.lib libgstbase-0.10.lib libgstaudio-0.10.lib glib-2.0D.lib gobject-2.0D.lib dsound.lib dxerr9.lib user32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept /libpath:"../../../gstreamer/win32/vs6/debug" /libpath:"../../../gst-plugins-base/win32/vs6/debug" /libpath:"./debug" +# ADD LINK32 libgstaudio-0.10.lib libgstreamer-0.10.lib libgstbase-0.10.lib glib-2.0D.lib gobject-2.0D.lib dsound.lib dxerr9.lib user32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept /libpath:"../../../gstreamer/win32/vs6/debug" /libpath:"../../../gst-plugins-base/win32/vs6/debug" /libpath:"./debug" +# SUBTRACT LINK32 /incremental:no # Begin Special Build Tool TargetPath=.\Debug\libgstdirectsound.dll SOURCE="$(InputPath)" diff --git a/win32/vs7/gst-plugins-bad.sln b/win32/vs7/gst-plugins-bad.sln new file mode 100644 index 00000000..2df4288f --- /dev/null +++ b/win32/vs7/gst-plugins-bad.sln @@ -0,0 +1,29 @@ +Microsoft Visual Studio Solution File, Format Version 8.00 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libgstdirectsound", "libgstdirectsound.vcproj", "{566A2EB9-984C-4027-86DD-EDC7B390C679}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libgstdirectdraw", "libgstdirectdraw.vcproj", "{1594A623-5529-4B86-BD4A-694CF0BDB5C4}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfiguration) = preSolution + Debug = Debug + Release = Release + EndGlobalSection + GlobalSection(ProjectConfiguration) = postSolution + {566A2EB9-984C-4027-86DD-EDC7B390C679}.Debug.ActiveCfg = Debug|Win32 + {566A2EB9-984C-4027-86DD-EDC7B390C679}.Debug.Build.0 = Debug|Win32 + {566A2EB9-984C-4027-86DD-EDC7B390C679}.Release.ActiveCfg = Release|Win32 + {566A2EB9-984C-4027-86DD-EDC7B390C679}.Release.Build.0 = Release|Win32 + {1594A623-5529-4B86-BD4A-694CF0BDB5C4}.Debug.ActiveCfg = Debug|Win32 + {1594A623-5529-4B86-BD4A-694CF0BDB5C4}.Debug.Build.0 = Debug|Win32 + {1594A623-5529-4B86-BD4A-694CF0BDB5C4}.Release.ActiveCfg = Release|Win32 + {1594A623-5529-4B86-BD4A-694CF0BDB5C4}.Release.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + EndGlobalSection + GlobalSection(ExtensibilityAddIns) = postSolution + EndGlobalSection +EndGlobal diff --git a/win32/vs7/libgstdirectdraw.vcproj b/win32/vs7/libgstdirectdraw.vcproj new file mode 100644 index 00000000..553d0c08 --- /dev/null +++ b/win32/vs7/libgstdirectdraw.vcproj @@ -0,0 +1,145 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/win32/vs7/libgstdirectsound.vcproj b/win32/vs7/libgstdirectsound.vcproj new file mode 100644 index 00000000..f852c487 --- /dev/null +++ b/win32/vs7/libgstdirectsound.vcproj @@ -0,0 +1,145 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/win32/vs8/gst-plugins-bad.sln b/win32/vs8/gst-plugins-bad.sln new file mode 100644 index 00000000..13386d27 --- /dev/null +++ b/win32/vs8/gst-plugins-bad.sln @@ -0,0 +1,25 @@ +Microsoft Visual Studio Solution File, Format Version 9.00 +# Visual Studio 2005 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libgstdirectsound", "libgstdirectsound.vcproj", "{566A2EB9-984C-4027-86DD-EDC7B390C679}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libgstdirectdraw", "libgstdirectdraw.vcproj", "{1594A623-5529-4B86-BD4A-694CF0BDB5C4}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {566A2EB9-984C-4027-86DD-EDC7B390C679}.Debug|Win32.ActiveCfg = Debug|Win32 + {566A2EB9-984C-4027-86DD-EDC7B390C679}.Debug|Win32.Build.0 = Debug|Win32 + {566A2EB9-984C-4027-86DD-EDC7B390C679}.Release|Win32.ActiveCfg = Release|Win32 + {566A2EB9-984C-4027-86DD-EDC7B390C679}.Release|Win32.Build.0 = Release|Win32 + {1594A623-5529-4B86-BD4A-694CF0BDB5C4}.Debug|Win32.ActiveCfg = Debug|Win32 + {1594A623-5529-4B86-BD4A-694CF0BDB5C4}.Debug|Win32.Build.0 = Debug|Win32 + {1594A623-5529-4B86-BD4A-694CF0BDB5C4}.Release|Win32.ActiveCfg = Release|Win32 + {1594A623-5529-4B86-BD4A-694CF0BDB5C4}.Release|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/win32/vs8/libgstdirectdraw.vcproj b/win32/vs8/libgstdirectdraw.vcproj new file mode 100644 index 00000000..06f5ee12 --- /dev/null +++ b/win32/vs8/libgstdirectdraw.vcproj @@ -0,0 +1,214 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/win32/vs8/libgstdirectsound.vcproj b/win32/vs8/libgstdirectsound.vcproj new file mode 100644 index 00000000..25033844 --- /dev/null +++ b/win32/vs8/libgstdirectsound.vcproj @@ -0,0 +1,214 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -- cgit v1.2.1