ref: 66c086c68d190935c0113735278a99b100bf07da
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",
};
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;
}
uvlong
nanosec(void)
{
static uvlong fasthz, xstart;
uvlong x, div;
if(fasthz == ~0ULL)
return nsec() - xstart;
if(fasthz == 0){
if((fasthz = _tos->cyclefreq) == 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");
return 0;
}else{
cycles(&xstart);
}
}
cycles(&x);
x -= xstart;
/* this is ugly */
for(div = 1000000000ULL; x < 0x1999999999999999ULL && div > 1 ; div /= 10ULL, x *= 10ULL);
return x / (fasthz / div);
}