diff --git a/libobs/obs.c b/libobs/obs.c index f752b6880..560ab0a79 100644 --- a/libobs/obs.c +++ b/libobs/obs.c @@ -1777,3 +1777,20 @@ enum obs_obj_type obs_obj_get_type(void *obj) struct obs_context_data *context = obj; return context ? context->type : OBS_OBJ_TYPE_INVALID; } + +const char *obs_obj_get_id(void *obj) +{ + struct obs_context_data *context = obj; + if (!context) + return NULL; + + switch (context->type) { + case OBS_OBJ_TYPE_SOURCE: return ((obs_source_t*)obj)->info.id; + case OBS_OBJ_TYPE_OUTPUT: return ((obs_output_t*)obj)->info.id; + case OBS_OBJ_TYPE_ENCODER: return ((obs_encoder_t*)obj)->info.id; + case OBS_OBJ_TYPE_SERVICE: return ((obs_service_t*)obj)->info.id; + default:; + } + + return NULL; +} diff --git a/libobs/obs.h b/libobs/obs.h index adc27a667..86b824932 100644 --- a/libobs/obs.h +++ b/libobs/obs.h @@ -569,6 +569,7 @@ enum obs_obj_type { }; EXPORT enum obs_obj_type obs_obj_get_type(void *obj); +EXPORT const char *obs_obj_get_id(void *obj); /* ------------------------------------------------------------------------- */