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

  • 大小: 12.8 KB
    文件類型: .rar
    金幣: 1
    下載: 0 次
    發布日期: 2024-10-06
  • 語言: 其他
  • 標簽: QT??JPEG??解碼??

資源簡介

#ifndef JPEGDECODE_H
#define JPEGDECODE_H

#include "global.h"
#include "globalextern.h"

typedef unsigned char BYTE;

struct ImageComponentData
{
double value[3];
};

class MBitReader
{
public:
BYTE* Data;
int m_currentData;
int m_currentDataIndex;
int m_currentBitPosition;

MBitReader(BYTE* data,int currentDataIndex)
{
Data=data;
m_currentBitPosition=8;
m_currentDataIndex=currentDataIndex;
m_currentData=Data[m_currentDataIndex];
}
public:
i

nt ReadNextBit()
{
if (m_currentBitPosition-1<0)
{
if (Data[m_currentDataIndex+1]!=0xFF)
{
m_currentBitPosition=8;
++m_currentDataIndex;
m_currentData=Data[m_currentDataIndex];
} else {
switch (Data[m_currentDataIndex+2])
{
case 0x00:
m_currentBitPosition=8;
m_currentDataIndex+=2;
m_currentData=0xFF;
break;
case 0xD9:
return 0;
break;
default:
m_currentBitPosition=8;
m_currentDataIndex+=2;
m_currentData=Data[m_currentDataIndex];
break;
}
}
}

--m_currentBitPosition;
return (m_currentData >> m_currentBitPosition) & 0x01;
}
};

class MJpegDecode
{
public:
struct _JFIFAPPOInfo
{
BYTE APP0[2]; /* 02h Application Use Marker */
BYTE Length[2]; /* 04h Length of APP0 Field */
BYTE Identifier[5]; /* 06h "JFIF" (zero terminated) Id String */
BYTE Version[2]; /* 0Bh JFIF Format Revision */
BYTE Units; /* 0Dh Units used for Resolution */
BYTE Xdensity[2]; /* 0Eh Horizontal Resolution */
BYTE Ydensity[2]; /* 10h Vertical Resolution */
BYTE XThumbnail; /* 12h Thumbnail Horizontal Pixel Count */
BYTE YThumbnail; /* 13h Thumbnail Vertical Pixel Count */
} JFIFAPPOINFO;
struct _JFIFDQTInfo
{
BYTE DQT[2]; // 14h 量化表段標記
BYTE Length[2]; // 16h 量化表段長度
BYTE Identifier; // 18h 量化表ID
BYTE QTData[64]; // 19h 量化表數據
} JFIFDQTINFO[2];
struct _JFIFSOFOInfo
{
BYTE SOFO[2]; // 9Eh 幀開始段標記
BYTE Length[2]; // A0h 幀開始段長度
BYTE BitCount; // A2h 樣本精度bit位數
BYTE Height[2]; // A5h 圖像像素寬度
BYTE Width[2]; // A3h 圖像像素高度
BYTE ComponentsCount; // A7h 圖像組件計數
BYTE YIdentifier; // A8h 亮度Y的ID號
BYTE YHVSamplingCoefficient; // A9h 亮度Y垂直和水平采樣系數
BYTE YUsedDQTIdentifier; // AAh 亮度Y使用的量化表ID號
BYTE CbIdentifier; // ABh 色度Cb的ID號
BYTE CbHVSamplingCoefficient; // ACh 色度Cb垂直和水平采樣系數
BYTE CbUsedDQTIdentifier; // ADh 色度Cb使用的量化表ID號
BYTE CrIdentifier; // AEh 色度Cr的ID號
BYTE CrHVSamplingCoefficient; // AFh 色度Cr垂直和水平采樣系數
BYTE CrUsedDQTIdentifier; // B0h 色度Cr使用的量化表ID號
} JFIFSOFOINFO;
struct _JFIFDRIInfo
{
BYTE DRI[2];
BYTE Length[2];
BYTE NMCUReset[2]; //每n個MCU塊就有一個 RSTn 標記.

} JFIFDRIINFO;
struct _JFIFDHTInfo
{
BYTE DHT[2]; // B1h 哈夫曼表定義段標記
BYTE Length[2]; // B3h 哈夫曼表段長度
BYTE HTIdentifier; // B5h 哈夫曼表號
BYTE NBitsSymbolsCount[16]; // B6h (符號的二進制位長度為n)的符號個數
BYTE SymbolsTable[256]; // C6h 按遞增次序代碼長度排列的符號表
} JFIFDHTINFO[2][2];
struct _JFIFSOSInfo
{
BYTE SOS[2]; // 261h 掃描開始段標記
BYTE Length[2]; // 263h 掃描開始段長度
BYTE ComponentsCount; // 265h 掃描行內組件的數量
BYTE YIdentifier; // 266h 亮度Y的ID號
BYTE YHTTableID; // 267h 亮度Y使用的哈夫曼表ID號
BYTE CbIdentifier; // 268h 色度Cb的ID號
BYTE CbHTTableID; // 269h 色度Cb使用的哈夫曼表ID號
BYTE CrIdentifier; // 26Ah 色度Cr的ID號
BYTE CrHTTableID; // 26Bh 色度Cr使用的哈夫曼表ID號
BYTE Reserved[3]; // 26Ch 3個未知保留字節
} JFIFSOSINFO;
private:
struct HuffmanTable
{
int CodeOfFirstNLengthSymbol[17]; //長度為N的第一個碼字的整數值
int NLengthToSymbolsTableIndex[16]; //查表得到第一個長度為N的符號位于符號表的索引
} HUFFMANTABLE[2][2];
public:
int ReadJFIFInfo(const BYTE* const jfifData,int jfifDataSize);
void DecodeData(int mcuStartIndex,BYTE* jfifData,int jfifDataSize,ImageComponentData*& targetBitmapData);
void SetHuffmanTable();
void DecodeOneDUDC(MBitReader* myBitReader,double* DU,double& lastDC,int index1,int index2);
void DecodeOneDUAC(MBitReader* myBitReader,double* DU,int index1,int index2);
void DecodeOneMCU(MBitReader* myBitReader,int mcuXn,int mcuYn,int mcuWidth,int mcuHeight,double *DU,ImageComponentData* targetImage);
void InverseQuantization(double* du,BYTE* quantizationTable);
void InverseZigzag(double* sourceDU,double* targetDU);
void IDCT(double* sourceDU,double* targetDU);
void YCbCrToRGB(ImageComponentData* sourceImage,ImageComponentData* targetImage);
public:
int imageHeight;
int imageWidth;
int alignedImageWidth;
int alignedImageHeight;
HuffmanTable* HT;
double DC[3];
int HSamplingCoefficient[3];
int VSamplingCoefficient[3];
int DQTID[3];
int nMCUReset;
};

