2005年08月22日

From Wikipedia, the free encyclopedia.

(Redirected from H.264)

H.264, or MPEG-4 Part 10, is a high compression digital video codec standard written by the ITU-T Video Coding Experts Group (VCEG) together with the ISO/IEC Moving Picture Experts Group (MPEG) as the product of a collective partnership effort known as the Joint Video Team (JVT). The ITU-T H.264 standard and the ISO/IEC MPEG-4 Part 10 standard (formally, ISO/IEC 14496-10) are technically identical, and the technology is also known as AVC, for Advanced Video Coding. The final drafting work on the first version of the standard was completed in May of 2003.

H.264 is a name related to the ITU-T line of H.26x video standards, while AVC relates to the ISO/IEC MPEG side of the partnership project that completed the work on the standard, after earlier development done in the ITU-T as a project called H.26L. It is usual to call the standard as H.264/AVC (or AVC/H.264 or H.264/MPEG-4 AVC or MPEG-4/H.264 AVC) to emphasize the common heritage. The name H.26L, harkening back to its ITU-T history, is far less common, but still used. Occasionally, it has also been referred to as "the JVT codec", in reference to the JVT organization that developed it. (Such partnership and multiple naming is not unprecedented, as the video codec standard known as MPEG-2 also arose from a partnership between MPEG and the ITU-T, and MPEG-2 video is also known in the ITU-T community as H.262.)

The intent of H.264/AVC project has been to create a standard that would be capable of providing good video quality at bit rates that are substantially lower (e.g., half or less) than what previous standards would need (e.g., relative to MPEG-2, H.263, or MPEG-4 Part 2), and to do so without so much of an increase in complexity as to make the design impractical (expensive) to implement. An additional goal was to do this in a flexible way that would allow the standard to be applied to a very wide variety of applications (e.g., for both low and high bit rates, and low and high resolution video) and to work well on a very wide variety of networks and systems (e.g., for broadcast, DVD storage, RTP/IP packet networks, and ITU-T multimedia telephony systems).

The JVT recently completed the development of some extensions to the original standard that are known as the Fidelity Range Extensions (FRExt). These extensions support higher-fidelity video coding by supporting increased sample accuracy (including 10-bit and 12-bit coding) and higher-resolution color information (including sampling structures known as YUV 4:2:2 and YUV 4:4:4). Several other features are also included in the Fidelity Range Extensions project (such as adaptive switching between 4×4 and 8×8 integer transforms, encoder-specified perceptual-based quantization weighting matrices, efficient inter-picture lossless coding, support of additional color spaces, and a residual color transform). The design work on the Fidelity Range Extensions was completed in July of 2004, and the drafting was finished in September of 2004.

Since the completion of the original version of the standard in May of 2003, the JVT has also done one round of "corrigendum" errata corrections, and an additional round of such corrigendum work was recently completed and approved in the ITU-T and will soon also be finished in MPEG.

Contents

[hide]

Features

H.264/AVC contains a number of new features that allow it to compress video much more effectively than older codecs and to provide more flexibility for application to a wide variety of network environments. In particular, some such key features include:

  • Multi-picture motion compensation using previously-encoded pictures as references in a much more flexible way than in past standards, thus allowing up to 32 reference pictures to be used in some cases (unlike in prior standards, where the limit was typically one or, in the case of conventional "B pictures", two). This particular feature usually allows modest improvements in bit rate and quality in most scenes. But in certain types of scenes, for example scenes with rapid repetitive flashing or back-and-forth scene cuts or uncovered background areas, it allows a very significant reduction in bit rate.
  • Variable block-size motion compensation (VBSMC) with block sizes as large as 16×16 and as small as 4×4, enabling very precise segmentation of moving regions.
  • Six-tap filtering for derivation of half-pel luma sample predictions, in order to lessen the aliasing and eventually provide sharper image.
  • Macroblock pair structure, allowing 16×16 macroblocks in field mode (vs. 16×8 in MPEG-2).
  • Quarter-pixel precision for motion compensation, enabling very precise description of the displacements of moving areas. For chroma the resolution is typically halved (see 4:2:0) therefore the motion compensation precision is down to one-eighth pixel.
  • Weighted prediction, allowing an encoder to specify the use of a scaling and offset when performing motion compensation, and providing a significant benefit in performance in special cases—such as fade-to-black, fade-in, and cross-fade transitions.
  • An in-loop deblocking filter which helps prevent the blocking artifacts common to other DCT-based image compression techniques.
  • An exact-match integer 4×4 spatial block transform (similar to the well-known DCT design), and in the case of the new FRExt "High" profiles, the ability for the encoder to adaptively select between a 4×4 and 8×8 transform block size for the integer transform operation.
  • A secondary Hadamard transform performed on "DC" coefficients of the primary spatial transform (for chroma DC coefficients and also luma in one special case) to obtain even more compression in smooth regions.
  • Spatial prediction from the edges of neighboring blocks for "intra" coding (rather than the "DC"-only prediction found in MPEG-2 Part 2 and the transform coefficient prediction found in H.263+ and MPEG-4 Part 2).
  • Context-adaptive binary arithmetic coding (CABAC), which is a clever technique to losslessly compress syntax elements in the video stream knowing the probabilities of syntax elements in a given context.
  • Context-adaptive variable-length coding (CAVLC), which is a lower-complexity alternative to CABAC for the coding of quantized transform coefficient values. Although lower complexity than CABAC, CAVLC is more elaborate and more efficient than the methods typically used to code coefficients in other prior designs.
  • A common simple and highly-structured variable length coding (VLC) technique for many of the syntax elements not coded by CABAC or CAVLC, referred to as Exponential-Golomb (Exp-Golomb) coding.
  • A network abstraction layer (NAL) definition allowing the same video syntax to be used in many network environments, including features such as sequence parameter sets (SPSs) and picture parameter sets (PPSs) that provide more robustness and flexibility than provided in prior designs.
  • Switching slices (called SP and SI slices), features that allow an encoder to direct a decoder to jump into an ongoing video stream for such purposes as video streaming bit rate switching and "trick mode" operation. When a decoder jumps into the middle of a video stream using the SP/SI feature, it can get an exact match to the decoded pictures at that location in the video stream despite using different pictures (or no pictures at all) as references prior to the switch.
  • Flexible macroblock ordering (FMO, also known as slice groups) and arbitrary slice ordering (ASO), which are techniques for restructuring the ordering of the representation of the fundamental regions (called macroblocks) in pictures. Typically considered an error/loss robustness feature, FMO and ASO can also be used for other purposes.
  • Data partitioning (DP), a feature providing the ability to separate more important and less important syntax elements into different packets of data, enabling the application of unequal error protection (UEP) and other types of improvement of error/loss robustness.
  • Redundant slices (RS), an error/loss robustness feature allowing an encoder to send an extra representation of a picture region (typically at lower fidelity) that can be used if the primary representation is corrupted or lost.
  • A simple automatic process for preventing the accidental emulation of start codes, which are special sequences of bits in the coded data that allow random access into the bitstream and recovery of byte alignment in systems that can lose byte synchronization.
  • Supplemental enhancement information (SEI) and video usability information (VUI), which are extra information that can be inserted into the bitstream to enhance the use of the video for a wide variety of purposes.
  • Auxiliary pictures, which can be used for such purposes as alpha compositing.
  • Frame numbering, a feature that allows the creation of "sub-sequences" (enabling temporal scalability by optional inclusion of extra pictures between other pictures), and the detection and concealment of losses of entire pictures (which can occur due to network packet losses or channel errors).
  • Picture order count, a feature that serves to keep the ordering of the pictures and the values of samples in the decoded pictures isolated from timing information (allowing timing information to be carried and controlled/changed separately by a system without affecting decoded picture content).

