xxxx18一60岁hd中国/日韩女同互慰一区二区/西西人体扒开双腿无遮挡/日韩欧美黄色一级片 - 色护士精品影院www

  • 大小: 770KB
    文件類型: .zip
    金幣: 2
    下載: 0 次
    發(fā)布日期: 2021-06-13
  • 語言: 其他
  • 標(biāo)簽:

資源簡(jiǎn)介

學(xué)習(xí)流媒體技術(shù)需要熟悉各種文件格式,了解一些編解碼的算法,此程序演示了jpg圖片的編碼算法,算法流程相對(duì)簡(jiǎn)單,希望能對(duì)初學(xué)者一些啟示和幫助。對(duì)各種圖片和音視頻文件格式感興趣的朋友,請(qǐng)進(jìn)群:417099529,一起探討學(xué)習(xí)研究,進(jìn)群時(shí)請(qǐng)介紹自己對(duì)流媒體哪些方面比較熟悉和擅長(zhǎng)。

資源截圖

代碼片段和文件信息

#include?“StdAfx.h“
#include?“JEnc.h“


JEnc::JEnc(void)
{
}


JEnc::~JEnc(void)
{
}

//?bmFile:輸入文件
//?jpgFile:輸出文件
//?Q:質(zhì)量
void?JEnc::Invoke(string?bmFile?string?jpgFile?long?Q)
{
FILE*?pFile;????????????//?輸入文件句柄
if?((pFile?=?fopen(bmFile.c_str()“rb“))?==?NULL)???//?打開文件
????{?
???????throw(“open?bmp?file?error.“);???
}

//?獲取jpeg編碼需要的bmp數(shù)據(jù)結(jié)構(gòu),jpeg要求數(shù)據(jù)緩沖區(qū)的高和寬為8或16的倍數(shù)(視采樣方式而定)
BMBUFINFO?bmBuffInfo?=?GetBMBuffSize(pFile);????
imgWidth?=?bmBuffInfo.imgWidth;?????//?圖像寬
imgHeight?=?bmBuffInfo.imgHeight;????//?圖像高
buffWidth?=?bmBuffInfo.buffWidth;????//?緩沖寬
buffHeight?=?bmBuffInfo.buffHeight;????//?緩沖高
size_t?buffSize?=?buffHeight?*?buffWidth?*?3;?//?緩沖長(zhǎng)度,因?yàn)槭?4bits所以*3
BYTE*?bmData?=?new?BYTE[buffSize];????//?申請(qǐng)內(nèi)存空間
GetBMData(pFile?bmData?bmBuffInfo);???//?獲取數(shù)據(jù)
fclose(pFile);?????????//?關(guān)閉文件

//=====================================
//?計(jì)算編碼需要的緩沖區(qū),RGB信號(hào)需要?jiǎng)e分別編碼,所以需要3個(gè)緩沖區(qū),這里只是1:1:1所以是一樣大
size_t?yuvBuffSize?=?buffWidth?*?buffHeight;?
BYTE*?pYBuff?=?new?BYTE[yuvBuffSize];
BYTE*?pUBuff?=?new?BYTE[yuvBuffSize];
BYTE*?pVBuff?=?new?BYTE[yuvBuffSize];
//?將RGB信號(hào)轉(zhuǎn)換為YUV信號(hào)
BGR2YUV111(bmDatapYBuffpUBuffpVBuff);
//?將信號(hào)分割為8x8的塊
DivBuff(pYBuff?buffWidth?buffHeight?DCTSIZE?DCTSIZE?);??
DivBuff(pUBuff?buffWidth?buffHeight?DCTSIZE?DCTSIZE?);??
DivBuff(pVBuff?buffWidth?buffHeight?DCTSIZE?DCTSIZE?);??

SetQuantTable(std_Y_QTYQT?Q);?????????//?設(shè)置Y量化表
SetQuantTable(std_UV_QTUVQT?Q);????????//?設(shè)置UV量化表??
InitQTForAANDCT();????????????//?初始化AA&N需要的量化表
pVLITAB=VLI_TAB?+?2047;?????????????????????????????//?設(shè)置VLI_TAB的別名
BuildVLITable();????????????//?計(jì)算VLI表??

pOutFile?=?fopen(jpgFile.c_str()“wb“);

//?寫入各段
WriteSOI();??????????????
WriteAPP0();
WriteDQT();
WriteSOF();
WriteDHT();
WriteSOS();

//?計(jì)算Y/UV信號(hào)的交直分量的huffman表,這里使用標(biāo)準(zhǔn)的huffman表,并不是計(jì)算得出,缺點(diǎn)是文件略長(zhǎng),但是速度快
BuildSTDHuffTab(STD_DC_Y_NRCODESSTD_DC_Y_VALUESSTD_DC_Y_HT);
BuildSTDHuffTab(STD_AC_Y_NRCODESSTD_AC_Y_VALUESSTD_AC_Y_HT);
BuildSTDHuffTab(STD_DC_UV_NRCODESSTD_DC_UV_VALUESSTD_DC_UV_HT);
BuildSTDHuffTab(STD_AC_UV_NRCODESSTD_AC_UV_VALUESSTD_AC_UV_HT);

//?處理單元數(shù)據(jù)
ProcessData(pYBuffpUBuffpVBuff);??
WriteEOI();

fclose(pOutFile);
delete[]?bmData;
}
//?獲取BMP文件輸出緩沖區(qū)信息
BMBUFINFO?JEnc::GetBMBuffSize(FILE*?pFile)
{
BITMAPFILEHEADER?bmHead;???????//文件頭信息塊?
BITMAPINFOHEADER?bmInfo;???????//圖像描述信息塊
BMBUFINFO???bmBuffInfo;
UINT?colSize?=?0;
UINT?rowSize?=?0;

fseek(pFile0SEEK_SET);???????//將讀寫指針指向文件頭部
fread(&bmHeadsizeof(bmHead)1pFile);????//讀取文件頭信息塊
fread(&bmInfosizeof(bmInfo)1pFile);????//讀取位圖信息塊

//?計(jì)算填充后列數(shù),jpeg編碼要求緩沖區(qū)的高和寬為8或16的倍數(shù)
if?(bmInfo.biWidth?%?8?==?0)
{
colSize?=?bmInfo.biWidth;
}
else
{
colSize?=?bmInfo.biWidth?+?8?-?(bmInfo.biWidth?%?8);
}

//?計(jì)算填充后行數(shù)
if?(bmInfo.biHeight?%?8?==?0)
{
rowSize?=?bmInfo.biHeight;
}
else
{
rowSize?=?bmInfo.biHeight?+?8?-?(bmInfo.biHeight?%?8);
}

bmBuffInfo.BitCount?=?24;

?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2016-06-08?11:46??jpgEncoder\
?????目錄???????????0??2016-06-08?11:39??jpgEncoder\Debug\
?????文件???????67072??2016-06-08?11:43??jpgEncoder\Debug\jpgEncoder.exe
?????文件??????511312??2016-06-08?11:43??jpgEncoder\Debug\jpgEncoder.ilk
?????文件??????969728??2016-06-08?11:43??jpgEncoder\Debug\jpgEncoder.pdb
?????目錄???????????0??2016-06-08?11:46??jpgEncoder\jpgEncoder\
?????文件?????????897??2016-06-08?10:35??jpgEncoder\jpgEncoder.sln
?????文件???????17408??2016-06-08?11:46??jpgEncoder\jpgEncoder.suo
?????文件???????25498??2016-06-08?11:00??jpgEncoder\jpgEncoder\JEnc.cpp
?????文件????????1561??2016-06-08?11:43??jpgEncoder\jpgEncoder\JEnc.h
?????文件????????5758??2016-06-08?11:43??jpgEncoder\jpgEncoder\Jpeg.h
?????文件????????4617??2016-06-08?10:42??jpgEncoder\jpgEncoder\Jpegformat.h
?????文件?????????545??2016-06-08?11:45??jpgEncoder\jpgEncoder\jpgEncoder.cpp
?????文件????????4523??2016-06-08?11:08??jpgEncoder\jpgEncoder\jpgEncoder.vcxproj
?????文件????????1698??2016-06-08?10:42??jpgEncoder\jpgEncoder\jpgEncoder.vcxproj.filters
?????文件?????????143??2016-06-08?10:35??jpgEncoder\jpgEncoder\jpgEncoder.vcxproj.user
?????文件????????1736??2016-06-08?10:35??jpgEncoder\jpgEncoder\ReadMe.txt
?????文件?????????297??2016-06-08?10:35??jpgEncoder\jpgEncoder\stdafx.cpp
?????文件?????????320??2016-06-08?10:35??jpgEncoder\jpgEncoder\stdafx.h
?????文件?????????314??2016-06-08?10:35??jpgEncoder\jpgEncoder\targetver.h
?????文件??????597194??2016-06-08?09:52??jpgEncoder\jpgEncoder\test-hua.bmp

評(píng)論

共有 條評(píng)論

相關(guān)資源