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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? structure.doc

?? JPEG source code converts the image into compressed format
?? DOC
?? 第 1 頁(yè) / 共 4 頁(yè)
字號(hào):

This plan differs a little bit from usual object-oriented structures, in that
only one instance of each object class will exist during execution.  The
reason for having the class structure is that on different runs we may create
different instances (choose to execute different modules).  You can think of
the term "method" as denoting the common interface presented by a particular
set of interchangeable functions, and "object" as denoting a group of related
methods, or the total shared interface behavior of a group of modules.


*** Overall control structure ***

We previously mentioned the need for overall control logic in the compression
and decompression libraries.  In IJG implementations prior to v5, overall
control was mostly provided by "pipeline control" modules, which proved to be
large, unwieldy, and hard to understand.  To improve the situation, the
control logic has been subdivided into multiple modules.  The control modules
consist of:

1. Master control for module selection and initialization.  This has two
responsibilities:

   1A.  Startup initialization at the beginning of image processing.
        The individual processing modules to be used in this run are selected
        and given initialization calls.

   1B.  Per-pass control.  This determines how many passes will be performed
        and calls each active processing module to configure itself
        appropriately at the beginning of each pass.  End-of-pass processing,
	where necessary, is also invoked from the master control module.

   Method selection is partially distributed, in that a particular processing
   module may contain several possible implementations of a particular method,
   which it will select among when given its initialization call.  The master
   control code need only be concerned with decisions that affect more than
   one module.
 
2. Data buffering control.  A separate control module exists for each
   inter-processing-step data buffer.  This module is responsible for
   invoking the processing steps that write or read that data buffer.

Each buffer controller sees the world as follows:

input data => processing step A => buffer => processing step B => output data
                      |              |               |
              ------------------ controller ------------------

The controller knows the dataflow requirements of steps A and B: how much data
they want to accept in one chunk and how much they output in one chunk.  Its
function is to manage its buffer and call A and B at the proper times.

A data buffer control module may itself be viewed as a processing step by a
higher-level control module; thus the control modules form a binary tree with
elementary processing steps at the leaves of the tree.

The control modules are objects.  A considerable amount of flexibility can
be had by replacing implementations of a control module.  For example:
* Merging of adjacent steps in the pipeline is done by replacing a control
  module and its pair of processing-step modules with a single processing-
  step module.  (Hence the possible merges are determined by the tree of
  control modules.)
* In some processing modes, a given interstep buffer need only be a "strip"
  buffer large enough to accommodate the desired data chunk sizes.  In other
  modes, a full-image buffer is needed and several passes are required.
  The control module determines which kind of buffer is used and manipulates
  virtual array buffers as needed.  One or both processing steps may be
  unaware of the multi-pass behavior.

In theory, we might be able to make all of the data buffer controllers
interchangeable and provide just one set of implementations for all.  In
practice, each one contains considerable special-case processing for its
particular job.  The buffer controller concept should be regarded as an
overall system structuring principle, not as a complete description of the
task performed by any one controller.


*** Compression object structure ***

Here is a sketch of the logical structure of the JPEG compression library:

                                                 |-- Colorspace conversion
                  |-- Preprocessing controller --|
                  |                              |-- Downsampling
Main controller --|
                  |                            |-- Forward DCT, quantize
                  |-- Coefficient controller --|
                                               |-- Entropy encoding

This sketch also describes the flow of control (subroutine calls) during
typical image data processing.  Each of the components shown in the diagram is
an "object" which may have several different implementations available.  One
or more source code files contain the actual implementation(s) of each object.

The objects shown above are:

* Main controller: buffer controller for the subsampled-data buffer, which
  holds the preprocessed input data.  This controller invokes preprocessing to
  fill the subsampled-data buffer, and JPEG compression to empty it.  There is
  usually no need for a full-image buffer here; a strip buffer is adequate.

* Preprocessing controller: buffer controller for the downsampling input data
  buffer, which lies between colorspace conversion and downsampling.  Note
  that a unified conversion/downsampling module would probably replace this
  controller entirely.

* Colorspace conversion: converts application image data into the desired
  JPEG color space; also changes the data from pixel-interleaved layout to
  separate component planes.  Processes one pixel row at a time.

