#include <avformat.h>

#ifndef _writewebm_h
#define _writewebm_h
// a wrapper around a single output AVStream
typedef struct OutputStream {
    AVStream *st;
    AVCodecContext *enc;
    AVFrame *frame;
} OutputStream;


typedef struct WebMWriter {
        OutputStream *audioStream, *videoStream;
        AVFormatContext *ctx;
        AVOutputFormat *outfmt;
        AVCodec *audioCodec, *videoCodec;
} WebMWriter;


WebMWriter *init(char *filename);
void addStream(OutputStream *out_st, AVFormatContext *ctx, AVCodec **cdc, enum AVCodecID codecId);
int writeVideoStream(AVFormatContext *ctx, AVStream *st, uint8_t *data, int size, long frameTimeStamp, int isKeyFrame, AVCodecContext *codec_ctx);
int writeAudioStream(AVFormatContext *ctx, AVStream *st, uint8_t *data, int size, long frameTimeStamp, AVCodecContext *codec_ctx);
void openVideo1(OutputStream *out_st, AVCodec *codec);
void openAudio(OutputStream *out_st, AVCodec *codec);
void close(AVFormatContext *ctx, OutputStream videoStream, OutputStream audioStream, AVOutputFormat *outfmt);

#endif
