#ifndef __DECODER_H_INCLUDE
#define __DECODER_H_INCLUDE
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
#include "avcodec.h"
#include "libavutil/mathematics.h"
#include "libavformat/avformat.h"
#include "libswscale/swscale.h"
#include "libavcodec/avcodec.h"
#ifdef __cplusplus
}
#endif /* __cplusplus */
#include
#include
#include
using namespace std;
#define DEF_FRAME_SIZE 10844*5
typedef struct TFrameNode
{
AVPacket pkt;
void* buff[DEF_FRAME_SIZE];
int size;
}TFrameNode;
class CDecoder
{
public:
CDecoder();
~CDecoder();
void push_frame(void* img,int size);
AVPacket* pop_frame();
void try_show(AVFrame* picture,int width=320,int height=240);
char* readall_file(const string& file,int & size);
private:
AVFrame * do_alloc_picture(int pix_fmt, int width, int height);
private:
char filename [256];
vector m_frame_que;
int cur_process_pos;
int cur_append_pos;
int num_has_append;
TFrameNode m_convert_buff;
private:
//////////////////////// for thread safe
pthread_cond_t m_pthread_cond;
pthread_mutex_t m_mutex;
};
#endif
阅读(1577) | 评论(0) | 转发(2) |