#endif // JPEGDECODE_H

資源截圖

代碼片段和文件信息

#include?“global.h“
#include?“mainwindow.h“
#include?“mjpegdecode.h“

MainWindow*?theUI;
class?MJpegDecode*?myJpegDecode;

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件????????128??2013-07-18?01:18??JPEG_Decode\global.cpp

?????文件????????111??2013-07-18?01:12??JPEG_Decode\global.h

?????文件????????167??2013-07-18?01:18??JPEG_Decode\globalextern.h

?????文件????????484??2013-07-12?04:33??JPEG_Decode\JPEG_Decode.pro

?????文件??????17794??2013-08-24?00:15??JPEG_Decode\JPEG_Decode.pro.user

?????文件??????17794??2013-08-10?04:14??JPEG_Decode\JPEG_Decode.pro.user.18e37f8

?????文件????????264??2013-07-18?01:15??JPEG_Decode\main.cpp

?????文件???????2179??2013-08-23?04:33??JPEG_Decode\mainwindow.cpp

?????文件????????515??2013-07-12?22:30??JPEG_Decode\mainwindow.h

?????文件??????14353??2013-07-29?02:37??JPEG_Decode\mainwindow.ui

?????文件??????16967??2013-08-19?06:01??JPEG_Decode\mjpegdecode.cpp

?????文件???????6578??2013-08-19?06:01??JPEG_Decode\mjpegdecode.h

?????目錄??????????0??2013-08-24?00:15??JPEG_Decode

-----------?---------??----------?-----??----

????????????????77334????????????????????13


評論

共有 條評論