These techniques, along with several others, help H.264 to perform significantly better than any prior standard can, under a wide variety of circumstances in a wide variety of application environments. H.264 can often perform radically better than MPEG-2 video—typically obtaining the same quality at half of the bit rate or less.

Like other ISO/IEC MPEG video standards, H.264/AVC has a reference software implementation that can be freely downloaded. Its main purpose is to give examples of H.264/AVC features, rather than being a useful application per se. (See the links section for a pointer to that software.) Some reference hardware design work is also under way in MPEG.

Patent licensing

As with MPEG-2 Parts 1 and 2 and MPEG-4 Part 2 amonst others, the vendors of H.264/AVC products and services are expected to pay patent licensing royalties for the patented technology that their products use. The primary source of licenses for patents applying to this standard is a private organization known as MPEG-LA, LLC (which is not affiliated in any way with the MPEG standardization organization, but which also administers patent pools for MPEG-2 Part 1 Systems, MPEG-2 Part 2 Video, MPEG-4 Part 2 Video, and other technologies). Via Licensing also operates an H.264 patent pool.

Applications

Both of the major candidate next-generation DVD rival formats planned for product deployment in late 2005 include the H.264/AVC High Profile as a mandatory player feature — specifically:

  • The HD-DVD format of the DVD Forum
  • The Blu-ray Disc format of the Blu-Ray Disc Association (BDA)

The Digital Video Broadcast (DVB) standards body in Europe approved the use of H.264/AVC for broadcast television in Europe in late 2004.

The prime minister of France, Jean-Pierre Raffarin, announced the selection of H.264/AVC as a requirement for receivers of HDTV and pay TV channels for digital terrestrial broadcast television services (referred to as "TNT") in France in late 2004.

The Advanced Television Systems Committee (ATSC) standards body in the United States is in final consideration work on potential use of H.264/AVC for U.S. broadcast television.

The Digital Multimedia Broadcast (DMB) service in the Republic of Korea will use H.264/AVC.

Mobile-segment terrestrial broadcast services of ISDB-T in Japan will use the H.264/AVC codec, including major broadcasters:

Direct broadcast satellite TV services will use the new standard, including:

The 3rd Generation Partnership Project (3GPP) has approved the inclusion of H.264/AVC as an optional feature in release 6 of its mobile multimedia telephony services specifications.

The Motion Imagery Standards Board (MISB) of the United States Department of Defense (DoD) has adopted H.264/AVC as its preferred video codec for essentially all applications.

The Internet Engineering Task Force (IETF) has completed a payload packetization format (RFC 3984) for carrying H.264/AVC video using its Real-time Transport Protocol (RTP).

The Internet Streaming Media Alliance (ISMA) has adopted H.264/AVC for its new ISMA 2.0 specifications.

The Moving Picture Experts Group (MPEG) has fully integrated support of H.264/AVC into its system standards (e.g., MPEG-2 and MPEG-4 systems) and its ISO media file format specification.

The International Telecommunications Union-Telecom. Standardization Sector (ITU-T) has adopted H.264/AVC in its H.32x suite of multimedia telephony systems specifications. Based on the ITU-T standards, H.264/AVC is already widely used for videoconferencing, including its support in products of the two main companies in that market (Polycom and Tandberg). Essentially all new videoconferencing products now include support for H.264/AVC.

H.264 will probably be used by various video-on-demand services on the Internet to provide films and television shows directly to computers.

Products and Implementations

Several companies are producing custom chips capable of decoding H.264/AVC video. Chips capable of real-time decoding at high-definition picture resolutions include these:

Such chips will allow widespread deployment of low-cost devices capable of playing H.264/AVC video at standard-definition and high-definition television resolutions.

NeoMagic also has a chip product called the MiMagic 6, which is targeted for low-power applications (and is thus not HD-capable).

Apple Computer has integrated H.264 into Mac OS X version 10.4 (Tiger), as well as QuickTime version 7, which was released on April 29, 2005 with Tiger. A public preview of QuickTime 7 for Microsoft’s Windows operating system is also now available. Apple uses H.264 in the system for video playback and use in iChat video conferences. In April 2005, Apple Computer updated its version of DVD Studio Pro to support authoring HD content. DVD Studio Pro allows for the burning of HD-DVD content to both standard DVDs and HD-DVD media (even though no burners are available). For playing back HD-DVDs burnt onto a standard DVD, Apple requires a PowerPC G5, Apple DVD Player v4.6, and Mac OS X v10.4 or later.

The Nero Digital DVD backup program, co-developed by Nero AG and Ateme, includes an H.264 encoder.

Sorenson offers an implementation of H.264. The Sorenson AVC Pro codec is available in Sorenson Squeeze 4.1 for MPEG-4.

x264 is a GPL-licensed H.264 encoder that is used in the free VideoLAN and MPlayer multimedia players and, as of July 2005, remains the only reasonably complete open source implementation of the standard. [1] A Video for Windows frontend is also available. x264 is not likely to be incorporated into commercial products because of its license and patent issues surrounding the standard itself.

ATI Technologies has announced that its next-generation graphics processing unit (GPU), codenamed R520, would feature hardware acceleration of H.264. [2] [3]

NVIDIA has released a beta driver for hardware H.264 decoding on its 7800 GPUs. [4]

The PlayStation Portable console features hardware decoding of video files in the H.264 format.

Envivio, Inc. is shipping broadcast H.264 encoders for standard definition live encoding and off-line encoders for High Definition (720p, 1080i, 1080p). Envivio also supplies H.264 decoders for Windows, Linux and Macintosh as well as H.264 Video Servers and Authoring tools.

Modulus Video is shipping broadcast-quality H.264 standard definition real-time encoders to broadcasters (including telephone companies) and has announced its high definition real-time encoder (the ME6000) for shipment in mid 2005. The Modulus Video HD encoder technology was demonstrated at NAB in April 2004, where it won a "Pick Hit" award. The Modulus design uses technology from LSI Logic.

Hantro is shipping a multiple format video codec targeted for mobile system on chip designs, the implementation supports MPEG-4 simple profile, H.263 baseline and H.264/AVC baseline formats as well as JPEG still image.

Optibase is shipping integrated carrier grade TV streaming platform based on H.264. [5]

Tandberg television has announced a real-time high-definition encoder product (the EN5990). DirecTV and BSkyB have selected that product for their DBS deployments.

Harmonic has announced a real-time encoder product (the DiviCom MV 100). TF1 (the French broadcaster) and the Video Networks Limited (VNL) Homechoice video on demand service in London have announced the use of that product.

The Premiere DBS deployment will use set-top boxes from Pace Micro.

 

视频编码标准

