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
  • b.sullender/vlc
  • hulxv/vlc
  • zyad-ayad/vlc
408 results
Show changes
Commits on Source (5)
......@@ -57,7 +57,6 @@ struct vlc_clock_main_t
clock_point_t first_pcr;
vlc_tick_t output_dejitter; /* Delay used to absorb the output clock jitter */
vlc_tick_t input_dejitter; /* Delay used to absorb the input jitter */
bool abort;
};
struct vlc_clock_t
......@@ -346,28 +345,46 @@ static vlc_tick_t vlc_clock_slave_set_delay(vlc_clock_t *clock, vlc_tick_t delay
return 0;
}
void vlc_clock_Wait(vlc_clock_t *clock, vlc_tick_t system_now, vlc_tick_t ts,
double rate, vlc_tick_t max_duration)
void vlc_clock_Lock(vlc_clock_t *clock)
{
vlc_clock_main_t *main_clock = clock->owner;
vlc_mutex_lock(&main_clock->lock);
const vlc_tick_t max_deadline =
max_duration > 0 ? system_now + max_duration : VLC_TICK_MAX;
while (!main_clock->abort)
{
vlc_tick_t deadline;
if (main_clock->pause_date != VLC_TICK_INVALID)
deadline = VLC_TICK_MAX;
else
deadline = clock->to_system_locked(clock, system_now, ts, rate);
deadline = __MIN(deadline, max_deadline);
}
if (vlc_cond_timedwait(&main_clock->cond, &main_clock->lock, deadline))
break;
}
void vlc_clock_Unlock(vlc_clock_t *clock)
{
vlc_clock_main_t *main_clock = clock->owner;
vlc_mutex_unlock(&main_clock->lock);
}
static inline void AssertLocked(vlc_clock_t *clock)
{
vlc_clock_main_t *main_clock = clock->owner;
vlc_mutex_assert(&main_clock->lock);
}
bool vlc_clock_IsPaused(vlc_clock_t *clock)
{
AssertLocked(clock);
vlc_clock_main_t *main_clock = clock->owner;
return main_clock->pause_date != VLC_TICK_INVALID;
}
int vlc_clock_Wait(vlc_clock_t *clock, vlc_tick_t deadline)
{
AssertLocked(clock);
vlc_clock_main_t *main_clock = clock->owner;
return vlc_cond_timedwait(&main_clock->cond, &main_clock->lock, deadline);
}
void vlc_clock_Wake(vlc_clock_t *clock)
{
vlc_clock_main_t *main_clock = clock->owner;
vlc_cond_broadcast(&main_clock->cond);
}
vlc_clock_main_t *vlc_clock_main_New(struct vlc_logger *parent_logger)
{
vlc_clock_main_t *main_clock = malloc(sizeof(vlc_clock_main_t));
......@@ -401,22 +418,12 @@ vlc_clock_main_t *vlc_clock_main_New(struct vlc_logger *parent_logger)
main_clock->pause_date = VLC_TICK_INVALID;
main_clock->input_dejitter = DEFAULT_PTS_DELAY;
main_clock->output_dejitter = AOUT_MAX_PTS_ADVANCE * 2;
main_clock->abort = false;
AvgInit(&main_clock->coeff_avg, 10);
return main_clock;
}
void vlc_clock_main_Abort(vlc_clock_main_t *main_clock)
{
vlc_mutex_lock(&main_clock->lock);
main_clock->abort = true;
vlc_cond_broadcast(&main_clock->cond);
vlc_mutex_unlock(&main_clock->lock);
}
void vlc_clock_main_Reset(vlc_clock_main_t *main_clock)
{
vlc_mutex_lock(&main_clock->lock);
......@@ -516,26 +523,11 @@ vlc_tick_t vlc_clock_SetDelay(vlc_clock_t *clock, vlc_tick_t delay)
return clock->set_delay(clock, delay);
}
vlc_tick_t vlc_clock_ConvertToSystem(vlc_clock_t *clock, vlc_tick_t system_now,
vlc_tick_t ts, double rate)
{
vlc_clock_main_t *main_clock = clock->owner;
vlc_mutex_lock(&main_clock->lock);
vlc_tick_t system = clock->to_system_locked(clock, system_now, ts, rate);
vlc_mutex_unlock(&main_clock->lock);
return system;
}
void vlc_clock_ConvertArrayToSystem(vlc_clock_t *clock, vlc_tick_t system_now,
vlc_tick_t *ts_array, size_t ts_count,
double rate)
vlc_tick_t vlc_clock_ConvertToSystemLocked(vlc_clock_t *clock,
vlc_tick_t system_now, vlc_tick_t ts,
double rate)
{
vlc_clock_main_t *main_clock = clock->owner;
vlc_mutex_lock(&main_clock->lock);
for (size_t i = 0; i < ts_count; ++i)
ts_array[i] = clock->to_system_locked(clock, system_now, ts_array[i],
rate);
vlc_mutex_unlock(&main_clock->lock);
return clock->to_system_locked(clock, system_now, ts, rate);
}
static void vlc_clock_set_master_callbacks(vlc_clock_t *clock)
......
......@@ -65,11 +65,6 @@ vlc_clock_main_t *vlc_clock_main_New(struct vlc_logger *parent_logger);
*/
void vlc_clock_main_Delete(vlc_clock_main_t *main_clock);
/**
* Abort all the pending vlc_clock_Wait
*/
void vlc_clock_main_Abort(vlc_clock_main_t *main_clock);
/**
* Reset the vlc_clock_main_t
*/
......@@ -174,23 +169,63 @@ void vlc_clock_Reset(vlc_clock_t *clock);
vlc_tick_t vlc_clock_SetDelay(vlc_clock_t *clock, vlc_tick_t ts_delay);
/**
* Wait for a timestamp expressed in stream time
* Lock the clock mutex
*/
void vlc_clock_Wait(vlc_clock_t *clock, vlc_tick_t system_now, vlc_tick_t ts,
double rate, vlc_tick_t max_duration);
void vlc_clock_Lock(vlc_clock_t *clock);
/**
* This function converts a timestamp from stream to system
* @return the valid system time or VLC_TICK_MAX when the clock is paused
* Unlock the clock mutex
*/
vlc_tick_t vlc_clock_ConvertToSystem(vlc_clock_t *clock, vlc_tick_t system_now,
vlc_tick_t ts, double rate);
void vlc_clock_Unlock(vlc_clock_t *clock);
/**
* This functon converts an array of timestamp from stream to system
* Indicate if the clock is paused
*
* The clock mutex must be locked.
*
* @retval true if the clock is paused
* @retval false if the clock is not paused
*/
bool vlc_clock_IsPaused(vlc_clock_t *clock);
/**
* Wait for a timestamp expressed in system time
*
* The wait will be interrupted (signaled) on clock state changes which could
* invalidate the computed deadline. In that case, the caller must recompute
* the new deadline and call it again.
*
* The clock mutex must be locked.
*
* @return 0 if the condition was signaled, an error code in case of timeout
*/
void vlc_clock_ConvertArrayToSystem(vlc_clock_t *clock, vlc_tick_t system_now,
vlc_tick_t *ts_array, size_t ts_count,
double rate);
int vlc_clock_Wait(vlc_clock_t *clock, vlc_tick_t system_deadline);
/**
* Wake up any vlc_clock_Wait()
*/
void vlc_clock_Wake(vlc_clock_t *clock);
/**
* This function converts a timestamp from stream to system
*
* The clock mutex must be locked.
*
* @return the valid system time or VLC_TICK_MAX when the clock is paused
*/
vlc_tick_t vlc_clock_ConvertToSystemLocked(vlc_clock_t *clock,
vlc_tick_t system_now, vlc_tick_t ts,
double rate);
static inline vlc_tick_t
vlc_clock_ConvertToSystem(vlc_clock_t *clock, vlc_tick_t system_now,
vlc_tick_t ts, double rate)
{
vlc_clock_Lock(clock);
vlc_tick_t system =
vlc_clock_ConvertToSystemLocked(clock, system_now, ts, rate);
vlc_clock_Unlock(clock);
return system;
}
#endif /*VLC_CLOCK_H*/
......@@ -1328,10 +1328,29 @@ static int RenderPicture(vout_thread_sys_t *vout, bool render_now)
}
else if (vd->ops->display != NULL)
{
vlc_tick_t max_deadline = system_now + VOUT_REDISPLAY_DELAY;
/* Wait to reach system_pts if the plugin doesn't handle
* asynchronous display */
vlc_clock_Wait(sys->clock, system_now, pts, sys->rate,
VOUT_REDISPLAY_DELAY);
vlc_clock_Lock(sys->clock);
bool timed_out = false;
while (!timed_out) {
vlc_tick_t deadline;
if (vlc_clock_IsPaused(sys->clock))
deadline = max_deadline;
else
{
deadline = vlc_clock_ConvertToSystemLocked(sys->clock,
vlc_tick_now(), pts, sys->rate);
if (deadline > max_deadline)
deadline = max_deadline;
}
timed_out = vlc_clock_Wait(sys->clock, deadline);
};
vlc_clock_Unlock(sys->clock);
/* Don't touch system_pts. Tell the clock that the pts was rendered
* at the expected date */
......
......@@ -596,37 +596,32 @@ static size_t spu_channel_UpdateDates(struct spu_channel *channel,
* one shot */
if (channel->entries.size == 0)
return 0;
vlc_tick_t *date_array = vlc_alloc(channel->entries.size,
2 * sizeof(vlc_tick_t));
if (!date_array)
return 0;
if (!channel->clock)
goto end;
vlc_clock_Lock(channel->clock);
for (size_t index = 0; index < channel->entries.size; index++)
{
spu_render_entry_t *current = &channel->entries.data[index];
assert(current);
spu_render_entry_t *entry = &channel->entries.data[index];
assert(entry);
date_array[index * 2] = current->orgstart;
date_array[index * 2 + 1] = current->orgstop;
}
/* Convert all spu ts */
if (channel->clock)
vlc_clock_ConvertArrayToSystem(channel->clock, system_now, date_array,
channel->entries.size * 2, channel->rate);
vlc_tick_t ts;
/* Put back the converted ts into the output spu_render_entry_t struct */
for (size_t index = 0; index < channel->entries.size; index++)
{
spu_render_entry_t *render_entry = &channel->entries.data[index];
if(date_array[index * 2] != VLC_TICK_MAX) /* pause triggered before or during spu render */
ts = vlc_clock_ConvertToSystemLocked(channel->clock, system_now,
entry->orgstart, channel->rate);
if (ts != VLC_TICK_MAX) /* pause triggered before or during spu render */
{
render_entry->start = date_array[index * 2];
render_entry->stop = date_array[index * 2 + 1];
entry->start = ts;
entry->stop =
vlc_clock_ConvertToSystemLocked(channel->clock, system_now,
entry->orgstop, channel->rate);
}
}
vlc_clock_Unlock(channel->clock);
free(date_array);
end:
return channel->entries.size;
}
......@@ -1870,11 +1865,15 @@ void spu_PutSubpicture(spu_t *spu, subpicture_t *subpic)
if (channel->clock)
{
vlc_tick_t system_now = vlc_tick_now();
vlc_tick_t times[2] = { orgstart, orgstop };
vlc_clock_ConvertArrayToSystem(channel->clock, system_now,
times, 2, channel->rate);
subpic->i_start = times[0];
subpic->i_stop = times[1];
vlc_clock_Lock(channel->clock);
subpic->i_start =
vlc_clock_ConvertToSystemLocked(channel->clock, system_now,
orgstart, channel->rate);
subpic->i_stop =
vlc_clock_ConvertToSystemLocked(channel->clock, system_now,
orgstop, channel->rate);
vlc_clock_Unlock(channel->clock);
}
if (spu_channel_Push(channel, subpic, orgstart, orgstop))
......