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;
};