MPEG 标准 MPEG制定 MPEG-1 | MPEG-2 | (MPEG-3) | MPEG-4 | MPEG-7 | MPEG-21
ITU-T 标准 VCEG制定 H.261 | (H.262) | H.263 | H.263v2 | H.264

H.264, 或者 MPEG-4 第十部分,是由ITU-T视频编码专家组(VCEG)和ISO/IEC运动图像专家组(MPEG)联合组成的联合视频组(JVT,Joint Video Team)提出的高度压缩数字视频编解码器标准。ITU-T的H.264标准和ISO/IECMPEG-4第10部分(正式名称是ISO/IEC 14496-10)在编解码技术上是相同的,这种编解码技术也被称为AVC,即高级视频编码(Advanced Video Coding)。该标准第一版的最终草案(FD)已于2003年5月完成。

H.264是ITU-T以H.26x系列为名称命名的标准之一,同时AVC是ISO/IEC MPEG一方的称呼。这个标准通常被称之为H.264/AVC (或者 AVC/H.264 或者 H.264/MPEG-4 AVC or MPEG-4/H.264 AVC)而明确的说明它两方面的开发者。该标准最早来自于ITU-T的称之为H.26L的项目的开发。H.26L这个名称虽然不太常见,但是一直被使用着。有时候该标准也被称之为"JVT 编解码器",这是由于该标准是由JVT组织并开发的(作为两个机构合作开发同一个标准的事情并非空前,之前的视频编码标准MPEG-2也是由MPEGITU-T两方合作开发的–因此MPEG-2在ITU-T的命名规范中被称之为H.262)。

H.264/AVC项目最初的目标是希望新的编解码器能够在比相对以前的视频标准(比如MPEG-2或者H.263)低很多的码率下(比如说,一半或者更少)提供很好的视频质量;同时,并不增加很多复杂的编码工具,使得硬件难以实现。另外一个目标是可适应性,即该编解码器能够在一个很广的范围内使用(比如说,即包含高码率也包含低码率,以及不同的视频分辨率),并且能在各种网络和系统上(比如组播DVD存储,RTP/IP包网络,ITU-T多媒体电话系统)工作。

JVT最近完成了一个对原标准的拓展,该拓展被称为高精度拓展 (Fidelity Range Extensions, FRExt)。该拓展通过支持更高的像素精度(包括10比特和12比特像素精度)和支持更高的色度精度(包括YUV 4:2:2YUV 4:4:4)来支持更高精度的视频编码。该拓展加入了一些新的特性(比如自适应的4×4和8×8的整数变换,用户自定义量化加权矩阵,高效的帧间无失真编码,支持新增的色度空间和色度参差变换)。该拓展的设计于2004年7月完成,草案也于2004年9月完成。

由于该标准的最早版本于2003年5月完成,JVT已经完成了一轮对标准的勘误工作,新一轮的勘误也已于最近完成并且得到了ITU-T的批准,不久也将被MPEG批准。

目录

[隐藏]

技术细节

H.264/AVC包含了一系列新的特征,使得它比起以前的编解码器不但能够更有效的进行编码,还能在各种网络环境下的应用中使用。这些新特性包括:

  • 多参考帧的运动补偿。比起以前的视频编码标准,H.264/AVC以更灵活的方式使用已编码的更多帧来作为参考帧。在某些情况下,可以使用最多32个参考帧(在以前的标准里面,参考帧的数目不是1就是对B帧来说的2)。该特性对大多数场景序列都可以带来一定的码率降低或者质量提高,对某些类型的场景序列,例如快速重复的闪光,反复的剪切或者背景遮挡的情况,它能很显著的降低编码的码率。
  • 变块尺寸运动补偿。使用最大16×16最小4×4的块来进行运动估计与运动补偿,能够对图像序列中的运动区域进行更精确的分割。
  • 为了减少“振铃”效应并最终得到更锐化的图像,采用六抽头的滤波器来产生二分之一像素的亮度分量预测值。
  • 宏块对结构允许场模式中采用16×16的宏块(相对于MPEG-2中的16×8)
  • 1/4像素精度的运动补偿能够提供更高精度的运动块的预测,由于色度通常是亮度抽样的1/2(参见4:2:0),这时运动补偿的精度就达到了1/8像素精度。
  • 加权的运动预测,指在运动补偿时可以使用增加权重和偏移的办法。它能在一些特殊的场合,如淡入、淡出、淡出而后淡入等场合提供相当大的编码增益。
  • 使用了一个环内的除块效应滤波器,能够减轻普遍存在于其他基于离散余弦变换(DCT)的视频编解码器的块效应。
  • 一个匹配的整数4×4变换(类似于离散余弦变换的设计),同样在高精度拓展 中,一个整数8×8变换被采用,并能在4×4变换和8×8变换中进行自适应的选择。
  • 在第一次4×4变换后,对DC系数(色度的DC系数和某种特殊状况的亮度DC系数)再进行一个Hadamard变换,使得在平滑区域得到更好的压缩效果。
  • 利于临近块的边界像素的Intra空间预测(比曾在MPEG-2视频部分使用的直流系数预测和在[[H。263+]]和MPEG-4视频部分使用的变换系数预测的效果要好)。
  • 基于上下文的二元算数编码 (CABAC),它能够灵活的将各种语法元素在已知相应的上下文的概率分布的状况下更有效的进行无损的熵编码
  • 基于上下文的变长编码 (CAVLC),用于对量化后的变化系数进行编码。比起CABAC它的复杂度相对较低,压缩比不高,但是比起以前的视频编码标准所使用的熵编码方案,它又是相当有效的。
  • 使用一个被称为Exponential-Golomb(Exp-Golomb)的简单的熵编码方案对既不是用CABAC也不是用CAVLC的语法元素进行编码。
  • 使用一个网络抽象层 (NAL),使得相同的视频语法可以适用于多种网络环境中;并且使用了序列参数集(SPSs)和图像参数集(PPSs)来提供更高的鲁棒性(robustness)和灵活性。
  • 切换条带(Switching slices,包括SP和SI两种),它使得编码器能够指令解码器跳转到一个正在处理的视频码流,用来解决视频码流码率切换和"窍门模式"(Trick mode)操作。当解码器利用SP/SI条带跳转到一个视频码流中间时,除非之后的解码帧引用切换帧之前的图像作为参考帧,它都可以得到完全一致的解码重建图像。
  • 灵活的宏块排列模式(FMO for Flexible macroblock ordering,也被称为条带组slice groups技术)和任意条带排列(ASO for arbitrary slice ordering)模式,用来更改图像编码的最基本单位-宏块的编码顺序。它能够用来提高有绕信道下码流的鲁棒性(robustness)以及一些其它的目的。
  • 数据分区(DP for Data partitioning),能够将重要程度不同的语法元素分开打包传输,并使用非平等数据保护(UEP for unequal error protection)等技术来改善视频码流对抗信道误码/丢包的鲁棒性(Robustness).
  • 冗余条带(RS for Redundant Slices),同样是一个提高码流鲁棒性的技术。编码器利用该技术可以发送图象某区域(或者全部)的另一个编码表示(通常是较低分辨率的编码码流)使得当主表示发生错误或者丢失的时候能够用冗余的第二个编码表示来解码。
  • 使用了一个自动的字节码流打包方法,避免了码流中出现与开始码重复的码字。开始码是码流中用于随机访问和重建同步的码字。
  • 补充增强信息(SEI for Supplemental Enhancement Information)和视频可用信息(VUI for Video Usability Information)增加了向视频码流中加入信息的办法,为各种应用提供了借口。
  • 辅助图层(Auxiliary pictures), 可以用来实现某些特殊的功能,例如alpha复合(alpha compositing)。
  • 帧编号,使用该功能支持创建一个视频序列的子序列(支持实现时域的可伸缩性),还支持对丢失的整帧图像(由于网络丢包或者信道误码造成的)进行检测和隐藏。
  • 图像顺序计数,使用该功能使得各帧图像的顺序和解码图像的像素值与时间信息无关(即使用一个单独的系统对时间信息进行传输、控制、更改,从而不影响解码图像的像素值。)

