int tdav_init() { int ret = 0; if(__b_initialized) { TSK_DEBUG_INFO("TINYDAV already initialized"); return 0; } /* === OS specific === */ #if TDAV_UNDER_WINDOWS if ((ret = tdav_win32_init())) { return ret; } #elif TDAV_UNDER_APPLE if ((ret = tdav_apple_init())) { return ret; } #endif /* === Initialize ffmpeg === */ #if HAVE_FFMPEG # if LIBAVCODEC_VERSION_MAJOR <= 53 avcodec_init(); # endif #endif /* === stand-alone plugins === */ #if TDAV_HAVE_PLUGIN_EXT_WIN32 { tsk_size_t plugins_count = 0; char* full_path = tsk_null; // Loading plugins from ActiveX fails when using relative path. /* WASAPI (Audio consumer, Audio producer) */ #if 0 // disable WASAPI by default (AEC issue because of code#consumer rate mismatch) if(tdav_win32_is_winvista_or_later()) { tsk_sprintf(&full_path, "%s/pluginWASAPI.dll", tdav_get_current_directory_const()); if(tsk_plugin_file_exist(full_path) && (__dll_plugin_wasapi = tsk_plugin_create(full_path))) { plugins_count += tmedia_plugin_register(__dll_plugin_wasapi, tsk_plugin_def_type_all, tsk_plugin_def_media_type_all); } } #endif /* CUDA (H.264 codec) */ #if 1 // Enable CUDA by default tsk_sprintf(&full_path, "%s/pluginCUDA.dll", tdav_get_current_directory_const()); // CUDA works on all Windows versions if(tsk_plugin_file_exist(full_path) && (__dll_plugin_cuda = tsk_plugin_create(full_path))) { plugins_count += tmedia_plugin_register(__dll_plugin_cuda, tsk_plugin_def_type_all, tsk_plugin_def_media_type_all); } #endif /* Microsoft Desktop Duplication API (Screen capture) */ if (tdav_win32_is_win8_or_later()) { tsk_sprintf(&full_path, "%s/pluginWinDD.dll", tdav_get_current_directory_const()); if (tsk_plugin_file_exist(full_path) && (__dll_plugin_dd = tsk_plugin_create(full_path))) { plugins_count += tmedia_plugin_register(__dll_plugin_dd, tsk_plugin_def_type_all, tsk_plugin_def_media_type_all); } } /* Media Foundation (Video converter, Video consumer, Video producer, Microsoft H.264 codec, Intel Quick Sync H.264 codec) */ if(tdav_win32_is_win7_or_later()) { tsk_sprintf(&full_path, "%s/pluginWinMF.dll", tdav_get_current_directory_const()); if(tsk_plugin_file_exist(full_path) && (__dll_plugin_mf = tsk_plugin_create(full_path))) { plugins_count += tmedia_plugin_register(__dll_plugin_mf, tsk_plugin_def_type_all, tsk_plugin_def_media_type_all); } } /* DirectShow (Video consumer, Video producer) */ if (tdav_win32_is_winxp_or_later()) { tsk_sprintf(&full_path, "%s/pluginDirectShow.dll", tdav_get_current_directory_const()); if (tsk_plugin_file_exist(full_path) && (__dll_plugin_dshow = tsk_plugin_create(full_path))) { plugins_count += tmedia_plugin_register(__dll_plugin_dshow, tsk_plugin_def_type_all, tsk_plugin_def_media_type_all); } } /* Audio DSP (Resampler, AEC, NS, AGC...) */ if (tdav_win32_is_winvista_or_later()) { tsk_sprintf(&full_path, "%s/pluginWinAudioDSP.dll", tdav_get_current_directory_const()); if(tsk_plugin_file_exist(full_path) && (__dll_plugin_audio_dsp = tsk_plugin_create(full_path))) { plugins_count += tmedia_plugin_register(__dll_plugin_audio_dsp, tsk_plugin_def_type_all, tsk_plugin_def_media_type_all); } } /* IPSec implementation using Windows Filtering Platform (WFP) */ #if !defined(HAVE_TINYIPSEC) || HAVE_TINYIPSEC if (tdav_win32_is_winvista_or_later()) { tsk_sprintf(&full_path, "%s/pluginWinIPSecVista.dll", tdav_get_current_directory_const()); if (tsk_plugin_file_exist(full_path) && (tipsec_plugin_register_file(full_path, &__dll_plugin_ipsec_wfp) == 0)) { plugins_count += 1; // at least one __b_ipsec_supported = tsk_true; } } #endif TSK_FREE(full_path); TSK_DEBUG_INFO("Windows stand-alone plugins loaded = %u", plugins_count); } #endif /* === Register media contents === */ tmedia_content_plugin_register("text/html", tmedia_content_dummy_plugin_def_t); tmedia_content_plugin_register("text/plain", tmedia_content_dummy_plugin_def_t); tmedia_content_plugin_register("application/octet-stream", tmedia_content_dummy_plugin_def_t); tmedia_content_plugin_register("message/CPIM", tmedia_content_cpim_plugin_def_t); /* To be implemented tmedia_content_plugin_register("message/sipfrag", tmedia_content_sipfrag_plugin_def_t); tmedia_content_plugin_register("multipart/digest", tmedia_content_multipart_plugin_def_t); tmedia_content_plugin_register("multipart/mixed", tmedia_content_multipart_plugin_def_t); tmedia_content_plugin_register("multipart/related", tmedia_content_multipart_plugin_def_t); tmedia_content_plugin_register("multipart/alternative", tmedia_content_multipart_plugin_def_t); tmedia_content_plugin_register("multipart/encrypted", tmedia_content_multipart_plugin_def_t); tmedia_content_plugin_register("multipart/parallel", tmedia_content_multipart_plugin_def_t); tmedia_content_plugin_register("multipart/signed", tmedia_content_multipart_plugin_def_t); */ /* === Register sessions === */ tmedia_session_plugin_register(tmedia_session_ghost_plugin_def_t); tmedia_session_plugin_register(tdav_session_audio_plugin_def_t); tmedia_session_plugin_register(tdav_session_video_plugin_def_t); #if !defined(HAVE_TINYMSRP) || HAVE_TINYMSRP tmedia_session_plugin_register(tdav_session_msrp_plugin_def_t); #endif tmedia_session_plugin_register(tdav_session_t140_plugin_def_t); #if !defined(HAVE_TINYBFCP) || HAVE_TINYBFCP tmedia_session_plugin_register(tdav_session_bfcp_plugin_def_t); #endif tmedia_session_plugin_register(tdav_session_bfcpaudio_plugin_def_t); tmedia_session_plugin_register(tdav_session_bfcpvideo_plugin_def_t); /* === Register codecs === */ #if HAVE_FFMPEG avcodec_register_all(); #endif #if !defined(HAVE_TINYMSRP) || HAVE_TINYMSRP tmedia_codec_plugin_register(tdav_codec_msrp_plugin_def_t); #endif tmedia_codec_plugin_register(tdav_codec_t140_plugin_def_t); #if !defined(HAVE_TINYBFCP) || HAVE_TINYBFCP tmedia_codec_plugin_register(tdav_codec_bfcp_plugin_def_t); #endif tmedia_codec_plugin_register(tdav_codec_red_plugin_def_t); tmedia_codec_plugin_register(tdav_codec_g711a_plugin_def_t); tmedia_codec_plugin_register(tdav_codec_g711u_plugin_def_t); tmedia_codec_plugin_register(tdav_codec_g722_plugin_def_t); #if HAVE_OPENCORE_AMR tmedia_codec_plugin_register(tdav_codec_amrnb_oa_plugin_def_t); tmedia_codec_plugin_register(tdav_codec_amrnb_be_plugin_def_t); #endif #if HAVE_BV16 tmedia_codec_plugin_register(tdav_codec_bv16_plugin_def_t); #endif #if HAVE_LIBGSM tmedia_codec_plugin_register(tdav_codec_gsm_plugin_def_t); #endif #if HAVE_ILBC tmedia_codec_plugin_register(tdav_codec_ilbc_plugin_def_t); #endif #if HAVE_LIB_SPEEX tmedia_codec_plugin_register(tdav_codec_speex_nb_plugin_def_t); tmedia_codec_plugin_register(tdav_codec_speex_wb_plugin_def_t); tmedia_codec_plugin_register(tdav_codec_speex_uwb_plugin_def_t); #endif #if HAVE_LIBOPUS tmedia_codec_plugin_register(tdav_codec_opus_plugin_def_t); #endif #if HAVE_G729 tmedia_codec_plugin_register(tdav_codec_g729ab_plugin_def_t); #endif // last: dtmf, ULPFEC and RED tmedia_codec_plugin_register(tdav_codec_dtmf_plugin_def_t); // tmedia_codec_plugin_register(tdav_codec_ulpfec_plugin_def_t); // tmedia_codec_plugin_register(tdav_codec_red_plugin_def_t); #if HAVE_LIBVPX tmedia_codec_plugin_register(tdav_codec_vp8_plugin_def_t); #endif #if HAVE_CUDA #error "Support for H.264 Cuda is deprecated" if(tdav_codec_h264_cuda_is_supported()) { tmedia_codec_plugin_register(tdav_codec_h264_cuda_bp10_plugin_def_t); tmedia_codec_plugin_register(tdav_codec_h264_cuda_bp20_plugin_def_t); tmedia_codec_plugin_register(tdav_codec_h264_cuda_bp30_plugin_def_t); } #endif #if HAVE_OPENH264 tmedia_codec_plugin_register(tdav_codec_h264_cisco_base_plugin_def_t); #endif #if HAVE_FFMPEG if(tdav_codec_ffmpeg_mp4ves_is_supported()) { tmedia_codec_plugin_register(tdav_codec_mp4ves_plugin_def_t); } if(tdav_codec_ffmpeg_h264_is_supported()) { if(!tmedia_codec_plugin_is_registered_2(tmedia_codec_id_h264_bp)) { // could be already registered by stand alone plugins (e.g. pluginWinMF.DLL) tmedia_codec_plugin_register(tdav_codec_h264_base_plugin_def_t); } if(!tmedia_codec_plugin_is_registered_2(tmedia_codec_id_h264_mp)) { // could be already registered by stand alone plugins (e.g. pluginWinMF.DLL) tmedia_codec_plugin_register(tdav_codec_h264_main_plugin_def_t); } } tmedia_codec_plugin_register(tdav_codec_h263p_plugin_def_t); tmedia_codec_plugin_register(tdav_codec_h263pp_plugin_def_t); if(tdav_codec_ffmpeg_theora_is_supported()) { tmedia_codec_plugin_register(tdav_codec_theora_plugin_def_t); } tmedia_codec_plugin_register(tdav_codec_h263_plugin_def_t); tmedia_codec_plugin_register(tdav_codec_h261_plugin_def_t); #elif HAVE_H264_PASSTHROUGH tmedia_codec_plugin_register(tdav_codec_h264_base_plugin_def_t); tmedia_codec_plugin_register(tdav_codec_h264_main_plugin_def_t); #endif #if HAVE_INTEL_MEDIA_SDK tmedia_codec_plugin_register(tdav_codec_h264_intel_base_plugin_def_t); tmedia_codec_plugin_register(tdav_codec_h264_intel_main_plugin_def_t); #endif /* === Register converters === */ // register several convertors and try them all (e.g. LIBYUV only support to/from I420) #if HAVE_LIBYUV tmedia_converter_video_plugin_register(tdav_converter_video_libyuv_plugin_def_t); #endif #if HAVE_FFMPEG || HAVE_SWSSCALE tmedia_converter_video_plugin_register(tdav_converter_video_ffmpeg_plugin_def_t); #endif /* === Register consumers === */ tmedia_consumer_plugin_register(tdav_consumer_t140_plugin_def_t); /* T140 */ #if HAVE_DSOUND_H tmedia_consumer_plugin_register(tdav_consumer_dsound_plugin_def_t); #elif HAVE_WAVE_API tmedia_consumer_plugin_register(tdav_consumer_waveapi_plugin_def_t); #elif HAVE_WASAPI tmedia_consumer_plugin_register(tdav_consumer_wasapi_plugin_def_t); #endif #if TDAV_UNDER_WINDOWS && !TDAV_UNDER_WINDOWS_RT // Windows GDI tmedia_consumer_plugin_register(tdav_consumer_video_gdi_plugin_def_t); #endif #if HAVE_WINM // Windows Media (WP8) tmedia_consumer_plugin_register(tdav_consumer_winm_plugin_def_t); #endif #if HAVE_ALSA_ASOUNDLIB_H // Linux tmedia_consumer_plugin_register(tdav_consumer_alsa_plugin_def_t); #endif #if HAVE_LINUX_SOUNDCARD_H // Linux tmedia_consumer_plugin_register(tdav_consumer_oss_plugin_def_t); #endif #if HAVE_COREAUDIO_AUDIO_UNIT // CoreAudio based on AudioUnit tmedia_consumer_plugin_register(tdav_consumer_audiounit_plugin_def_t); #elif HAVE_COREAUDIO_AUDIO_QUEUE // CoreAudio based on AudioQueue tmedia_consumer_plugin_register(tdav_consumer_audioqueue_plugin_def_t); #endif #if HAVE_OSS_H tmedia_consumer_plugin_register(tmedia_consumer_oss_plugin_def_t); #endif /* === Register producers === */ tmedia_producer_plugin_register(tdav_producer_t140_plugin_def_t); /* T140 */ #if HAVE_DSOUND_H // DirectSound tmedia_producer_plugin_register(tdav_producer_dsound_plugin_def_t); #elif HAVE_WAVE_API // WaveAPI tmedia_producer_plugin_register(tdav_producer_waveapi_plugin_def_t); #elif HAVE_WASAPI // WASAPI tmedia_producer_plugin_register(tdav_producer_wasapi_plugin_def_t); #endif #if TDAV_UNDER_WINDOWS && !TDAV_UNDER_WINDOWS_RT // Windows DirectDraw (DirectX) if (tdav_producer_screencast_ddraw_plugin_is_supported()) { tmedia_producer_plugin_register(tdav_producer_screencast_ddraw_plugin_def_t); } #endif #if TDAV_UNDER_WINDOWS && !TDAV_UNDER_WINDOWS_RT // Windows GDI tmedia_producer_plugin_register(tdav_producer_screencast_gdi_plugin_def_t); #endif #if HAVE_WINM // Windows Media (WP8) tmedia_producer_plugin_register(tdav_producer_winm_plugin_def_t); #endif #if HAVE_ALSA_ASOUNDLIB_H // Linux tmedia_producer_plugin_register(tdav_producer_alsa_plugin_def_t); #endif #if HAVE_LINUX_SOUNDCARD_H // Linux tmedia_producer_plugin_register(tdav_producer_oss_plugin_def_t); #endif #if HAVE_LINUX_VIDEODEV2_H // V4L2 (Linux) tmedia_producer_plugin_register(tdav_producer_video_v4l2_plugin_def_t); tmedia_producer_plugin_register(tdav_producer_screencast_v4l2_plugin_def_t); #endif #if HAVE_COREAUDIO_AUDIO_UNIT // CoreAudio based on AudioUnit tmedia_producer_plugin_register(tdav_producer_audiounit_plugin_def_t); #elif HAVE_COREAUDIO_AUDIO_QUEUE // CoreAudio based on AudioQueue tmedia_producer_plugin_register(tdav_producer_audioqueue_plugin_def_t); #endif /* === Register Audio Denoise (AGC, VAD, Noise Suppression and AEC) === */ #if HAVE_WEBRTC && (!defined(HAVE_WEBRTC_DENOISE) || HAVE_WEBRTC_DENOISE) tmedia_denoise_plugin_register(tdav_webrtc_denoise_plugin_def_t); #endif #if HAVE_SPEEX_DSP && (!defined(HAVE_SPEEX_DENOISE) || HAVE_SPEEX_DENOISE) tmedia_denoise_plugin_register(tdav_speex_denoise_plugin_def_t); #endif /* === Register Audio Resampler === */ #if HAVE_SPEEX_DSP && (!defined(HAVE_SPEEX_RESAMPLER) || HAVE_SPEEX_RESAMPLER) tmedia_resampler_plugin_register(tdav_speex_resampler_plugin_def_t); #endif /* === Register Audio/video JitterBuffer === */ #if HAVE_SPEEX_DSP && HAVE_SPEEX_JB tmedia_jitterbuffer_plugin_register(tdav_speex_jitterbuffer_plugin_def_t); #else tmedia_jitterbuffer_plugin_register(tdav_speakup_jitterbuffer_plugin_def_t); #endif // collect all codecs before filtering _tdav_codec_plugins_collect(); __b_initialized = tsk_true; return ret; }
int tdav_init() { int ret = 0; /* === OS specific === */ #if TDAV_UNDER_WINDOWS if ((ret = tdav_win32_init())) { return ret; } #elif TDAV_UNDER_APPLE if ((ret = tdav_apple_init())) { return ret; } #endif /* === Initialize ffmpeg === */ #if HAVE_FFMPEG # if LIBAVCODEC_VERSION_MAJOR <= 53 avcodec_init(); # endif #endif /* === SRTP === */ /* === Register media contents === */ tmedia_content_plugin_register("text/html", tmedia_content_dummy_plugin_def_t); tmedia_content_plugin_register("text/plain", tmedia_content_dummy_plugin_def_t); tmedia_content_plugin_register("application/octet-stream", tmedia_content_dummy_plugin_def_t); tmedia_content_plugin_register("message/CPIM", tmedia_content_cpim_plugin_def_t); /* To be implemented tmedia_content_plugin_register("message/sipfrag", tmedia_content_sipfrag_plugin_def_t); tmedia_content_plugin_register("multipart/digest", tmedia_content_multipart_plugin_def_t); tmedia_content_plugin_register("multipart/mixed", tmedia_content_multipart_plugin_def_t); tmedia_content_plugin_register("multipart/related", tmedia_content_multipart_plugin_def_t); tmedia_content_plugin_register("multipart/alternative", tmedia_content_multipart_plugin_def_t); tmedia_content_plugin_register("multipart/encrypted", tmedia_content_multipart_plugin_def_t); tmedia_content_plugin_register("multipart/parallel", tmedia_content_multipart_plugin_def_t); tmedia_content_plugin_register("multipart/signed", tmedia_content_multipart_plugin_def_t); */ /* === Register sessions === */ tmedia_session_plugin_register(tmedia_session_ghost_plugin_def_t); tmedia_session_plugin_register(tdav_session_audio_plugin_def_t); tmedia_session_plugin_register(tdav_session_video_plugin_def_t); tmedia_session_plugin_register(tdav_session_msrp_plugin_def_t); tmedia_session_plugin_register(tdav_session_t140_plugin_def_t); /* === Register codecs === */ #if HAVE_FFMPEG avcodec_register_all(); #endif tmedia_codec_plugin_register(tdav_codec_msrp_plugin_def_t); tmedia_codec_plugin_register(tdav_codec_t140_plugin_def_t); tmedia_codec_plugin_register(tdav_codec_red_plugin_def_t); tmedia_codec_plugin_register(tdav_codec_g711a_plugin_def_t); tmedia_codec_plugin_register(tdav_codec_g711u_plugin_def_t); tmedia_codec_plugin_register(tdav_codec_g722_plugin_def_t); #if HAVE_OPENCORE_AMR tmedia_codec_plugin_register(tdav_codec_amrnb_oa_plugin_def_t); tmedia_codec_plugin_register(tdav_codec_amrnb_be_plugin_def_t); #endif #if HAVE_BV16 tmedia_codec_plugin_register(tdav_codec_bv16_plugin_def_t); #endif #if HAVE_LIBGSM tmedia_codec_plugin_register(tdav_codec_gsm_plugin_def_t); #endif #if HAVE_ILBC tmedia_codec_plugin_register(tdav_codec_ilbc_plugin_def_t); #endif #if HAVE_LIB_SPEEX tmedia_codec_plugin_register(tdav_codec_speex_nb_plugin_def_t); tmedia_codec_plugin_register(tdav_codec_speex_wb_plugin_def_t); tmedia_codec_plugin_register(tdav_codec_speex_uwb_plugin_def_t); #endif #if HAVE_LIBOPUS tmedia_codec_plugin_register(tdav_codec_opus_plugin_def_t); #endif #if HAVE_G729 tmedia_codec_plugin_register(tdav_codec_g729ab_plugin_def_t); #endif // last: dtmf, ULPFEC and RED tmedia_codec_plugin_register(tdav_codec_dtmf_plugin_def_t); // tmedia_codec_plugin_register(tdav_codec_ulpfec_plugin_def_t); // tmedia_codec_plugin_register(tdav_codec_red_plugin_def_t); #if HAVE_LIBVPX tmedia_codec_plugin_register(tdav_codec_vp8_plugin_def_t); #endif #if HAVE_CUDA if(tdav_codec_h264_cuda_is_supported()){ tmedia_codec_plugin_register(tdav_codec_h264_cuda_bp10_plugin_def_t); tmedia_codec_plugin_register(tdav_codec_h264_cuda_bp20_plugin_def_t); tmedia_codec_plugin_register(tdav_codec_h264_cuda_bp30_plugin_def_t); } #endif #if HAVE_FFMPEG tmedia_codec_plugin_register(tdav_codec_mp4ves_plugin_def_t); # if !defined(HAVE_H264) || HAVE_H264 tmedia_codec_plugin_register(tdav_codec_h264_base_plugin_def_t); tmedia_codec_plugin_register(tdav_codec_h264_main_plugin_def_t); # endif tmedia_codec_plugin_register(tdav_codec_h263p_plugin_def_t); tmedia_codec_plugin_register(tdav_codec_h263pp_plugin_def_t); # if !defined(HAVE_THEORA) || HAVE_THEORA tmedia_codec_plugin_register(tdav_codec_theora_plugin_def_t); # endif tmedia_codec_plugin_register(tdav_codec_h263_plugin_def_t); tmedia_codec_plugin_register(tdav_codec_h261_plugin_def_t); #elif HAVE_H264_PASSTHROUGH tmedia_codec_plugin_register(tdav_codec_h264_base_plugin_def_t); tmedia_codec_plugin_register(tdav_codec_h264_main_plugin_def_t); #endif /* === Register converters === */ #if HAVE_LIBYUV tmedia_converter_video_plugin_register(tdav_converter_video_libyuv_plugin_def_t); #elif HAVE_FFMPEG || HAVE_SWSSCALE tmedia_converter_video_plugin_register(tdav_converter_video_ffmpeg_plugin_def_t); #endif /* === Register consumers === */ tmedia_consumer_plugin_register(tdav_consumer_t140_plugin_def_t); /* T140 */ #if HAVE_DSOUND_H tmedia_consumer_plugin_register(tdav_consumer_dsound_plugin_def_t); #elif HAVE_WAVE_API tmedia_consumer_plugin_register(tdav_consumer_waveapi_plugin_def_t); #elif HAVE_WASAPI tmedia_consumer_plugin_register(tdav_consumer_wasapi_plugin_def_t); #endif #if HAVE_TINYDSHOW // DirectShow (Windows XP and later) tmedia_consumer_plugin_register(tdshow_consumer_plugin_def_t); #elif HAVE_WINM // Windows Media (WP8) tmedia_consumer_plugin_register(tdav_consumer_winm_plugin_def_t); #elif HAVE_MF // Media Foundation (Windows 7 and later) tmedia_consumer_plugin_register(tdav_consumer_video_mf_plugin_def_t); #endif #if HAVE_COREAUDIO_AUDIO_UNIT // CoreAudio based on AudioUnit tmedia_consumer_plugin_register(tdav_consumer_audiounit_plugin_def_t); #elif HAVE_COREAUDIO_AUDIO_QUEUE // CoreAudio based on AudioQueue tmedia_consumer_plugin_register(tdav_consumer_audioqueue_plugin_def_t); #endif #if HAVE_OSS_H tmedia_consumer_plugin_register(tmedia_consumer_oss_plugin_def_t); #endif /* === Register producers === */ tmedia_producer_plugin_register(tdav_producer_t140_plugin_def_t); /* T140 */ #if HAVE_DSOUND_H // DirectSound tmedia_producer_plugin_register(tdav_producer_dsound_plugin_def_t); #elif HAVE_WAVE_API // WaveAPI tmedia_producer_plugin_register(tdav_producer_waveapi_plugin_def_t); #elif HAVE_WASAPI // WASAPI tmedia_producer_plugin_register(tdav_producer_wasapi_plugin_def_t); #endif #if HAVE_TINYDSHOW // DirectShow (Windows XP and later) tmedia_producer_plugin_register(tdshow_producer_plugin_def_t); #elif HAVE_WINM // Windows Media (WP8) tmedia_producer_plugin_register(tdav_producer_winm_plugin_def_t); #elif HAVE_MF // Medi Foundation (Windows 7 and later) tmedia_producer_plugin_register(tdav_producer_video_mf_plugin_def_t); #endif #if HAVE_COREAUDIO_AUDIO_UNIT // CoreAudio based on AudioUnit tmedia_producer_plugin_register(tdav_producer_audiounit_plugin_def_t); #elif HAVE_COREAUDIO_AUDIO_QUEUE // CoreAudio based on AudioQueue tmedia_producer_plugin_register(tdav_producer_audioqueue_plugin_def_t); #endif /* === Register Audio Denoise (AGC, VAD, Noise Suppression and AEC) === */ #if HAVE_SPEEX_DSP && (!defined(HAVE_SPEEX_DENOISE) || HAVE_SPEEX_DENOISE) tmedia_denoise_plugin_register(tdav_speex_denoise_plugin_def_t); #endif #if HAVE_WEBRTC && (!defined(HAVE_WEBRTC_DENOISE) || HAVE_WEBRTC_DENOISE) tmedia_denoise_plugin_register(tdav_webrtc_denoise_plugin_def_t); #endif /* === Register Audio Resampler === */ #if HAVE_SPEEX_DSP && (!defined(HAVE_SPEEX_RESAMPLER) || HAVE_SPEEX_RESAMPLER) tmedia_resampler_plugin_register(tdav_speex_resampler_plugin_def_t); #endif /* === Register Audio/video JitterBuffer === */ #if HAVE_SPEEX_DSP && HAVE_SPEEX_JB tmedia_jitterbuffer_plugin_register(tdav_speex_jitterbuffer_plugin_def_t); #else tmedia_jitterbuffer_plugin_register(tdav_speakup_jitterbuffer_plugin_def_t); #endif return ret; }