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_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; }