上述这些技术,和一些其它的技术一起,使得H.264比起以前的视频编解码能够带来性能上显著的提高,并在各种不同的环境下支持更广泛的应用。H.264在压缩性能上比起MPEG-2有很大的提高,在相同的图像质量下可以,码率可以减少到一半或者更少。

和MPEG的其它视频标准一样,H.264/AVC也提供了一个参考软件,并可以免费下载。它的主要目的是提供一个演示H.264/AVC各种功能的演示平台,而不是作为一个直接的应用平台(在后面的链接部分可以找到下载的地址)。目前在MPEG也同时在进行一些硬件参考设计的实现。

专利许可

MPEG-2第一部分、第二部分,MPEG-4 第二部分一样,使用H.264/AVC的产品制造商和服务提供商需要向他们的产品所使用的专利的持有者支付专利许可费用。这些专利许可的主要来源是一家称为MPEG-LA,LLC的私有组织(实际上该组织和MPEG标准化组织没有任何关联,但是该组织也管理着MPEG-2第一部分系统、第二部分视频。MPEG-4第二部分视频和其它一些技术的专利许可)。


应用

竞争下一代DVD格式的两种主要技术都计划在2005下半年将H.264/AVC HP作为必须的播放器特征加入进来,包括:

欧洲的数字电视广播(DVB)标准组织在2004下半年通过了采用H.264/AVC在欧洲进行电视广播。

2004下半年,法国首相Jean-Pierre_Raffarin宣布在法国选用H.264/AVC作为HDTV接收器和数字电视地面广播服务的付费电视频道的一项要求。

美国ATSC标准组织正在考虑可能在美国的电视广播中采用H.264/AVC。

韩国数字多媒体广播(DMB)服务将采用H.264/AVC。

日本使用数字广播集成服务ISDB-T提供的移动分区地上广播服务将使用H.264/AVC 编解码器,包括主要的广播服务提供商:

直接卫星广播Direct broadcast satellite服务将使用该标准,包括:

第三代移动通信合作组织(3GPP)已经在第六次发布中批准H.264/AVC作为其移动多媒体电话服务标准的可选技术。

美国国防部(DoD for United States Department of Defense)下的运动图像标准协会(MISB for The Motion Imagery Standards Board)已经接受H.264/AVC为其核心应用的推荐视频编解码器。

因特网工程工作小组(IETF for Internet Engineering Task Force)已经完成了一个负载打包格式(RFC 3984)作为在其实时传输协议(RTP for Real-time Transport Protocol)上传输H.264/AVC码流的打包办法。

互联网流媒体协会(ISMA for Internet Streaming Media Alliance)已经接受H.264/AVC作为其ISMA 2.0的技术规范。

MPEG组织将H.264/AVC完全的集成进入了它的系统协议(例如MPEG-2MPEG-4 系统)和ISO媒体格式协议。

