generated from zhangwei/Matrixai
62 lines
1.3 KiB
C
62 lines
1.3 KiB
C
|
|
#ifndef _JPEG_ENCODE_H__
|
||
|
|
#define _JPEG_ENCODE_H__
|
||
|
|
|
||
|
|
#include <fstream>
|
||
|
|
#include <queue>
|
||
|
|
#include <pthread.h>
|
||
|
|
|
||
|
|
#include "NvJpegEncoder.h"
|
||
|
|
#include "NvVideoConverter.h"
|
||
|
|
|
||
|
|
typedef struct
|
||
|
|
{
|
||
|
|
NvVideoConverter *conv;
|
||
|
|
NvJPEGEncoder *jpegenc;
|
||
|
|
|
||
|
|
char *in_file_path;
|
||
|
|
std::ifstream * in_file;
|
||
|
|
uint32_t in_width;
|
||
|
|
uint32_t in_height;
|
||
|
|
uint32_t in_pixfmt;
|
||
|
|
|
||
|
|
char *out_file_path;
|
||
|
|
std::ofstream * out_file;
|
||
|
|
|
||
|
|
bool got_error;
|
||
|
|
bool use_fd;
|
||
|
|
|
||
|
|
bool perf;
|
||
|
|
|
||
|
|
uint32_t crop_left;
|
||
|
|
uint32_t crop_top;
|
||
|
|
uint32_t crop_width;
|
||
|
|
uint32_t crop_height;
|
||
|
|
int stress_test;
|
||
|
|
bool scaled_encode;
|
||
|
|
uint32_t scale_width;
|
||
|
|
uint32_t scale_height;
|
||
|
|
int quality;
|
||
|
|
} jpeg_encode_context_t;
|
||
|
|
|
||
|
|
class JpegEncode
|
||
|
|
{
|
||
|
|
public:
|
||
|
|
JpegEncode();
|
||
|
|
~JpegEncode();
|
||
|
|
int JpegEncodeOneFrame(int width, int height, char* frameData, char *path); ///< 输入图片格式必须为yuv420m
|
||
|
|
private:
|
||
|
|
void set_defaults(jpeg_encode_context_t * ctx, int width, int height);
|
||
|
|
int read_video_frame(char* frameData, NvBuffer & buffer);
|
||
|
|
private:
|
||
|
|
jpeg_encode_context_t m_ctx;
|
||
|
|
|
||
|
|
#define TEST_ERROR(cond, str, label) if(cond) { \
|
||
|
|
std::cerr << str << std::endl; \
|
||
|
|
error = 1; \
|
||
|
|
goto label; }
|
||
|
|
|
||
|
|
#define PERF_LOOP 300
|
||
|
|
|
||
|
|
};
|
||
|
|
|
||
|
|
#endif //_JPEG_ENCODE_H__
|