mirror of
https://github.com/outbackdingo/UltraGrid.git
synced 2026-03-22 09:40:30 +00:00
Video compress: use new module API
This commit is contained in:
10
Makefile.in
10
Makefile.in
@@ -599,13 +599,13 @@ rtsp_server: @RTSP_SERVER_LIB_TARGET@
|
||||
$(LINKER) $(LDFLAGS) -shared -Wl,-soname,module_display_sage.so $^ @SAGE_LIB@ -o $@
|
||||
|
||||
@RTDXT_COMPRESS_LIB_TARGET@: @GL_COMMON_OBJ@ @X_OBJ@ @RTDXT_COMMON_OBJ@ @RTDXT_COMPRESS_OBJ@ @RTDXT_COMMON_HEADERS@
|
||||
$(LINKER) $(LDFLAGS) -shared -Wl,-soname,vcompress_rtdxt.so.@video_compress_abi_version@ @GL_COMMON_OBJ@ @X_OBJ@ @RTDXT_COMMON_OBJ@ @RTDXT_COMPRESS_OBJ@ @RTDXT_LIB@ -o $@
|
||||
$(LINKER) $(LDFLAGS) -shared -Wl,-soname,module_vcompress_rtdxt.so @GL_COMMON_OBJ@ @X_OBJ@ @RTDXT_COMMON_OBJ@ @RTDXT_COMPRESS_OBJ@ @RTDXT_LIB@ -o $@
|
||||
|
||||
@UYVY_COMPRESS_LIB_TARGET@: @GL_COMMON_OBJ@ @X_OBJ@ @UYVY_COMPRESS_OBJ@
|
||||
$(LINKER) $(LDFLAGS) -shared -Wl,-soname,vcompress_uyvy.so.@video_compress_abi_version@ @GL_COMMON_OBJ@ @X_OBJ@ @UYVY_COMPRESS_OBJ@ -o $@
|
||||
$(LINKER) $(LDFLAGS) -shared -Wl,-soname,module_vcompress_uyvy.so @GL_COMMON_OBJ@ @X_OBJ@ @UYVY_COMPRESS_OBJ@ -o $@
|
||||
|
||||
@LIBAVCODEC_COMPRESS_LIB_TARGET@: @LIBAVCODEC_COMPRESS_OBJ@
|
||||
$(LINKER) $(LDFLAGS) -shared -Wl,-soname,vcompress_libavcodec.so.@video_compress_abi_version@ $^ @LIBAVCODEC_LIBS@ -o $@
|
||||
$(LINKER) $(LDFLAGS) -shared -Wl,-soname,module_vcompress_libavcodec.so $^ @LIBAVCODEC_LIBS@ -o $@
|
||||
|
||||
@LIBAVCODEC_DECOMPRESS_LIB_TARGET@: @LIBAVCODEC_DECOMPRESS_OBJ@
|
||||
$(LINKER) $(LDFLAGS) -shared -Wl,-soname,module_vdecompress_libavcodec.so $^ @LIBAVCODEC_LIBS@ -o $@
|
||||
@@ -614,10 +614,10 @@ rtsp_server: @RTSP_SERVER_LIB_TARGET@
|
||||
$(LINKER) $(LDFLAGS) -shared -Wl,-soname,module_acompress.so $^ @LIBAVCODEC_LIBS@ -o $@
|
||||
|
||||
@JPEG_COMPRESS_LIB_TARGET@: @JPEG_COMPRESS_OBJ@
|
||||
$(LINKER) $(LDFLAGS) -shared -Wl,-soname,vcompress_jpeg.so.@video_compress_abi_version@ $^ @JPEG_LIB@ -o $@
|
||||
$(LINKER) $(LDFLAGS) -shared -Wl,-soname,module_vcompress_jpeg.so $^ @JPEG_LIB@ -o $@
|
||||
|
||||
@CUDA_DXT_COMPRESS_LIB_TARGET@: @CUDA_DXT_OBJ@ @CUDA_COMMON_OBJ@
|
||||
$(LINKER) $(LDFLAGS) -shared -Wl,-soname,vcompress_cuda_dxt.so.@video_compress_abi_version@ $^ @CUDA_DXT_LIB@ -o $@
|
||||
$(LINKER) $(LDFLAGS) -shared -Wl,-soname,module_vcompress_cuda_dxt.so $^ @CUDA_DXT_LIB@ -o $@
|
||||
|
||||
@RTDXT_DECOMPRESS_LIB_TARGET@: @GL_COMMON_OBJ@ @X_OBJ@ @RTDXT_COMMON_OBJ@ @RTDXT_DECOMPRESS_OBJ@ @RTDXT_COMMON_HEADERS@
|
||||
$(LINKER) $(LDFLAGS) -shared -Wl,-soname,module_vdecompress_rtdxt.so @GL_COMMON_OBJ@ @X_OBJ@ @RTDXT_COMMON_OBJ@ @RTDXT_DECOMPRESS_OBJ@ @RTDXT_LIB@ -o $@
|
||||
|
||||
13
configure.ac
13
configure.ac
@@ -440,13 +440,10 @@ then
|
||||
AC_DEFINE([BUILD_LIBRARIES], [1], [Build drivers as a standalone libraries])
|
||||
fi
|
||||
|
||||
video_compress_abi_version=4
|
||||
video_rxtx_abi_version=1
|
||||
vo_pp_abi_version=3
|
||||
AC_DEFINE_UNQUOTED([VIDEO_COMPRESS_ABI_VERSION], $video_compress_abi_version, [Specifies ABI version for video compression])
|
||||
AC_DEFINE_UNQUOTED([VIDEO_RXTX_ABI_VERSION], $video_rxtx_abi_version, [Specifies ABI version for video transmission])
|
||||
AC_DEFINE_UNQUOTED([VO_PP_ABI_VERSION], $vo_pp_abi_version, [Specifies ABI version for video postprocess])
|
||||
AC_SUBST(video_compress_abi_version)
|
||||
AC_SUBST(vo_pp_abi_version)
|
||||
|
||||
# ------------------------------------------------------------------------------------------------
|
||||
@@ -1908,7 +1905,7 @@ then
|
||||
RTDXT_COMPRESS_OBJ="dxt_compress/dxt_encoder.o src/video_compress/dxt_glsl.o"
|
||||
RTDXT_DECOMPRESS_OBJ="dxt_compress/dxt_decoder.o src/video_decompress/dxt_glsl.o"
|
||||
DXT_GLSL_CFLAGS="-std=gnu99"
|
||||
AC_SUBST(RTDXT_COMPRESS_LIB_TARGET, "lib/ultragrid/vcompress_rtdxt.so.$video_compress_abi_version")
|
||||
AC_SUBST(RTDXT_COMPRESS_LIB_TARGET, "lib/ultragrid/module_vcompress_rtdxt.so")
|
||||
AC_SUBST(RTDXT_DECOMPRESS_LIB_TARGET, "lib/ultragrid/module_vdecompress_rtdxt.so")
|
||||
LIB_TARGETS="$LIB_TARGETS $RTDXT_COMPRESS_LIB_TARGET $RTDXT_DECOMPRESS_LIB_TARGET"
|
||||
LIB_OBJS="$LIB_OBJS $RTDXT_COMMON_OBJ $RTDXT_COMPRESS_OBJ $RTDXT_DECOMPRESS_OBJ"
|
||||
@@ -1960,7 +1957,7 @@ if test $uyvy = yes
|
||||
then
|
||||
AC_DEFINE([HAVE_COMPRESS_UYVY], [1], [Build with dummy UYVY compression])
|
||||
UYVY_COMPRESS_OBJ="src/video_compress/uyvy.o"
|
||||
AC_SUBST(UYVY_COMPRESS_LIB_TARGET, "lib/ultragrid/vcompress_uyvy.so.$video_compress_abi_version")
|
||||
AC_SUBST(UYVY_COMPRESS_LIB_TARGET, "lib/ultragrid/module_vcompress_uyvy.so")
|
||||
LIB_TARGETS="$LIB_TARGETS $UYVY_COMPRESS_LIB_TARGET"
|
||||
LIB_OBJS="$LIB_OBJS $UYVY_COMPRESS_OBJ"
|
||||
DEFINE_GL
|
||||
@@ -2101,7 +2098,7 @@ then
|
||||
JPEG_COMPRESS_OBJ="src/video_compress/jpeg.o"
|
||||
JPEG_DECOMPRESS_OBJ="src/video_decompress/jpeg.o "
|
||||
AC_DEFINE([HAVE_JPEG], [1], [Build with JPEG support])
|
||||
AC_SUBST(JPEG_COMPRESS_LIB_TARGET, "lib/ultragrid/vcompress_jpeg.so.$video_compress_abi_version")
|
||||
AC_SUBST(JPEG_COMPRESS_LIB_TARGET, "lib/ultragrid/module_vcompress_jpeg.so")
|
||||
AC_SUBST(JPEG_DECOMPRESS_LIB_TARGET, "lib/ultragrid/module_vdecompress_jpeg.so")
|
||||
LIB_TARGETS="$LIB_TARGETS $JPEG_COMPRESS_LIB_TARGET $JPEG_DECOMPRESS_LIB_TARGET"
|
||||
LIB_OBJS="$LIB_OBJS $JPEG_COMPRESS_OBJ $JPEG_DECOMPRESS_OBJ"
|
||||
@@ -2154,7 +2151,7 @@ then
|
||||
CUDA_DXT_INC=$CUDA_INC
|
||||
CUDA_DXT_OBJ="src/video_compress/cuda_dxt.o cuda_dxt/cuda_dxt.$CU_SUFFIX"
|
||||
AC_DEFINE([HAVE_CUDA_DXT], [1], [Build with CUDA DXT support])
|
||||
AC_SUBST(CUDA_DXT_COMPRESS_LIB_TARGET, "lib/ultragrid/vcompress_cuda_dxt.so.$video_compress_abi_version")
|
||||
AC_SUBST(CUDA_DXT_COMPRESS_LIB_TARGET, "lib/ultragrid/module_vcompress_cuda_dxt.so")
|
||||
LIB_TARGETS="$LIB_TARGETS $CUDA_DXT_COMPRESS_LIB_TARGET"
|
||||
LIB_OBJS="$LIB_OBJS src/video_compress/cuda_dxt.o"
|
||||
ADD_CUDA_DXT_OBJ
|
||||
@@ -2667,7 +2664,7 @@ if test $libavcodec_req != no -a $found_libavcodec = yes -a $found_libavutil = y
|
||||
then
|
||||
LIBAVCODEC_OBJ="src/video_compress/libavcodec.o"
|
||||
AC_DEFINE([HAVE_LAVC], [1], [Build with LAVC support])
|
||||
AC_SUBST(LIBAVCODEC_COMPRESS_LIB_TARGET, "lib/ultragrid/vcompress_libavcodec.so.$video_compress_abi_version")
|
||||
AC_SUBST(LIBAVCODEC_COMPRESS_LIB_TARGET, "lib/ultragrid/module_vcompress_libavcodec.so")
|
||||
AC_SUBST(LIBAVCODEC_DECOMPRESS_LIB_TARGET, "lib/ultragrid/module_vdecompress_libavcodec.so")
|
||||
|
||||
AC_SUBST(LIBAVCODEC_AUDIO_CODEC_LIB_TARGET, "lib/ultragrid/module_acompress_libavcodec.so")
|
||||
|
||||
@@ -71,6 +71,7 @@ const map<enum library_class, library_class_info_t> library_class_info = {
|
||||
{ LIBRARY_CLASS_VIDEO_DISPLAY, { "Video display device", "display" }},
|
||||
{ LIBRARY_CLASS_AUDIO_COMPRESS, { "Audio compression", "acompress" }},
|
||||
{ LIBRARY_CLASS_VIDEO_DECOMPRESS, { "Video decompression", "vdecompress" }},
|
||||
{ LIBRARY_CLASS_VIDEO_COMPRESS, { "Video compression", "vcompress" }},
|
||||
};
|
||||
|
||||
static map<string, string> lib_errors;
|
||||
@@ -165,7 +166,28 @@ struct lib_info {
|
||||
int abi_version;
|
||||
};
|
||||
|
||||
static map<enum library_class, map<string, lib_info>> *libraries = nullptr;
|
||||
// http://stackoverflow.com/questions/1801892/making-mapfind-operation-case-insensitive
|
||||
/************************************************************************/
|
||||
/* Comparator for case-insensitive comparison in STL assos. containers */
|
||||
/************************************************************************/
|
||||
struct ci_less : std::binary_function<std::string, std::string, bool>
|
||||
{
|
||||
// case-independent (ci) compare_less binary function
|
||||
struct nocase_compare : public std::binary_function<unsigned char,unsigned char,bool>
|
||||
{
|
||||
bool operator() (const unsigned char& c1, const unsigned char& c2) const {
|
||||
return tolower (c1) < tolower (c2);
|
||||
}
|
||||
};
|
||||
bool operator() (const std::string & s1, const std::string & s2) const {
|
||||
return std::lexicographical_compare
|
||||
(s1.begin (), s1.end (), // source range
|
||||
s2.begin (), s2.end (), // dest range
|
||||
nocase_compare ()); // comparison
|
||||
}
|
||||
};
|
||||
|
||||
static map<enum library_class, map<string, lib_info, ci_less>> *libraries = nullptr;
|
||||
|
||||
/**
|
||||
* The purpose of this initializor instead of ordinary static initialization is that register_video_capture_filter()
|
||||
|
||||
@@ -74,6 +74,7 @@ enum library_class {
|
||||
LIBRARY_CLASS_VIDEO_DISPLAY,
|
||||
LIBRARY_CLASS_AUDIO_COMPRESS,
|
||||
LIBRARY_CLASS_VIDEO_DECOMPRESS,
|
||||
LIBRARY_CLASS_VIDEO_COMPRESS,
|
||||
};
|
||||
void open_all(const char *pattern);
|
||||
const void *load_library(const char *name, enum library_class, int abi_version);
|
||||
|
||||
@@ -58,44 +58,16 @@
|
||||
#include "utils/worker.h"
|
||||
#include "video.h"
|
||||
#include "video_compress.h"
|
||||
#include "video_compress/cuda_dxt.h"
|
||||
#include "video_compress/dxt_glsl.h"
|
||||
#include "video_compress/libavcodec.h"
|
||||
#include "video_compress/jpeg.h"
|
||||
#include "video_compress/none.h"
|
||||
#include "video_compress/uyvy.h"
|
||||
#include "lib_common.h"
|
||||
|
||||
using namespace std;
|
||||
|
||||
namespace {
|
||||
|
||||
/* *_str are symbol names inside library */
|
||||
/**
|
||||
* @brief This struct describes individual compress module
|
||||
*
|
||||
* Initially, in this struct are either callbacks or functions names.
|
||||
* For actual initialization of the callbacks/names, @ref MK_STATIC and @ref MK_NAME
|
||||
* macros should be used. After initialization, callbacks are set.
|
||||
*
|
||||
* There are 2 APIs available - drivers are required to implement one of them. They
|
||||
* can implement either @ref compress_frame_func or @ref compress_tile_func function.
|
||||
* The other* shall then be NULL.
|
||||
*/
|
||||
struct compress_t {
|
||||
const char * library_name; ///< If module is dynamically loadable, this is the name of library.
|
||||
|
||||
compress_info_t * compress_info;
|
||||
const char * compress_info_symbol_name;
|
||||
|
||||
void *handle; ///< for modular build, dynamically loaded library handle
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief This structure represents real internal compress state
|
||||
*/
|
||||
struct compress_state_real {
|
||||
struct compress_t *handle; ///< handle for the driver
|
||||
const video_compress_info *funcs; ///< handle for the driver
|
||||
struct module **state; ///< driver internal states
|
||||
unsigned int state_count; ///< count of compress states (equal to tiles' count)
|
||||
char compress_options[1024]; ///< compress options (for reconfiguration)
|
||||
@@ -122,7 +94,6 @@ typedef struct compress_state compress_state_proxy; ///< Used to emphasize that
|
||||
*/
|
||||
struct module compress_init_noerr;
|
||||
|
||||
static void init_compressions(void);
|
||||
static shared_ptr<video_frame> compress_frame_tiles(struct compress_state_real *s,
|
||||
shared_ptr<video_frame> frame, struct module *parent);
|
||||
static int compress_init_real(struct module *parent, const char *config_string,
|
||||
@@ -130,142 +101,25 @@ static int compress_init_real(struct module *parent, const char *config_string,
|
||||
static void compress_done_real(struct compress_state_real *s);
|
||||
static void compress_done(struct module *mod);
|
||||
|
||||
/**
|
||||
* @brief This table contains list of video compress devices compiled with this UltraGrid version.
|
||||
* @copydetails decoders
|
||||
*/
|
||||
struct compress_t compress_modules[] = {
|
||||
#ifndef UV_IN_YURI
|
||||
#if defined HAVE_DXT_GLSL || defined BUILD_LIBRARIES
|
||||
{
|
||||
"rtdxt",
|
||||
MK_NAME_REF(rtdxt_info),
|
||||
NULL,
|
||||
},
|
||||
#endif
|
||||
#if defined HAVE_JPEG || defined BUILD_LIBRARIES
|
||||
{
|
||||
"jpeg",
|
||||
MK_NAME_REF(jpeg_info),
|
||||
NULL,
|
||||
},
|
||||
#endif
|
||||
#if defined HAVE_COMPRESS_UYVY || defined BUILD_LIBRARIES
|
||||
{
|
||||
"uyvy",
|
||||
MK_NAME_REF(uyvy_info),
|
||||
NULL,
|
||||
},
|
||||
#endif
|
||||
#if defined HAVE_LAVC || defined BUILD_LIBRARIES
|
||||
{
|
||||
"libavcodec",
|
||||
MK_NAME_REF(libavcodec_info),
|
||||
NULL,
|
||||
},
|
||||
#endif
|
||||
#if defined HAVE_CUDA_DXT || defined BUILD_LIBRARIES
|
||||
{
|
||||
"cuda_dxt",
|
||||
MK_NAME_REF(cuda_dxt_info),
|
||||
NULL,
|
||||
},
|
||||
#endif
|
||||
#endif
|
||||
{
|
||||
NULL,
|
||||
MK_STATIC_REF(none_info),
|
||||
NULL,
|
||||
},
|
||||
};
|
||||
|
||||
#define MAX_COMPRESS_MODULES (sizeof(compress_modules)/sizeof(struct compress_t))
|
||||
|
||||
/// @brief List of available display devices.
|
||||
///
|
||||
/// initialized automatically
|
||||
static struct compress_t *available_compress_modules[MAX_COMPRESS_MODULES];
|
||||
/// @brief Count of @ref available_compress_modules.
|
||||
///
|
||||
/// initialized automatically
|
||||
static int compress_modules_count = 0;
|
||||
|
||||
#ifdef BUILD_LIBRARIES
|
||||
#include <dlfcn.h>
|
||||
/** Opens compress library of given name. */
|
||||
static void *compress_open_library(const char *compress_name)
|
||||
{
|
||||
char name[128];
|
||||
snprintf(name, sizeof(name), "vcompress_%s.so.%d", compress_name, VIDEO_COMPRESS_ABI_VERSION);
|
||||
|
||||
return open_library(name);
|
||||
}
|
||||
|
||||
/** For a given device, load individual functions from library handle (previously opened). */
|
||||
static int compress_fill_symbols(struct compress_t *compression)
|
||||
{
|
||||
void *handle = compression->handle;
|
||||
|
||||
compression->compress_info = (compress_info_t *)
|
||||
dlsym(handle, compression->compress_info_symbol_name);
|
||||
|
||||
if(!compression->compress_info) {
|
||||
fprintf(stderr, "Library %s opening error: %s \n", compression->library_name, dlerror());
|
||||
return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
#endif
|
||||
|
||||
/// @brief guard of @ref available_compress_modules initialization
|
||||
static pthread_once_t compression_list_initialized = PTHREAD_ONCE_INIT;
|
||||
|
||||
/// @brief initializes @ref available_compress_modules initialization
|
||||
static void init_compressions(void)
|
||||
{
|
||||
unsigned int i;
|
||||
for(i = 0; i < sizeof(compress_modules)/sizeof(struct compress_t); ++i) {
|
||||
#ifdef BUILD_LIBRARIES
|
||||
if(compress_modules[i].library_name) {
|
||||
int ret;
|
||||
compress_modules[i].handle = compress_open_library(
|
||||
compress_modules[i].library_name);
|
||||
if(!compress_modules[i].handle) continue;
|
||||
ret = compress_fill_symbols(&compress_modules[i]);
|
||||
if(!ret) {
|
||||
fprintf(stderr, "Opening symbols from library %s failed.\n",
|
||||
compress_modules[i].library_name);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
available_compress_modules[compress_modules_count] = &compress_modules[i];
|
||||
compress_modules_count++;
|
||||
}
|
||||
}
|
||||
|
||||
/// @brief Displays list of available compressions.
|
||||
void show_compress_help()
|
||||
{
|
||||
int i;
|
||||
pthread_once(&compression_list_initialized, init_compressions);
|
||||
printf("Possible compression modules (see '-c <module>:help' for options):\n");
|
||||
for(i = 0; i < compress_modules_count; ++i) {
|
||||
printf("\t%s\n", available_compress_modules[i]->compress_info->name);
|
||||
}
|
||||
list_modules(LIBRARY_CLASS_VIDEO_COMPRESS, VIDEO_COMPRESS_ABI_VERSION);
|
||||
}
|
||||
|
||||
list<compress_preset> get_compress_capabilities()
|
||||
{
|
||||
list<compress_preset> ret;
|
||||
|
||||
pthread_once(&compression_list_initialized, init_compressions);
|
||||
auto compressions = get_libraries_for_class(LIBRARY_CLASS_VIDEO_COMPRESS, VIDEO_COMPRESS_ABI_VERSION);
|
||||
|
||||
for (int i = 0; i < compress_modules_count; ++i) {
|
||||
auto presets = available_compress_modules[i]->compress_info->get_presets();
|
||||
for (auto it : compressions) {
|
||||
auto vci = static_cast<const struct video_compress_info *>(it.second);
|
||||
auto presets = vci->get_presets();
|
||||
for (auto const & it : presets) {
|
||||
auto new_elem = it;
|
||||
new_elem.name = string(available_compress_modules[i]->compress_info->name)
|
||||
new_elem.name = string(vci->name)
|
||||
+ ":" + it.name;
|
||||
ret.push_back(new_elem);
|
||||
}
|
||||
@@ -372,8 +226,8 @@ static int compress_init_real(struct module *parent, const char *config_string,
|
||||
struct compress_state_real **state)
|
||||
{
|
||||
struct compress_state_real *s;
|
||||
struct video_compress_params params;
|
||||
const char *compress_options = NULL;
|
||||
string compress_name;
|
||||
string compress_options;
|
||||
|
||||
if(!config_string)
|
||||
return -1;
|
||||
@@ -384,36 +238,31 @@ static int compress_init_real(struct module *parent, const char *config_string,
|
||||
return 1;
|
||||
}
|
||||
|
||||
pthread_once(&compression_list_initialized, init_compressions);
|
||||
|
||||
memset(¶ms, 0, sizeof(params));
|
||||
|
||||
s = (struct compress_state_real *) calloc(1, sizeof(struct compress_state_real));
|
||||
|
||||
s->state_count = 1;
|
||||
|
||||
for (int i = 0; i < compress_modules_count; ++i) {
|
||||
if(strncasecmp(config_string, available_compress_modules[i]->compress_info->name,
|
||||
strlen(available_compress_modules[i]->compress_info->name)) == 0) {
|
||||
s->handle = available_compress_modules[i];
|
||||
if (config_string[strlen(available_compress_modules[i]->compress_info->name)] == ':')
|
||||
compress_options = config_string +
|
||||
strlen(available_compress_modules[i]->compress_info->name) + 1;
|
||||
else
|
||||
compress_options = "";
|
||||
}
|
||||
char *tmp = strdup(config_string);
|
||||
if (strchr(tmp, ':')) {
|
||||
char *opts = strchr(tmp, ':') + 1;
|
||||
*strchr(tmp, ':') = '\0';
|
||||
compress_options = opts;
|
||||
}
|
||||
if(!s->handle) {
|
||||
compress_name = tmp;
|
||||
free(tmp);
|
||||
|
||||
auto vci = static_cast<const struct video_compress_info *>(load_library(compress_name.c_str(), LIBRARY_CLASS_VIDEO_COMPRESS, VIDEO_COMPRESS_ABI_VERSION));
|
||||
if(!vci) {
|
||||
fprintf(stderr, "Unknown compression: %s\n", config_string);
|
||||
free(s);
|
||||
return -1;
|
||||
}
|
||||
strncpy(s->compress_options, compress_options, sizeof(s->compress_options) - 1);
|
||||
s->compress_options[sizeof(s->compress_options) - 1] = '\0';
|
||||
params.cfg = s->compress_options;
|
||||
if(s->handle->compress_info->init_func) {
|
||||
|
||||
s = (struct compress_state_real *) calloc(1, sizeof(struct compress_state_real));
|
||||
s->state_count = 1;
|
||||
|
||||
s->funcs = vci;
|
||||
|
||||
strncpy(s->compress_options, compress_options.c_str(), sizeof(s->compress_options) - 1);
|
||||
|
||||
if(s->funcs->init_func) {
|
||||
s->state = (struct module **) calloc(1, sizeof(struct module *));
|
||||
s->state[0] = s->handle->compress_info->init_func(parent, ¶ms);
|
||||
s->state[0] = s->funcs->init_func(parent, s->compress_options);
|
||||
if(!s->state[0]) {
|
||||
fprintf(stderr, "Compression initialization failed: %s\n", config_string);
|
||||
free(s->state);
|
||||
@@ -443,7 +292,7 @@ static int compress_init_real(struct module *parent, const char *config_string,
|
||||
const char *get_compress_name(compress_state_proxy *proxy)
|
||||
{
|
||||
if(proxy)
|
||||
return proxy->ptr->handle->compress_info->name;
|
||||
return proxy->ptr->funcs->name;
|
||||
else
|
||||
return NULL;
|
||||
}
|
||||
@@ -474,9 +323,9 @@ void compress_frame(compress_state_proxy *proxy, shared_ptr<video_frame> frame)
|
||||
struct compress_state_real *s = proxy->ptr;
|
||||
|
||||
shared_ptr<video_frame> sync_api_frame;
|
||||
if (s->handle->compress_info->compress_frame_func) {
|
||||
sync_api_frame = s->handle->compress_info->compress_frame_func(s->state[0], frame);
|
||||
} else if(s->handle->compress_info->compress_tile_func) {
|
||||
if (s->funcs->compress_frame_func) {
|
||||
sync_api_frame = s->funcs->compress_frame_func(s->state[0], frame);
|
||||
} else if(s->funcs->compress_tile_func) {
|
||||
sync_api_frame = compress_frame_tiles(s, frame, &proxy->mod);
|
||||
} else {
|
||||
sync_api_frame = {};
|
||||
@@ -531,13 +380,10 @@ static void *compress_tile_callback(void *arg) {
|
||||
static shared_ptr<video_frame> compress_frame_tiles(struct compress_state_real *s,
|
||||
shared_ptr<video_frame> frame, struct module *parent)
|
||||
{
|
||||
struct video_compress_params params;
|
||||
memset(¶ms, 0, sizeof(params));
|
||||
params.cfg = s->compress_options;
|
||||
if(frame->tile_count != s->state_count) {
|
||||
s->state = (struct module **) realloc(s->state, frame->tile_count * sizeof(struct module *));
|
||||
for(unsigned int i = s->state_count; i < frame->tile_count; ++i) {
|
||||
s->state[i] = s->handle->compress_info->init_func(parent, ¶ms);
|
||||
s->state[i] = s->funcs->init_func(parent, s->compress_options);
|
||||
if(!s->state[i]) {
|
||||
fprintf(stderr, "Compression initialization failed\n");
|
||||
return NULL;
|
||||
@@ -557,7 +403,7 @@ static shared_ptr<video_frame> compress_frame_tiles(struct compress_state_real *
|
||||
struct compress_worker_data *data = &data_tile[i];
|
||||
data->state = s->state[i];
|
||||
data->frame = separate_tiles[i];
|
||||
data->callback = s->handle->compress_info->compress_tile_func;
|
||||
data->callback = s->funcs->compress_tile_func;
|
||||
|
||||
task_handle[i] = task_run_async(compress_tile_callback, data);
|
||||
}
|
||||
|
||||
@@ -46,6 +46,8 @@
|
||||
|
||||
#include "types.h"
|
||||
|
||||
#define VIDEO_COMPRESS_ABI_VERSION 5
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
@@ -58,10 +60,6 @@ extern struct module compress_init_noerr;
|
||||
/** @name API for capture modules
|
||||
* @{ */
|
||||
|
||||
struct video_compress_params {
|
||||
const char *cfg;
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief Initializes video compression
|
||||
*
|
||||
@@ -70,9 +68,7 @@ struct video_compress_params {
|
||||
* @return driver internal state
|
||||
*/
|
||||
typedef struct module *(*compress_init_t)(struct module *parent,
|
||||
const struct video_compress_params *params);
|
||||
|
||||
typedef bool (*compress_is_supported_t)(void);
|
||||
const char *cfg);
|
||||
/// @}
|
||||
|
||||
void show_compress_help(void);
|
||||
@@ -129,7 +125,7 @@ struct compress_preset {
|
||||
compress_prop dec_prop;
|
||||
};
|
||||
|
||||
struct compress_info_t {
|
||||
struct video_compress_info {
|
||||
const char * name; ///< compress (unique) name
|
||||
compress_init_t init_func; ///< compress driver initialization function
|
||||
compress_frame_t compress_frame_func; ///< compress function for Frame API
|
||||
|
||||
@@ -41,13 +41,12 @@
|
||||
#include "config_win32.h"
|
||||
#endif // HAVE_CONFIG_H
|
||||
|
||||
#include "video_compress/cuda_dxt.h"
|
||||
|
||||
#include "cuda_dxt/cuda_dxt.h"
|
||||
#include "cuda_wrapper.h"
|
||||
#include "debug.h"
|
||||
|
||||
#include "host.h"
|
||||
#include "lib_common.h"
|
||||
#include "module.h"
|
||||
#include "utils/video_frame_pool.h"
|
||||
#include "video.h"
|
||||
@@ -88,11 +87,10 @@ struct state_video_compress_cuda_dxt {
|
||||
static void cuda_dxt_compress_done(struct module *mod);
|
||||
|
||||
struct module *cuda_dxt_compress_init(struct module *parent,
|
||||
const struct video_compress_params *params)
|
||||
const char *fmt)
|
||||
{
|
||||
state_video_compress_cuda_dxt *s =
|
||||
new state_video_compress_cuda_dxt();
|
||||
const char *fmt = params->cfg;
|
||||
s->out_codec = DXT1;
|
||||
|
||||
if (fmt && fmt[0] != '\0') {
|
||||
@@ -284,9 +282,7 @@ static void cuda_dxt_compress_done(struct module *mod)
|
||||
delete s;
|
||||
}
|
||||
|
||||
} // end of anonymous namespace
|
||||
|
||||
struct compress_info_t cuda_dxt_info = {
|
||||
const struct video_compress_info cuda_dxt_info = {
|
||||
"cuda_dxt",
|
||||
cuda_dxt_compress_init,
|
||||
NULL,
|
||||
@@ -294,3 +290,7 @@ struct compress_info_t cuda_dxt_info = {
|
||||
[] { return list<compress_preset>{}; }
|
||||
};
|
||||
|
||||
REGISTER_MODULE(cuda_dxt, &cuda_dxt_info, LIBRARY_CLASS_VIDEO_COMPRESS, VIDEO_COMPRESS_ABI_VERSION);
|
||||
|
||||
} // end of anonymous namespace
|
||||
|
||||
|
||||
@@ -1,40 +0,0 @@
|
||||
/**
|
||||
* @file video_compress/cuda_dxt.h
|
||||
* @author Martin Pulec <pulec@cesnet.cz>
|
||||
*/
|
||||
/*
|
||||
* Copyright (c) 2013-2014 CESNET, z. s. p. o.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, is permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* 3. Neither the name of CESNET nor the names of its contributors may be
|
||||
* used to endorse or promote products derived from this software without
|
||||
* specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING,
|
||||
* BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
|
||||
* AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
|
||||
* EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
|
||||
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
struct compress_info_t;
|
||||
extern compress_info_t cuda_dxt_info;
|
||||
|
||||
@@ -51,11 +51,11 @@
|
||||
#include "dxt_compress/dxt_encoder.h"
|
||||
#include "dxt_compress/dxt_util.h"
|
||||
#include "host.h"
|
||||
#include "lib_common.h"
|
||||
#include "module.h"
|
||||
#include "utils/video_frame_pool.h"
|
||||
#include "video.h"
|
||||
#include "video_compress.h"
|
||||
#include "video_compress/dxt_glsl.h"
|
||||
|
||||
#include <memory>
|
||||
|
||||
@@ -217,10 +217,9 @@ static bool dxt_is_supported()
|
||||
}
|
||||
}
|
||||
|
||||
struct module *dxt_glsl_compress_init(struct module *parent, const struct video_compress_params *params)
|
||||
struct module *dxt_glsl_compress_init(struct module *parent, const char *opts)
|
||||
{
|
||||
struct state_video_compress_rtdxt *s;
|
||||
const char *opts = params->cfg;
|
||||
|
||||
if(strcmp(opts, "help") == 0) {
|
||||
printf("DXT GLSL comperssion usage:\n");
|
||||
@@ -324,9 +323,7 @@ static void dxt_glsl_compress_done(struct module *mod)
|
||||
delete s;
|
||||
}
|
||||
|
||||
} // end of anonymous namespace
|
||||
|
||||
struct compress_info_t rtdxt_info = {
|
||||
const struct video_compress_info rtdxt_info = {
|
||||
"RTDXT",
|
||||
dxt_glsl_compress_init,
|
||||
dxt_glsl_compress,
|
||||
@@ -341,3 +338,7 @@ struct compress_info_t rtdxt_info = {
|
||||
}
|
||||
};
|
||||
|
||||
REGISTER_MODULE(rtdxt, &rtdxt_info, LIBRARY_CLASS_VIDEO_COMPRESS, VIDEO_COMPRESS_ABI_VERSION);
|
||||
|
||||
} // end of anonymous namespace
|
||||
|
||||
|
||||
@@ -1,40 +0,0 @@
|
||||
/**
|
||||
* @file video_compress/dxt_glsl.h
|
||||
* @author Martin Pulec <pulec@cesnet.cz>
|
||||
*/
|
||||
/*
|
||||
* Copyright (c) 2011-2014 CESNET, z. s. p. o.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, is permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* 3. Neither the name of CESNET nor the names of its contributors may be
|
||||
* used to endorse or promote products derived from this software without
|
||||
* specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING,
|
||||
* BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
|
||||
* AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
|
||||
* EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
|
||||
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
struct compress_info_t;
|
||||
extern compress_info_t rtdxt_info;
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
#include "host.h"
|
||||
#include "video_compress.h"
|
||||
#include "module.h"
|
||||
#include "video_compress/jpeg.h"
|
||||
#include "lib_common.h"
|
||||
#include "libgpujpeg/gpujpeg_encoder.h"
|
||||
#include "utils/video_frame_pool.h"
|
||||
#include "video.h"
|
||||
@@ -236,10 +236,9 @@ static bool parse_fmt(struct state_video_compress_jpeg *s, char *fmt)
|
||||
return true;
|
||||
}
|
||||
|
||||
struct module * jpeg_compress_init(struct module *parent, const struct video_compress_params *params)
|
||||
struct module * jpeg_compress_init(struct module *parent, const char *opts)
|
||||
{
|
||||
struct state_video_compress_jpeg *s;
|
||||
const char *opts = params->cfg;
|
||||
|
||||
if(opts && strcmp(opts, "help") == 0) {
|
||||
printf("JPEG comperssion usage:\n");
|
||||
@@ -387,9 +386,7 @@ static void cleanup_state(struct state_video_compress_jpeg *s)
|
||||
s->encoder = NULL;
|
||||
}
|
||||
|
||||
} // end of anonymous namespace
|
||||
|
||||
struct compress_info_t jpeg_info = {
|
||||
const struct video_compress_info jpeg_info = {
|
||||
"JPEG",
|
||||
jpeg_compress_init,
|
||||
jpeg_compress,
|
||||
@@ -406,3 +403,7 @@ struct compress_info_t jpeg_info = {
|
||||
}
|
||||
};
|
||||
|
||||
REGISTER_MODULE(jpeg, &jpeg_info, LIBRARY_CLASS_VIDEO_COMPRESS, VIDEO_COMPRESS_ABI_VERSION);
|
||||
|
||||
} // end of anonymous namespace
|
||||
|
||||
|
||||
@@ -1,40 +0,0 @@
|
||||
/**
|
||||
* @file video_compress/jpeg.h
|
||||
* @author Martin Pulec <pulec@cesnet.cz>
|
||||
*/
|
||||
/*
|
||||
* Copyright (c) 2011-2014 CESNET, z. s. p. o.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, is permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* 3. Neither the name of CESNET nor the names of its contributors may be
|
||||
* used to endorse or promote products derived from this software without
|
||||
* specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING,
|
||||
* BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
|
||||
* AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
|
||||
* EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
|
||||
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
struct compress_info_t;
|
||||
extern compress_info_t jpeg_info;
|
||||
|
||||
@@ -44,12 +44,12 @@
|
||||
#endif // HAVE_CONFIG_H
|
||||
|
||||
#include "libavcodec_common.h"
|
||||
#include "video_compress/libavcodec.h"
|
||||
|
||||
#include <assert.h>
|
||||
|
||||
#include "debug.h"
|
||||
#include "host.h"
|
||||
#include "lib_common.h"
|
||||
#include "messaging.h"
|
||||
#include "module.h"
|
||||
#include "utils/misc.h"
|
||||
@@ -341,10 +341,9 @@ static list<compress_preset> get_libavcodec_presets() {
|
||||
return ret;
|
||||
}
|
||||
|
||||
struct module * libavcodec_compress_init(struct module *parent, const struct video_compress_params *params)
|
||||
struct module * libavcodec_compress_init(struct module *parent, const char *opts)
|
||||
{
|
||||
struct state_video_compress_libav *s;
|
||||
const char *opts = params->cfg;
|
||||
|
||||
s = new state_video_compress_libav();
|
||||
s->lavcd_global_lock = rm_acquire_shared_lock(LAVCD_LOCK_NAME);
|
||||
@@ -1184,9 +1183,7 @@ static void libavcodec_check_messages(struct state_video_compress_libav *s)
|
||||
|
||||
}
|
||||
|
||||
} // end of anonymous namespace
|
||||
|
||||
struct compress_info_t libavcodec_info = {
|
||||
const struct video_compress_info libavcodec_info = {
|
||||
"libavcodec",
|
||||
libavcodec_compress_init,
|
||||
NULL,
|
||||
@@ -1194,3 +1191,7 @@ struct compress_info_t libavcodec_info = {
|
||||
get_libavcodec_presets,
|
||||
};
|
||||
|
||||
REGISTER_MODULE(libavcodec, &libavcodec_info, LIBRARY_CLASS_VIDEO_COMPRESS, VIDEO_COMPRESS_ABI_VERSION);
|
||||
|
||||
} // end of anonymous namespace
|
||||
|
||||
|
||||
@@ -1,40 +0,0 @@
|
||||
/**
|
||||
* @file video_compress/libavcodec.h
|
||||
* @author Martin Pulec <pulec@cesnet.cz>
|
||||
*/
|
||||
/*
|
||||
* Copyright (c) 2013-2014 CESNET, z. s. p. o.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, is permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* 3. Neither the name of CESNET nor the names of its contributors may be
|
||||
* used to endorse or promote products derived from this software without
|
||||
* specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING,
|
||||
* BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
|
||||
* AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
|
||||
* EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
|
||||
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
struct compress_info_t;
|
||||
extern compress_info_t libavcodec_info;
|
||||
|
||||
@@ -50,12 +50,11 @@
|
||||
#include "config_unix.h"
|
||||
#endif /* HAVE_CONFIG_H */
|
||||
|
||||
#include "none.h"
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "debug.h"
|
||||
#include "host.h"
|
||||
#include "lib_common.h"
|
||||
#include "module.h"
|
||||
#include "video_codec.h"
|
||||
#include "video_compress.h"
|
||||
@@ -73,10 +72,8 @@ struct state_video_compress_none {
|
||||
uint32_t magic;
|
||||
};
|
||||
|
||||
struct module * none_compress_init(struct module *parent, const struct video_compress_params *params)
|
||||
struct module * none_compress_init(struct module *parent, const char *)
|
||||
{
|
||||
UNUSED(params);
|
||||
|
||||
struct state_video_compress_none *s;
|
||||
|
||||
s = (struct state_video_compress_none *) malloc(sizeof(struct state_video_compress_none));
|
||||
@@ -108,9 +105,7 @@ static void none_compress_done(struct module *mod)
|
||||
free(s);
|
||||
}
|
||||
|
||||
} // end of anonymous namespace
|
||||
|
||||
struct compress_info_t none_info = {
|
||||
const struct video_compress_info none_info = {
|
||||
"none",
|
||||
none_compress_init,
|
||||
none_compress,
|
||||
@@ -123,3 +118,7 @@ struct compress_info_t none_info = {
|
||||
}
|
||||
};
|
||||
|
||||
REGISTER_MODULE(none, &none_info, LIBRARY_CLASS_VIDEO_COMPRESS, VIDEO_COMPRESS_ABI_VERSION);
|
||||
|
||||
} // end of anonymous namespace
|
||||
|
||||
|
||||
@@ -1,52 +0,0 @@
|
||||
/**
|
||||
* @file none.h
|
||||
* @author Martin Benes <martinbenesh@gmail.com>
|
||||
* @author Lukas Hejtmanek <xhejtman@ics.muni.cz>
|
||||
* @author Petr Holub <hopet@ics.muni.cz>
|
||||
* @author Milos Liska <xliska@fi.muni.cz>
|
||||
* @author Jiri Matela <matela@ics.muni.cz>
|
||||
* @author Dalibor Matura <255899@mail.muni.cz>
|
||||
* @author Martin Pulec <pulec@cesnet.cz>
|
||||
* @author Ian Wesley-Smith <iwsmith@cct.lsu.edu>
|
||||
*/
|
||||
/*
|
||||
* Copyright (c) 2005-2014, CESNET z. s. p. o.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, is permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
*
|
||||
* This product includes software developed by CESNET z.s.p.o.
|
||||
*
|
||||
* 4. Neither the name of the CESNET nor the names of its contributors may be
|
||||
* used to endorse or promote products derived from this software without
|
||||
* specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING,
|
||||
* BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
|
||||
* AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
|
||||
* EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
|
||||
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*/
|
||||
|
||||
struct compress_info_t;
|
||||
extern compress_info_t none_info;
|
||||
|
||||
@@ -42,10 +42,10 @@
|
||||
#endif // HAVE_CONFIG_H
|
||||
#include "debug.h"
|
||||
#include "host.h"
|
||||
#include "lib_common.h"
|
||||
#include "module.h"
|
||||
#include "utils/video_frame_pool.h"
|
||||
#include "video_compress.h"
|
||||
#include "video_compress/uyvy.h"
|
||||
#include "compat/platform_semaphore.h"
|
||||
#include "video.h"
|
||||
#include <pthread.h>
|
||||
@@ -136,9 +136,8 @@ struct state_video_compress_uyvy {
|
||||
int uyvy_configure_with(struct state_video_compress_uyvy *s, struct video_frame *tx);
|
||||
static void uyvy_compress_done(struct module *mod);
|
||||
|
||||
struct module * uyvy_compress_init(struct module *parent, const struct video_compress_params *params)
|
||||
struct module * uyvy_compress_init(struct module *parent, const char *)
|
||||
{
|
||||
UNUSED(params);
|
||||
struct state_video_compress_uyvy *s;
|
||||
|
||||
s = (struct state_video_compress_uyvy *) malloc(sizeof(struct state_video_compress_uyvy));
|
||||
@@ -344,9 +343,7 @@ static void uyvy_compress_done(struct module *mod)
|
||||
free(s);
|
||||
}
|
||||
|
||||
} // end of anonymous namespace
|
||||
|
||||
struct compress_info_t uyvy_info = {
|
||||
const struct video_compress_info uyvy_info = {
|
||||
"UYVY",
|
||||
uyvy_compress_init,
|
||||
uyvy_compress,
|
||||
@@ -354,3 +351,7 @@ struct compress_info_t uyvy_info = {
|
||||
[] {return list<compress_preset>{}; }
|
||||
};
|
||||
|
||||
REGISTER_MODULE(uyvy, &uyvy_info, LIBRARY_CLASS_VIDEO_COMPRESS, VIDEO_COMPRESS_ABI_VERSION);
|
||||
|
||||
} // end of anonymous namespace
|
||||
|
||||
|
||||
@@ -1,40 +0,0 @@
|
||||
/**
|
||||
* @file video_compress/uyvy.h
|
||||
* @author Martin Pulec <pulec@cesnet.cz>
|
||||
*/
|
||||
/*
|
||||
* Copyright (c) 2012-2014 CESNET, z. s. p. o.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, is permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* 3. Neither the name of CESNET nor the names of its contributors may be
|
||||
* used to endorse or promote products derived from this software without
|
||||
* specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING,
|
||||
* BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
|
||||
* AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
|
||||
* EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
|
||||
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
struct compress_info_t;
|
||||
extern compress_info_t uyvy_info;
|
||||
|
||||
Reference in New Issue
Block a user