国际电信联盟ITU-T标准组已经采纳H.264/AVC 作为其H.32x系列的多媒体电话系统的系统规范的一部分。ITU-T的采纳,使得H264/AVC 已经被广泛的使用在视频会议系统中,并获得了视频电话主要的两家产品提供商(Polycom和Tandberg 的支持。实际上所有新的视频会议产品都支持H.264/AVC。

H.264将很可能被各种视频点播服务(VOD for video-on-demand)使用,用来在互联网上提供电影电视节目直接到个人电脑的点播服务。

产品和实现

有几家公司正在制作能够对H.264/AVC视频进行解码的可编程芯片。2005年1月Broadcom (the BCM7411), Conexant (the CX2418X), Neomagic (MiMagic 6)和STMicroelectronics (the STB7100)几家公司都提供了可供测试的样片。 Sigma Designs 预计在2005年3月提供样片。这些芯片的出现将极大的推动低成本的能够播放标清高清分辨率的H.264/AVC 视频的快速推广。这5种芯片中的4种(除了Neomagic的芯片,它是针对低能耗应用的)都具有播放高清分辨率视频的能力,而且大部分都将支持标准中的High Profile.

苹果公司已经将H.264集成进入Mac OS X版本v10.4(昵称老虎:Tiger),并于2005年5月发布了支持H.264的Quicktime版本7.0。2005年4月苹果公司升级了软件DVD Studio Pro以支持授权的高清格式的内容。该软件支持将HD-DVD格式的内容刻录到标准DVD或者HD-DVD媒体(虽然现在还没有对应的刻录机)上。为了播放刻录在标准DVD上的HD-DVD内容,所需要的硬件是PowerPC G5,软件是Apple DVD Player v4.6, 以及 Mac OS X v10.4 或者更新。

Envivio公司已经可以提供针对H.264组播用的标清实时编码器和离线的高清(720p, 1080i, 1080p)编码器。Envivio公司同时提供针对windowsLinuxMacintosh平台的H.264解码器,H.264视频服务器和授权工具。

Modulus Viode公司提供广播、电话用广播质量的H.264标清实时编码器,并宣布将与2005年中提供高清实时编码器(ME6000)。该公司曾在2004年4月在NAB上演示过高清实时编码器,并获得"Pick Hit"奖项。该公司使用LSI Logic的技术。

Tandberg television公司推出了EN5990实时编码器。DirecTV 和 BSkyB 已经把EN5990编码器用于它们的卫星直播服务(DBS)。

Harmonic(哈雷)也推出了它们的实时编码器(型号:DiviCom MV 100)。TF1 (法国的广播商)和Video Networks Limited (VNL)在伦敦的家用视频点播服务已经宣布使用该产品。 佩斯公司(Pace Micro)为一些主要的直播卫星公司提供了机顶盒。

Sony公司的PSP(PlayStation Portable)在硬件上提供对H.264 Main Profile Level 3解码的支持。

Nero Digital公司推出的由Nero AGAteme共同开发的软件包提供了对H.264编码的支持,并在Doom9获得"Pick Hit"[[1]]奖项。

Sorenson 提供了H.264实现方式。相关的编解码软件Sorenson AVC Pro codec已经包含在Sorenson Squeeze 4.1 for MPEG-4中。

自由软件版x264的编解码软件采用GPL授权方式下载。

     一、 引言

  H.264是ITU-T最新的视频编码标准,被称作ISO/IEC14496-10或MPEG-4 AVC,是由运动图像专家组(MPEG)和ITU的视频编码专家组共同开发的新产品。H.264分两层结构,包括视频编码层和网络适配层。视频编码层处理的是块、宏块和片的数据,并尽量做到与网络层独立,这是视频编码的核心,其中包含许多实现错误恢复的工具;网络适配层处理的是片结构以上的数据,使H.264能够在基于RTP/UDP/IP、H.323/M、MPEG-2传输和H.320协议的网络中使用。

  二、 IP网络对视频压缩的限制

  1. H.264的应用场合

  在讨论基于IP的H.264之前,有必要先阐述一下H.264与IP网络有关的应用场合及其对传输和编解码器的要求。下面介绍对话应用、下载服务和流媒体应用三种场合。

  对话应用,比如像视频电话和视频会议,有严格的时延限制,要求端到端时延小于1s,最好小于100ms。编解码器的参数能实时调整,错误恢复机制要根据实际网络变化而改变。编解码的复杂度不能很高,比如双向预测的模式就不能被采用。

  下载服务,可使用可靠的传输协议如FTP和HTTP将数据全部传输。由于这种应用的非实时性,编码器可以通过优化进行高效编码,而且对时延和错误恢复机制没有要求。

  流媒体服务应用,对时延要求介于上面两者之间,初始化时延是10s以内。与实时编码相比对时延要求降低,编码器可以进行优化实现高效编码(比如双向预测)。然而通常流媒体服务使用不可靠的传输协议,所以编码时要进行差错控制并进行信道纠错编码。

  本文主要讨论对话应用和流媒体应用,这两种应用基于IP网络。IP网络又可分为三种类型:不可控IP网络(如Internet)、可控IP网络(广域网)和无线IP网络(如3G网络)。这三种IP网络有不同的最大传输单元尺寸(MTUsize)、比特出错概率和TCP使用标记。最大传输单元尺寸是网络层最大的分组长度,H.264编码时要使片的长度小于MTU尺寸,这样可避免在网络层再进行一次数据的分割。两个IP节点之间的MTU尺寸是动态变化的,通常假定有线IP网络的MTU尺寸是1.5千字节,无线网络的MTU尺寸是100字节。可见要适用于无线网络的H.264必须采用数据分割技术使得片的长度小于MTU尺寸。TCP传输控制协议能够解决网络拥塞引起的分组丢失问题,而在无线网络中,分组丢失是由于链路层错误引起的,TCP并非很好的解决办法,要采用差错控制协议。

  2. H.264使用的协议环境

  对话应用和流媒体应用使用同一协议组,下面进行讨论。

  网络层协议:使用IP(网际协议)。每个IP分组单独从发方出发,经过一系列的路由器到达收方。IP将大于MTU尺寸的分组进行数据分割、重组。每个分组的传输时间都有所不同。IP头20个字节由校验码来保证,但数据没有保护。IP分组最大值为64千字节,但由于MTU尺寸的限制,一般没有这么大。

  传输层协议:主要有两个协议,TCP和UDP。TCP提供面向字节的可靠传输服务,以重传和超时等机制作为差错控制的基础。由于对时延的不可预测,并不适用于实时通信传输。UDP提供不可靠的数据报传输业务。UDP头包含的校验数(8字节)可以发现和去掉含有比特错误的分组。UDP允许分组传输过程中出现丢失、复制、改序等。使用UDP协议时,高层必须使用错误恢复协议。

  应用层传输协议:使用RTP(实时传输协议)。该协议和IP/UDP结合使用,是面向会话的协议。每个RTP分组包含RTP头标,载荷头标(可选)和载荷本身。RTP头标的内容见图1,基本选项占用12字节,标记位标记有同一时间戳的一组分组的结束。RTP协议使发送方将数据分为大小合理的分组,并将解码方观察到的网络特征反馈给发送方,使发送方可以动态调整比特率和抗误码机制。RTP分组和RTP载荷规范在第四部分讨论。

  应用层控制协议:有H.245协议、SIP和SDP,或RTSP。这些协议可以实现流媒体的控制,收发方的协商和控制动态会话层。

  三、H.264的错误恢复工具

  错误恢复的工具随着视频压缩编码技术的提高在不断改进。旧的标准(H.261、H263、MPEG-2的第二部分)中,使用片和宏块组的划分、帧内编码宏块、帧内编码片和帧内编码图像来防止错误的扩散。之后改进的标准(H.263+、MPEG-4)中,使用多帧参考和数据分割技术来恢复错误。H.264标准在以前的基础上提出了三种关键技术:(1)参数集合,(2) 灵活的宏块次序(FMO),(3)冗余片(RS)来进行错误的恢复。

  1. 帧内编码

  H.264中帧内编码的技术和以前标准一样,值得注意的是:

  (1)H.264中的帧内预测编码宏块的参考宏块可以是帧间编码宏块,帧内预测宏块并不像H.263中的帧内编码一样,而采用预测的帧内编码比非预测的帧内编码有更好的编码效率,但减少了帧内编码的重同步性能,可以通过设置限制帧内预测标记来恢复这一性能。

  (2)只包含帧内宏块的片有两种,一种是帧内片(Islice),一种是立即刷新片(IDRslice),立即刷新片必存在于立即刷新图像(IDRpicture)中。与短期参考图像相比,立即刷新图像有更强壮的重同步性能。

  在无线IP网络环境下,为了提高帧内图像的重同步性能,要采用率失真优化编码和设置限制帧内预测标记。

  2. 图像的分割

  H.264支持一幅图像划分成片,片中宏块的数目是任意的。在非FMO模式下,片中的宏块次序是同光栅扫描顺序,FMO模式下比较特殊。片的划分可以适配不同的MTU尺寸,也可以用来交织分组打包。

  3. 参考图像选择

  参考图像数据选择,不论是基于宏块、基于片,还是基于帧,都是错误恢复的有效工具。对于有反馈的系统,编码器获得传输中丢失图像区域的信息后,参考图像可以选择解码已经正确接收的图像对应的原图像区域作参考。在没有反馈的系统中,将会使用冗余的编码来增加错误恢复性能。

  4. 数据的划分

  通常情况下,一个宏块的数据是存放在一起而组成片的,数据划分使得一个片中的宏块数据重新组合,把宏块语义相关的数据组成一个划分,由划分来组装片。在H.264中有三种不同的数据划分。 (1)头信息划分:包含片中宏块的类型,量化参数和运动矢量,是片中最重要的信息。 (2)帧内信息划分:包含帧内CBPs和帧内系数,帧内信息可以阻止错误的蔓延。 (3)帧间信息划分:包含帧间CBPs和帧间系数,通常比前两个划分要大得多。

  帧内信息划分结合头信息解出帧内宏块,帧间信息划分结合头信息解出帧间宏块。帧间信息划分的重要性最低,对重同步没有贡献。当使用数据划分时,片中的数据根据其类型被保存到不同的缓存,同时片的大小也要调整,使得片中最大的划分小于MTU尺寸。

  解码端若获得所有的划分,就可以完整重构片;解码端若发现帧内信息或帧间信息划分丢失,可用的头信息仍然有很好的错误恢复性能。这是因为宏块类型和宏块的运动矢量含有宏块的基本特征。

  5. 参数集的使用

  序列的参数集(SPS)包括了一个图像序列的所有信息,图像的参数集(PPS)包括了一个图像所有片的信息。多个不同的序列和图像参数集经排序存放在解码器。编码器参考序列参数集设置图像参数集,依据每一个已编码片的片头的存储地址选择合适的图像参数集来使用。对序列的参数和图像的参数进行重点保护才能很好地增强H.264错误恢复性能。

  在差错信道中使用参数集的关键是保证参数集及时、可靠地到达解码端。例如,在实时信道中,编码器用可靠控制协议及早将他们以带外传输的方式发送,使控制协议能够在引用新参数的第一个片到达之前把它们发给解码器;另外一个办法就是使用应用层保护,重发多个备份文件,确保至少有一个备份数据到达解码端;第三个办法就是在编解码器的硬件中固化参数集设置。

  6. 灵活的宏块次序(FMO)

  灵活的宏块次序是H.264的一大特色,通过设置宏块次序映射表(MBAmap)来任意地指配宏块到不同的片组,FMO模式打乱了原宏块顺序,降低了编码效率,增加了时延,但增强了抗误码性能。FMO模式划分图像的模式各种各样,重要的有棋盘模式、矩形模式等。当然FMO模式也可以使一帧中的宏块顺序分割,使得分割后的片的大小小于无线网络的MTU尺寸。经过FMO模式分割后的图像数据分开进行传输,以棋盘模式为例,当一个片组的数据丢失时可用另一个片组的数据(包含丢失宏块的相邻宏块信息)进行错误掩盖。实验数据显示,当丢失率为(视频会议应用时)10%时,经错误掩盖后的图像仍然有很高的质量。

  7. 冗余片方法

  前边提到了当使用无反馈的系统时,就不能使用参考帧选择的方法来进行错误恢复,应该在编码时增加冗余的片来增强抗误码性能。要注意的是这些冗余片的编码参数与非冗余片的编码参数不同,也就是用一个模糊的冗余片附加在一个清晰的片之后。在解码时先解清晰的片,如果其可用就丢弃冗余片;否则使用冗余模糊片来重构图像。


  四、H.264中实时传输协议(RTP)

  1. RTP载荷规范

  在第二部分已经对H.264的网络协议环境作了阐述,这里要详细讨论RTP的载荷规范和抗误码性能。RTP通过发送冗余信息来减少接收端的丢包率,会增加时延,与冗余片不同的是它增加的冗余信息是个别重点信息的备份,适合于应用层的非等重保护。下边阐述与多媒体传输有关的3个规范。

  (1)分组复制多次重发,发送端对最重要的比特信息分组进行复制重发,使得保证接收端能至少正确接收到一次,同时接收端要丢弃已经正确接收的分组的多余备份。

  (2)基于分组的前向纠错,对被保护的分组进行异或运算,将运算结果作为冗余信息发送到接收方。由于时延,不用于对话型应用,可用于流媒体。

  (3)音频冗余编码,可保护包括视频在内的任何数据流。每个分组由头标、载荷以及前一分组的载荷组成,H.264中可与数据分割一起使用。

  2. H.264 NAL单元的概念

  H.264 NAL单元对编码数据进行打包,NAL单元由1字节的头,3个定长的字段和一个字节数不定的编码段组成。

  头标的语法:NALU类型(5bit)、重要性指示位(2bit)、禁止位(1bit)。

  NALU类型:1~12由H.264使用,24~31由H.264以外的应用使用。

  重要性指示:标志该NAL单元用于重建时的重要性,值越大,越重要。

  禁止位:网络发现NAL单元有比特错误时可设置该比特为1,以便接收方丢掉该单元。

  3. 分组打包的规则

  (1)额外开销要少,使MTU尺寸在100~64k字节范围都可以;

  (2)不用对分组内的数据解码就可以判别该分组的重要性;

  (3)载荷规范应当保证不用解码就可识别由于其他的比特丢失而造成的分组不可解码;

  (4)支持将NALU分割成多个RTP分组;

  (5)支持将多个NALU汇集在一个RTP分组中。

  RTP的头标可以是NALU的头标,并可以实现以上的打包规则。

  4. 简单打包

  一个RTP分组里放入一个NALU,将NALU(包括同时作为载荷头标的NALU头)放入RTP的载荷中,设置RTP头标值。为了避免IP层对大分组的再一次分割,片分组的大小一般都要小于MTU尺寸。由于包传送的路径不同,解码端要重新对片分组排序,RTP包含的次序信息可以用来解决这一问题。

  5. NALU分割

  对于预先已经编码的内容,NALU可能大于MTU尺寸的限制。虽然IP层的分割可以使数据块小于64千字节,但无法在应用层实现保护,从而降低了非等重保护方案的效果。由于UDP数据包小于64千字节,而且一个片的长度对某些应用场合来说太小,所以应用层打包是RTP打包方案的一部分。

  新的讨论方案(IETF)应当符合以下特征:

  (1)NALU的分块以按RTP次序号升序传输;

  (2)能够标记第一个和最后一个NALU分块;

  (3)可以检测丢失的分块。

  6. NALU合并

  一些NALU如SEI、参数集等非常小,将它们合并在一起有利于减少头标开销。已有两种集合分组:

  (1)单一时间集合分组(STAP),按时间戳进行组合;

  (2)多时间集合分组(MTAP),不同时间戳也可以组合。

  五、结束语

  本文重点讲述了在IP网络的限制条件下H.264进行错误恢复的几种有力工具,但在不同的IP网络中要组合使用各种工具才能实现高效率编码和传输。因为目前无线网络对MTU尺寸和时延的限制,所以错误恢复工具可以结合使用图像的分割、数据的划分和RTP分组技术,避免使用冗余信息和反馈来提高错误恢复性能;另外高效率的FMO编码模式可以大大提高编码的抗分组丢失性能。

  JVT(Joint Video Team,视频联合工作组)于2001年12月在泰国Pattaya成立。它由ITU-T和ISO两个国际标准化组织的有关视频编码的专家联合组成。JVT的工作目标是制定一个新的视频编码标准,以实现视频的高压缩比、高图像质量、良好的网络适应性等目标。目前JVT的工作已被ITU-T接纳,新的视频压缩编码标准称为H.264标准,该标准也被ISO接纳,称为AVC(Advanced Video Coding)标准,是MPEG-4的第10部分。

  H.264标准可分为三档:

  基本档次(其简单版本,应用面广);

  主要档次(采用了多项提高图像质量和增加压缩比的技术措施,可用于SDTV、HDTV和DVD等);

  扩展档次(可用于各种网络的视频流传输)。

  H.264不仅比H.263和MPEG-4节约了50%的码率,而且对网络传输具有更好的支持功能。它引入了面向IP包的编码机制,有利于网络中的分组传输,支持网络中视频的流媒体传输。H.264具有较强的抗误码特性,可适应丢包率高、干扰严重的无线信道中的视频传输。H.264支持不同网络资源下的分级编码传输,从而获得平稳的图像质量。H.264能适应于不同网络中的视频传输,网络亲和性好。

  一、H.264视频压缩系统

  H.264标准压缩系统由视频编码层(VCL)和网络提取层(Network Abstraction Layer,NAL)两部分组成。VCL中包括VCL编码器与VCL解码器,主要功能是视频数据压缩编码和解码,它包括运动补偿、变换编码、熵编码等压缩单元。NAL则用于为VCL提供一个与网络无关的统一接口,它负责对视频数据进行封装打包后使其在网络中传送,它采用统一的数据格式,包括单个字节的包头信息、多个字节的视频数据与组帧、逻辑信道信令、定时信息、序列结束信号等。包头中包含存储标志和类型标志。存储标志用于指示当前数据不属于被参考的帧。类型标志用于指示图像数据的类型。
VCL可以传输按当前的网络情况调整的编码参数。

  二、H.264的特点

  H.264和H.261、H.263一样,也是采用DCT变换编码加DPCM的差分编码,即混合编码结构。同时,H.264在混合编码的框架下引入了新的编码方式,提高了编码效率,更贴近实际应用。
H.264没有繁琐的选项,而是力求简洁的“回归基本”,它具有比H.263++更好的压缩性能,又具有适应多种信道的能力。

  H.264的应用目标广泛,可满足各种不同速率、不同场合的视频应用,具有较好的抗误码和抗丢包的处理能力。

  H.264的基本系统无需使用版权,具有开放的性质,能很好地适应IP和无线网络的使用,这对目前因特网传输多媒体信息、移动网中传输宽带信息等都具有重要意义。

  尽管H.264编码基本结构与H.261、H.263是类似的,但它在很多环节做了改进,现列举如下。

  1.多种更好的运动估计

  高精度估计

  在H.263中采用了半像素估计,在H.264中则进一步采用1/4像素甚至1/8像素的运动估计。即真正的运动矢量的位移可能是以1/4甚至1/8像素为基本单位的。显然,运动矢量位移的精度越高,则帧间剩余误差越小,传输码率越低,即压缩比越高。

  在H.264中采用了6阶FIR滤波器的内插获得1/2像素位置的值。当1/2像素值获得后, 1/4像素值可通过线性内插获得,

  对于4:1:1的视频格式,亮度信号的1/4 像素精度对应于色度部分的1/8像素的运动矢量,因此需要对色度信号进行1/8像素的内插运算。

  理论上,如果将运动补偿的精度增加一倍(例如从整像素精度提高到1/2像素精度),可有0.5bit/Sample的编码增益,但实际验证发现在运动矢量精度超过1/8像素后,系统基本上就没有明显增益了,因此,在H.264中,只采用了1/4像素精度的运动矢量模式,而不是采用1/8像素的精度。

  多宏块划分模式估计

  在H.264的预测模式中,一个宏块(MB)可划分成7种不同模式的尺寸,这种多模式的灵活、细微的宏块划分,更切合图像中的实际运动物体的形状,于是,在每个宏块中可包含有1、2、4、8或16个运动矢量。

  多参数帧估计

  在H.264中,可采用多个参数帧的运动估计,即在编码器的缓存中存有多个刚刚编码好的参数帧,编码器从其中选择一个给出更好的编码效果的作为参数帧,并指出是哪个帧被用于预测,这样就可获得比只用上一个刚编码好的帧作为预测帧的更好的编码效果。

  2.小尺寸4?4的整数变换

  视频压缩编码中以往的常用单位为8?8块。在H.264中却采用小尺寸的4?4块,由于变换块的尺寸变小了,运动物体的划分就更为精确。这种情况下,图像变换过程中的计算量小了,而且在运动物体边缘的衔接误差也大为减少。

  当图像中有较大面积的平滑区域时,为了不产生因小尺寸变换带来的块间灰度差异,H.264可对帧内宏块亮度数据的16个4?4块的DCT系数进行第二次4?4块的变换,对色度数据的4个4?4块的DC系数(每个小块一个,共4个DC系数)进行2?2块的变换。

  H.263不仅使图像变换块尺寸变小,而且这个变换是整数操作,而不是实数运算,即编码器和解码器的变换和反变换的精度相同,没有“反变换误差”。

  3.更精确的帧内预测

  在H.264中,每个4?4块中的每个像素都可用17个最接近先前已编码的像素的不同加权和来进行帧内预测。

  4.统一的VLC

  H.264中关于熵编码有两种方法。

  统一的VLC(即UVLC:Universal VLC)。UVLC使用一个相同的码表进行编码,而解码器很容易识别码字的前缀,UVLC在发生比特错误时能快速获得重同步。

  内容自适应二进制算术编码(CABAC:Context Adaptive Binary Arithmetic Coding)。其编码性能比UVLC稍好,但复杂度较高。

  三、性能优势

  H.264与MPEG-4、H.263++编码性能对比采用了以下6个测试速率:32kbit/s、10F/s和QCIF;64kbit/s、15F/s和QCIF;128kbit/s、15F/s和CIF;256kbit/s、15F/s和QCIF;512kbit/s、30F/s和CIF;1024kbit/s、30F/s和CIF。测试结果标明,H.264具有比MPEG和H.263++更优秀的PSNR性能。
H.264的 PSNR比MPEG-4平均要高2dB,比H.263++平均要高3dB。

  四、新的快速运动估值算法

  新的快速运动估值算法UMHexagonS(中国专利)是一种运算量相对于H.264中原有的快速全搜索算法可节约90%以上的新算法,全名叫“非对称十字型多层次六边形格点搜索算法”(Unsymmetrical-Cross Muti-Hexagon Search)”,这是一种整像素运动估值算法。由于它在高码率大运动图像序列编码时,在保持较好率失真性能的条件下,运算量十分低,已被H.264标准正式采纳。

  ITU和 ISO合作发展的 H.264(MPEG-4 Part 10)有可能被广播、通信和存储媒体(CD DVD)接受成为统一的标准,最有可能成为宽带交互新媒体的标准。我国的信源编码标准尚未制定,密切关注H.264的发展,制定我国的信源编码标准的工作正在加紧进行。

  H264标准使运动图像压缩技术上升到了一个更高的阶段,在较低带宽上提供高质量的图像传输是H.264的应用亮点。H.264的推广应用对视频终端、网守、网关、MCU等系统的要求较高,将有力地推动视频会议软、硬件设备在各个方面的不断完善。

南京邮电学院 张 鲲 吴正茂 卢官明
2005年08月19日

  并没有赶流行的心情,只是想学点东西。

  这几天在网上看到一些有关gentoo的评论,也想装上看看,开始真的有点赶流行的心情,可是现在却只是一种学习的心情,因为这个东西我装不上,好像还要编译内核,这项工作我在用别的版本的时候都回避了,这回就得试试了,还好,还是可以学到点东西的,现在感觉自己学的东西还是太少了。

  再说也好几天没有用Linux了,虽然不太喜欢windows,但是还是得用,方便啊。过几天好好看看gentoo的手册,装个看看,不能天天在windows下呆着了,好无聊啊。在Linux下还可以学很多的东西,比如说shell,系统编程,perl,python。当然这些东西在windows下也可以学,但是我还是不知道这些东西学了有什么用,所以还是到Linux下去吧。至少我学的东西可以用一下,别管学的怎么样,先用用看吧。不然永远都不知道自己学的怎么样。

  决定了,周一来装Gentoo.

    在笔记(一)中对struts的一些理解有一些错误,在查阅一些资料后在此将它做些修改.当然,这次修改也不能保证其正确性,只是我这时的理解.

    在(一)中对ActionMapping的理解是错误的,ActionMapping并没有保存了Action的实例,这些实例是由RequestProcessor中的actions域来保存的,其源码如下:

protected HashMap actions = new HashMap();

当有一个请求时调用Action processActionCreate(HttpServletRequest request,

                                         HttpServletResponse response,

                                         ActionMapping mapping)

        throws IOException

函数来得到一个所请求的Action实例,这个函数维护actions域,由源码可以推测,这个actions是一个共享域,应该是由整个应用程序共享的:

synchronized (actions) {…}

在这个代码块中向action中添加或取出一个action的实例.

相对于Action来说,ActionMapping应该是Action的一个装饰器,它继承了ActionConfig,只添加了三个函数,对于不同的请求,都只有一个Action的实例,但是用的ActionMapping来设置此次请求的相关环境,这些ActionMapping是由ModuleConfigImpl来维护的,可以能过ActionMapping的path属性来查找一个ActionMapping的实例.

在这次的学习中了解了Action的一些知识,对struts有了更进一步的理解.在学习过程中只是提出了一些自己的理解,难免有不对之处,望指正.


  在网上看到这么一篇短文.

  一位优秀的商人杰克,有一天告诉他的儿子……

  杰克:我已经决定好了一个女孩子,我要你娶她。

  儿子:我自己要娶的新娘我自己会决定……

  杰克:但我说的这女孩可是比尔·盖茨的女儿喔!

  儿子:哇!那这样的话……

  在一个聚会中,杰克走向比尔·盖茨

  杰克:我来帮你女儿介绍个好丈夫……

  比尔:我女儿还没想嫁人呢……

  杰克:但我说的这年轻人可是世界银行的副总裁喔!

  比尔:哇!那这样的话……

  接着,杰克去见世界银行的总裁

  杰克:我想介绍一位年轻人来当贵行的副总……

  总裁:我们已经有很多位副总裁,够多了……

  杰克:但我说的这年轻人可是比尔盖茨的女婿喔!

  总裁:哇!那这样的话……

  最后,杰克的儿子娶了比尔·盖茨的女儿,又当上世界银行的副总。

  你会怎么想呢,认为他是在骗人吗?这样不好是吗?可是这确实开启了一个人通往成功的大门.在我们的生活中,我们是不是也应该适当的有一些欺骗呢.

  在生意上,也许这会给你带来意想不到的效果,即使被对方知道了你一时的欺骗,在以后的过程中,可以用自己的实力来证明.

   

  通过这几天对Struts的学习,对struts算是小有成效,把自己对struts的一些理解和看法写出来,希望高手指正.

 在web.xml的配置中可以看出.所以的请求都被发送到org.apache.struts.action.ActionServlet类.这个类是一个servlet(我想应该是的),这个servlet我想应该算是controller,页面发送的请求被tomcat封装为HttpServletRequest类的一个实例,(而这个实例正是让我思考了很久的地方).请求被发送到ActionServlet后,该servlet解析路径,得到所请求的Action的名称,用该名称通过struts-config.xml即可找到类名,通过java的反射机制就可以生成该Action的一个实例(这里我想应该是在加载的时候所做的工作,即在加载的时候生成每个Action的一个实例,把这些类放在ActionMapping里,因为每一个Action都是唯一的.).servlet得到Action的一个实例后即调用execute(ActionMapping,ActionForm,HttpServletRequest,HttpServletResponse)函数,

这里的ActionForm是根据提交的数据和FormBeans中所定义的bean类生成的bean实例.HttpServletRequestHttpServletResponse就是对ActionServlet请求的requestresponse.execute执行后返回ActionForwardActionServlet根据它来确定下一页面.但是下一页面不论是jsp页面,还是一个servlet,还都是应用ActionServlet的请求(没设置redirect时,这三个地方都用的同一个request,这样就可以在页面间传送数据,比如说一个对象.).这相servlet中可以保存数据后由jsp页面显示.

       这只是我基于这几天我的学习,和自己的想法写出来的,我并没有看到源码,有一些方面可能会出现理解上的错误,还望高手赐教。

2005年08月16日

悔过书

尊敬的老婆大人:

首先,请准许我向我最爱的老婆大人至以最崇高的敬意和深深的歉意.

8·14特大案件告破以来,我无时无刻不在检讨自己错误,不,不应该说成是错误,这还不够用来形容我的行为.犯下如此罪行,虽落入地狱,为万虫所噬,也不足以赎罪.但老天庇佑,让我能找到如此美丽,善良,温柔,宽宏大量的老婆,以其宽阔的胸襟,给了我一次悔过的机会,阳光再到来到我的世界,我再次见到了光明,看到了希望.

犯下如此罪行,纠其原因,是因为被胜利的喜悦冲晕了头脑,放松了对敌人的警惕,产生了小资思想,这不仅断送自己的锦绣前程,伤害了老婆,最重要的是,这不利于我和老婆取得爱情事业的伟大胜利.作为老婆最爱的老公,我们爱情事业的忠心拥护者,我没能信守对老婆的承诺,辜负了党,辜负了人民,特别是老婆对我的关怀,培养和信任.在敌人糖衣炮弹的攻击下,仅仅因为一点点色诱,就放弃自己的信仰,出卖了自己的灵魂,在道德上应为世人所唾弃,在法律上应该处以急刑.至此,我不得不庆幸能够找到如此美丽,善良,温柔,宽宏大量的老婆,让我理解了爱情的真谛,感受了阳光的温暖.我最亲爱的老婆,你是希望的使者,光明与美丽有化身.只要有了老婆,我的世界处处都有光明与希望,处处都有花香.

痛定思痛,在整个案件侦破、审理的过程中,我犯了如下几点严重错误:

1.放松了警惕,未能经得住色诱.这是8·14特大案件的根本起因.虽说英雄本"色",但岂可朝三暮四,见异思迁,此乃天理所不容.

2.案发后没有及时向老婆大人汇报.在此过程中,我犯了左倾冒险主义错误,以为可以瞒天过海,骗过我美丽可爱,聪明绝顶的老婆大人,但事实证明这是何等的愚蠢.

3.在案件的审理过程中,没有向老婆大人交待实情,惹得红颜大怒.在老婆一再的询问下都没有向老婆汇报实情,还一再的欺骗我温柔善良的老婆,致使老婆伤心痛苦眼泪流,罪过、罪过.

4.案发后仍与当事人联系.虽然只是简单问候,但岂可不分场合,不分时间,如此行为,当以严惩.

5.等等...

真对以上种种,为使我提高警惕,不再犯类似的错误,特此,对我日常生活、工作、学习做如下规范:

1.     好好学习,天天向上,为我们的爱情事业打下坚实的物质基础.

2.     紧记"色字头上一把刀",不可对其它女生有非分之想.

3.     不可与其它女生有过分接触.

4.     对老婆要诚实.对老婆不可有隐瞒、欺骗等行为.

5.     要言听计从.对的要听,不对的也要听.

对此次罪行我以有了深刻的认识,同时相信,通过老婆的不断的教育改造,我一

定能够与老婆一起取得我们爱情事业的伟大胜利.

再次感谢老婆对我的信任,及给我一次改过的机会.

此致

敬礼

                                                                                    爱你的老公:

                                                                                    050816

2005年08月15日

webwork还没学明白就要换struts了,真是无奈啊.