📄 encoder.h
字号:
/***************************************************************************#
# jpegenc: library to encode a jpeg frame from various input palette. #
# jpegenc works for embedded device without libjpeg #
#. #
# Copyright (C) 2005 Michel Xhaard #
# #
# This program is free software; you can redistribute it and/or modify #
# it under the terms of the GNU General Public License as published by #
# the Free Software Foundation; either version 2 of the License, or #
# (at your option) any later version. #
# #
# This program is distributed in the hope that it will be useful, #
# but WITHOUT ANY WARRANTY; without even the implied warranty of #
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
# GNU General Public License for more details. #
# #
# You should have received a copy of the GNU General Public License #
# along with this program; if not, write to the Free Software #
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #
# CREDIT: #
# Original code from Nitin Gupta India (?) #
# #
#***************************************************************************/
#ifndef ENCODER_H
#define ENCODER_H
/********* Image_format know by the encoder *********************/
/* Native YUV Packet */
#define FOUR_ZERO_ZERO 0 // Grey scale Y00 ...
#define FOUR_TWO_ZERO 1 //Y00 Y01 Y10 Y11 Cb Cr
#define FOUR_TWO_TWO 2 //Y00 Cb Y01 Cr
#define FOUR_FOUR_FOUR 3 //Y00 Cb Cr Y01 Cb Cr
/* transform RGB24 to YUV Packet*/
#define RGBto444 4 //RGB24 to packet YUV444
#define RGBto422 5 //RGB24 to packet YUV422
#define RGBto420 6 //RGB24 to packet YUV420
#define RGBto400 7 //RGB24 to packet YUV400
/* transform RGBxxx to YUV Packet*/
#define RGB565to420 11 //RGB565 to packet YUV420
#define RGB32to420 12 //RGB32 to packet YUV420
/* transform YUV planar to YUV packet */
#define YUVto444 8 //YUV444Planar to Packet YUV444
#define YUVto422 9 //YUV422Planar to Packet YUV422
#define YUVto420 10 //YUV420Planar to Packet YUV420
/*****************************************************************/
#define BLOCK_SIZE 64
UINT8 Lqt[BLOCK_SIZE];
UINT8 Cqt[BLOCK_SIZE];
UINT16 ILqt[BLOCK_SIZE];
UINT16 ICqt[BLOCK_SIZE];
INT16 Y1[BLOCK_SIZE];
INT16 Y2[BLOCK_SIZE];
INT16 Y3[BLOCK_SIZE];
INT16 Y4[BLOCK_SIZE];
INT16 CB[BLOCK_SIZE];
INT16 CR[BLOCK_SIZE];
INT16 Temp[BLOCK_SIZE];
INT32 lcode;
UINT16 bitindex;
typedef struct JPEG_ENCODER_STRUCTURE
{
UINT16 mcu_width;
UINT16 mcu_height;
UINT16 horizontal_mcus;
UINT16 vertical_mcus;
UINT16 rows_in_bottom_mcus;
UINT16 cols_in_right_mcus;
UINT16 length_minus_mcu_width;
UINT16 length_minus_width;
UINT16 mcu_width_size;
UINT16 offset;
INT16 ldc1;
INT16 ldc2;
INT16 ldc3;
UINT16 rows;
UINT16 cols;
UINT16 incr;
} JPEG_ENCODER_STRUCTURE;
/* encode picture input to output
quality factor
image_format look the define
image_width image_height of the input picture
return the encoded size in Byte
*/
UINT32 encode_image (UINT8 * input_ptr, UINT8 * output_ptr,
UINT32 quality_factor, UINT32 image_format,
UINT32 image_width, UINT32 image_height);
#endif /* ENCODER_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -