text: for purposes of illustration , the innovations summarized above are incorporated into embodiments of a video encoder and decoder ( codec ) illustrated in fig8 - 9 , which in one embodiment implements a version of the windows media video codec standard ( e . g ., the current version 9 of this standard ). in alternative embodiments , the innovations described herein can be implemented independently or in combination in the context of other digital signal compression systems , and other video codec standards . in general , the depicted video encoder and decoder incorporating the techniques can be implemented in a computing device , such as illustrated in fig7 . additionally , the video encoder and decoder incorporating the techniques can be implemented in dedicated or programmable digital signal processing hardware in other digital signal processing devices . fig7 illustrates a generalized example of a suitable computing environment 700 in which several of the described embodiments may be implemented . the computing environment 700 is not intended to suggest any limitation as to scope of use or functionality , as the techniques and tools may be implemented in diverse general - purpose or special - purpose computing environments . with reference to fig7 , the computing environment 700 includes at least one processing unit 710 and memory 720 . in fig7 , this most basic configuration 730 is included within a dashed line . the processing unit 710 executes computer - executable instructions and may be a real or a virtual processor . in a multi - processing system , multiple processing units execute computer - executable instructions to increase processing power . the memory 720 may be volatile memory ( e . g ., registers , cache , ram ), non - volatile memory ( e . g ., rom , eeprom , flash memory , etc . ), or some combination of the two . the memory 720 stores software 780 implementing a video encoder or decoder . a computing environment may have additional features . for example , the computing environment 700 includes storage 740 , one or more input devices 750 , one or more output devices 760 , and one or more communication connections 770 . an interconnection mechanism ( not shown ) such as a bus , controller , or network interconnects the components of the computing environment 700 . typically , operating system software ( not shown ) provides an operating environment for other software executing in the computing environment 700 , and coordinates activities of the components of the computing environment 700 . the storage 740 may be removable or non - removable , and includes magnetic disks , magnetic tapes or cassettes , cd - roms , dvds , or any other medium which can be used to store information and which can be accessed within the computing environment 700 . the storage 740 stores instructions for the software 780 implementing the video encoder or decoder . the input device ( s ) 750 may be a touch input device such as a keyboard , mouse , pen , or trackball , a voice input device , a scanning device , or another device that provides input to the computing environment 700 . for audio or video encoding , the input device ( s ) 750 may be a sound card , video card , tv tuner card , or similar device that accepts audio or video input in analog or digital form , or a cd - rom or cd - rw that reads audio or video samples into the computing environment 700 . the output device ( s ) 760 may be a display , printer , speaker , cd - writer , or another device that provides output from the computing environment 700 . the communication connection ( s ) 770 enable communication over a communication medium to another computing entity . the communication medium conveys information such as computer - executable instructions , audio or video input or output , or other data in a modulated data signal . a modulated data signal is a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal . by way of example , and not limitation , communication media include wired or wireless techniques implemented with an electrical , optical , rf , infrared , acoustic , or other carrier . the techniques and tools can be described in the general context of computer - readable media . computer - readable media are any available media that can be accessed within a computing environment . by way of example , and not limitation , with the computing environment 700 , computer - readable media include memory 720 , storage 740 , communication media , and combinations of any of the above . the techniques and tools can be described in the general context of computer - executable instructions , such as those included in program modules , being executed in a computing environment on a target real or virtual processor . generally , program modules include routines , programs , libraries , objects , classes , components , data structures , etc . that perform particular tasks or implement particular abstract data types . the functionality of the program modules may be combined or split between program modules as desired in various embodiments . computer - executable instructions for program modules may be executed within a local or distributed computing environment . for the sake of presentation , the detailed description uses terms like “ indicate ,” “ choose ,” “ obtain ,” and “ apply ” to describe computer operations in a computing environment . these terms are high - level abstractions for operations performed by a computer , and should not be confused with acts performed by a human being . the actual computer operations corresponding to these terms vary depending on implementation . fig8 is a block diagram of a generalized video encoder 800 and fig9 is a block diagram of a generalized video decoder 900 . the relationships shown between modules within the encoder and decoder indicate the main flow of information in the encoder and decoder ; other relationships are not shown for the sake of simplicity . in particular , fig8 and 9 generally do not show side information indicating the encoder settings , modes , tables , etc . used for a video sequence , frame , macroblock , block , etc . such side information is sent in the output bit stream , typically after entropy encoding of the side information . the format of the output bit stream can be a windows media video format or another format . the encoder 800 and decoder 900 are block - based and use a 4 : 1 : 1 macroblock format . each macroblock includes four 8 × 8 luminance blocks and four 4 × 8 chrominance blocks . further details regarding the 4 : 1 : 1 format are provided below . the encoder 800 and decoder 900 also can use a 4 : 2 : 0 macroblock format with each macroblock including four 8 × 8 luminance blocks ( at times treated as one 16 × 16 macroblock ) and two 8 × 8 chrominance blocks . alternatively , the encoder 800 and decoder 900 are object - based , use a different macroblock or block format , or perform operations on sets of pixels of different size or configuration . depending on implementation and the type of compression desired , modules of the encoder or decoder can be added , omitted , split into multiple modules , combined with other modules , and / or replaced with like modules . in alternative embodiments , encoder or decoders with different modules and / or other configurations of modules perform one or more of the described techniques . fig8 is a block diagram of a general video encoder system 800 . the encoder system 800 receives a sequence of video frames including a current frame 805 , and produces compressed video information 895 as output . particular embodiments of video encoders typically use a variation or supplemented version of the generalized encoder 800 . the encoder system 800 compresses predicted frames and key frames . for the sake of presentation , fig8 shows a path for key frames through the encoder system 800 and a path for predicted frames . many of the components of the encoder system 800 are used for compressing both key frames and predicted frames . the exact operations performed by those components can vary depending on the type of information being compressed . a predicted frame ( also called p - frame , b - frame , or inter - coded frame ) is represented in terms of prediction ( or difference ) from one or more reference ( or anchor ) frames . a prediction residual is the difference between what was predicted and the original frame . in contrast , a key frame ( also called i - frame , intra - coded frame ) is compressed without reference to other frames . if the current frame 805 is a forward - predicted frame , a motion estimator 810 estimates motion of macroblocks or other sets of pixels of the current frame 805 with respect to a reference frame , which is the reconstructed previous frame 825 buffered in a frame store ( e . g ., frame store 820 ). if the current frame 805 is a bi - directionally - predicted frame ( a b - frame ), a motion estimator 810 estimates motion in the current frame 805 with respect to two reconstructed reference frames . typically , a motion estimator estimates motion in a b - frame with respect to a temporally previous reference frame and a temporally future reference frame . accordingly , the encoder system 800 can comprise separate stores 820 and 822 for backward and forward reference frames . for more information on bi - directionally predicted frames , see u . s . patent application ser . no . ______ , entitled , “ advanced bi - directional predictive coding of video frames ,” filed concurrently herewith . the motion estimator 810 can estimate motion by pixel , ½ pixel , ¼ pixel , or other increments , and can switch the resolution of the motion estimation on a frame - by - frame basis or other basis . the resolution of the motion estimation can be the same or different horizontally and vertically . the motion estimator 810 outputs as side information motion information 815 such as motion vectors . a motion compensator 830 applies the motion information 815 to the reconstructed frame ( s ) 825 to form a motion - compensated current frame 835 . the prediction is rarely perfect , however , and the difference between the motion - compensated current frame 835 and the original current frame 805 is the prediction residual 845 . alternatively , a motion estimator and motion compensator apply another type of motion estimation / compensation . a frequency transformer 860 converts the spatial domain video information into frequency domain ( i . e ., spectral ) data . for block - based video frames , the frequency transformer 860 applies a discrete cosine transform [“ dct ”] or variant of dct to blocks of the pixel data or prediction residual data , producing blocks of dct coefficients . alternatively , the frequency transformer 860 applies another conventional frequency transform such as a fourier transform or uses wavelet or subband analysis . if the encoder uses spatial extrapolation ( not shown in fig8 ) to encode blocks of key frames , the frequency transformer 860 can apply a re - oriented frequency transform such as a skewed dct to blocks of prediction residuals for the key frame . in some embodiments , the frequency transformer 860 applies an 8 × 8 , 8 × 4 , 4 × 8 , or other size frequency transforms ( e . g ., dct ) to prediction residuals for predicted frames . a quantizer 870 then quantizes the blocks of spectral data coefficients . the quantizer applies uniform , scalar quantization to the spectral data with a step - size that varies on a frame - by - frame basis or other basis . alternatively , the quantizer applies another type of quantization to the spectral data coefficients , for example , a non - uniform , vector , or non - adaptive quantization , or directly quantizes spatial domain data in an encoder system that does not use frequency transformations . in addition to adaptive quantization , the encoder 800 can use frame dropping , adaptive filtering , or other techniques for rate control . if a given macroblock in a predicted frame has no information of certain types ( e . g ., no motion information for the macroblock and no residual information ), the encoder 800 may encode the macroblock as a skipped macroblock . if so , the encoder signals the skipped macroblock in the output bit stream of compressed video information 895 . when a reconstructed current frame is needed for subsequent motion estimation / compensation , an inverse quantizer 876 performs inverse quantization on the quantized spectral data coefficients . an inverse frequency transformer 866 then performs the inverse of the operations of the frequency transformer 860 , producing a reconstructed prediction residual ( for a predicted frame ) or a reconstructed key frame . if the current frame 805 was a key frame , the reconstructed key frame is taken as the reconstructed current frame ( not shown ). if the current frame 805 was a predicted frame , the reconstructed prediction residual is added to the motion - compensated current frame 835 to form the reconstructed current frame . a frame store ( e . g ., frame store 820 ) buffers the reconstructed current frame for use in predicting another frame . in some embodiments , the encoder applies a deblocking filter to the reconstructed frame to adaptively smooth discontinuities in the blocks of the frame . the entropy coder 880 compresses the output of the quantizer 870 as well as certain side information ( e . g ., motion information 815 , spatial extrapolation modes , quantization step size ). typical entropy coding techniques include arithmetic coding , differential coding , huffman coding , run length coding , lz coding , dictionary coding , and combinations of the above . the entropy coder 880 typically uses different coding techniques for different kinds of information ( e . g ., dc coefficients , ac coefficients , different kinds of side information ), and can choose from among multiple code tables within a particular coding technique . the entropy coder 880 puts compressed video information 895 in the buffer 890 . a buffer level indicator is fed back to bit rate adaptive modules . the compressed video information 895 is depleted from the buffer 890 at a constant or relatively constant bit rate and stored for subsequent streaming at that bit rate . therefore , the level of the buffer 890 is primarily a function of the entropy of the filtered , quantized video information , which affects the efficiency of the entropy coding . alternatively , the encoder system 800 streams compressed video information immediately following compression , and the level of the buffer 890 also depends on the rate at which information is depleted from the buffer 890 for transmission . before or after the buffer 890 , the compressed video information 895 can be channel coded for transmission over the network . the channel coding can apply error detection and correction data to the compressed video information 895 . fig9 is a block diagram of a general video decoder system 900 . the decoder system 900 receives information 995 for a compressed sequence of video frames and produces output including a reconstructed frame 905 . particular embodiments of video decoders typically use a variation or supplemented version of the generalized decoder 900 . the decoder system 900 decompresses predicted frames and key frames . for the sake of presentation , fig9 shows a path for key frames through the decoder system 900 and a path for predicted frames . many of the components of the decoder system 900 are used for decompressing both key frames and predicted frames . the exact operations performed by those components can vary depending on the type of information being decompressed . a buffer 990 receives the information 995 for the compressed video sequence and makes the received information available to the entropy decoder 980 . the buffer 990 typically receives the information at a rate that is fairly constant over time , and includes a jitter buffer to smooth short - term variations in bandwidth or transmission . the buffer 990 can include a playback buffer and other buffers as well . alternatively , the buffer 990 receives information at a varying rate . before or after the buffer 990 , the compressed video information can be channel decoded and processed for error detection and correction . the entropy decoder 980 entropy decodes entropy - coded quantized data as well as entropy - coded side information ( e . g ., motion information 915 , spatial extrapolation modes , quantization step size ), typically applying the inverse of the entropy encoding performed in the encoder . entropy decoding techniques include arithmetic decoding , differential decoding , huffman decoding , run length decoding , lz decoding , dictionary decoding , and combinations of the above . the entropy decoder 980 frequently uses different decoding techniques for different kinds of information ( e . g ., dc coefficients , ac coefficients , different kinds of side information ), and can choose from among multiple code tables within a particular decoding technique . a motion compensator 930 applies motion information 915 to one or more reference frames 925 to form a prediction 935 of the frame 905 being reconstructed . for example , the motion compensator 930 uses a macroblock motion vector to find a macroblock in a reference frame 925 . a frame buffer ( e . g ., frame buffer 920 ) stores previously reconstructed frames for use as reference frames . typically , b - frames have more than one reference frame ( e . g ., a temporally previous reference frame and a temporally future reference frame ). accordingly , the decoder system 900 can comprise separate frame buffers 920 and 922 for backward and forward reference frames . the motion compensator 930 can compensate for motion at pixel , ½ pixel , ¼ pixel , or other increments , and can switch the resolution of the motion compensation on a frame - by - frame basis or other basis . the resolution of the motion compensation can be the same or different horizontally and vertically . alternatively , a motion compensator applies another type of motion compensation . the prediction by the motion compensator is rarely perfect , so the decoder 900 also reconstructs prediction residuals . when the decoder needs a reconstructed frame for subsequent motion compensation , a frame buffer ( e . g ., frame buffer 920 ) buffers the reconstructed frame for use in predicting another frame . in some embodiments , the decoder applies a deblocking filter to the reconstructed frame to adaptively smooth discontinuities in the blocks of the frame . an inverse quantizer 970 inverse quantizes entropy - decoded data . in general , the inverse quantizer applies uniform , scalar inverse quantization to the entropy - decoded data with a step - size that varies on a frame - by - frame basis or other basis . alternatively , the inverse quantizer applies another type of inverse quantization to the data , for example , a non - uniform , vector , or non - adaptive quantization , or directly inverse quantizes spatial domain data in a decoder system that does not use inverse frequency transformations . an inverse frequency transformer 960 converts the quantized , frequency domain data into spatial domain video information . for block - based video frames , the inverse frequency transformer 960 applies an inverse dct [“ idct ”] or variant of idct to blocks of the dct coefficients , producing pixel data or prediction residual data for key frames or predicted frames , respectively . alternatively , the frequency transformer 960 applies another conventional inverse frequency transform such as a fourier transform or uses wavelet or subband synthesis . if the decoder uses spatial extrapolation ( not shown in fig9 ) to decode blocks of key frames , the inverse frequency transformer 960 can apply a re - oriented inverse frequency transform such as a skewed idct to blocks of prediction residuals for the key frame . in some embodiments , the inverse frequency transformer 960 applies an 8 × 8 , 8 × 4 , 4 × 8 , or other size inverse frequency transforms ( e . g ., idct ) to prediction residuals for predicted frames . when a skipped macroblock is signaled in the bit stream of information 995 for a compressed sequence of video frames , the decoder 900 reconstructs the skipped macroblock without using the information ( e . g ., motion information and / or residual information ) normally included in the bit stream for non - skipped macroblocks . with reference to fig1 , the video encoder 800 / decoder 900 described above implements intelligent differential quantization techniques in a process 1000 that intelligently quantizes / dequantizes at differing strength levels within a frame , such as on a macroblock ( mb ) or a group of mb basis . the techniques use the information gathered from encoding and analysis of the video to classify the importance of different regions of the image and quantize / dequantize them accordingly . more particularly , the video encoder 800 / decoder 900 analyzes the global motion of the video to classify the importance of the regions within a frame . as discussed above , the video encoder 800 gathers motion vector information in the encoding process , which is used in encoding the video ( e . g ., for predictive interframe coding ). this motion vector information is encoded as side information in the compressed bit stream . based on the motion vector information gathered in the encoding process , the video encoder 800 / decoder 900 estimates the global motion of the video ( at action 1010 ), including whether the video is panning left / right / up / down / diagonals or zooming in / out . in one embodiment , the video panning detection can be performed be calculating an aggregate value of the motion vectors within the video frame , and comparing this aggregate value to a motion threshold value . if the aggregate motion vector exceeds the threshold , the video is determined to be panning in the opposite direction . zoom detection in some embodiments of the invention can be performed by calculating an aggregate of the motion vectors for separate quadrants of the video frame , and testing whether the quadrants &# 39 ; aggregate motion vectors are directed inwardly or outwardly . in alternative embodiments , other methods of video panning and zoom detection based on the motion vectors can be used . based on this global motion estimate , the intelligent differential quantization technique then classifies which regions of the video frame may be less important to perceptual quality of the video ( action 1020 ). in particular , if the video is panning toward some direction , the opposite side of the image has less perceptual significance , and can be more coarsely quantized without much impact of overall perceptual quality . for example , if the video is panning towards left , then the right edge of the image will quickly disappear in the following frames . therefore , the quality of the disappearing edge macroblocks can be compromised ( compressed more ) to save bits to either meet the bit rate requirement or to improve quality of other part of images without much perceptual degradation . likewise , if the video is zooming in , the all edges of the image will quickly disappear in the following frames , and the quality of all these disappearing edge macroblocks can be compromised . according to the intelligent differential quantization technique , the video encoder 800 determines the differential quantization to apply to macroblocks in the frame at action 1030 . the regions classified as less perceptually significant are quantized more strongly , which saves bits that can be used to meet bit rate requirements or to decrease the quantization of the macroblocks in regions that are not classified as less perceptually significant . at action 1040 , the video encoder 800 encodes information in the compressed bit stream using a signaling scheme described below for signaling the differential quantization to the video decoder 900 . at decoding , the video decoder 900 reads the signaled differential quantization information , and dequantizes the macroblocks accordingly to decompress the video . with reference to fig1 , the video encoder 800 encodes information for signaling the differential quantization that was applied in compressing the video to the video decoder 900 . in one embodiment , the video encoder 800 encodes side information in the compressed bit stream using a syntax of the windows media video ( wmv ) standard . this syntax structure is described in part in the co - filed patent application entitled , “ coding of motion vector information ,” which is incorporated herein by reference above ; and in the patent application entitled , “ skip macroblock coding ,” filed dec . 16 , 2002 , which also is incorporated herein by reference above . in alternative embodiments , the syntax in which the information used in the intelligent differential quantization can be modified for use in another video compression standard or video coding scheme . fig1 depicts the syntax structure of the side information sent in the compressed bit stream for intelligent differential quantization in this embodiment of the video encoder 800 . this side information includes information at the sequence , frame and macroblock levels of the syntax . as further detailed below , the syntax can represent for individual frames in a video sequence , the different quantization applied to macroblocks in respective regions of the frame or to each macroblock individually . the syntax can represent that different quantization levels are applied to macroblocks on each of the frame &# 39 ; s boundary edges , to pairs of adjacent boundary edges , to all boundary edges , or all macroblocks individually . this permits the syntax to efficiently signal the various regions identified for differential quantization as being less perceptually significant due to panning and / or zooming . on sequence header ( which is sent per video sequence ), this syntax includes a dquant flag 1120 , which is a 2 - bit field that indicates whether or not the quantization step size can vary within a frame . in this syntax , there are three possible values for dquant . if dquant = 0 , then only one quantization step size ( i . e . the frame quantization step size ) is used per frame . if dquant = 1 or 2 , the dquant flag indicates the possibility to quantize each macroblock in the frame differently . on the frame level , a vopdquant field 1110 is made up of several bitstream syntax elements as shown in fig1 . the vopdquant field is present in progressive p picture and interlace i and p pictures in the sequence , when the sequence header dquant field is nonzero . the syntax of the vopdquant field is dependent on the picture type ( whether it &# 39 ; s an i picture or a p picture ) and the value of the dquant flag , as follows . 1 . the macroblocks located on the boundary are quantized with a second quantization step size ( altpquant ) while the rest of the macroblocks are quantized with the frame quantization step size ( pquant ). 2 . the encoder signals two adjacent edges ( per table 1 below ) and those macroblocks located on the two edges are quantized with altpquant while the rest of the macroblocks are quantized with pquant . 3 . the encoder signals one edge and those macroblock located on the edge are quantized with altpquant while the rest of the macroblocks are quantized with pquant . 4 . every single macroblock can be quantized differently . in this case , we will indicate whether each macroblock can select from two quantization steps ( pquant or altpquant ) or each macroblock can be arbitrarily quantized using any step size . the macroblocks located on the boundary are quantized with altpquant while the rest of the macroblocks are quantized with pquant . the dquantfrm field 1131 is a 1 bit value that is present only when dquant = 1 . if dquant = 0 then the current picture is only quantized with pquant . the dqprofile field 1132 is a 2 bits value that is present only when dquant = 1 and dquantrfm = 1 . it indicates where we are allowed to change quantization step sizes within the current picture . this field is coded to represent the location of the differentially quantized region as shown in the code table 1 below . the dqsbedge field 1133 is a 2 bits value that is present when dqprofile = single edge . it indicates which edge will be quantized with altquant , as shown in the following table 2 . the dqsbedge field 1134 is a 2 bits value that is present when dqprofile = double edge . it indicates which two edges will be quantized with altpquant , as shown in the following code table 3 . the dqbilevel field 1135 is a 1 bit value that is present when dqprofile = all macroblock . if dqbilevel = 1 , then each macroblock in the picture can take one of two possible values ( pquant or altpquant ). if dqbilevel = 0 , then each macroblock in the picture can take on any quantization step size . the pqdiff field 1136 is a 3 bit field that encodes either the pquant differential or encodes an escape code . if the pqdiff field does not equal 7 then the pqdiff field encodes the differential and the abspq field does not follow in the bitstream . in this case : if the pqdiff field equals 7 then the abspq field follows in the bitstream and the altpquant value is decoded as : the abspq field 1137 is present in the bitstream if pqdiff equals 7 . in this case , abspq directly encodes the value of altpquant as described above . in view of the many possible embodiments to which the principles of our invention may be applied , we claim as our invention all such embodiments as may come within the scope and spirit of the following claims and equivalents thereto .