* Downsampling: performs reduction of chroma components as required.
  Optionally may perform pixel-level smoothing as well.  Processes a "row
  group" at a time, where a row group is defined as Vmax pixel rows of each
  component before downsampling, and Vk sample rows afterwards (remember Vk
  differs across components).  Some downsampling or smoothing algorithms may
  require context rows above and below the current row group; the
  preprocessing controller is responsible for supplying these rows via proper
  buffering.  The downsampler is responsible for edge expansion at the right
  edge (i.e., extending each sample row to a multiple of 8 samples); but the
  preprocessing controller is responsible for vertical edge expansion (i.e.,
  duplicating the bottom sample row as needed to make a multiple of 8 rows).

* Coefficient controller: buffer controller for the DCT-coefficient data.
  This controller handles MCU assembly, including insertion of dummy DCT
  blocks when needed at the right or bottom edge.  When performing
  Huffman-code optimization or emitting a multiscan JPEG file, this
  controller is responsible for buffering the full image.  The equivalent of
  one fully interleaved MCU row of subsampled data is processed per call,
  even when the JPEG file is noninterleaved.

* Forward DCT and quantization: Perform DCT, quantize, and emit coefficients.
  Works on one or more DCT blocks at a time.  (Note: the coefficients are now
  emitted in normal array order, which the entropy encoder is expected to
  convert to zigzag order as necessary.  Prior versions of the IJG code did
  the conversion to zigzag order within the quantization step.)

* Entropy encoding: Perform Huffman or arithmetic entropy coding and emit the
  coded data to the data destination module.  Works on one MCU per call.
  For progressive JPEG, the same DCT blocks are fed to the entropy coder
  during each pass, and the coder must emit the appropriate subset of
  coefficients.

In addition to the above objects, the compression library includes these
objects:

* Master control: determines the number of passes required, controls overall
  and per-pass initialization of the other modules.

* Marker writing: generates JPEG markers (except for RSTn, which is emitted
  by the entropy encoder when needed).

* Data destination manager: writes the output JPEG datastream to its final
  destination (e.g., a file).  The destination manager supplied with the
  library knows how to write to a stdio stream; for other behaviors, the
  surrounding application may provide its own destination manager.

* Memory manager: allocates and releases memory, controls virtual arrays
  (with backing store management, where required).

* Error handler: performs formatting and output of error and trace messages;
  determines handling of nonfatal errors.  The surrounding application may
  override some or all of this object's methods to change error handling.

* Progress monitor: supports output of "percent-done" progress reports.
  This object represents an optional callback to the surrounding application:
  if wanted, it must be supplied by the application.

The error handler, destination manager, and progress monitor objects are
defined as separate objects in order to simplify application-specific
customization of the JPEG library.  A surrounding application may override
individual methods or supply its own all-new implementation of one of these
objects.  The object interfaces for these objects are therefore treated as
part of the application interface of the library, whereas the other objects
are internal to the library.

The error handler and memory manager are shared by JPEG compression and
decompression; the progress monitor, if used, may be shared as well.


*** Decompression object structure ***

Here is a sketch of the logical structure of the JPEG decompression library:

                                               |-- Entropy decoding
                  |-- Coefficient controller --|
                  |                            |-- Dequantize, Inverse DCT
Main controller --|
                  |                               |-- Upsampling
                  |-- Postprocessing controller --|   |-- Colorspace conversion
                                                  |-- Color quantization
                                                  |-- Color precision reduction

As before, this diagram also represents typical control flow.  The objects
shown are:

* Main controller: buffer controller for the subsampled-data buffer, which
  holds the output of JPEG decompression proper.  This controller's primary
  task is to feed the postprocessing procedure.  Some upsampling algorithms
  may require context rows above and below the current row group; when this
  is true, the main controller is responsible for managing its buffer so as
  to make context rows available.  In the current design, the main buffer is
  always a strip buffer; a full-image buffer is never required.

