mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-19 06:46:38 +00:00
Add build files and fix build for gst-plugins-bad dshowsrcwrapper plugin
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1577>
This commit is contained in:
parent
587b2e6bcb
commit
b355345ef5
5 changed files with 46 additions and 114 deletions
|
@ -1,41 +0,0 @@
|
|||
|
||||
== Dependencies ==
|
||||
|
||||
* CMake (tested with 3.9, likely >=3.0 will work)
|
||||
|
||||
* GStreamer (1.8 or newer)
|
||||
|
||||
* Microsoft SDK
|
||||
(http://www.microsoft.com/en-us/download/details.aspx?id=8279). Don't
|
||||
use any after 7.1, they don't include the samples. You can uncheck
|
||||
the .NET stuff.
|
||||
|
||||
* Visual Studio, in theory any version will do; tested with 2013
|
||||
Express
|
||||
(http://www.visualstudio.com/en-us/products/visual-studio-express-vs.aspx).
|
||||
|
||||
== Build ==
|
||||
|
||||
First build the SDK "baseclasses" sample; they should have been
|
||||
installed in <SDK>/Samples/multimedia/directshow/baseclasses. Just
|
||||
open the SLN and build both Debug_MBCS and Release_MBCS.
|
||||
|
||||
If you get a build error "ctype.h: no such file or directory", try
|
||||
retargetting the solution from the Project menu.
|
||||
|
||||
Then go to sys/dshowsrcwrapper and use CMake to generate the project
|
||||
file for your chosen version of Visual Studio. There are two influential
|
||||
variables:
|
||||
|
||||
* GST_INSTALL_BASE: your GStreamer installation directory
|
||||
(default C:\gstreamer\1.0\x86 or C:\gstreamer\1.0\x86_64)
|
||||
|
||||
* SDK_INSTALL_BASE: the Windows SDK installation path (default
|
||||
C:\Program Files\Microsoft SDKs\Windows\v7.0).
|
||||
|
||||
mkdir build
|
||||
cd build
|
||||
cmake -G "Visual Studio 12" ..
|
||||
|
||||
Open the SLN and build the project. Copy the DLL to the GStreamer
|
||||
plugins directory.
|
|
@ -1,72 +0,0 @@
|
|||
|
||||
CMAKE_MINIMUM_REQUIRED (VERSION 2.8)
|
||||
|
||||
PROJECT(dshowsrcwrapper)
|
||||
|
||||
IF ("${CMAKE_GENERATOR}" MATCHES "Win64")
|
||||
SET(ARCH_ "x86_64")
|
||||
ELSE ()
|
||||
SET(ARCH_ "x86")
|
||||
ENDIF ()
|
||||
SET(GST_INSTALL_BASE "C:\\gstreamer\\1.0\\${ARCH_}" CACHE PATH "Path to the GStreamer install base")
|
||||
SET(SDK_INSTALL_BASE "C:\\Program Files\\Microsoft SDKs\\Windows\\v7.1" CACHE PATH "Path to the Windows SDK root")
|
||||
|
||||
SET_PROPERTY(
|
||||
DIRECTORY
|
||||
APPEND PROPERTY COMPILE_DEFINITIONS
|
||||
HAVE_CONFIG_H
|
||||
)
|
||||
|
||||
INCLUDE_DIRECTORIES(
|
||||
${GST_INSTALL_BASE}/include
|
||||
${GST_INSTALL_BASE}/include/gstreamer-1.0
|
||||
${GST_INSTALL_BASE}/include/glib-2.0
|
||||
${GST_INSTALL_BASE}/lib/glib-2.0/include
|
||||
${GST_INSTALL_BASE}/lib/gstreamer-1.0/include
|
||||
${SDK_INSTALL_BASE}/Samples/multimedia/directshow/baseclasses
|
||||
|
||||
# When building from the Cerbero build dir, this is where config.h is.
|
||||
${PROJECT_SOURCE_DIR}/../../_builddir
|
||||
)
|
||||
|
||||
IF ("${CMAKE_GENERATOR}" MATCHES "Win64")
|
||||
SET(ARCH_ "x64/")
|
||||
ELSE ()
|
||||
SET(ARCH_ "")
|
||||
ENDIF ()
|
||||
|
||||
LINK_DIRECTORIES(
|
||||
${GST_INSTALL_BASE}/lib
|
||||
${SDK_INSTALL_BASE}/Samples/multimedia/directshow/baseclasses/${ARCH_}Release_MBCS
|
||||
${SDK_INSTALL_BASE}/Samples/multimedia/directshow/baseclasses/${ARCH_}Debug_MBCS
|
||||
)
|
||||
|
||||
SET(CMAKE_SHARED_LINKER_FLAGS "${CMALE_SHARED_LINKER_FLAGS} /SAFESEH:NO")
|
||||
|
||||
ADD_LIBRARY(libgstdshowsrcwrapper SHARED
|
||||
dshowdeviceprovider.cpp
|
||||
dshowdeviceprovider.h
|
||||
gstdshow.cpp
|
||||
gstdshow.h
|
||||
gstdshowfakesink.cpp
|
||||
gstdshowfakesink.h
|
||||
gstdshowaudiosrc.cpp
|
||||
gstdshowaudiosrc.h
|
||||
gstdshowvideosrc.cpp
|
||||
gstdshowvideosrc.h
|
||||
gstdshowsrcwrapper.cpp
|
||||
)
|
||||
|
||||
TARGET_LINK_LIBRARIES(libgstdshowsrcwrapper
|
||||
gstreamer-1.0
|
||||
gstaudio-1.0
|
||||
gstvideo-1.0
|
||||
gstbase-1.0
|
||||
glib-2.0
|
||||
gobject-2.0
|
||||
debug strmbasd
|
||||
optimized strmbase
|
||||
rpcrt4
|
||||
uuid
|
||||
winmm
|
||||
)
|
|
@ -456,6 +456,8 @@ gst_dshowvideosrc_change_state (GstElement * element, GstStateChange transition)
|
|||
break;
|
||||
case GST_STATE_CHANGE_READY_TO_NULL:
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return GST_ELEMENT_CLASS(gst_dshowvideosrc_parent_class)->change_state(element, transition);
|
||||
|
|
|
@ -0,0 +1,43 @@
|
|||
dshowsrcwrapper_sources = [
|
||||
'dshowdeviceprovider.cpp',
|
||||
'gstdshow.cpp',
|
||||
'gstdshowfakesink.cpp',
|
||||
'gstdshowaudiosrc.cpp',
|
||||
'gstdshowvideosrc.cpp',
|
||||
'gstdshowsrcwrapper.cpp'
|
||||
]
|
||||
|
||||
if not strmbase_dep.found()
|
||||
message('strmbase not found, not building dshowsrcwrapper')
|
||||
subdir_done()
|
||||
endif
|
||||
|
||||
winmm_dep = cxx.find_library('winmm', required: get_option('directshow'))
|
||||
if not winmm_dep.found()
|
||||
message('winmm not found, not building dshowsrcwrapper')
|
||||
subdir_done()
|
||||
endif
|
||||
|
||||
rpcrt4_dep = cxx.find_library('rpcrt4', required: get_option('directshow'))
|
||||
if not rpcrt4_dep.found()
|
||||
message('rpcrt4 not found, not building dshowsrcwrapper')
|
||||
subdir_done()
|
||||
endif
|
||||
|
||||
gstdshowsrcwrapper = library('gstdshowsrcwrapper',
|
||||
dshowsrcwrapper_sources,
|
||||
cpp_args : gst_plugins_bad_args,
|
||||
include_directories : [configinc],
|
||||
dependencies : [
|
||||
gstaudio_dep,
|
||||
gstvideo_dep,
|
||||
strmbase_dep,
|
||||
winmm_dep,
|
||||
rpcrt4_dep
|
||||
],
|
||||
install : true,
|
||||
install_dir : plugins_install_dir,
|
||||
override_options : ['cpp_std=none'])
|
||||
|
||||
pkgconfig.generate(gstdshowsrcwrapper, install_dir : plugins_pkgconfig_install_dir)
|
||||
plugins += [gstdshowsrcwrapper]
|
|
@ -22,5 +22,5 @@ endif
|
|||
|
||||
subdir('strmbase')
|
||||
subdir('dshowdecwrapper')
|
||||
#subdir('dshowsrcwrapper')
|
||||
subdir('dshowsrcwrapper')
|
||||
#subdir('dshowvideosink')
|
||||
|
|
Loading…
Reference in a new issue