int tdav_codec_set_priority(tdav_codec_id_t codec_id, int priority) { tsk_size_t i; if(priority < 0) { TSK_DEBUG_ERROR("Invalid parameter"); return -1; } for(i = 0; i < __codec_plugins_all_count && __codec_plugins_all[i]; ++i) { if(__codec_plugins_all[i]->codec_id == codec_id) { const struct tmedia_codec_plugin_def_s *codec_decl_1, *codec_decl_2; priority = TSK_MIN(priority, (int)__codec_plugins_all_count-1); codec_decl_1 = __codec_plugins_all[priority]; codec_decl_2 = __codec_plugins_all[i]; __codec_plugins_all[i] = codec_decl_1; __codec_plugins_all[priority] = codec_decl_2; // change priority if already registered and supported if(_tdav_codec_is_supported((tdav_codec_id_t)codec_decl_2->codec_id, codec_decl_2) && tmedia_codec_plugin_is_registered(codec_decl_2)) { return tmedia_codec_plugin_register_2(codec_decl_2, priority); } return 0; } } TSK_DEBUG_INFO("Cannot find codec with id=%d for priority setting", codec_id); return 0; }
int tdav_codec_set_priority(tdav_codec_id_t codec_id, int priority) { static int count = sizeof(__codecs)/sizeof(tdav_codec_decl_t); int i; if(priority < 0){ TSK_DEBUG_ERROR("Invalid parameter"); return -1; } for(i = 0; i<count; ++i){ if(__codecs[i].id == codec_id){ tdav_codec_decl_t codec_decl_1, codec_decl_2; priority = TSK_MIN(priority, count-1); codec_decl_1 = __codecs[priority]; codec_decl_2 = __codecs[i]; __codecs[i] = codec_decl_1; __codecs[priority] = codec_decl_2; // change priority if already registered and supported if(_tdav_codec_is_supported(codec_decl_2.id, *codec_decl_2.plugin) && tmedia_codec_plugin_is_registered(*codec_decl_2.plugin)){ return tmedia_codec_plugin_register_2(*codec_decl_2.plugin, priority); } return 0; } } TSK_DEBUG_ERROR("cannot find codec with id=%d", codec_id); return -2; }
int tdav_set_codecs(tdav_codec_id_t codecs) { tsk_size_t i, prio; // unregister all codecs tmedia_codec_plugin_unregister_all(); // register "selected" and "fake" codecs. "fake" codecs have "none" as id (e.g. MSRP or DTMF) for(i=0,prio=0; i<__codec_plugins_all_count && __codec_plugins_all[i]; ++i) { if((codecs & __codec_plugins_all[i]->codec_id) || __codec_plugins_all[i]->codec_id == tmedia_codec_id_none) { if(_tdav_codec_is_supported((tdav_codec_id_t)__codec_plugins_all[i]->codec_id, __codec_plugins_all[i])) { tmedia_codec_plugin_register_2(__codec_plugins_all[i], (int)prio++); } } } return 0; }
int tdav_set_codecs(tdav_codec_id_t codecs) { tsk_size_t i, prio; // unregister all codecs tmedia_codec_plugin_unregister_all(); // register selected codecs for(i=0,prio=0; i<__codec_plugins_all_count && __codec_plugins_all[i]; ++i){ if((codecs & __codec_plugins_all[i]->codec_id)){ if(_tdav_codec_is_supported((tdav_codec_id_t)__codec_plugins_all[i]->codec_id, __codec_plugins_all[i])){ tmedia_codec_plugin_register_2(__codec_plugins_all[i], prio++); } } } return 0; }
void tdav_set_codecs(tdav_codec_id_t codecs) { int i; int prio; for(i=0,prio=0; i<sizeof(__codecs)/sizeof(tdav_codec_decl_t); ++i){ if((codecs & __codecs[i].id)){ if(_tdav_codec_is_supported(__codecs[i].id, *(__codecs[i].plugin))){ tmedia_codec_plugin_register_2(*(__codecs[i].plugin), prio++); } } else{ tmedia_codec_plugin_unregister(*(__codecs[i].plugin)); } } }
/** * Checks whether a codec is supported. Being supported doesn't mean it's enabled and ready for use. * @return @ref tsk_true if supported and @tsk_false otherwise. * @sa @ref tdav_codec_is_enabled() */ tsk_bool_t tdav_codec_is_supported(tdav_codec_id_t codec) { return _tdav_codec_is_supported(codec, tsk_null); }