* Coefficient controller: buffer controller for the DCT-coefficient data.
  This controller handles MCU disassembly, including deletion of any dummy
  DCT blocks at the right or bottom edge.  When reading a multiscan JPEG
  file, this controller is responsible for buffering the full image.
  (Buffering DCT coefficients, rather than samples, is necessary to support
  progressive JPEG.)  The equivalent of one fully interleaved MCU row of
  subsampled data is processed per call, even when the source JPEG file is
  noninterleaved.

* Entropy decoding: Read coded data from the data source module and perform
  Huffman or arithmetic entropy decoding.  Works on one MCU per call.
  For progressive JPEG decoding, the coefficient controller supplies the prior
  coefficients of each MCU (initially all zeroes), which the entropy decoder
  modifies in each scan.

* Dequantization and inverse DCT: like it says.  Note that the coefficients
  buffered by the coefficient controller have NOT been dequantized; we
  merge dequantization and inverse DCT into a single step for speed reasons.
  When scaled-down output is asked for, simplified DCT algorithms may be used
  that emit only 1x1, 2x2, or 4x4 samples per DCT block, not the full 8x8.
  Works on one DCT block at a time.

* Postprocessing controller: buffer controller for the color quantization
  input buffer, when quantization is in use.  (Without quantization, this
  controller just calls the upsampler.)  For two-pass quantization, this
  controller is responsible for buffering the full-image data.

