sylware / nyanmp (public) (License: AGPLv3) (since 2020-02-12) (hash sha1)
intended to become a collection of media players for gnu/linux based on ffmpeg, alsa, vulkan, x11, wayland, etc.
List of commits:
Subject Hash Author Date (UTC)
npv: video: handle latency spikes on main thread f629068cb27b47530058f81fc2b065b0786b4afa Sylvain BERTRAND 2020-05-24 18:11:07
npv: media pipeline 30efa7c8f2574c676d9d41b8bf5678d5725b8721 Sylvain BERTRAND 2020-05-24 17:40:23
alsa-lib warning 54b6dc9b912bb9509ba35405f15a623632adf784 Sylvain BERTRAND 2020-05-19 14:32:04
npv: proper handling of snd_pcm_drain() db7959bdd5f7ed921773aef42984b1c982575ad4 Sylvain BERTRAND 2020-05-15 15:00:13
proper handling of snd_pcm_drain() ae2c6458f893e77cd352fe9225e123bdf077e33f Sylvain BERTRAND 2020-05-15 14:46:30
after network testing: need an input thread 0c26bffd3c2268cfb9f7d8e43c7aba2fbf7fec16 Sylvain BERTRAND 2020-05-13 23:11:20
spin on futex waiting in threaded scaler e90420f459c608cbcbae423b3c487598a83de359 Sylvain BERTRAND 2020-05-13 21:05:48
npa tidying and npv addition, usable on our system 443ff39347c8b599dfaafff612caed84287f1a70 Sylvain BERTRAND 2020-05-13 15:12:15
here we go d5a2b11f4d73ec5365a340163f451fa8a123d728 Sylvain BERTRAND 2020-02-12 18:50:57
Commit f629068cb27b47530058f81fc2b065b0786b4afa - npv: video: handle latency spikes on main thread
Author: Sylvain BERTRAND
Author date (UTC): 2020-05-24 18:11
Committer name: Sylvain BERTRAND
Committer date (UTC): 2020-05-24 18:11
Parent(s): 30efa7c8f2574c676d9d41b8bf5678d5725b8721
Signer:
Signing key:
Signing status: N
Tree: 1a867af5b713d183a42a09a4c1d308db9c531c36
File Lines added Lines deleted
npv/video/local/code.frag.c 22 0
File npv/video/local/code.frag.c changed (mode: 100644) (index 5b7ef06..a4b757b)
... ... static void select_fr(s64 now, avutil_video_fr_ref_t **selected_fr,
294 294 struct dec_fr_priv_t **selected_fr_priv) struct dec_fr_priv_t **selected_fr_priv)
295 295 { {
296 296 u16 fr_idx; u16 fr_idx;
297 u16 selected_fr_idx;
297 298 u64 selected_fr_delta; u64 selected_fr_delta;
298 299
299 300 fr_idx = 0; fr_idx = 0;
 
... ... static void select_fr(s64 now, avutil_video_fr_ref_t **selected_fr,
308 309 if (delta < selected_fr_delta) { if (delta < selected_fr_delta) {
309 310 *selected_fr = dec_frs_p.a[fr_idx]; *selected_fr = dec_frs_p.a[fr_idx];
310 311 *selected_fr_priv = dec_frs_p.priv_a + fr_idx; *selected_fr_priv = dec_frs_p.priv_a + fr_idx;
312 selected_fr_idx = fr_idx;
311 313 selected_fr_delta = delta; selected_fr_delta = delta;
312 314 } }
313 315 ++fr_idx; ++fr_idx;
314 316 } }
317 /* smooth occasional drops due to spikes in latency over 1-2 frames */
318 if (selected_fr_idx >= 1) {
319 struct dec_fr_priv_t *prev_fr_priv;
320
321 if (selected_fr_idx >= 2) {
322 prev_fr_priv = dec_frs_p.priv_a + selected_fr_idx - 2;
323 if (!prev_fr_priv->was_qed_to_pe) {
324 /* hijack the time slot */
325 *selected_fr = dec_frs_p.a[selected_fr_idx - 2];
326 *selected_fr_priv = prev_fr_priv;
327 return;
328 }
329 }
330 prev_fr_priv = dec_frs_p.priv_a + selected_fr_idx - 1;
331 if (!prev_fr_priv->was_qed_to_pe) {
332 /* hijack the time slot */
333 *selected_fr = dec_frs_p.a[selected_fr_idx - 1];
334 *selected_fr_priv = prev_fr_priv;
335 }
336 }
315 337 } }
316 338 #undef NO_FR #undef NO_FR
317 339 static void frs_clear_last_qed_to_pe(void) static void frs_clear_last_qed_to_pe(void)
Hints:
Before first commit, do not forget to setup your git environment:
git config --global user.name "your_name_here"
git config --global user.email "your@email_here"

Clone this repository using HTTP(S):
git clone https://rocketgit.com/user/sylware/nyanmp

Clone this repository using ssh (do not forget to upload a key first):
git clone ssh://rocketgit@ssh.rocketgit.com/user/sylware/nyanmp

Clone this repository using git:
git clone git://git.rocketgit.com/user/sylware/nyanmp

You are allowed to anonymously push to this repository.
This means that your pushed commits will automatically be transformed into a merge request:
... clone the repository ...
... make some changes and some commits ...
git push origin main