#include <u.h>#include <libc.h>#include <bio.h>#include "common.h"#include "packet.h" enum { Timedenum = 1000ULL,}; intsrttsfmt(Fmt *f){ char *s, *e, tmp[64]; uvlong nsec, sec, msec; s = tmp; e = tmp + sizeof(tmp); nsec = va_arg(f->args, uvlong); sec = nsec / 1000000000ULL; msec = nsec/1000000ULL - sec*1000ULL; if(sec >= 3600){ s = seprint(s, e, "%02llud:", sec/3600); sec %= 3600; } s = seprint(s, e, "%02llud:", sec/60); sec %= 60; seprint(s, e, "%02llud,%03llud", sec, msec); return fmtstrcpy(f, tmp);} intsrtpacket(Biobuf *out, Packetctx *ctx, Packet *p, int np, uvlong ts, int key){ int i, n; uchar *s, *o; USED(key); for(i = 0; i < np; i++, p++){ for(s = o = p->data, n = 0; n < p->sz;){ if(*s == '\r'){ *o++ = '\n'; s++; n++; if(n >= p->sz) break; if(*s == '\n'){ s++; n++; continue; } } *o++ = *s++; n++; } if(*o == '\n' && o != p->data) o--; Bprint(out, "%llud\n%P --> %P\n", ++ctx->frid, ts, ts+ctx->blockdur); Bwrite(out, p->data, o - p->data); Bwrite(out, "\n\n", 2); } Bflush(out); return 0;}
#include <u.h>
#include <libc.h>
#include <bio.h>
#include "common.h"
#include "packet.h"
enum {
Timedenum = 1000ULL,
};
int
srttsfmt(Fmt *f)
{
char *s, *e, tmp[64];
uvlong nsec, sec, msec;
s = tmp;
e = tmp + sizeof(tmp);
nsec = va_arg(f->args, uvlong);
sec = nsec / 1000000000ULL;
msec = nsec/1000000ULL - sec*1000ULL;
if(sec >= 3600){
s = seprint(s, e, "%02llud:", sec/3600);
sec %= 3600;
}
s = seprint(s, e, "%02llud:", sec/60);
sec %= 60;
seprint(s, e, "%02llud,%03llud", sec, msec);
return fmtstrcpy(f, tmp);
}
int
srtpacket(Biobuf *out, Packetctx *ctx, Packet *p, int np, uvlong ts, int key)
{
int i, n;
uchar *s, *o;
USED(key);
for(i = 0; i < np; i++, p++){
for(s = o = p->data, n = 0; n < p->sz;){
if(*s == '\r'){
*o++ = '\n';
s++;
n++;
if(n >= p->sz)
break;
if(*s == '\n'){
s++;
n++;
continue;
}
}
*o++ = *s++;
n++;
}
if(*o == '\n' && o != p->data)
o--;
Bprint(out, "%llud\n%P --> %P\n", ++ctx->frid, ts, ts+ctx->blockdur);
Bwrite(out, p->data, o - p->data);
Bwrite(out, "\n\n", 2);
}
Bflush(out);
return 0;
}