VideoDecoder.h
762 字节
#pragma once
#include "media_info.h"
#include <list>
class CVideoDecoder
{
public:
CVideoDecoder();
virtual ~CVideoDecoder();
int add(media_info &info);
unsigned int getuid();
int get_one_frame(AVFrame ** pFrame, int64_t & ts);
int open_input_file(const char *filename);
protected:
int init_filters(void);
int init_filter(FilteringContext* fctx, AVCodecContext *dec_ctx, const char *filter_spec);
int filter_encode_write_frame(AVFrame *frame, unsigned int stream_index);
protected:
vector<media_info> _info;
list<AVFrame * > _decoded_frames;
float _start_time;
AVFormatContext *ifmt_ctx;
FilteringContext *filter_ctx;
bool _is_finished;
AVRational _codec_timebase;
unsigned int _uid;
int _rotate;
};