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)
npa: fix initial scheduling bd228fb06dda312888dc6425ebc08dfb2c1d06ae Sylvain BERTRAND 2020-06-02 10:17:42
npv: x11 fixes and more sugar 043ef16cabacaddada9c322fa39871048ef95aae Sylvain BERTRAND 2020-06-01 22:18:22
npv:x11 sugar acd88647f348333fee796a6062963e9cea847d2f Sylvain BERTRAND 2020-05-30 21:26:47
npv: video timer names 8ab20e0c91538f9f84c09c78ee2d5242b5b74607 Sylvain BERTRAND 2020-05-30 17:14:56
npv:less worse pause support, some cleanup ded1666c8970d67bba8f5d0d2ee25230403bc9c3 Sylvain BERTRAND 2020-05-30 16:26:21
npv:fix dynamic loading of xcb lib 0235137068f40277460c4b6ea340bc5674d8dc7d Sylvain BERTRAND 2020-05-29 21:21:01
npv:x11/xcb screensaver heartbeat bd293398599beae694bd3f862c374489067a9f53 Sylvain BERTRAND 2020-05-29 21:06:00
npa: don't slow down too much the audio thread 1b8f1e2dd1d5272cd04a8fa711f26cdc3b6e1049 Sylvain BERTRAND 2020-05-29 03:00:23
npv/npa: lockless madness and much more 368cb50098ac824cc5cb603c3e1539adfeda7e1d Sylvain BERTRAND 2020-05-29 02:20:19
npv:restore pause/seeking, add tmp info command cf4da499db3123561aacd8732cd1eb97b9146e55 Sylvain BERTRAND 2020-05-27 17:31:56
npv:bugs, finer-grained locking, pthread_cond, etc 8bd06c28483adc9986b8b51612e609115948943d Sylvain BERTRAND 2020-05-26 23:59:16
npv: fix obvious multithread bug db4f3801c2185b8da1d9fb3f4b3da3d2ab92ea13 Sylvain BERTRAND 2020-05-24 21:42:08
remove old commented code d3701c5734aceda5c46cd5f60281cc524c55e4a3 Sylvain BERTRAND 2020-05-24 19:29:04
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
Commit bd228fb06dda312888dc6425ebc08dfb2c1d06ae - npa: fix initial scheduling
Author: Sylvain BERTRAND
Author date (UTC): 2020-06-02 10:17
Committer name: Sylvain BERTRAND
Committer date (UTC): 2020-06-02 10:17
Parent(s): 043ef16cabacaddada9c322fa39871048ef95aae
Signer:
Signing key:
Signing status: N
Tree: fa3724f476729dbb10d15a0805441f566b69788c
File Lines added Lines deleted
npa/npa.c 11 8
File npa/npa.c changed (mode: 100644) (index 89238d3..66e3070)
... ... static void stdin_tty_cfg_restore(void)
257 257
258 258 if (!stdin_tty_cfg_modified) if (!stdin_tty_cfg_modified)
259 259 return; return;
260
261 260 r = tcsetattr(0, TCSANOW, &stdin_tio_save); r = tcsetattr(0, TCSANOW, &stdin_tio_save);
262 261 if (r == -1) { if (r == -1) {
263 262 WARNING("input:unable to restore the terminal line attributes\t"); WARNING("input:unable to restore the terminal line attributes\t");
264 263 return; return;
265 264 } }
266
267 265 memset(&tio_chk, 0, sizeof(tio_chk)); memset(&tio_chk, 0, sizeof(tio_chk));
268 266 r = tcgetattr(0, &tio_chk); r = tcgetattr(0, &tio_chk);
269 267 if (r == -1) { if (r == -1) {
270 268 WARNING("input:unable to get the current terminal line attributes for restoration checking\n"); WARNING("input:unable to get the current terminal line attributes for restoration checking\n");
271 269 return; return;
272 270 } }
273
274 271 r = memcmp(&tio_chk, &stdin_tio_save, sizeof(tio_chk)); r = memcmp(&tio_chk, &stdin_tio_save, sizeof(tio_chk));
275 272 if (r != 0) if (r != 0)
276 273 WARNING("input:only partial restoration of the terminal line attributes\n"); WARNING("input:only partial restoration of the terminal line attributes\n");
 
