Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • videolan/vlc
  • chouquette/vlc
  • bakiewicz.marek122/vlc
  • devnexen/vlc
  • rohanrajpal/vlc
  • blurrrb/vlc
  • gsoc/gsoc2019/darkapex/vlc
  • b1ue/vlc
  • fkuehne/vlc
  • magsoft/vlc
  • chub/vlc
  • cramiro9/vlc
  • robUx4/vlc
  • rom1v/vlc
  • akshayaky/vlc
  • tmk907/vlc
  • akymaster/vlc
  • govind.sharma/vlc
  • psilokos/vlc
  • xjbeta/vlc
  • jahan/vlc
  • 1480c1/vlc
  • amanchande/vlc
  • aaqib/vlc
  • rist/vlc
  • apol/vlc
  • mindfreeze/vlc
  • alexandre-janniaux/vlc
  • sandsmark/vlc
  • jagannatharjun/vlc
  • gsoc/gsoc2020/matiaslgonzalez/vlc
  • gsoc/gsoc2020/jagannatharjun/vlc
  • mstorsjo/vlc
  • gsoc/gsoc2020/vedenta/vlc
  • gsoc/gsoc2020/arnav-ishaan/vlc
  • gsoc/gsoc2020/andreduong/vlc
  • fuzun/vlc
  • gsoc/gsoc2020/vatsin/vlc
  • gsoc/gsoc2020/sagid/vlc
  • yaron/vlc
  • Phoenix/vlc
  • Garf/vlc
  • ePiratWorkarounds/vlc
  • tguillem/vlc
  • jnqnfe/vlc
  • mdc/vlc
  • Vedaa/vlc
  • rasa/vlc
  • quink/vlc
  • yealo/vlc
  • aleksey_ak/vlc
  • ePirat/vlc
  • ilya.yanok/vlc
  • asenat/vlc
  • m/vlc
  • bunjee/vlc
  • BLumia/vlc
  • sagudev/vlc
  • hamedmonji30/vlc
  • nullgemm/vlc
  • DivyamAhuja/vlc
  • thesamesam/vlc
  • dag7/vlc
  • snehil101/vlc
  • haasn/vlc
  • jbk/vlc
  • ValZapod/vlc
  • mfkl/vlc
  • WangChuan/vlc
  • core1024/vlc
  • GhostVaibhav/vlc
  • dfuhrmann/vlc
  • davide.prade/vlc
  • tmatth/vlc
  • Courmisch/vlc
  • zouya/vlc
  • hpi/vlc
  • EwoutH/vlc
  • aleung27/vlc
  • hengwu0/vlc
  • saladin/vlc
  • ashuio/vlc
  • richselwood/vlc
  • verma16Ayush/vlc
  • chemicalflash/vlc
  • PoignardAzur/vlc
  • huangjieNT/vlc
  • Blake-Haydon/vlc
  • AnuthaDev/vlc
  • gsoc/gsoc2021/mpd/vlc
  • nicolas_lequec/vlc
  • sambassaly/vlc
  • thresh/vlc
  • bonniegong/vlc
  • myaashish/vlc
  • stavros.vagionitis/vlc
  • ileoo/vlc
  • louis-santucci/vlc
  • cchristiansen/vlc
  • sabyasachi07/vlc
  • AbduAmeen/vlc
  • ashishb0410/vlc
  • urbanhusky/vlc
  • davidepietrasanta/vlc
  • riksleutelstad/vlc
  • jeremyVignelles/vlc
  • komh/vlc
  • iamjithinjohn/vlc
  • JohannesKauffmann/vlc2
  • kunglao/vlc
  • natzberg/vlc
  • jill/vlc
  • cwendling/vlc
  • adufou/vlc
  • ErwanAirone/vlc
  • HasinduDilshan10/vlc
  • vagrantc/vlc
  • rafiv/macos-bigsur-icon
  • Aymeriic/vlc
  • saranshg20/vlc
  • metzlove24/vlc
  • linkfanel/vlc
  • Ds886/vlc
  • metehan-arslan/vlc
  • Skantes/vlc
  • kgsandundananjaya96/vlc
  • mitchcapper/vlc
  • advaitgupta/vlc
  • StefanBruens/vlc
  • ratajs/vlc
  • T.M.F.B.3761/vlc
  • m222059/vlc
  • casemerrick/vlc
  • joshuaword2alt/vlc
  • sjwaddy/vlc
  • dima/vlc
  • Ybalrid/vlc
  • umxprime/vlc
  • eschmidt/vlc
  • vannieuwenhuysenmichelle/vlc
  • badcf00d/vlc
  • wesinator/vlc
  • louis/vlc
  • xqq/vlc
  • EmperorYP7/vlc
  • NicoLiam/vlc
  • loveleen/vlc
  • rofferom/vlc
  • rbultje/vlc
  • TheUnamed/vlc
  • pratiksharma341/vlc
  • Saurab17/vlc
  • purist.coder/vlc
  • Shuicheng/vlc
  • mdrrubel292/vlc
  • silverbleu00/vlc
  • metif12/vlc
  • asher-m/vlc
  • jeffk/vlc
  • Brandonbr1/vlc
  • beautyyuyanli/vlc
  • rego21/vlc
  • muyangren907/vlc
  • collectionbylawrencejason/vlc
  • evelez/vlc
  • GSMgeeth/vlc
  • Oneric/vlc
  • TJ5/vlc
  • XuanTung95/vlc
  • darrenjenny21/vlc
  • Trenly/vlc
  • RockyTDR/vlc
  • mjakubowski/vlc
  • caprica/vlc
  • ForteFrankie/vlc
  • seannamiller19/vlc
  • junlon2006/vlc
  • kiwiren6666/vlc
  • iuseiphonexs/vlc
  • fenngtun/vlc
  • Rajdutt999/vlc
  • typx/vlc
  • leon.vitanos/vlc
  • robertogarci0938/vlc
  • gsoc/gsoc2022/luc65r/vlc-mpd
  • skeller/vlc
  • MCJack123/vlc
  • luc65r/vlc-mpd
  • popov895/vlc
  • claucambra/vlc
  • brad/vlc
  • matthewmurua88/vlc
  • Tomas8874/vlc
  • philenotfound/vlc
  • makita-do3/vlc
  • LZXCorp/vlc
  • mar0x/vlc
  • senojetkennedy0102/vlc
  • shaneb243/vlc
  • ahmadbader/vlc
  • rajduttcse26/vlc-audio-filters
  • Juniorzito8415/vlc
  • achernyakov/vlc
  • lucasjetgroup/vlc
  • pupdoggy666/vlc
  • gmde9363/vlc
  • alexnwayne/vlc
  • bahareebrahimi781/vlc
  • hamad633666/vlc
  • umghof3112/vlc
  • joe0199771874/vlc
  • Octocats66666666/vlc
  • jjm_223/vlc
  • btech10110.19/vlc
  • sunnykfc028/vlc-audio-filters
  • loic/vlc
  • nguyenminhducmx1/vlc
  • JanekKrueger/vlc
  • bstubbington2/vlc
  • rcombs/vlc
  • Ordissimo/vlc
  • king7532/vlc
  • noobsauce101/vlc
  • schong0525/vlc
  • myQwil/vlc
  • apisbg91/vlc
  • geeboy0101017/vlc
  • kim.faughey/vlc
  • nurupo/vlc
  • yyusea/vlc
  • 0711235879.khco/vlc
  • ialo/vlc
  • iloveyeye2/vlc
  • gdtdftdqtd/vlc
  • leandroconsiglio/vlc
  • AndyHTML2012/vlc
  • ncz/vlc
  • lucenticus/vlc
  • knr1931/vlc
  • kjoonlee/vlc
  • chandrakant100/vlc-qt
  • johge42/vlc
  • polter/vlc
  • hexchain/vlc
  • Tushwrld/vlc
  • mztea928/vlc
  • jbelloncastro/vlc
  • alvinhochun/vlc
  • ghostpiratecrow/vlc
  • ujjwaltwitx/vlc
  • alexsonarin06/vlc
  • adrianbon76/vlc
  • altsod/vlc
  • damien.lucas44/vlc
  • dmytrivtaisa/vlc
  • utk202/vlc
  • aaxhrj/vlc
  • thomas.hermes/vlc
  • structurenewworldorder/vlc
  • slomo/vlc
  • wantlamy/vlc
  • musc.o3cminc/vlc
  • thebarshablog/vlc
  • kerrick/vlc
  • kratos142518/vlc
  • leogps/vlc
  • vacantron/vlc
  • luna_koly/vlc
  • Ratio2/vlc
  • anuoshemohammad/vlc
  • apsun/vlc
  • aaa1115910/vlc
  • alimotmoyo/vlc
  • Ambossmann/vlc
  • Sam-LearnsToCode/vlc
  • Chilledheart/vlc
  • Labnann/vlc
  • ktcoooot1/vlc
  • mohit-marathe/vlc
  • johnddx/vlc
  • manstabuk/vlc
  • Omar-ahmed314/vlc
  • vineethkm/vlc
  • 9Enemi86/vlc
  • radoslav.m.panteleev/vlc
  • ashishami2002/vlc
  • Corbax/vlc
  • firnasahmed/vlc
  • pelayarmalam4/vlc
  • c0ff330k/vlc
  • shikhindahikar/vlc
  • l342723951/vlc
  • christianschwandner/vlc
  • douniwan5788/vlc
  • 7damian7/vlc
  • ferdnyc/vlc
  • f.ales1/vlc
  • pandagby/vlc
  • BaaBaa/vlc
  • jewe37/vlc
  • w00drow/vlc
  • russelltg/vlc
  • ironicallygod/vlc
  • soumyaDghosh/vlc
  • linzihao1999/vlc
  • deyayush6/vlc
  • mibi88/vlc
  • newabdallah10/vlc
  • jhorbincolombia/vlc
  • rimvihaqueshupto/vlc
  • andrewkhon98/vlc
  • fab78/vlc
  • lapaz17/vlc
  • amanna13/vlc
  • mdakram28/vlc
  • 07jw1980/vlc
  • sohamgupta/vlc
  • Eson-Jia1/vlc
  • Sumou/vlc
  • vikram-kangotra/vlc
  • chalice191/vlc
  • olivercalder/vlc
  • aaasg4001/vlc
  • zipdox/vlc
  • kwizart/vlc
  • Dragon-S/vlc
  • jdemeule/vlc
  • gabriel_lt/vlc
  • locutusofborg/vlc
  • sammirata/vlc-librist
  • another/vlc
  • Benjamin_Loison/vlc
  • ahmedmoselhi/vlc
  • petergaal/vlc
  • huynhsontung/vlc
  • dariusmihut/vlc
  • tvermaashutosh/vlc
  • buti/vlc
  • Niram7777/vlc
  • rohan-here/vlc
  • balaji-sivasakthi/vlc
  • rlindner81/vlc
  • Kakadus/vlc
  • djain/vlc
  • ABBurmeister/vlc
  • craighuggins/vlc
  • orbea/vlc
  • maxos/vlc
  • aakarshmj/vlc
  • kblaschke/vlc
  • ankitm/vlc
  • advait-0/vlc
  • mohak2003/vlc
  • yselkowitz/vlc
  • AZM999/vlc-azm
  • andrey.turkin/vlc
  • Disha-Baghel/vlc
  • nowrep/vlc
  • Apeng/vlc
  • Choucroute_melba/vlc
  • autra/vlc
  • eclipseo/vlc
  • fhuber/vlc
  • olafhering/vlc
  • sdasda7777/vlc
  • 1div0/vlc
  • skosnits/vlc-extended-playlist-support
  • dnicolson/vlc
  • Timshel/vlc
  • octopols/vlc
  • MangalK/vlc
  • nima64/vlc
  • misawai/vlc
  • Alexander-Wilms/vlc
  • Maxime2/vlc-fork-for-visualizer
  • ww/vlc
  • jeske/vlc
  • sgross-emlix/vlc
  • morenonatural/vlc
  • freakingLovesVLC/vlc
  • borisgolovnev/vlc
  • mpromonet/vlc
  • diogo.simao-marques/vlc
  • masstock/vlc
  • pratikpatel8982/vlc
  • hugok79/vlc
  • longervision/vlc
  • abhiudaysurya/vlc
  • rishabhgarg/vlc
  • tumic/vlc
  • cart/vlc
  • shubham442/vlc
  • Aditya692005/vlc
  • sammirata/vlc4
  • syrykh/vlc
  • Vvorcun/macos-new-icon
  • AyaanshC/vlc
  • nasso/vlc
  • Quark/vlc
  • sebastinas/vlc
  • rhstone/vlc
  • talregev/vlc
  • Managor/vlc
  • abdsaber000/vlc
  • falbrechtskirchinger/vlc
