91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 17KB
    文件類型: .c
    金幣: 1
    下載: 0 次
    發布日期: 2021-06-01
  • 語言: C/C++
  • 標簽: jpg??c語言??源代碼??

資源簡介

這個非常有利于理解解碼jpg圖片的原理,作者是日本人,寫的很經典

資源截圖

代碼片段和文件信息

/*
?*?JPEG?decoding?engine?for?DCT-baseline
?*
?*??????copyrights?2003?by?nikq?|?nikq::club.
?*
?*?history::
?*?2003/04/28?|?added?OSASK-GUI?(?by?H.Kawai?)
?*?2003/05/12?|?optimized?DCT?(?20-bits?fixed?point?etc...)?->?line?407-464?(?by?I.Tak.?)
?*?2003/09/27?|?PICTURE0.BIN(DLL)梡偵夵憿?(?by?偔乕傒傫?)
?*?2003/09/28?|?奺庬僶僌僼傿僋僗仌懡彮偺嵟揔壔?(?by?H.Kawai?)
?*
?*/


typedef?unsigned?char?UCHAR;

struct?DLL_STRPICENV?{?int?work[16384];?};

typedef?struct
{
????int?elem;?//梫慺悢
????unsigned?short?code[256];
????unsigned?char??size[256];
????unsigned?char??value[256];
}HUFF;

typedef?struct
{
????//?SOF
????int?width;
????int?height;
????//?MCU
????int?mcu_width;
????int?mcu_height;

????int?max_hmax_v;
????int?compo_count;
????int?compo_id[3];
????int?compo_sample[3];
????int?compo_h[3];
????int?compo_v[3];
????int?compo_qt[3];

????//?SOS
????int?scan_count;
????int?scan_id[3];
????int?scan_ac[3];
????int?scan_dc[3];
????int?scan_h[3];??//?僒儞僾儕儞僌梫慺悢
????int?scan_v[3];??//?僒儞僾儕儞僌梫慺悢
????int?scan_qt[3];?//?検巕壔僥乕僽儖僀儞僨僋僗
????
????//?DRI
????int?interval;

????int?mcu_buf[32*32*4];?//僶僢僼傽
????int?*mcu_yuv[4];
????int?mcu_preDC[3];
????
????//?DQT
????int?dqt[3][64];
????int?n_dqt;
????
????//?DHT
????HUFF?huff[2][3];
????
????
????//?FILE?i/o
unsigned?char?*fp?*fp1;
????unsigned?long?bit_buff;
????int?bit_remain;
????int?width_buf;

int?base_img[64][64];?//?婎掙夋憸?(?[墶廃攇悢u兾][廲廃攇悢v兾][墶埵憡(M/8)][廲埵憡(N/8)]

????/*?for?dll?
????
????JPEG?*jpeg?=?(JPEG?*)malloc(sizeof(JPEG)?+?256);
????*/
????int?dummy[64];
????
}JPEG;

/*?for?16bit?*/
#ifndef?PIXEL16
#define?PIXEL16(r?g?b) ((r)?< /*?0?<=?r?<=?31?0?<=?g?<=?63?0?<=?b?<=?31?*/
#endif

int?info_JPEG(struct?DLL_STRPICENV?*env?int?*info?int?size?UCHAR?*fp);
int?decode0_JPEG(struct?DLL_STRPICENV?*env?int?size?UCHAR?*fp?int?b_type?UCHAR?*buf?int?skip);

void?jpeg_idct_init(int?base_img[64][64]);
int?jpeg_init(JPEG?*jpeg);
//?int?jpeg_header(JPEG?*jpge);
void?jpeg_decode(JPEG?*jpeg?unsigned?char?*rgbint?b_type);

/*?-----------------?start?main?section?-----------------?*/

int?info_JPEG(struct?DLL_STRPICENV?*envint?*info?int?size?UCHAR?*fp0)
{
JPEG?*jpeg?=?(JPEG?*)?(((int?*)?env)?+?128);
jpeg->fp?=?fp0;
jpeg->fp1?=?fp0?+?size;

// if?(512?+?sizeof?(JPEG)?>?64?*?1024)
// return?0;

if?(jpeg_init(jpeg))
return?0;
// jpeg_header(jpeg);

if?(jpeg->width?==?0)
return?0;

info[0]?=?0x0002;
info[1]?=?0x0000;
info[2]?=?jpeg->width;
info[3]?=?jpeg->height;

/*?OK?*/
return?1;
}

int?decode0_JPEG(struct?DLL_STRPICENV?*envint?size?UCHAR?*fp0?int?b_type?UCHAR?*buf?int?skip)
{
JPEG?*jpeg?=?(JPEG?*)?(((int?*)?env)?+?128);
jpeg->fp?=?fp0;
jpeg->fp1?=?fp0?+?size;

jpeg_idct_init(jpeg->base_img);
jpeg_init(jpeg);
// jpeg_header(jpeg);

// if?(jpeg->width?==?0)
// return?8;
/*?decode0偱偼info偟偰偐傜屇偽傟傞偺偱丄偙傟偼側偄?*/

jpeg->width_buf?=?skip?/?(b_type?

評論

共有 條評論