#pragma once #include #include "Mutex/Cond.h" extern "C" { #include } enum av_type_t { AV_VIDEO = 0, AV_AUDIO, AV_UNKOWN, }; enum audio_codec_t { AUDIO_UNKNOWN = 0, AUDIO_G711_A, AUDIO_G711_MU, AUDIO_G722, AUDIO_G723_1, AUDIO_G726, AUDIO_G729, }; enum video_codec_t { VIDEO_UNKNOWN = 0, VIDEO_H264, VIDEO_HEVC, VIDEO_MPEG4, }; enum VIDEOTYPE { NORMALVIDEO = 0, RUNWEIVIDEO = 1, CDYDVIDEO = 2, CSHHVIDEO = 3, ZZCXVIDEO = 4, HKVIDEO = 5, NULLVIDEO }; typedef struct packet_t { uint8_t* data; uint32_t length; int64_t pts; int64_t dts; av_type_t type; }packet_t; class DataCallback { public: DataCallback():opaque(NULL){} virtual ~DataCallback() = default; virtual int push_packet(const packet_t* pkt, const av_type_t type) = 0; virtual int open_codec(const int codec_type, const av_type_t type) = 0; virtual int is_quit() = 0; virtual int quit() = 0; virtual int push_finish() = 0; void* opaque; };