ref: 0bd4d710394e8347d0a224e460a3f0119095eab7
dir: /stream.h/
typedef struct Stream Stream; typedef struct Streamhdr Streamhdr; typedef struct Streamframe Streamframe; typedef struct Streaminfo Streaminfo; typedef struct Streamops Streamops; #pragma incomplete Stream enum { Svideo, Saudio, /* video */ FmtAV1 = 0, FmtVP9, FmtVP8, /* audio */ FmtAAC, FmtOpus, }; struct Streamframe { u8int *buf; int sz; uvlong offset; uvlong timestamp; }; struct Streamops { Stream *(*open)(char *path, int *num, int *failed); u8int *(*alloc)(void *aux, int sz); void (*close)(Stream *s); vlong (*offset)(Stream *s); int (*read)(Stream *s, Streamframe *f); void *aux; }; struct Streaminfo { int type; int fmt; struct { uvlong denum, num; }timebase; union { struct { int w, h; }video; struct { int nchan; int srate; }audio; }; }; struct Stream { Streaminfo; Streamops ops; /* private stuff */ void *b; u8int *buf; int bufsz; int pid; }; Stream *Sopen(char *filename, int *num); vlong Soffset(Stream *s); void Sclose(Stream *s); int Sread(Stream *s, Streamframe *f); int ivfopenb(void *bio, Stream *s, int *failed);