src/clock: add new field track_str_id

In traces, it's useful to have the str_id of the elementary stream read.
It can be obtained through the clock.
This commit is contained in:
Nicolas LeQuec 2021-07-07 15:21:10 +02:00 committed by Thomas Guillem
parent a7edba0704
commit 8218c474e7
3 changed files with 13 additions and 4 deletions

View File

@ -73,6 +73,7 @@ struct vlc_clock_t
vlc_clock_main_t *owner;
vlc_tick_t delay;
unsigned priority;
const char *track_str_id;
const struct vlc_clock_cbs *cbs;
void *cbs_data;
@ -549,6 +550,7 @@ static void vlc_clock_set_slave_callbacks(vlc_clock_t *clock)
}
static vlc_clock_t *vlc_clock_main_Create(vlc_clock_main_t *main_clock,
const char* track_str_id,
unsigned priority,
const struct vlc_clock_cbs *cbs,
void *cbs_data)
@ -558,6 +560,7 @@ static vlc_clock_t *vlc_clock_main_Create(vlc_clock_main_t *main_clock,
return NULL;
clock->owner = main_clock;
clock->track_str_id = track_str_id;
clock->delay = 0;
clock->cbs = cbs;
clock->cbs_data = cbs_data;
@ -568,11 +571,12 @@ static vlc_clock_t *vlc_clock_main_Create(vlc_clock_main_t *main_clock,
}
vlc_clock_t *vlc_clock_main_CreateMaster(vlc_clock_main_t *main_clock,
const char *track_str_id,
const struct vlc_clock_cbs *cbs,
void *cbs_data)
{
/* The master has always the 0 priority */
vlc_clock_t *clock = vlc_clock_main_Create(main_clock, 0, cbs, cbs_data);
vlc_clock_t *clock = vlc_clock_main_Create(main_clock, track_str_id, 0, cbs, cbs_data);
if (!clock)
return NULL;
@ -594,7 +598,7 @@ vlc_clock_t *vlc_clock_main_CreateMaster(vlc_clock_main_t *main_clock,
vlc_clock_t *vlc_clock_main_CreateInputMaster(vlc_clock_main_t *main_clock)
{
/* The master has always the 0 priority */
vlc_clock_t *clock = vlc_clock_main_Create(main_clock, 0, NULL, NULL);
vlc_clock_t *clock = vlc_clock_main_Create(main_clock, NULL, 0, NULL, NULL);
if (!clock)
return NULL;
@ -618,6 +622,7 @@ vlc_clock_t *vlc_clock_main_CreateInputMaster(vlc_clock_main_t *main_clock)
}
vlc_clock_t *vlc_clock_main_CreateSlave(vlc_clock_main_t *main_clock,
const char* track_str_id,
enum es_format_category_e cat,
const struct vlc_clock_cbs *cbs,
void *cbs_data)
@ -639,7 +644,7 @@ vlc_clock_t *vlc_clock_main_CreateSlave(vlc_clock_main_t *main_clock,
break;
}
vlc_clock_t *clock = vlc_clock_main_Create(main_clock, priority, cbs,
vlc_clock_t *clock = vlc_clock_main_Create(main_clock, track_str_id, priority, cbs,
cbs_data);
if (!clock)
return NULL;
@ -655,7 +660,7 @@ vlc_clock_t *vlc_clock_main_CreateSlave(vlc_clock_main_t *main_clock,
vlc_clock_t *vlc_clock_CreateSlave(const vlc_clock_t *clock,
enum es_format_category_e cat)
{
return vlc_clock_main_CreateSlave(clock->owner, cat, NULL, NULL);
return vlc_clock_main_CreateSlave(clock->owner, clock->track_str_id, cat, NULL, NULL);
}
void vlc_clock_Delete(vlc_clock_t *clock)

View File

@ -97,6 +97,7 @@ void vlc_clock_main_ChangePause(vlc_clock_main_t *clock, vlc_tick_t system_now,
* You must use vlc_clock_Delete to free it.
*/
vlc_clock_t *vlc_clock_main_CreateMaster(vlc_clock_main_t *main_clock,
const char *track_str_id,
const struct vlc_clock_cbs *cbs,
void *cbs_data);
@ -118,6 +119,7 @@ vlc_clock_t *vlc_clock_main_CreateInputMaster(vlc_clock_main_t *main_clock);
* You must use vlc_clock_Delete to free it.
*/
vlc_clock_t *vlc_clock_main_CreateSlave(vlc_clock_main_t *main_clock,
const char *track_str_id,
enum es_format_category_e cat,
const struct vlc_clock_cbs *cbs,
void *cbs_data);

View File

@ -2315,12 +2315,14 @@ static void EsOutCreateDecoder( es_out_t *out, es_out_id_t *p_es )
p_es->master = true;
p_es->p_pgrm->p_master_es_clock = p_es->p_clock =
vlc_clock_main_CreateMaster( p_es->p_pgrm->p_main_clock,
p_es->id.str_id,
&clock_cbs, p_es );
}
else
{
p_es->master = false;
p_es->p_clock = vlc_clock_main_CreateSlave( p_es->p_pgrm->p_main_clock,
p_es->id.str_id,
p_es->fmt.i_cat,
&clock_cbs, p_es );
}