uvg266/src/encoder.h

89 lines
2 KiB
C
Raw Normal View History

2012-06-04 10:47:12 +00:00
/**
* HEVC Encoder
* - Marko Viitanen ( fador at iki.fi ), Tampere University of Technology, Department of Computer Systems.
*/
2012-06-01 12:31:06 +00:00
/*! \file encoder.h
\brief Encoding related functions
\author Marko Viitanen
\date 2012-06
Structures for encoding
*/
#ifndef __ENCODER_H
#define __ENCODER_H
2012-06-01 12:31:06 +00:00
#include "picture.h"
#include "bitstream.h"
2012-06-04 10:47:12 +00:00
typedef struct encoder_control;
//ToDo: add ME data
2012-06-01 12:31:06 +00:00
typedef struct
{
void (*IME)();
void (*FME)();
2012-06-04 10:47:12 +00:00
int range;
2012-06-01 12:31:06 +00:00
} encoder_me;
/* Input info struct */
2012-06-01 12:31:06 +00:00
typedef struct
{
FILE* file;
uint32_t width;
uint32_t height;
uint32_t height_in_LCU;
uint32_t width_in_LCU;
picture cur_pic;
2012-06-01 12:31:06 +00:00
} encoder_input;
typedef struct
{
uint32_t frame;
config *cfg;
2012-06-01 12:31:06 +00:00
encoder_input in;
encoder_me me;
bitstream* stream;
FILE *output;
picture_list *ref;
uint8_t QP;
2012-06-01 12:31:06 +00:00
} encoder_control;
void init_encoder_control(encoder_control* control,bitstream* output);
void init_encoder_input(encoder_input* input,FILE* inputfile, uint32_t width, uint32_t height);
void encode_one_frame(encoder_control* encoder);
2012-06-01 12:31:06 +00:00
void encode_seq_parameter_set(encoder_control* encoder);
void encode_pic_parameter_set(encoder_control* encoder);
void encode_slice_data(encoder_control* encoder);
void encode_slice_header(encoder_control* encoder);
void encode_coding_tree(encoder_control* encoder,uint16_t xCtb,uint16_t yCtb, uint8_t depth);
static const uint8_t INIT_SPLIT_FLAG[3][3] =
{ { 107, 139, 126 }, { 107, 139, 126 }, { 139, 141, 157 } };
static const uint8_t INIT_INTRA_PRED_MODE[3] = { 183,154,184 };
static const uint8_t INIT_CHROMA_PRED_MODE[3][2] = { { 152, 139 }, { 152, 139 }, { 63, 139 } };
#define CNU 154
static const uint8_t INIT_TRANS_SUBDIV_FLAG[3][4] =
{
{ CNU, 153, 138, 138 },
{ CNU, 124, 138, 94 },
{ CNU, 224, 167, 122 }
};
static const uint8_t INIT_QT_CBF[3][8] =
{
{ 153, 111, CNU, CNU, CNU, 149, 92, 167 },
{ 153, 111, CNU, CNU, CNU, 149, 107, 167 },
{ 111, 141, CNU, CNU, CNU, 94, 138, 182 }
};
2012-06-01 12:31:06 +00:00
#endif