A method for encoding video with a two-dimensional (2D) transform separable to two one-dimensional (1D) transforms. The method receives an array of values for a sub-section of an image, performs a first 1D-transform of the array, transposes the resulting array, and performs a second 1D-transform of the array resulting from the transpose. The method, without performing another transpose, generates a data stream using a transposed scan order based on the values of the array resulting from the second transform. A method for decoding video encoded by a 2D transform, which separable to two 1D transforms. The method receives a data stream containing encoded values for an image, parses out the values into an array using a transposed scan order, performs a first 1D-inverse transform on the array, transposes the resulting array, and performs a second 1D-inverse transform of the array resulting from the transpose to produce a decoded output.
Roger Kumar - San Francisco CA, US Maynard Handley - Cupertino CA, US Thomas Pun - Sunnyvale CA, US Xiaochun Nie - Cupertino CA, US
Assignee:
Apple Inc. - Cupertino CA
International Classification:
G06F 17/14
US Classification:
708401
Abstract:
Some embodiments of the invention provide a method of performing a Discrete Cosine Transform (“DCT”) encoding or decoding coefficients of a data array by (1) multiplying the coefficients by a scalar value before the encoding or decoding, and then (2) dividing the encoded or decoded coefficients by the scalar value. When used in conjunction with fixed-point arithmetic, this method increases the precision of the encoded and decoded results. In addition, some embodiments provide a method of performing a two-dimensional (2D) Inverse Discrete Cosine Transform (“iDCT”). This method splits a pre-multiplication operation of the iDCT into two or more separate stages. When used in conjunction with fixed-point arithmetic, this splitting increases the precision of the decoded results of the iDCT.
Thomas Pun - San Jose CA, US Maynard Handley - Cupertino CA, US Roger Kumar - San Francisco CA, US Xiaochun Nie - Cupertino CA, US
Assignee:
Apple Inc. - Cupertino CA
International Classification:
H04N 7/18
US Classification:
37524029, 37524026
Abstract:
Some embodiments of the invention provide a method of decoding an encoded video signal that includes a plurality of successive encoded images. The method initially receives an encoded image of the video signal. It then decodes the encoded image. The method next examines the decoded image to determine whether the decoded image satisfies at least one criterion for performing a post-filter operation on the decoded image. Only if the decoded image satisfies the criterion, the method performs the post-filter operation on the decoded image. The criterion in some embodiments is whether the amount of time for applying the post-filter operation exceeds the remaining amount of time that the method has to process the received image. Some embodiments of the invention provide a method of post-filtering a current image that was decoded from an encoded video signal, which includes a plurality of successive encoded images. The current image has several sub-sections.
Roger Kumar - San Francisco CA, US Thomas Pun - Sunnyvale CA, US Xiaochun Nie - Cupertino CA, US
Assignee:
Apple Inc - Cupertino CA
International Classification:
G06K 9/00 H04B 1/66
US Classification:
382107, 382305, 37524016
Abstract:
Some embodiments of the invention provide a method of performing motion estimation for an array of image values obtained from a current image. The method starts with an initial estimate of the motion of the current image. The method then determines whether the initial estimate of the motion of the current image array between the current image and a reference image is acceptable. If not, the method specifies a first value for a parameter for performing the motion estimation. Otherwise, the method specifies a second value for the parameter. The method then performs a motion estimation operation based on the specified value of the parameter. One example of a specified parameter is the size of the window that the motion estimation operation uses. Another example is the starting level for a hierarchical motion estimation operation that it performs. A hierarchical motion estimation operation searches the reference frame at several different levels of granularity.
Method Of Performing Rate Control For A Compression System
Xiaochun Nie - Cupertino CA, US Thomas Pun - Sunnyvale CA, US Roger Kumar - San Francisco CA, US
Assignee:
Apple Inc. - Cupertino CA
International Classification:
H04N 7/18
US Classification:
37524003, 37524004
Abstract:
A rate controller for allocating a bit budget for video frames to be encoded is disclosed. The rate controller of the present invention considers many different factors when determining the frame bit budget including: desired video quality, target bit rate, frame type (intra-frame or inter-frame), frame duration, intra-frame frequency, frame complexity, intra-block frequency within an intra-frame, buffer overflow, buffer underflow, and the encoded video frame quality for a possible second pass.
Jim Normile - Los Altos CA, US Thomas Pun - San Jose CA, US Xiaojin Shi - Foster City CA, US Xin Tong - Mountain View CA, US
Assignee:
Apple Inc. - Cupertino CA
International Classification:
H03M 7/00
US Classification:
341 50, 341 51
Abstract:
Techniques for encoding data based at least in part upon an awareness of the decoding complexity of the encoded data and the ability of a target decoder to decode the encoded data are disclosed. In some embodiments, a set of data is encoded based at least in part upon a state of a target decoder to which the encoded set of data is to be provided. In some embodiments, a set of data is encoded based at least in part upon the states of multiple decoders to which the encoded set of data is to be provided.
Thomas Pun - San Jose CA, US Hsi Jung Wu - Sunnyvale CA, US Hyeonkuk Jeong - San Jose CA, US
Assignee:
Apple Inc. - Cupertino CA
International Classification:
H04N 7/15
US Classification:
348 1408
Abstract:
Some embodiments provide an architecture for establishing multi-participant video conferences. This architecture has a central distributor that receives video images from two or more participants. From the received images, the central distributor generates composite images that the central distributor transmits back to the participants. Each composite image includes a set of sub images, where each sub image belongs to one participant. In some embodiments, the central distributor saves network bandwidth by removing each particular participant's image from the composite image that the central distributor sends to the particular participant. In some embodiments, images received from each participant are arranged in the composite in a non-interleaved manner. For instance, in some embodiments, the composite image includes at most one sub-image for each participant, and no two sub-images are interleaved.
Roger Kumar - San Francisco CA, US Thomas Pun - Sunnyvale CA, US Xiaochun Nie - Cupertino CA, US
Assignee:
Apple Inc. - Cupertino CA
International Classification:
H04B 1/66
US Classification:
37524016
Abstract:
A method for adaptively performing motion estimation. In some embodiments, the method initially performs a first motion estimation operation. It then determines whether the estimated error in the result of the first motion estimation is greater than a particular threshold. If not, the method uses the results of the first motion estimation operation. Otherwise, the method selects another motion estimation operation. The method continues in this manner until it performs a motion estimation operation that results in an acceptable estimated error, or until it tries all the motion estimation operations at its disposal. When the method cannot identify a motion estimation operation that produces results with an acceptable estimated error, the method selects the result of the motion estimation operation that produced the best results.