亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? structure.doc

?? Trolltech公司發(fā)布的基于C++圖形開發(fā)環(huán)境
?? DOC
?? 第 1 頁 / 共 4 頁
字號:
IJG JPEG LIBRARY:  SYSTEM ARCHITECTURECopyright (C) 1991-1995, Thomas G. Lane.This file is part of the Independent JPEG Group's software.For conditions of distribution and use, see the accompanying README file.This file provides an overview of the architecture of the IJG JPEG software;that is, the functions of the various modules in the system and the interfacesbetween modules.  For more precise details about any data structure or callingconvention, see the include files and comments in the source code.We assume that the reader is already somewhat familiar with the JPEG standard.The README file includes references for learning about JPEG.  The filelibjpeg.doc describes the library from the viewpoint of an applicationprogrammer using the library; it's best to read that file before this one.Also, the file coderules.doc describes the coding style conventions we use.In this document, JPEG-specific terminology follows the JPEG standard:  A "component" means a color channel, e.g., Red or Luminance.  A "sample" is a single component value (i.e., one number in the image data).  A "coefficient" is a frequency coefficient (a DCT transform output number).  A "block" is an 8x8 group of samples or coefficients.  An "MCU" (minimum coded unit) is an interleaved set of blocks of size	determined by the sampling factors, or a single block in a	noninterleaved scan.We do not use the terms "pixel" and "sample" interchangeably.  When we saypixel, we mean an element of the full-size image, while a sample is an elementof the downsampled image.  Thus the number of samples may vary acrosscomponents while the number of pixels does not.  (This terminology is not usedrigorously throughout the code, but it is used in places where confusion wouldotherwise result.)*** System features ***The IJG distribution contains two parts:  * A subroutine library for JPEG compression and decompression.  * cjpeg/djpeg, two sample applications that use the library to transform    JFIF JPEG files to and from several other image formats.cjpeg/djpeg are of no great intellectual complexity: they merely add a simplecommand-line user interface and I/O routines for several uncompressed imageformats.  This document concentrates on the library itself.We desire the library to be capable of supporting all JPEG baseline, extendedsequential, and progressive DCT processes.  Hierarchical processes are notsupported.The library does not support the lossless (spatial) JPEG process.  LosslessJPEG shares little or no code with lossy JPEG, and would normally be usedwithout the extensive pre- and post-processing provided by this library.We feel that lossless JPEG is better handled by a separate library.Within these limits, any set of compression parameters allowed by the JPEGspec should be readable for decompression.  (We can be more restrictive aboutwhat formats we can generate.)  Although the system design allows for allparameter values, some uncommon settings are not yet implemented and maynever be; nonintegral sampling ratios are the prime example.  Furthermore,we treat 8-bit vs. 12-bit data precision as a compile-time switch, not arun-time option, because most machines can store 8-bit pixels much morecompactly than 12-bit.For legal reasons, JPEG arithmetic coding is not currently supported, butextending the library to include it would be straightforward.By itself, the library handles only interchange JPEG datastreams --- inparticular the widely used JFIF file format.  The library can be used bysurrounding code to process interchange or abbreviated JPEG datastreams thatare embedded in more complex file formats.  (For example, libtiff uses thislibrary to implement JPEG compression within the TIFF file format.)The library includes a substantial amount of code that is not covered by theJPEG standard but is necessary for typical applications of JPEG.  Thesefunctions preprocess the image before JPEG compression or postprocess it afterdecompression.  They include colorspace conversion, downsampling/upsampling,and color quantization.  This code can be omitted if not needed.A wide range of quality vs. speed tradeoffs are possible in JPEG processing,and even more so in decompression postprocessing.  The decompression libraryprovides multiple implementations that cover most of the useful tradeoffs,ranging from very-high-quality down to fast-preview operation.  On thecompression side we have generally not provided low-quality choices, sincecompression is normally less time-critical.  It should be understood that thelow-quality modes may not meet the JPEG standard's accuracy requirements;nonetheless, they are useful for viewers.*** Portability issues ***Portability is an essential requirement for the library.  The key portabilityissues that show up at the level of system architecture are:1.  Memory usage.  We want the code to be able to run on PC-class machineswith limited memory.  Images should therefore be processed sequentially (instrips), to avoid holding the whole image in memory at once.  Where afull-image buffer is necessary, we should be able to use either virtual memoryor temporary files.2.  Near/far pointer distinction.  To run efficiently on 80x86 machines, thecode should distinguish "small" objects (kept in near data space) from"large" ones (kept in far data space).  This is an annoying restriction, butfortunately it does not impact code quality for less brain-damaged machines,and the source code clutter turns out to be minimal with sufficient use ofpointer typedefs.3. Data precision.  We assume that "char" is at least 8 bits, "short" and"int" at least 16, "long" at least 32.  The code will work fine with largerdata sizes, although memory may be used inefficiently in some cases.  However,the JPEG compressed datastream must ultimately appear on external storage as asequence of 8-bit bytes if it is to conform to the standard.  This may pose aproblem on machines where char is wider than 8 bits.  The library representscompressed data as an array of values of typedef JOCTET.  If no data typeexactly 8 bits wide is available, custom data source and data destinationmodules must be written to unpack and pack the chosen JOCTET datatype into8-bit external representation.*** System overview ***The compressor and decompressor are each divided into two main sections:the JPEG compressor or decompressor proper, and the preprocessing orpostprocessing functions.  The interface between these two sections is theimage data that the official JPEG spec regards as its input or output: thisdata is in the colorspace to be used for compression, and it is downsampledto the sampling factors to be used.  The preprocessing and postprocessingsteps are responsible for converting a normal image representation to or fromthis form.  (Those few applications that want to deal with YCbCr downsampleddata can skip the preprocessing or postprocessing step.)Looking more closely, the compressor library contains the following mainelements:  Preprocessing:    * Color space conversion (e.g., RGB to YCbCr).    * Edge expansion and downsampling.  Optionally, this step can do simple      smoothing --- this is often helpful for low-quality source data.  JPEG proper:    * MCU assembly, DCT, quantization.    * Entropy coding (sequential or progressive, Huffman or arithmetic).In addition to these modules we need overall control, marker generation,and support code (memory management & error handling).  There is also amodule responsible for physically writing the output data --- typicallythis is just an interface to fwrite(), but some applications may need todo something else with the data.The decompressor library contains the following main elements:  JPEG proper:    * Entropy decoding (sequential or progressive, Huffman or arithmetic).    * Dequantization, inverse DCT, MCU disassembly.  Postprocessing:    * Upsampling.  Optionally, this step may be able to do more general      rescaling of the image.    * Color space conversion (e.g., YCbCr to RGB).  This step may also      provide gamma adjustment [ currently it does not ].    * Optional color quantization (e.g., reduction to 256 colors).    * Optional color precision reduction (e.g., 24-bit to 15-bit color).      [This feature is not currently implemented.]We also need overall control, marker parsing, and a data source module.The support code (memory management & error handling) can be shared withthe compression half of the library.There may be several implementations of each of these elements, particularlyin the decompressor, where a wide range of speed/quality tradeoffs is veryuseful.  It must be understood that some of the best speedups involvemerging adjacent steps in the pipeline.  For example, upsampling, color spaceconversion, and color quantization might all be done at once when using alow-quality ordered-dither technique.  The system architecture is designed toallow such merging where appropriate.Note: it is convenient to regard edge expansion (padding to block boundaries)as a preprocessing/postprocessing function, even though the JPEG spec includesit in compression/decompression.  We do this because downsampling/upsamplingcan be simplified a little if they work on padded data: it's not necessary tohave special cases at the right and bottom edges.  Therefore the interfacebuffer is always an integral number of blocks wide and high, and we expectcompression preprocessing to pad the source data properly.  Padding will occuronly to the next block (8-sample) boundary.  In an interleaved-scan situation,additional dummy blocks may be used to fill out MCUs, but the MCU assembly anddisassembly logic will create or discard these blocks internally.  (This isadvantageous for speed reasons, since we avoid DCTing the dummy blocks.It also permits a small reduction in file size, because the compressor canchoose dummy block contents so as to minimize their size in compressed form.Finally, it makes the interface buffer specification independent of whetherthe file is actually interleaved or not.)  Applications that wish to dealdirectly with the downsampled data must provide similar buffering and paddingfor odd-sized images.*** Poor man's object-oriented programming ***It should be clear by now that we have a lot of quasi-independent processingsteps, many of which have several possible behaviors.  To avoid cluttering thecode with lots of switch statements, we use a simple form of object-styleprogramming to separate out the different possibilities.For example, two different color quantization algorithms could be implementedas two separate modules that present the same external interface; at runtime,the calling code will access the proper module indirectly through an "object".We can get the limited features we need while staying within portable C.The basic tool is a function pointer.  An "object" is just a structcontaining one or more function pointer fields, each of which corresponds toa method name in real object-oriented languages.  During initialization wefill in the function pointers with references to whichever module we havedetermined we need to use in this run.  Then invocation of the module is doneby indirecting through a function pointer; on most machines this is no moreexpensive than a switch statement, which would be the only other way ofmaking the required run-time choice.  The really significant benefit, ofcourse, is keeping the source code clean and well structured.We can also arrange to have private storage that varies between differentimplementations of the same kind of object.  We do this by making all themodule-specific object structs be separately allocated entities, which willbe accessed via pointers in the master compression or decompression struct.The "public" fields or methods for a given kind of object are specified bya commonly known struct.  But a module's initialization code can allocatea larger struct that contains the common struct as its first member, plusadditional private fields.  With appropriate pointer casting, the module'sinternal functions can access these private fields.  (For a simple example,see jdatadst.c, which implements the external interface specified by structjpeg_destination_mgr, but adds extra fields.)(Of course this would all be a lot easier if we were using C++, but we arenot yet prepared to assume that everyone has a C++ compiler.)An important benefit of this scheme is that it is easy to provide multipleversions of any method, each tuned to a particular case.  While a lot ofprecalculation might be done to select an optimal implementation of a method,the cost per invocation is constant.  For example, the upsampling step mighthave a "generic" method, plus one or more "hardwired" methods for the mostpopular sampling factors; the hardwired methods would be faster because they'duse straight-line code instead of for-loops.  The cost to determine whichmethod to use is paid only once, at startup, and the selection criteria arehidden from the callers of the method.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久美女高清视频| 国产综合久久久久久鬼色| 亚洲成人av福利| 一区二区成人在线| 蜜桃久久久久久| 99re热这里只有精品视频| 欧美日韩一区二区三区四区五区| 精品国产乱码久久久久久1区2区 | 26uuu久久天堂性欧美| 中文字幕在线视频一区| 奇米影视一区二区三区| 在线日韩av片| 亚洲欧洲日韩一区二区三区| 久久精品72免费观看| 欧美视频在线不卡| 国产精品大尺度| 国产白丝精品91爽爽久久 | 99精品一区二区| 欧美videossexotv100| 亚洲sss视频在线视频| 一本大道久久a久久精二百| 国产一区二区三区久久久| 精品久久国产老人久久综合| 一本到高清视频免费精品| 国产亚洲制服色| 免费看黄色91| 欧美日产在线观看| 亚洲精品日韩综合观看成人91| 国产精品一区二区久激情瑜伽| 欧美人xxxx| 亚洲国产aⅴ天堂久久| 欧美视频精品在线| 亚洲人成在线播放网站岛国| 成人av资源网站| 国产精品久久久久久久久果冻传媒| 国产一区二区三区av电影 | 91精品国产综合久久久蜜臀粉嫩| 亚洲一区日韩精品中文字幕| 91久久久免费一区二区| 日本aⅴ免费视频一区二区三区| 成人免费电影视频| 亚洲蜜臀av乱码久久精品蜜桃| 色屁屁一区二区| 中文字幕一区二区三区蜜月| 成人综合婷婷国产精品久久蜜臀| 国产欧美精品一区二区色综合朱莉| 国产精品自产自拍| 国产精品久久久久久户外露出 | 国产视频一区二区三区在线观看| 九九国产精品视频| 久久品道一品道久久精品| 丁香网亚洲国际| 亚洲六月丁香色婷婷综合久久| 色视频欧美一区二区三区| 亚瑟在线精品视频| 日韩女优制服丝袜电影| 处破女av一区二区| 亚洲永久精品大片| 欧美一区二区福利视频| 国内偷窥港台综合视频在线播放| 国产精品美女视频| 欧美亚洲国产一区在线观看网站| 午夜伊人狠狠久久| 欧美成人一区二区三区片免费 | 肉丝袜脚交视频一区二区| 91丨九色丨黑人外教| 精品久久久久一区| 国产999精品久久久久久| www日韩大片| 色综合久久六月婷婷中文字幕| 香蕉加勒比综合久久| 欧美xxxxx裸体时装秀| 91香蕉国产在线观看软件| 午夜精品免费在线| 久久精品亚洲乱码伦伦中文 | 日韩一区二区在线免费观看| 国产在线视频精品一区| 亚洲精品综合在线| 欧美精品一区二区三| 色悠久久久久综合欧美99| 亚洲精品免费在线| 在线视频观看一区| 欧美人动与zoxxxx乱| 欧美人牲a欧美精品| 久久99国产乱子伦精品免费| 亚洲欧洲成人精品av97| 日韩精品在线网站| 色婷婷久久久亚洲一区二区三区| 日本一区中文字幕| 亚洲视频1区2区| 久久精品免费在线观看| 欧美一区二区三区小说| 日本高清无吗v一区| 国产不卡视频在线播放| 亚洲成av人片观看| 亚洲人成网站在线| 精品99999| 日韩午夜电影在线观看| 欧美性色综合网| www.欧美.com| 国产一区二区电影| 久久er精品视频| 亚洲午夜羞羞片| 蜜桃视频一区二区三区在线观看| 欧美日韩国产综合一区二区三区| 日精品一区二区三区| 亚洲色图19p| 亚洲丝袜自拍清纯另类| 欧美不卡123| 26uuu国产日韩综合| 日韩精品一区二区三区蜜臀| 欧美性色综合网| 欧美一区二区久久久| 欧美一级片在线| 日本欧美一区二区三区乱码| fc2成人免费人成在线观看播放 | 国产精品视频一二三区| 日韩不卡一二三区| 色综合网色综合| 99视频一区二区三区| 不卡的av在线| 91丨porny丨国产| 91网站在线播放| 91丝袜美女网| 欧洲av在线精品| 欧美久久一二区| 欧美一区二区三区系列电影| 7777女厕盗摄久久久| 日韩一级视频免费观看在线| 亚洲欧美综合另类在线卡通| 国产视频一区在线观看| 国产精品毛片久久久久久| 亚洲视频在线一区观看| 亚洲午夜久久久| 免费在线观看一区二区三区| 久久99精品视频| 国产夫妻精品视频| 99麻豆久久久国产精品免费| 欧美制服丝袜第一页| 欧美情侣在线播放| 久久综合精品国产一区二区三区| 欧美日韩综合在线| 亚洲一区二区三区视频在线播放 | 亚洲国产成人av网| 中文字幕精品三区| 久久综合99re88久久爱| 国产精品久久久久久久久免费樱桃 | 国产乱码精品一区二区三| 成人av高清在线| 欧美三级视频在线| 欧美成人欧美edvon| 午夜久久久久久久久久一区二区| 日韩国产欧美在线观看| 国产成人鲁色资源国产91色综 | 亚洲丝袜另类动漫二区| 三级影片在线观看欧美日韩一区二区| 麻豆国产91在线播放| 成人高清免费观看| 欧美丰满美乳xxx高潮www| 久久久久久久久久久久电影| 亚洲另类在线制服丝袜| 蜜桃精品视频在线| 91啪亚洲精品| 久久免费美女视频| 亚洲电影你懂得| 成人av在线一区二区三区| 欧美二区三区的天堂| 亚洲欧美怡红院| 久久国内精品视频| 欧美在线三级电影| 国产精品色噜噜| 免费看欧美女人艹b| 欧美熟乱第一页| 日韩一区在线免费观看| 狠狠色狠狠色综合日日91app| 欧美日韩久久久一区| 中文字幕一区二区三区不卡在线| 日本v片在线高清不卡在线观看| 色综合久久综合网欧美综合网 | 在线精品国精品国产尤物884a| 2014亚洲片线观看视频免费| 欧美日韩高清影院| 欧美曰成人黄网| 欧美电影免费观看高清完整版在线观看 | 色综合视频在线观看| 久久久91精品国产一区二区三区| 婷婷久久综合九色国产成人 | 亚洲欧美视频在线观看视频| 国产精品888| 精品国产亚洲在线| 久久精品国产精品亚洲综合| 欧美日韩一区二区三区不卡| 亚洲免费在线播放| 成人av免费在线播放| 国产精品美女一区二区| 成人激情免费视频| 国产精品久久久久9999吃药| 粉嫩欧美一区二区三区高清影视| 欧美大尺度电影在线| 麻豆精品一二三|