1、 The attached document is a Registered Disclosure Document prepared by the proponent identified below. It has been examined by the appropriate SMPTE Technology Committee and is believed to contain adequate information to satisfy the objectives defined in the Scope, and to be technically consistent.
2、This document is NOT a Standard, Recommended Practice or Engineering Guideline, and does NOT imply a finding or representation of the Society. Errors in this document should be reported to the proponent identified below, with a copy to engsmpte.org. All other inquiries in respect of this document, i
3、ncluding inquiries as to intellectual property requirements that may be attached to use of the disclosed technology, should be addressed to the proponent identified below. Proponent contact information: Joan Llach Thomson 2 Independence Way Princeton, NJ 08540 USA Email: NOTICE The technology descr
4、ibed in this Registered Disclosure Document may be the subject of patent rights. The proponent declares that it is willing to license all applicable patents owned or controlled by the Company on a worldwide basis under Reasonable terms and Non-Discriminatory conditions. Attention is drawn to the pos
5、sibility that some of the elements of this document may be the subject of patent rights other than those identified above. SMPTE shall not be held responsible for identifying any or all such patent rights. Page 1 of 18 pages RDD 5-2006 Copyright 2006 by THE SOCIETY OF MOTION PICTURE AND TELEVISION E
6、NGINEERS 3 Barker Avenue, White Plains, NY 10601 (914) 761-1100 Approved March 6, 2006 SMPTE REGISTERED DISCLOSURE DOCUMENT Film Grain Technology Specifications for H.264 | MPEG-4 AVC Bitstreams RDD 5-2006 Page 2 of 18 pages Table of Contents 1 Film Grain Technology Specification . 3 1.1 General 3 1
7、.1.1 Scope 3 1.1.2 Normative References. 3 1.2 Technical Elements. 3 1.2.1 Definitions 3 1.2.2 Abbreviations. 3 1.2.3 Mathematical functions 3 1.3 Introduction 3 1.4 Film grain characteristics SEI message specifications . 4 1.5 Bit-accurate film grain simulation 4 1.5.1 Database of film grain patter
8、ns . 5 1.5.2 Uniform pseudo-random number generator 5 1.5.2.1 Seed initialization . 5 1.5.3 Sequence of operations 6 1.5.3.1 Scale chroma film grain model values . 7 1.5.3.2 Select film grain parameters 7 1.5.3.3 Creation of a film grain block of 88 samples 7 1.5.3.4 Deblocking vertical edges betwee
9、n adjacent blocks 9 1.5.3.5 Blending the film grain with the decoded frame. 9 2 Film Grain Database Definition 9 2.1 Database creation process . 9 2.1.1 Creation of a 6464 block image 9 2.1.2 Computation of a 6464 inverse integer transform. 10 2.1.3 Deblocking of horizontal 88 block edges 10 2.2 Pre
10、-defined values 11 2.2.1 LUT of Gaussian random numbers. 11 2.2.2 LUT of PRNG seeds 13 2.2.3 Transformation matrix . 13 List of Figures Figure 1-1 Shift register with a primitive polynomial modulo 2 5 Figure 1-2 Film grain simulation process. . 6 Figure 1-3 Use of pseudo-random numbers in the decode
11、d frame. . 8 RDD 5-2006 Page 3 of 18 pages 1 Film Grain Technology Specification 1.1 General 1.1.1 Scope This document provides bit-accurate Film Grain Technology specifications for H.264 | MPEG-4 AVC bitstreams. Film grain simulation is an option for H.264 | MPEG-4 AVC video coding layer. These spe
12、cifications make use of film grain characteristics Supplemental Enhancement Information (SEI) messages compliant with Annex D of the ITU-T Recommendation H.264 | ISO/IEC 14496-10 International Standard. 1.1.2 Normative References 1 ITU-T Recommendation H.264 | ISO/IEC 14496-10:2005 International Sta
13、ndard 1.2 Technical Elements 1.2.1 Definitions For the purposes of these specifications, the same terminology as in 1 will be used. 1.2.2 Abbreviations IDR: Instantaneous Decoding Refresh LSB: Least Significant Bit LUT: Look Up Table MSB: Most Significant Bit POC: Picture Order Count PRNG: Pseudo-Ra
14、ndom Number Generator SEI: Supplemental Enhancement Information 1.2.3 Mathematical functions Clip(x, y, z) = x, if z y;z, otherwise Mod(x, y) = x - y * Floor(x/y); defined only for integers x and y, with y 0 Floor(x) = the greatest integer less than or equal to x x % y = remainder of x divided by y;
15、 defined only for integers x and y, with x = 0 and y 0 1.3 Introduction This document provides bit-accurate film grain technology specifications to add film grain to decoded frames from a H.264 | MPEG-4 AVC bitstream. Film grain simulation shall be performed after decoding the video bitstream and pr
16、ior to frame display. The film grain simulation process requires the decoding of film grain characteristics SEI messages, conveyed in ITU-T Rec. H.264 | ISO/IEC 14496-10 bitstreams as specified by the Amendment 1 (Fidelity Range Extensions) 1. Specifications affecting the film grain characteristics
17、SEI message are provided to ensure the technology will meet the requirements of high definition systems in terms of quality and complexity. RDD 5-2006 Page 4 of 18 pages 1.4 Film grain characteristics SEI message specifications The value of the parameters conveyed in an ITU-T Rec. H.264 | ISO/IEC 14
18、496-10 film grain characteristics SEI message are constrained as follows: model_id. It shall be 0, which identifies the film grain simulation model as frequency filtering. separate_colour_description_present_flag. It shall be 0, which indicates that the color space for film grain simulation is the s
19、ame as for encoding. blending_mode_id. It shall be 0, which corresponds to the additive blending mode. log2_scale_factor. It shall be in the range 2, 7 to ensure the film grain simulation can be performed using 16-bit signed integer arithmetic. intensity_interval_lower_bound c i and intensity_interv
20、al_upper_bound c i . For all c and for any intensity value v, there shall be at most one intensity interval i that verifies intensity_interval_lower_bound c i = v, since multi-generational film grain is not allowed. num_model_values_minus1 c . For all c, it shall be in the range 0, 2, which specifie
21、s that band-pass filtering and cross-color correlation are not supported. comp_model_value c i 0 . For all c and i, it shall be in the range 0, 255 to ensure film grain simulation can be performed using 16-bit signed integer arithmetic. comp_model_value c i 1 . For all c and i, it shall be in the ra
22、nge 2, 14, which includes all the required grain patterns. comp_model_value c i 2 . For all c and i, it shall be in the range 2, 14, which includes all the required grain patterns. film_grain_characteristics_repetition_period. It shall be equal to 0 to specify that the film grain characteristics SEI
23、 message applies to the current decoded frame only. NOTE All frames where film grain must be inserted shall be preceded by a film grain characteristics SEI message. This approach ensures bit accuracy in trick mode play, and allows bit-accurate film grain insertion in both decode order and display or
24、der. Combining all the color components c and intensity intervals i in an SEI message, the number of different pairs (comp_model_value c i 1 , comp_model_value c i 2 ) shall be equal or smaller than 10. NOTE The previous constraint applies after scaling the chroma film grain model values, as specifi
25、ed in subclause 1.5.3.1. All the other parameters in the film grain characteristics SEI message specified by the ITU-T Rec. H.264 | ISO/IEC 14496-10 standard have no constraint according to this specification. The following film grain simulation method shall only be used on progressive content. In a
26、n H.264 | MPEG-4 AVC bitstream, this can be ensured by restricting the usage of these specifications to bitstreams where frame_mbs_only_flag equals 1. 1.5 Bit-accurate film grain simulation Upon reception of a film grain characteristics SEI message, film grain simulation is performed in the current
27、decoded frame unless film_grain_characteristics_cancel_flag is 1. If no film grain characteristics SEI message is received for the current decoded frame, then no film grain shall be simulated on the current decoded frame. RDD 5-2006 Page 5 of 18 pages The simulation of film grain applies to all colo
28、r components. Film grain is simulated and added to color component c if comp_model_present_flag c equals 1 in the film grain characteristics SEI message. Bit-accurate film grain simulation is accomplished by specifying: a database of film grain patterns; a uniform pseudo-random number generator; and
29、 a precise sequence of operations. Film grain can be simulated independently for each color component. Monochrome signals can only have grain on the luma component. 1.5.1 Database of film grain patterns The database of film grain patterns derived from the present specifications is composed of 169 pa
30、tterns of 4,096 film grain samples, each representing a 6464 film grain image. The values in the database can be stored in 2s complement form and range from 127 to 127. The film grain pattern database shall be generated according to the method provided in subclause 2. Such method is a bit-accurate i
31、mplementation that allows creating the database during an initialization step. Each film grain pattern is synthesized using a different pair of cut frequencies according to the frequency filtering model. The cut frequencies transmitted in the SEI message are used to access the database of film grain
32、 patterns during the film grain simulation process. 1.5.2 Uniform pseudo-random number generator A uniform pseudo-random number generator, using a primitive polynomial modulo 2 operator, x31+ x3+ 1, is used to randomly select film grain blocks of 88 samples from the film grain patterns of 6464 sampl
33、es stored in the database. The primitive polynomial modulo 2 operator shall be implemented in a 32-bit shift register. At each stage, two random numbers will be extracted from the register by taking the 16 most-significant bits (MSB) and 16 least-significant bits (LSB), as indicated in Figure 1-1. .
34、 .0115161730.16 LSB16 MSB31left shift0150152Figure 1-1 Shift register with a primitive polynomial modulo 2 The pseudo-random number generator shall be updated before getting a new value from the 32-bit shift register. 1.5.2.1 Seed initialization The seed of the pseudo-random number generator used to
35、 simulate film grain on the color component c shall be initialized at the beginning of each frame according to the following equation: ec= Seed_LUT Mod(pic_offset + color_offset c ), 256) (1.1) where pic_offset is defined in subclause 1.5.2.1.1 for H.264 | MPEG-4 AVC bitstreams; RDD 5-2006 Page 6 of
36、 18 pages color_offset 0 = 0, color_offset 1 = 85 and color_offset 2 = 170 provide a different offset for each color component; and finally Seed_LUT is defined in subclause 2.2.2. 1.5.2.1.1 pic_offset definition When decoding H.264 | MPEG-4 AVC bitstreams, pic_offset is defined as follows: pic_offse
37、t = PicOrderCnt(CurrPic) + (PicOrderCnt_offset = 1 (1.2) comp_model_value c i 1 = Clip(2, 14, (comp_model_value c i 1 6 where (m,n) are the coordinates of the top-left corner of the block and decoded_frame c m + k n + l is the decoded sample value at coordinates (m + k, n + l) of color component c.
38、The average value is compared to the SEI message intensity_interval_lower_bound c i and intensity_interval_upper_bound c i parameters, i ranging from 0 to num_intensity_intervals_minus1 c . The value of i for which the block average value is larger or equal than intensity_interval_lower_bound c i an
39、d smaller or equal than intensity_interval_upper_bound c i , denoted by s, shall be used to select the film grain parameters for the current block. If there is no value fulfilling the previous condition, no film grain simulation is performed on the current block. In such case, the film grain block c
40、reation process (subclause 1.5.3.3) shall be skipped and the input to the deblocking filter (subclause 1.5.3.4) shall be an 88 block with all its samples equal to zero. 1.5.3.3 Creation of a film grain block of 88 samples The creation of a film grain block of 88 samples involves two steps: retrievin
41、g a block of 88 film grain samples from the database, and scaling those samples to the proper intensity. The cut frequencies comp_model_value c s 1 and comp_model_value c s 2 determine which pattern of the database is used as source of film grain samples and two randomly generated values select an 8
42、8 block from it. These random values represent a horizontal and vertical offset within the 6464 sample pattern and are created using the following procedure: k_offset = (MSB16(x(r, ec) % 52) k_offset k (log2_scale_factor + 6) where h is equal to comp_model_value c s 1 - 2, v is equal to comp_model_v
43、alue c s 2 - 2, the factor 6 scales the film grain values derived from the process described in subclause 2.1, and BIT0denotes the LSB. x(0,ec) x(0,ec)x(0,ec)x(1,ec)x(0,ec) x(1,ec)x(1,ec)x(1,ec)x(3,ec) x(3,ec)x(3,ec) x(3,ec)x(4,ec) x(4,ec)x(4,ec) x(4,ec)x(2,ec) x(2,ec)x(2,ec) x(2,ec)x(5,ec) x(5,ec)x
44、(5,ec) x(5,ec)8 samples16 samplesFigure 1-3 Use of pseudo-random numbers in a decoded frame component (For simplicity, this example assumes a 4832 sample component.) RDD 5-2006 Page 9 of 18 pages 1.5.3.4 Deblocking vertical edges between adjacent blocks As suggested in 1, a deblocking filter shall b
45、e applied between adjacent film grain blocks to ensure the seamless formation of film grain patterns. According to the present specifications, the deblocking filter applies only to the vertical edges between adjacent blocks. Assuming film grain blocks are simulated in raster scan order and that the
46、left-most samples of fg_block are adjacent to the right-most samples of previous_fg_block, the deblocking filter shall be performed by means of a 3-tap filter as follows: for( k = 0; k 2 previous_fg_block 7 k = (l1 + (l0 2 1.5.3.5 Blending the film grain with the decoded frame At the end of the film
47、 grain simulation process, a deblocked film grain block is added to the corresponding decoded frame block and the result is clipped to 0, 255 prior to display: for( k = 0; k += RBRbT(2.3) where R64is defined in subclause 2.2.3. The clipping of the inverse transformed coefficients shall be performed
48、as follows, and the result shall be stored at the corresponding location of the film grain pattern database: database h v = Clip( -127, 127, b) (2.4) 2.1.3 Deblocking of horizontal 88 block edges The final step in the creation process of a 6464 film grain pattern consists in the deblocking of horizontal 88 block edges. Deblocking is performed by attenuation of sample values according to the following equation: for( l = 0; l 7 database h v k l + 7 = (database h v k l + 7 * deblock_factor v ) 7 where deblock_factor v is defined as: deblock_factor v = 64, 71, 77, 84, 90, 96, 103, 109,