imperxsdisrc: new source element for IMPERX HD-SDI Express framegrabbers

The IMPERX SDI cards support BGR, YUY2, and a unique 10-bit YUV 4:2:2
format which is not currently supported in GStreamer. For now, we'll
unpack it to AYUV64.

This has only been tested on a ExpressCard device, but is expected to
work with all IMPERX grabbers that use this SDK.

Special attention has not been given yet to timestamping or accounting
for dropped frames.

Currently if the source is interlaced this element will deinterlace.
Another mode could be supported to push out the frames as is, with
appropriate caps to indicate interlacing mode.
This commit is contained in:
Joshua M. Doe
2019-08-01 12:25:23 -04:00
parent 477ae0b9d7
commit 2ee4399f3f
6 changed files with 996 additions and 0 deletions

View File

@@ -0,0 +1,27 @@
set (SOURCES
gstimperxsdisrc.cpp)
set (HEADERS
gstimperxsdisrc.h)
include_directories (AFTER
${IMPERX_SDI_INCLUDE_DIR})
set (libname libgstimperxsdi)
add_library (${libname} MODULE
${SOURCES}
${HEADERS})
target_link_libraries (${libname}
${GLIB2_LIBRARIES}
${GOBJECT_LIBRARIES}
${GSTREAMER_LIBRARY}
${GSTREAMER_BASE_LIBRARY}
${GSTREAMER_VIDEO_LIBRARY}
${IMPERX_SDI_LIBRARIES})
set (pdbfile "${CMAKE_CURRENT_BINARY_DIR}/\${CMAKE_INSTALL_CONFIG_NAME}/${libname}.pdb")
install (FILES ${pdbfile} DESTINATION lib/gstreamer-1.0 COMPONENT pdb)
install(TARGETS ${libname}
LIBRARY DESTINATION lib/gstreamer-1.0)