#ifndef AVCODECS_CODEC_H__ #define AVCODECS_CODEC_H__ #include typedef struct EncoderOptions { // for common void (*callback_func)(const unsigned char* data, unsigned int length, unsigned long timestamp, void* user_data); void *user_data; unsigned int kbps; unsigned int rtp_payload_size; // optional // for audio unsigned int samplerate; unsigned int channels; unsigned int bitpersample; // for video unsigned int width; unsigned int height; unsigned int crop_width; unsigned int crop_height; unsigned int gop_size; unsigned int framerate_num; unsigned int framerate_den; unsigned int level; unsigned int profile; }EncoderOptions; typedef struct DecoderOptions { // for common void (*callback_func)(const unsigned char* samples, unsigned int length, unsigned long timestamp, void* user_data, unsigned long reserved1, unsigned long reserved2); void *user_data; // for SDP options std::string optional_parameters; }DecoderOptions; class Encoder { public: virtual int Init(EncoderOptions* params) = 0; virtual int Encode(const unsigned char* samples, unsigned int length, unsigned long timestamp) = 0; virtual void FastUpdate() = 0; virtual int ChangeBitrate(int newKbps) = 0; }; class Decoder { public: virtual int Init(DecoderOptions* params) = 0; virtual int Decode(const unsigned char* data, unsigned int length, unsigned long timestamp) = 0; }; #endif//AVCODECS_CODEC_H__