基于嵌入式Linux的视频采集系统17-----源程序----decoder.h

2019-07-13 05:05发布

本文来自:
http://blog.chinaunix.net/uid-23093301-id-86406.html

#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 #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