void _register_videotoolbox_if_supported(MSFactory *factory) { if (VTCompressionSessionCreate != NULL && VTDecompressionSessionCreate != NULL && CMVideoFormatDescriptionCreateFromH264ParameterSets != NULL) { ms_factory_register_filter(factory, &ms_vt_h264_enc); ms_factory_register_filter(factory, &ms_vt_h264_dec); } else { ms_warning("Cannot register VideoToolbox filters. Those filters" " require iOS 8 or MacOSX 10.8"); } }
void ms_factory_init_voip(MSFactory *obj) { MSSndCardManager *cm; int i; /* register builtin VoIP MSFilter's */ for (i=0; ms_voip_filter_descs[i]!=NULL; i++) { ms_factory_register_filter(obj,ms_voip_filter_descs[i]); } if (managers_ref==0) { managers_ref++; cm=ms_snd_card_manager_get(); if (cm->descs==NULL) { ms_message("Registering all soundcard handlers"); for (i=0; ms_snd_card_descs[i]!=NULL; i++) { ms_snd_card_manager_register_desc(cm,ms_snd_card_descs[i]); } } #ifdef VIDEO_ENABLED { MSWebCamManager *wm; wm=ms_web_cam_manager_get(); if (wm->descs==NULL) { ms_message("Registering all webcam handlers"); for (i=0; ms_web_cam_descs[i]!=NULL; i++) { ms_web_cam_manager_register_desc(wm,ms_web_cam_descs[i]); } } } #endif } #ifdef VIDEO_ENABLED { MSVideoPresetsManager *vpm = ms_video_presets_manager_new(obj); register_video_preset_high_fps(vpm); } #endif #if defined(VIDEO_ENABLED) && defined(MS2_FILTERS) && !defined(NO_FFMPEG) && defined(HAVE_LIBAVCODEC_AVCODEC_H) ms_ffmpeg_check_init(); __register_ffmpeg_encoders_if_possible(obj); #endif #if defined(ANDROID) && defined (VIDEO_ENABLED) if (1) { libmsandroidopengldisplay_init(obj); } else { if (!libmsandroiddisplay_init(obj)) { libmsandroiddisplaybad_init(obj); } } #endif obj->voip_initd=TRUE; ms_message("ms_factory_init_voip() done"); }
MS_PLUGIN_DECLARE(void) libmsamr_init(MSFactory *f) { #ifdef HAVE_AMRNB #ifdef USE_ANDROID_AMR const char *missing=NULL; if (opencore_amr_wrapper_init(&missing)==-1) { ms_error("Could not find AMR codec of android, no AMR support possible (missing symbol=%s)",missing); return; } #endif ms_factory_register_filter(f, &amrnb_dec_desc); ms_factory_register_filter(f, &amrnb_enc_desc); #endif #ifdef HAVE_AMRWB ms_factory_register_filter(f, &amrwb_dec_desc); ms_factory_register_filter(f, &amrwb_enc_desc); #endif ms_factory_register_offer_answer_provider(f, &amr_offer_answer_provider); ms_message("libmsamr " VERSION " plugin loaded"); }
bool_t libmsandroiddisplay_init(MSFactory *factory){ /*See if we can use AndroidBitmap_* symbols (only since android 2.2 normally)*/ void *handle=NULL; handle=dlopen("libjnigraphics.so",RTLD_LAZY); if (handle!=NULL){ sym_AndroidBitmap_getInfo=dlsym(handle,"AndroidBitmap_getInfo"); sym_AndroidBitmap_lockPixels=dlsym(handle,"AndroidBitmap_lockPixels"); sym_AndroidBitmap_unlockPixels=dlsym(handle,"AndroidBitmap_unlockPixels"); if (sym_AndroidBitmap_getInfo==NULL || sym_AndroidBitmap_lockPixels==NULL || sym_AndroidBitmap_unlockPixels==NULL){ ms_warning("AndroidBitmap not available."); }else{ ms_factory_register_filter(factory,&ms_android_display_desc); ms_message("MSAndroidDisplay registered."); return TRUE; } }else{ ms_warning("libjnigraphics.so cannot be loaded."); } return FALSE; }
void ms_factory_init(MSFactory *obj){ int i; long num_cpu=1; char *debug_log_enabled = NULL; char *tags; #ifdef _WIN32 SYSTEM_INFO sysinfo; #endif #if defined(ENABLE_NLS) bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); #endif #ifndef MS2_WINDOWS_UNIVERSAL debug_log_enabled=getenv("MEDIASTREAMER_DEBUG"); #endif if (debug_log_enabled!=NULL && (strcmp("1",debug_log_enabled)==0) ){ ortp_set_log_level_mask(ORTP_MESSAGE|ORTP_WARNING|ORTP_ERROR|ORTP_FATAL); } ms_message("Mediastreamer2 factory " MEDIASTREAMER_VERSION " (git: " GIT_VERSION ") initialized."); /* register builtin MSFilter's */ for (i=0;ms_base_filter_descs[i]!=NULL;i++){ ms_factory_register_filter(obj,ms_base_filter_descs[i]); } #ifdef _WIN32 /*fixme to be tested*/ GetNativeSystemInfo( &sysinfo ); num_cpu = sysinfo.dwNumberOfProcessors; #elif __APPLE__ || __linux num_cpu = sysconf( _SC_NPROCESSORS_CONF); /*check the number of processors configured, not just the one that are currently active.*/ #elif __QNX__ num_cpu = _syspage_ptr->num_cpu; #else #warning "There is no code that detects the number of CPU for this platform." #endif ms_factory_set_cpu_count(obj,num_cpu); ms_factory_set_mtu(obj,MS_MTU_DEFAULT); #ifdef _WIN32 ms_factory_add_platform_tag(obj, "win32"); #ifdef MS2_WINDOWS_PHONE ms_factory_add_platform_tag(obj, "windowsphone"); #endif #ifdef MS2_WINDOWS_UNIVERSAL ms_factory_add_platform_tag(obj, "windowsuniversal"); #endif #endif #ifdef __APPLE__ ms_factory_add_platform_tag(obj, "apple"); #endif #ifdef __linux ms_factory_add_platform_tag(obj, "linux"); #endif #ifdef __QNX__ ms_factory_add_platform_tag(obj, "qnx"); #endif #ifdef ANDROID ms_factory_add_platform_tag(obj, "android"); #endif #ifdef TARGET_OS_IPHONE ms_factory_add_platform_tag(obj, "ios"); #endif #if defined(__arm__) || defined(_M_ARM) ms_factory_add_platform_tag(obj, "arm"); #else ms_factory_add_platform_tag(obj, "x86"); #endif #if defined(ANDROID) || (TARGET_OS_IPHONE == 1) || defined(__arm__) || defined(_M_ARM) ms_factory_add_platform_tag(obj, "embedded"); #else ms_factory_add_platform_tag(obj, "desktop"); #endif tags = ms_factory_get_platform_tags_as_string(obj); ms_message("ms_factory_init() done: platform_tags=%s", tags); ms_free(tags); }
void libmsandroidopengldisplay_init(MSFactory *factory){ ms_factory_register_filter(factory,&ms_android_opengl_display_desc); ms_message("MSAndroidDisplay (OpenGL ES2) registered (id=%d).", MS_ANDROID_DISPLAY_ID); }
void ms_filter_register(MSFilterDesc *desc){ ms_factory_register_filter(ms_factory_get_fallback(),desc); }