static inline int _tdav_codec_plugins_collect() { #if defined(_MSC_VER) // TODO: Why next code crash on CentOS64 when built with debug enabled ("-g -O0") const struct tmedia_codec_plugin_def_s* (* plugins)[TMED_CODEC_MAX_PLUGINS]; tsk_size_t i, count; int ret; static const tsk_size_t __codec_plugins_all_count = sizeof(__codec_plugins_all)/sizeof(__codec_plugins_all[0]); ret = _tdav_codec_plugins_disperse(); if((ret = tmedia_codec_plugin_registered_get_all(&plugins, &count)) == 0) { for(i = 0; i < count && i < __codec_plugins_all_count; ++i) { __codec_plugins_all[i] = (*plugins)[i]; } } return 0; #else extern const tmedia_codec_plugin_def_t* __tmedia_codec_plugins[TMED_CODEC_MAX_PLUGINS]; static const tsk_size_t __codec_plugins_all_count = sizeof(__codec_plugins_all)/sizeof(__codec_plugins_all[0]); int ret = _tdav_codec_plugins_disperse(); if (ret == 0) { tsk_size_t i, count_max = sizeof(__tmedia_codec_plugins)/sizeof(__tmedia_codec_plugins[0]); for(i = 0; i < count_max && i < __codec_plugins_all_count; ++i) { __codec_plugins_all[i] = __tmedia_codec_plugins[i]; } } return ret; #endif }
static inline int _tdav_codec_plugins_collect() { const struct tmedia_codec_plugin_def_s** plugins = tsk_null; tsk_size_t i, count; int ret; static const tsk_size_t __codec_plugins_all_count = sizeof(__codec_plugins_all)/sizeof(__codec_plugins_all[0]); ret = _tdav_codec_plugins_disperse(); if((ret = tmedia_codec_plugin_registered_get_all(&plugins, &count)) == 0) { for(i = 0; i < count && i < __codec_plugins_all_count; ++i) { __codec_plugins_all[i] = plugins[i]; } } return 0; }
int tdav_deinit() { int ret = 0; if(!__b_initialized) { TSK_DEBUG_INFO("TINYDAV not initialized"); return 0; } /* === OS specific === */ #if TDAV_UNDER_WINDOWS if ((ret = tdav_win32_deinit())) { return ret; } #elif TDAV_UNDER_APPLE if ((ret = tdav_apple_deinit())) { return ret; } #endif /* === UnRegister media contents === */ tmedia_content_plugin_unregister_all(); /* === UnRegister sessions === */ tmedia_session_plugin_unregister(tmedia_session_ghost_plugin_def_t); tmedia_session_plugin_unregister(tdav_session_audio_plugin_def_t); tmedia_session_plugin_unregister(tdav_session_video_plugin_def_t); #if !defined(HAVE_TINYMSRP) || HAVE_TINYMSRP tmedia_session_plugin_unregister(tdav_session_msrp_plugin_def_t); #endif tmedia_session_plugin_unregister(tdav_session_t140_plugin_def_t); #if !defined(HAVE_TINYBFCP) || HAVE_TINYBFCP tmedia_session_plugin_unregister(tdav_session_bfcp_plugin_def_t); #endif tmedia_session_plugin_unregister(tdav_session_bfcpaudio_plugin_def_t); tmedia_session_plugin_unregister(tdav_session_bfcpvideo_plugin_def_t); /* === UnRegister codecs === */ tmedia_codec_plugin_unregister_all(); /* === unRegister converters === */ #if HAVE_LIBYUV tmedia_converter_video_plugin_unregister(tdav_converter_video_libyuv_plugin_def_t); #endif #if HAVE_FFMPEG || HAVE_SWSSCALE tmedia_converter_video_plugin_unregister(tdav_converter_video_ffmpeg_plugin_def_t); #endif /* === unRegister consumers === */ tmedia_consumer_plugin_unregister(tdav_consumer_t140_plugin_def_t); /* T140 */ #if HAVE_DSOUND_H tmedia_consumer_plugin_unregister(tdav_consumer_dsound_plugin_def_t); #endif #if HAVE_WAVE_API tmedia_consumer_plugin_unregister(tdav_consumer_waveapi_plugin_def_t); #endif #if HAVE_WASAPI tmedia_consumer_plugin_unregister(tdav_consumer_wasapi_plugin_def_t); #endif #if TDAV_UNDER_WINDOWS && !TDAV_UNDER_WINDOWS_RT // Windows GDI tmedia_consumer_plugin_unregister(tdav_consumer_video_gdi_plugin_def_t); #endif #if HAVE_WINM // Windows Media (WP8) tmedia_consumer_plugin_unregister(tdav_consumer_winm_plugin_def_t); #endif #if HAVE_COREAUDIO_AUDIO_UNIT // CoreAudio based on AudioUnit tmedia_consumer_plugin_unregister(tdav_consumer_audiounit_plugin_def_t); #endif #if HAVE_COREAUDIO_AUDIO_QUEUE // CoreAudio based on AudioQueue tmedia_consumer_plugin_unregister(tdav_consumer_audioqueue_plugin_def_t); #endif #if HAVE_ALSA_ASOUNDLIB_H // Linux tmedia_consumer_plugin_unregister(tdav_consumer_alsa_plugin_def_t); #endif #if HAVE_LINUX_SOUNDCARD_H // Linux tmedia_consumer_plugin_unregister(tdav_consumer_oss_plugin_def_t); #endif /* === UnRegister producers === */ tmedia_producer_plugin_unregister(tdav_producer_t140_plugin_def_t); /* T140 */ #if HAVE_DSOUND_H // DirectSound tmedia_producer_plugin_unregister(tdav_producer_dsound_plugin_def_t); #endif #if HAVE_WAVE_API // WaveAPI tmedia_producer_plugin_unregister(tdav_producer_waveapi_plugin_def_t); #endif #if HAVE_WASAPI // WASAPI tmedia_producer_plugin_unregister(tdav_producer_wasapi_plugin_def_t); #endif #if TDAV_UNDER_WINDOWS && !TDAV_UNDER_WINDOWS_RT // Windows DirectDraw (DirectX) tmedia_producer_plugin_unregister(tdav_producer_screencast_ddraw_plugin_def_t); #endif #if TDAV_UNDER_WINDOWS && !TDAV_UNDER_WINDOWS_RT // Windows GDI tmedia_producer_plugin_unregister(tdav_producer_screencast_gdi_plugin_def_t); #endif #if HAVE_WINM // Windows Media (WP8) tmedia_producer_plugin_unregister(tdav_producer_winm_plugin_def_t); #endif #if HAVE_ALSA_ASOUNDLIB_H // Linux tmedia_producer_plugin_unregister(tdav_producer_alsa_plugin_def_t); #endif #if HAVE_LINUX_SOUNDCARD_H // Linux tmedia_producer_plugin_unregister(tdav_producer_oss_plugin_def_t); #endif #if HAVE_LINUX_VIDEODEV2_H // V4L2 (Linux) tmedia_producer_plugin_unregister(tdav_producer_video_v4l2_plugin_def_t); tmedia_producer_plugin_unregister(tdav_producer_screencast_v4l2_plugin_def_t); #endif #if HAVE_COREAUDIO_AUDIO_UNIT // CoreAudio based on AudioUnit tmedia_producer_plugin_unregister(tdav_producer_audiounit_plugin_def_t); #elif HAVE_COREAUDIO_AUDIO_QUEUE // CoreAudio based on AudioQueue tmedia_producer_plugin_unregister(tdav_producer_audioqueue_plugin_def_t); #endif #if HAVE_OSS_H tmedia_consumer_plugin_unregister(tmedia_consumer_oss_plugin_def_t); #endif /* === UnRegister Audio Denoise (AGC, VAD, Noise Suppression and AEC) === */ #if HAVE_SPEEX_DSP && (!defined(HAVE_SPEEX_DENOISE) || HAVE_SPEEX_DENOISE) tmedia_denoise_plugin_unregister(tdav_speex_denoise_plugin_def_t); #endif #if HAVE_WEBRTC && (!defined(HAVE_WEBRTC_DENOISE) || HAVE_WEBRTC_DENOISE) tmedia_denoise_plugin_unregister(tdav_webrtc_denoise_plugin_def_t); #endif /* === UnRegister Audio Resampler === */ #if HAVE_SPEEX_DSP && (!defined(HAVE_SPEEX_RESAMPLER) || HAVE_SPEEX_RESAMPLER) tmedia_resampler_plugin_unregister(tdav_speex_resampler_plugin_def_t); #endif /* === UnRegister Audio/video JitterBuffer === */ #if HAVE_SPEEX_DSP && HAVE_SPEEX_JB tmedia_jitterbuffer_plugin_unregister(tdav_speex_jitterbuffer_plugin_def_t); #else tmedia_jitterbuffer_plugin_unregister(tdav_speakup_jitterbuffer_plugin_def_t); #endif /* === stand-alone plugins === */ #if TDAV_HAVE_PLUGIN_EXT_WIN32 { TSK_OBJECT_SAFE_FREE(__dll_plugin_cuda); TSK_OBJECT_SAFE_FREE(__dll_plugin_wasapi); TSK_OBJECT_SAFE_FREE(__dll_plugin_mf); TSK_OBJECT_SAFE_FREE(__dll_plugin_dd); TSK_OBJECT_SAFE_FREE(__dll_plugin_dshow); TSK_OBJECT_SAFE_FREE(__dll_plugin_audio_dsp); TSK_OBJECT_SAFE_FREE(__dll_plugin_ipsec_wfp); } #endif // disperse all collected codecs _tdav_codec_plugins_disperse(); __b_initialized = tsk_false; return ret; }