#include "jpgd.h"
#include <string.h>
#include <algorithm>
#include <assert.h>
#ifdef _MSC_VER
#pragma warning (disable : 4611)
#endif
#ifndef JPGD_USE_SSE2
#if defined(__GNUC__)
#if defined(__SSE2__)
#define JPGD_USE_SSE2 …
#endif
#elif defined(_MSC_VER)
#if defined(_M_X64)
#define JPGD_USE_SSE2 …
#endif
#endif
#endif
#define JPGD_TRUE …
#define JPGD_FALSE …
#define JPGD_MAX(a,b) …
#define JPGD_MIN(a,b) …
namespace jpgd {
static inline void* jpgd_malloc(size_t nSize) { … }
static inline void jpgd_free(void* p) { … }
static int g_ZAG[64] = …;
enum JPEG_MARKER
{ … };
enum JPEG_SUBSAMPLING { … };
#if JPGD_USE_SSE2
#include "jpgd_idct.h"
#endif
#define CONST_BITS …
#define PASS1_BITS …
#define SCALEDONE …
#define FIX_0_298631336 …
#define FIX_0_390180644 …
#define FIX_0_541196100 …
#define FIX_0_765366865 …
#define FIX_0_899976223 …
#define FIX_1_175875602 …
#define FIX_1_501321110 …
#define FIX_1_847759065 …
#define FIX_1_961570560 …
#define FIX_2_053119869 …
#define FIX_2_562915447 …
#define FIX_3_072711026 …
#define DESCALE(x,n) …
#define DESCALE_ZEROSHIFT(x,n) …
#define MULTIPLY(var, cnst) …
#define CLAMP(i) …
static inline int left_shifti(int val, uint32_t bits)
{ … }
template <int NONZERO_COLS>
struct Row
{ … };
template <>
struct Row<0>
{ … };
template <>
struct Row<1>
{ … };
template <int NONZERO_ROWS>
struct Col
{ … };
template <>
struct Col<1>
{ … };
static const uint8 s_idct_row_table[] = …;
static const uint8 s_idct_col_table[] = …;
static void idct(const jpgd_block_coeff_t* pSrc_ptr, uint8* pDst_ptr, int block_max_zag, bool use_simd)
{ … }
inline uint jpeg_decoder::get_char()
{ … }
inline uint jpeg_decoder::get_char(bool* pPadding_flag)
{ … }
inline void jpeg_decoder::stuff_char(uint8 q)
{ … }
inline uint8 jpeg_decoder::get_octet()
{ … }
inline uint jpeg_decoder::get_bits(int num_bits)
{ … }
inline uint jpeg_decoder::get_bits_no_markers(int num_bits)
{ … }
inline int jpeg_decoder::huff_decode(huff_tables* pH)
{ … }
inline int jpeg_decoder::huff_decode(huff_tables* pH, int& extra_bits)
{ … }
static const int s_extend_test[16] = …;
static const int s_extend_offset[16] = …;
#define JPGD_HUFF_EXTEND(x, s) …
void jpeg_decoder::free_all_blocks()
{ … }
JPGD_NORETURN void jpeg_decoder::stop_decoding(jpgd_status status)
{ … }
void* jpeg_decoder::alloc(size_t nSize, bool zero)
{ … }
void* jpeg_decoder::alloc_aligned(size_t nSize, uint32_t align, bool zero)
{ … }
void jpeg_decoder::word_clear(void* p, uint16 c, uint n)
{ … }
void jpeg_decoder::prep_in_buffer()
{ … }
void jpeg_decoder::read_dht_marker()
{ … }
void jpeg_decoder::read_dqt_marker()
{ … }
void jpeg_decoder::read_sof_marker()
{ … }
void jpeg_decoder::skip_variable_marker()
{ … }
void jpeg_decoder::read_dri_marker()
{ … }
void jpeg_decoder::read_sos_marker()
{ … }
int jpeg_decoder::next_marker()
{ … }
int jpeg_decoder::process_markers()
{ … }
void jpeg_decoder::locate_soi_marker()
{ … }
void jpeg_decoder::locate_sof_marker()
{ … }
int jpeg_decoder::locate_sos_marker()
{ … }
void jpeg_decoder::init(jpeg_decoder_stream* pStream, uint32_t flags)
{ … }
#define SCALEBITS …
#define ONE_HALF …
#define FIX(x) …
void jpeg_decoder::create_look_ups()
{ … }
void jpeg_decoder::fix_in_buffer()
{ … }
void jpeg_decoder::transform_mcu(int mcu_row)
{ … }
void jpeg_decoder::load_next_row()
{ … }
void jpeg_decoder::process_restart()
{ … }
static inline int dequantize_ac(int c, int q) { … }
void jpeg_decoder::decode_next_row()
{ … }
void jpeg_decoder::H1V1Convert()
{ … }
void jpeg_decoder::H2V1Convert()
{ … }
void jpeg_decoder::H2V1ConvertFiltered()
{ … }
void jpeg_decoder::H1V2Convert()
{ … }
void jpeg_decoder::H1V2ConvertFiltered()
{ … }
void jpeg_decoder::H2V2Convert()
{ … }
uint32_t jpeg_decoder::H2V2ConvertFiltered()
{ … }
void jpeg_decoder::gray_convert()
{ … }
void jpeg_decoder::find_eoi()
{ … }
int jpeg_decoder::decode_next_mcu_row()
{ … }
int jpeg_decoder::decode(const void** pScan_line, uint* pScan_line_len)
{ … }
void jpeg_decoder::make_huff_table(int index, huff_tables* pH)
{ … }
void jpeg_decoder::check_quant_tables()
{ … }
void jpeg_decoder::check_huff_tables()
{ … }
bool jpeg_decoder::calc_mcu_block_order()
{ … }
int jpeg_decoder::init_scan()
{ … }
void jpeg_decoder::init_frame()
{ … }
jpeg_decoder::coeff_buf* jpeg_decoder::coeff_buf_open(int block_num_x, int block_num_y, int block_len_x, int block_len_y)
{ … }
inline jpgd_block_coeff_t* jpeg_decoder::coeff_buf_getp(coeff_buf* cb, int block_x, int block_y)
{ … }
void jpeg_decoder::decode_block_dc_first(jpeg_decoder* pD, int component_id, int block_x, int block_y)
{ … }
void jpeg_decoder::decode_block_dc_refine(jpeg_decoder* pD, int component_id, int block_x, int block_y)
{ … }
void jpeg_decoder::decode_block_ac_first(jpeg_decoder* pD, int component_id, int block_x, int block_y)
{ … }
void jpeg_decoder::decode_block_ac_refine(jpeg_decoder* pD, int component_id, int block_x, int block_y)
{ … }
void jpeg_decoder::decode_scan(pDecode_block_func decode_block_func)
{ … }
void jpeg_decoder::init_progressive()
{ … }
void jpeg_decoder::init_sequential()
{ … }
void jpeg_decoder::decode_start()
{ … }
void jpeg_decoder::decode_init(jpeg_decoder_stream* pStream, uint32_t flags)
{ … }
jpeg_decoder::jpeg_decoder(jpeg_decoder_stream* pStream, uint32_t flags)
{ … }
int jpeg_decoder::begin_decoding()
{ … }
jpeg_decoder::~jpeg_decoder()
{ … }
jpeg_decoder_file_stream::jpeg_decoder_file_stream()
{ … }
void jpeg_decoder_file_stream::close()
{ … }
jpeg_decoder_file_stream::~jpeg_decoder_file_stream()
{ … }
bool jpeg_decoder_file_stream::open(const char* Pfilename)
{ … }
int jpeg_decoder_file_stream::read(uint8* pBuf, int max_bytes_to_read, bool* pEOF_flag)
{ … }
bool jpeg_decoder_mem_stream::open(const uint8* pSrc_data, uint size)
{ … }
int jpeg_decoder_mem_stream::read(uint8* pBuf, int max_bytes_to_read, bool* pEOF_flag)
{ … }
unsigned char* decompress_jpeg_image_from_stream(jpeg_decoder_stream* pStream, int* width, int* height, int* actual_comps, int req_comps, uint32_t flags)
{ … }
unsigned char* decompress_jpeg_image_from_memory(const unsigned char* pSrc_data, int src_data_size, int* width, int* height, int* actual_comps, int req_comps, uint32_t flags)
{ … }
unsigned char* decompress_jpeg_image_from_file(const char* pSrc_filename, int* width, int* height, int* actual_comps, int req_comps, uint32_t flags)
{ … }
}