From 8218c474e7a52c686cbba3b3e1663e15b35cf879 Mon Sep 17 00:00:00 2001 From: Nicolas LeQuec <nicolas.lequec@gmail.com> Date: Wed, 7 Jul 2021 15:21:10 +0200 Subject: [PATCH] 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. --- src/clock/clock.c | 13 +++++++++---- src/clock/clock.h | 2 ++ src/input/es_out.c | 2 ++ 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/clock/clock.c b/src/clock/clock.c index 850fbb5c0f90..c3535e84cf56 100644 --- a/src/clock/clock.c +++ b/src/clock/clock.c @@ -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) diff --git a/src/clock/clock.h b/src/clock/clock.h index c03835b38360..2a599aa8aa2a 100644 --- a/src/clock/clock.h +++ b/src/clock/clock.h @@ -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); diff --git a/src/input/es_out.c b/src/input/es_out.c index 7443b8ac5f37..f1781f508f8f 100644 --- a/src/input/es_out.c +++ b/src/input/es_out.c @@ -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 ); } -- GitLab