ref: 709cb723bba3aa43ba40a5c70dba0b337bae54e2
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,
FmtH264,
/* audio */
FmtAAC,
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);