ref: 2011eb1bf6d3757bfd58788357f6b4607d6baafe
dir: /misc.c/
#include <u.h> #include <libc.h> #include <tos.h> #include "misc.h" #include "stream.h" int nproc, debug; static char *fmts[] = { [FmtAV1] = "av1", [FmtVP9] = "vp9", [FmtVP8] = "vp8", [FmtH264] = "h264", [FmtAAC] = "aac", [FmtOpus] = "opus", [FmtMp3] = "mp3", }; int str2fmt(char *s) { int i; for(i = 0; i < nelem(fmts) && fmts[i] != nil && strcmp(fmts[i], s) != 0; i++); return i < nelem(fmts) ? i : -1; } char * fmt2str(int fmt) { if(fmt >= 0 && fmt < nelem(fmts)) return fmts[fmt]; return "???"; } uvlong nanosec(void) { static uvlong fasthz, xstart; uvlong x, div; if(fasthz == ~0ULL) return nsec() - xstart; if(fasthz == 0){ fasthz = _tos->cyclefreq; if(fasthz == 0){ fasthz = ~0ULL; xstart = nsec(); fprint(2, "cyclefreq not available, falling back to nsec()\n"); fprint(2, "you might want to disable aux/timesync\n"); }else{ cycles(&xstart); } return 0; } cycles(&x); x -= xstart; /* this is ugly */ for(div = 1000000000ULL; x < 0x1999999999999999ULL && div > 1 ; div /= 10ULL, x *= 10ULL); return x / (fasthz / div); }