Esempio n. 1
0
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
}
Esempio n. 2
0
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;
}
Esempio n. 3
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;
}