405 results
Show changes
Commits on Source (6)
......@@ -276,6 +276,10 @@ vlc_player_input_HandleState(struct vlc_player_input *input,
VLC_PLAYER_TIMER_STATE_DISCONTINUITY,
VLC_TICK_INVALID);
vlc_player_UpdateTimerState(player, NULL,
VLC_PLAYER_TIMER_STATE_STOPPING,
VLC_TICK_INVALID);
if (input == player->input)
player->input = NULL;
......@@ -945,7 +949,7 @@ input_thread_Events(input_thread_t *input_thread,
const struct vlc_player_timer_point point = {
.position = input->position,
.rate = input->rate,
.ts = input->time + input->normal_time,
.ts = input->time,
.length = input->length,
.system_date = system_date,
};
......
......@@ -208,6 +208,7 @@ enum vlc_player_timer_state
VLC_PLAYER_TIMER_STATE_PLAYING,
VLC_PLAYER_TIMER_STATE_PAUSED,
VLC_PLAYER_TIMER_STATE_DISCONTINUITY,
VLC_PLAYER_TIMER_STATE_STOPPING,
};
struct vlc_player_timer
......
......@@ -237,12 +237,18 @@ vlc_player_UpdateTimerState(vlc_player_t *player, vlc_es_id_t *es_source,
assert(system_date != VLC_TICK_INVALID);
break;
default:
case VLC_PLAYER_TIMER_STATE_PLAYING:
break;
case VLC_PLAYER_TIMER_STATE_STOPPING:
break;
default:
vlc_assert_unreachable();
}
player->timer.state = state;
if (player->timer.state != VLC_PLAYER_TIMER_STATE_STOPPING)
player->timer.state = state;
if (!notify)
{
......@@ -328,59 +334,13 @@ vlc_player_UpdateTimerSource(vlc_player_t *player,
source->point.position = player->timer.input_position;
}
void
vlc_player_UpdateTimer(vlc_player_t *player, vlc_es_id_t *es_source,
bool es_source_is_master,
const struct vlc_player_timer_point *point,
vlc_tick_t normal_time,
unsigned frame_rate, unsigned frame_rate_base)
static void
vlc_player_UpdateTimerBestSource(vlc_player_t *player, vlc_es_id_t *es_source,
bool es_source_is_master,
const struct vlc_player_timer_point *point,
vlc_tick_t system_date,
bool force_update)
{
struct vlc_player_timer_source *source;
assert(point);
/* A null source can't be the master */
assert(es_source == NULL ? !es_source_is_master : true);
vlc_mutex_lock(&player->timer.lock);
bool force_update = false;
if (!es_source) /* input source */
{
/* Only valid for input sources */
if (player->timer.input_normal_time != normal_time)
{
player->timer.input_normal_time = normal_time;
player->timer.last_ts = VLC_TICK_INVALID;
force_update = true;
}
if (player->timer.input_length != point->length
&& point->length >= VLC_TICK_0)
{
player->timer.input_length = point->length;
player->timer.last_ts = VLC_TICK_INVALID;
force_update = true;
}
/* Will likely be overridden by non input source */
player->timer.input_position = point->position;
if (point->ts == VLC_TICK_INVALID
|| point->system_date == VLC_TICK_INVALID)
{
/* ts can only be invalid from the input source */
vlc_mutex_unlock(&player->timer.lock);
return;
}
}
assert(point->ts != VLC_TICK_INVALID);
vlc_tick_t system_date = point->system_date;
if (player->timer.state == VLC_PLAYER_TIMER_STATE_PAUSED)
system_date = VLC_TICK_MAX;
/* An update after a discontinuity means that the playback is resumed */
if (player->timer.state == VLC_PLAYER_TIMER_STATE_DISCONTINUITY)
player->timer.state = VLC_PLAYER_TIMER_STATE_PLAYING;
/* Best source priority:
* 1/ es_source != NULL when paused (any ES tracks when paused. Indeed,
* there is likely no audio update (master) when paused but only video
......@@ -389,7 +349,7 @@ vlc_player_UpdateTimer(vlc_player_t *player, vlc_es_id_t *es_source,
* 3/ es_source != NULL (from the first ES track updated)
* 4/ es_source == NULL (from the input)
*/
source = &player->timer.best_source;
struct vlc_player_timer_source *source = &player->timer.best_source;
if (!source->es || es_source_is_master
|| (es_source && player->timer.state == VLC_PLAYER_TIMER_STATE_PAUSED))
source->es = es_source;
......@@ -429,8 +389,15 @@ vlc_player_UpdateTimer(vlc_player_t *player, vlc_es_id_t *es_source,
&source->point);
}
}
}
source = &player->timer.smpte_source;
static void
vlc_player_UpdateTimerSmpteSource(vlc_player_t *player, vlc_es_id_t *es_source,
const struct vlc_player_timer_point *point,
vlc_tick_t system_date,
unsigned frame_rate, unsigned frame_rate_base)
{
struct vlc_player_timer_source *source = &player->timer.smpte_source;
/* SMPTE source: only the video source */
if (!source->es && es_source && vlc_es_id_GetCat(es_source) == VIDEO_ES)
source->es = es_source;
......@@ -458,6 +425,67 @@ vlc_player_UpdateTimer(vlc_player_t *player, vlc_es_id_t *es_source,
&source->point);
}
}
}
void
vlc_player_UpdateTimer(vlc_player_t *player, vlc_es_id_t *es_source,
bool es_source_is_master,
const struct vlc_player_timer_point *point,
vlc_tick_t normal_time,
unsigned frame_rate, unsigned frame_rate_base)
{
assert(point);
/* A null source can't be the master */
assert(es_source == NULL ? !es_source_is_master : true);
vlc_mutex_lock(&player->timer.lock);
bool force_update = false;
if (!es_source) /* input source */
{
/* Only valid for input sources */
if (player->timer.input_normal_time != normal_time)
{
player->timer.input_normal_time = normal_time;
player->timer.last_ts = VLC_TICK_INVALID;
force_update = true;
}
if (player->timer.input_length != point->length
&& point->length >= VLC_TICK_0)
{
player->timer.input_length = point->length;
player->timer.last_ts = VLC_TICK_INVALID;
force_update = true;
}
/* Will likely be overridden by non input source */
player->timer.input_position = point->position;
if (point->ts == VLC_TICK_INVALID
|| point->system_date == VLC_TICK_INVALID)
{
/* ts can only be invalid from the input source */
vlc_mutex_unlock(&player->timer.lock);
return;
}
}
assert(point->ts != VLC_TICK_INVALID);
vlc_tick_t system_date = point->system_date;
if (player->timer.state == VLC_PLAYER_TIMER_STATE_PAUSED)
system_date = VLC_TICK_MAX;
/* An update after a discontinuity means that the playback is resumed */
if (player->timer.state == VLC_PLAYER_TIMER_STATE_DISCONTINUITY)
player->timer.state = VLC_PLAYER_TIMER_STATE_PLAYING;
if (player->timer.state != VLC_PLAYER_TIMER_STATE_STOPPING)
vlc_player_UpdateTimerBestSource(player, es_source,
es_source_is_master, point, system_date,
force_update);
vlc_player_UpdateTimerSmpteSource(player, es_source, point, system_date,
frame_rate, frame_rate_base);
player->timer.last_ts = point->ts;
......
......@@ -217,6 +217,7 @@ struct media_params
bool can_pause;
bool error;
bool null_names;
vlc_tick_t pts_delay;
const char *config;
};
......@@ -240,6 +241,7 @@ struct media_params
.can_pause = true, \
.error = false, \
.null_names = false, \
.pts_delay = DEFAULT_PTS_DELAY, \
.config = NULL, \
}
......@@ -783,7 +785,7 @@ create_mock_media(const char *name, const struct media_params *params)
"sub_packetized=%d;length=%"PRId64";audio_sample_length=%"PRId64";"
"video_frame_rate=%u;video_frame_rate_base=%u;"
"title_count=%zu;chapter_count=%zu;"
"can_seek=%d;can_pause=%d;error=%d;null_names=%d;"
"can_seek=%d;can_pause=%d;error=%d;null_names=%d;pts_delay=%"PRId64";"
"config=%s;attachment_count=%zu",
params->track_count[VIDEO_ES], params->track_count[AUDIO_ES],
params->track_count[SPU_ES], params->program_count,
......@@ -792,6 +794,7 @@ create_mock_media(const char *name, const struct media_params *params)
params->video_frame_rate, params->video_frame_rate_base,
params->title_count, params->chapter_count,
params->can_seek, params->can_pause, params->error, params->null_names,
params->pts_delay,
params->config ? params->config : "", params->attachment_count);
assert(ret != -1);
input_item_t *item = input_item_New(url, name);
......@@ -2633,6 +2636,7 @@ test_timers(struct ctx *ctx)
for (size_t j = 0; j < ARRAY_SIZE(df_min_test_list); ++j)
{
unsigned minute = df_min_test_list[j];
vlc_tick_t check_duration = VLC_TICK_FROM_SEC(2);
struct media_params params =
DEFAULT_MEDIA_PARAMS(minute * VLC_TICK_FROM_SEC(60)
......@@ -2643,10 +2647,14 @@ test_timers(struct ctx *ctx)
params.video_frame_rate = fps * 1000;
params.video_frame_rate_base = 1001;
/* This will prevent a RESET_PCR and ensure we receive all outputs
* points. */
params.pts_delay = check_duration;
player_set_current_mock_media(ctx, "media1", &params, false);
player_set_rate(ctx, 24);
vlc_player_SetTime(player, params.length - VLC_TICK_FROM_SEC(2));
vlc_player_SetTime(player, params.length - check_duration);
player_start(ctx);
......