ref: eac7952b194921bd8792d5d35675bd7a4721c8cf
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, FmtH264, FmtVP8, FmtVP9, /* audio */ FmtAAC, FmtMp3, FmtOpus, FmtVorbis, }; struct Streamframe { uvlong timestamp; uvlong dt; u8int *buf; int sz; }; struct Streamops { Stream *(*open)(char *path, int *num, int *failed); u8int *(*alloc)(void *aux, int sz); void (*close)(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; }; char info[128]; }; struct Stream { Streaminfo; Streamops ops; /* private stuff */ uvlong timestamp; void *b; u8int *buf; int bufsz; void *aux; void (*freeaux)(void *); }; Stream *Sopen(char *filename, int *num); void Sclose(Stream *s); int Sread(Stream *s, Streamframe *f); int ivfopenb(void *bio, Stream *s, int *failed); int audopenfd(int fd, Stream *s, int *failed);