... ... static void *rd_thd_entry(void *arg)
520 517 rd_loop(); rd_loop();
521 518 /* unreachable */ /* unreachable */
522 519 } }
523 static void rd_thd_start(void)
520 static void rd_thd_start(int st_index)
524 521 { {
525 522 int r; int r;
526 523 pthread_t id; pthread_t id;
527 524 pthread_attr_t attr; pthread_attr_t attr;
528 525
526 atomic_store(&cb.st_idx, st_index);
529 527 r = pthread_attr_init(&attr); r = pthread_attr_init(&attr);
530 528 if (r != 0) if (r != 0)
531 529 FATAL("read thread:unable to initialize read thread attribute\n"); FATAL("read thread:unable to initialize read thread attribute\n");
 
... ... static void evt_pcm_uninstall(void)
2230 2228 POUT("alsa:pcm events uninstalled\n"); POUT("alsa:pcm events uninstalled\n");
2231 2229 } }
2232 2230 #define PRINT_INFO true #define PRINT_INFO true
2233 static void play(int st_idx, double initial_vol)
2231 static void play(int st_idx, double initial_vol, bool do_rd_thd_reset)
2234 2232 { {
2235 2233 enum AVSampleFormat dst_fmt; enum AVSampleFormat dst_fmt;
2236 2234 int dst_rate; int dst_rate;
 
... ... static void play(int st_idx, double initial_vol)
2238 2236 uint64_t dst_chans_layout; uint64_t dst_chans_layout;
2239 2237
2240 2238 current_st_idx = st_idx; current_st_idx = st_idx;
2241 rd_thd_reset(st_idx);
2239 /* XXX: reset will flush all pkts dmuxed by the the rd thd until now */
2240 if (do_rd_thd_reset)
2241 rd_thd_reset(st_idx);
2242 2242 fmt_ctx_lock(); fmt_ctx_lock();
2243 2243 dec_ctx_cfg(fmt_ctx->streams[st_idx]->codecpar); dec_ctx_cfg(fmt_ctx->streams[st_idx]->codecpar);
2244 2244 dec_frs.most_recent_ts = fmt_ctx->streams[st_idx]->start_time; dec_frs.most_recent_ts = fmt_ctx->streams[st_idx]->start_time;
 
... ... static void cmd_mute(void)
2396 2396 } }
2397 2397 } }
2398 2398 } }
2399 #define NO_RD_THD_RESET false
2399 2400 int main(int argc, u8 **args) int main(int argc, u8 **args)
2400 2401 { {
2401 2402 u8 *url; u8 *url;
 
... ... int main(int argc, u8 **args)
2411 2412 initial_vol = 1.; initial_vol = 1.;
2412 2413 opts_parse(argc, args, &url, &pcm_str, &initial_vol); opts_parse(argc, args, &url, &pcm_str, &initial_vol);
2413 2414 init_once(url, pcm_str); init_once(url, pcm_str);
2414 rd_thd_start();
2415 2415 best_st_idx = find_best_st(); best_st_idx = find_best_st();
2416 play(best_st_idx, initial_vol);
2416 rd_thd_start(best_st_idx);
2417 /* play with reset will flush the already dmuxed pkts */
2418 play(best_st_idx, initial_vol, NO_RD_THD_RESET);
2417 2419 /* switch the ffmpeg log to stdout for metadata/etc dump */ /* switch the ffmpeg log to stdout for metadata/etc dump */
2418 2420 av_log_set_callback(ffmpeg_log_stdout); av_log_set_callback(ffmpeg_log_stdout);
2419 2421 fmt_ctx_lock(); fmt_ctx_lock();
 
... ... int main(int argc, u8 **args)
2425 2427 loop evts_loop(); loop evts_loop();
2426 2428 /* unreachable */ /* unreachable */
2427 2429 } }
2430 #undef NO_RD_THD_RESET
2428 2431 /*----------------------------------------------------------------------------*/ /*----------------------------------------------------------------------------*/
2429 2432 #undef ARRAY_N #undef ARRAY_N
2430 2433 #undef av_frames_alloc #undef av_frames_alloc
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