diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/combined/ffmpeg/Makefile.am | 11 | ||||
-rw-r--r-- | src/dxr3/Makefile.am | 5 | ||||
-rw-r--r-- | src/dxr3/dxr3_mpeg_encoders.c | 37 | ||||
-rw-r--r-- | src/dxr3/ffmpeg_encoder.c (renamed from src/combined/ffmpeg/ffmpeg_encoder.c) | 14 | ||||
-rw-r--r-- | src/dxr3/video_out_dxr3.c | 17 |
5 files changed, 15 insertions, 69 deletions
diff --git a/src/combined/ffmpeg/Makefile.am b/src/combined/ffmpeg/Makefile.am index 67c7c011a..c0eeccffd 100644 --- a/src/combined/ffmpeg/Makefile.am +++ b/src/combined/ffmpeg/Makefile.am @@ -4,21 +4,10 @@ AM_CFLAGS = $(DEFAULT_OCFLAGS) $(VISIBILITY_FLAG) AM_CPPFLAGS = $(ZLIB_CPPFLAGS) AM_LDFLAGS = $(xineplug_ldflags) -# this must always be included, even if the current machine has no DXR3... -EXTRA_DIST = ffmpeg_encoder.c - xineplug_LTLIBRARIES = xineplug_decode_ff.la -if ENABLE_DXR3 -AM_CFLAGS += $(X_CFLAGS) -AM_CPPFLAGS += -I$(top_srcdir)/src/dxr3 -xineplug_decode_ff_la_SOURCES = ffmpeg_decoder.c ff_audio_decoder.c ff_video_decoder.c \ - ffmpeg_encoder.c ff_mpeg_parser.c ffmpeg_decoder.h \ - ff_mpeg_parser.h -else xineplug_decode_ff_la_SOURCES = ffmpeg_decoder.c ff_audio_decoder.c ff_video_decoder.c \ ff_mpeg_parser.c ffmpeg_decoder.h ff_mpeg_parser.h -endif nodist_xineplug_decode_ff_la_SOURCES = ffmpeg_config.h diff --git a/src/dxr3/Makefile.am b/src/dxr3/Makefile.am index 541306ab9..0c0f4f979 100644 --- a/src/dxr3/Makefile.am +++ b/src/dxr3/Makefile.am @@ -39,9 +39,10 @@ endif xineplug_vo_out_dxr3_la_SOURCES = \ dxr3_mpeg_encoders.c \ + ffmpeg_encoder.c \ dxr3_spu_encoder.c \ dxr3_scr.c \ video_out_dxr3.c -xineplug_vo_out_dxr3_la_CFLAGS = $(AM_CFLAGS) $(AVUTIL_CFLAGS) -xineplug_vo_out_dxr3_la_LIBADD = $(XINE_LIB) $(link_fame) $(link_rte) $(link_x_libs) $(LTLIBINTL) $(DYNAMIC_LD_LIBS) $(AVUTIL_LIBS) -lm +xineplug_vo_out_dxr3_la_CFLAGS = $(AM_CFLAGS) $(AVUTIL_CFLAGS) $(FFMPEG_CFLAGS) +xineplug_vo_out_dxr3_la_LIBADD = $(XINE_LIB) $(link_fame) $(link_rte) $(link_x_libs) $(LTLIBINTL) $(DYNAMIC_LD_LIBS) $(AVUTIL_LIBS) $(FFMPEG_LDFLAGS) -lm diff --git a/src/dxr3/dxr3_mpeg_encoders.c b/src/dxr3/dxr3_mpeg_encoders.c index d32a298a6..2ccc05e49 100644 --- a/src/dxr3/dxr3_mpeg_encoders.c +++ b/src/dxr3/dxr3_mpeg_encoders.c @@ -110,13 +110,6 @@ static int fame_prepare_frame(fame_data_t *this, dxr3_driver_t *drv, dxr3_frame_t *frame); #endif -/* initialization function */ -int dxr3_lavc_init(dxr3_driver_t *drv, plugin_node_t *node); - -/* close function from encoder api */ -static int lavc_on_close(dxr3_driver_t *drv); - - #ifdef HAVE_LIBRTE int dxr3_rte_init(dxr3_driver_t *drv) { @@ -538,33 +531,3 @@ static int fame_prepare_frame(fame_data_t *this, dxr3_driver_t *drv, dxr3_frame_ return 1; } #endif - - -int dxr3_lavc_init(dxr3_driver_t *drv, plugin_node_t *node) -{ - void *ffmpeg; - int (*init)(dxr3_driver_t *); - int result; - - ffmpeg = dlopen(node->file->filename, RTLD_LAZY); - if (!ffmpeg) return 0; - - init = dlsym(ffmpeg, "dxr3_encoder_init"); - if (!init) return 0; - - result = init(drv); - /* the close function is implemented here, because it will call dlclose() - * and that should not be done be the library we are closing... */ - drv->enc->on_close = lavc_on_close; - drv->enc->handle = ffmpeg; - return result; -} - -static int lavc_on_close(dxr3_driver_t *drv) -{ - drv->enc->on_unneeded(drv); - dlclose(drv->enc->handle); - free(drv->enc); - drv->enc = NULL; - return 1; -} diff --git a/src/combined/ffmpeg/ffmpeg_encoder.c b/src/dxr3/ffmpeg_encoder.c index f7401f6ab..d9ee921cc 100644 --- a/src/combined/ffmpeg/ffmpeg_encoder.c +++ b/src/dxr3/ffmpeg_encoder.c @@ -45,9 +45,6 @@ #define DEFAULT_BUFFER_SIZE 512*1024 -/*initialisation function, used by the dxr3 plugin */ -int dxr3_encoder_init(dxr3_driver_t *drv) EXPORTED; - /* functions required by encoder api */ static int lavc_on_update_format(dxr3_driver_t *drv, dxr3_frame_t *frame); static int lavc_on_display_frame(dxr3_driver_t *drv, dxr3_frame_t *frame); @@ -65,7 +62,7 @@ typedef struct lavc_data_s { } lavc_data_t; -int dxr3_encoder_init(dxr3_driver_t *drv) +int dxr3_lavc_init(dxr3_driver_t *drv) { lavc_data_t* this; avcodec_init(); @@ -83,6 +80,15 @@ int dxr3_encoder_init(dxr3_driver_t *drv) this->context = 0; drv->enc = &this->encoder_data; + drv->enc->on_close = dxr3_lavc_close; + return 1; +} + +static int dxr3_lavc_close(dxr3_driver_t *drv) { + drv->enc->on_unneeded(drv); + free(drv->enc); + drv->enc = NULL; + return 1; } diff --git a/src/dxr3/video_out_dxr3.c b/src/dxr3/video_out_dxr3.c index 5559f18ca..20cee345b 100644 --- a/src/dxr3/video_out_dxr3.c +++ b/src/dxr3/video_out_dxr3.c @@ -286,21 +286,8 @@ static vo_driver_t *dxr3_vo_open_plugin(video_driver_class_t *class_gen, const v #if LOG_VID printf("video_out_dxr3: Supported mpeg encoders: "); #endif - /* check, if ffmpeg plugin is available by looking through plugin - * catalog; catalog mutex is already locked here, since this is open_plugin() */ - node = NULL; - plugin_list = class->xine->plugin_catalog->plugin_lists[PLUGIN_VIDEO_DECODER - 1]; - list_size = xine_sarray_size(plugin_list); - for (list_id = 0; list_id < list_size; list_id++) { - node = xine_sarray_get (plugin_list, list_id); - if (strcasecmp(node->info->id, "ffmpegvideo") == 0) { - available_encoders[encoder++] = "libavcodec"; -#if LOG_VID - printf("libavcodec, "); -#endif - break; - } - } + available_encoders[encoder++] = "libavcodec"; + printf("libavcodec, "); #ifdef HAVE_LIBFAME available_encoders[encoder++] = "fame"; #if LOG_VID |