* Upsampling: restores chroma components to full size.  (May support more
  general output rescaling, too.  Note that if undersized DCT outputs have
  been emitted by the DCT module, this module must adjust so that properly
  sized outputs are created.)  Works on one row group at a time.  This module
  also calls the color conversion module, so its top level is effectively a
  buffer controller for the upsampling->color conversion buffer.  However, in
  all but the highest-quality operating modes, upsampling and color
  conversion are likely to be merged into a single step.

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
视频一区二区不卡| 色天使色偷偷av一区二区| 91在线丨porny丨国产| 91精品国产丝袜白色高跟鞋| 国产精品国产精品国产专区不蜜| 日韩精品视频网站| 欧美一区二区三区喷汁尤物| 亚洲一区二区av电影| 91麻豆免费在线观看| 亚洲美女屁股眼交3| 成人一级黄色片| 亚洲欧美一区二区三区久本道91 | av资源网一区| 国产精品女主播av| 91视视频在线观看入口直接观看www| 2020国产精品| 97se亚洲国产综合自在线| 亚洲视频中文字幕| 欧美性一区二区| 成人av片在线观看| 一区二区三区日本| 欧美日韩的一区二区| 日本视频一区二区| 欧美韩国日本综合| 欧美怡红院视频| 久久精品二区亚洲w码| 欧美一卡2卡3卡4卡| av在线播放一区二区三区| 夜夜嗨av一区二区三区四季av| 欧美福利一区二区| 欧美激情一区二区三区全黄| 日本一区中文字幕 | 99久久精品国产麻豆演员表| 一区二区三区免费观看| 精品久久99ma| 91一区二区在线| 国产一区二三区| 亚洲电影一区二区三区| 久久久亚洲精品一区二区三区 | 亚洲欧美色一区| 精品久久久久久久久久久院品网| 成人av小说网| 国产在线日韩欧美| 日本成人在线看| 一区二区免费在线| 亚洲欧洲www| 久久蜜臀精品av| 欧美不卡123| 91精品欧美久久久久久动漫 | 欧美va亚洲va香蕉在线| 欧美视频一区二| 91丨porny丨国产入口| 成人高清免费观看| 国产成人精品免费网站| 日韩精品久久理论片| 婷婷一区二区三区| 亚洲不卡一区二区三区| 国产精品美日韩| 国产精品久久毛片av大全日韩| 欧美大尺度电影在线| 91精品午夜视频| 精品sm在线观看| 中日韩av电影| 亚洲国产精品影院| 日韩精品三区四区| 国产乱码精品一区二区三| 国产激情视频一区二区在线观看| 韩国v欧美v日本v亚洲v| 成人中文字幕合集| 色婷婷亚洲综合| 欧美一区三区四区| 亚洲国产成人在线| 亚洲sss视频在线视频| 日韩精品电影在线观看| 国产高清久久久| 色88888久久久久久影院按摩 | 中文字幕精品三区| 午夜精品福利一区二区蜜股av | 欧美中文一区二区三区| 欧美怡红院视频| 精品国产成人在线影院| 亚洲欧美日韩国产综合| 日韩成人免费看| 色综合久久88色综合天天| 3d动漫精品啪啪1区2区免费| 中文字幕第一区| 午夜国产精品一区| 亚洲风情在线资源站| 中文字幕精品三区| 亚洲亚洲精品在线观看| 成人av网站在线| 精品少妇一区二区三区免费观看 | 国精产品一区一区三区mba视频| 成人自拍视频在线| www久久精品| 日本不卡一二三| 欧美专区亚洲专区| 亚洲欧美另类久久久精品| 国产精品一区二区三区99| 69堂亚洲精品首页| 午夜激情一区二区| 欧美午夜精品久久久久久孕妇 | 精品国产一区二区三区四区四| 亚洲午夜电影网| 91豆麻精品91久久久久久| 成人免费一区二区三区在线观看 | 国产精品资源在线观看| 亚洲精品一区二区三区蜜桃下载 | 乱一区二区av| 日韩美女天天操| 国产一区二区三区免费看| 精品国产亚洲在线| 国产毛片一区二区| 国产精品久久免费看| 97精品超碰一区二区三区| 一区二区三区四区视频精品免费| 成人爽a毛片一区二区免费| 国产精品久99| 69久久99精品久久久久婷婷| 天天综合色天天综合色h| 91精品国产入口| 国产河南妇女毛片精品久久久| 久久久亚洲高清| 日本道在线观看一区二区| 日本不卡的三区四区五区| 久久精品一区二区三区四区| 色综合久久88色综合天天6| 日韩av二区在线播放| 中文字幕第一区二区| 欧美日韩成人综合天天影院| 国产成人精品亚洲午夜麻豆| 亚洲国产精品av| 26uuu精品一区二区三区四区在线| 成人网男人的天堂| 国内久久精品视频| 午夜久久电影网| 国产精品久久久久久亚洲毛片| 在线观看av一区二区| 国产激情视频一区二区三区欧美 | 日日夜夜免费精品| 国产精品午夜在线观看| 久久精品视频在线免费观看| 欧美三级午夜理伦三级中视频| 成人av电影观看| 韩国在线一区二区| 视频一区二区不卡| 偷拍与自拍一区| 亚洲一级二级三级在线免费观看| 国产欧美日韩卡一| 欧美国产精品劲爆| 国产精品视频免费| 日韩精品专区在线影院重磅| 国产成人8x视频一区二区| 一区二区三区精品在线观看| 国产精品国产三级国产有无不卡 | 国产99精品视频| 国产精品中文字幕一区二区三区| 精品在线一区二区| 国产91精品免费| hitomi一区二区三区精品| 国产露脸91国语对白| 成人精品高清在线| 91福利国产精品| 欧美人狂配大交3d怪物一区| 在线不卡欧美精品一区二区三区| 91久久精品一区二区二区| 97久久超碰精品国产| 欧美日韩中文字幕一区| 欧美午夜精品免费| 日韩精品综合一本久道在线视频| 日韩你懂的在线播放| 久久久久国色av免费看影院| 国产欧美一区二区三区鸳鸯浴| 国产精品美女久久久久aⅴ| 亚洲精品一二三| 欧美成va人片在线观看| 久久久久久久久岛国免费| 国产精品久久久久久久裸模| 久久久不卡网国产精品一区| 中文字幕一区二区视频| 一区精品在线播放| 午夜精品在线看| 成人一级片在线观看| 色老汉av一区二区三区| 欧美一级高清片在线观看| 国产视频一区二区在线观看| 亚洲免费观看高清完整版在线 | 91国偷自产一区二区使用方法| 欧美福利视频导航| 久久久午夜精品| 日韩二区三区四区| 欧美顶级少妇做爰| 国产精品污www在线观看| 午夜精品爽啪视频| 不卡视频在线观看| 国产视频亚洲色图| 美女免费视频一区| 欧美日韩aaaaaa| 一区av在线播放| 韩国午夜理伦三级不卡影院|