Patents by Inventor Thomas Pun

Thomas Pun has filed for patents to protect the following inventions. This listing includes patent applications that are pending as well as patents that have already been granted by the United States Patent and Trademark Office (USPTO).

  • Publication number: 20090010325
    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.
    Type: Application
    Filed: June 30, 2008
    Publication date: January 8, 2009
    Inventors: Xiaochun Nie, Thomas Pun, Roger Kumar, Hsi-Jung Wu
  • Patent number: 7456760
    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.
    Type: Grant
    Filed: September 11, 2006
    Date of Patent: November 25, 2008
    Assignee: Apple Inc.
    Inventors: Jim Normile, Thomas Pun, Xiaojin Shi, Xin Tong, Hsi-Jung Wu
  • Publication number: 20080240600
    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. The method selects a sub-section of the current image.
    Type: Application
    Filed: June 9, 2008
    Publication date: October 2, 2008
    Inventors: Thomas Pun, Maynard Handley, Roger Kumar, Xiaochun Nie, Hsi-Jung Wu
  • Publication number: 20080232469
    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.
    Type: Application
    Filed: March 10, 2008
    Publication date: September 25, 2008
    Inventors: Xiaochun Nie, Thomas Pun, Roger Kumar, Hsi-Jung Wu
  • Publication number: 20080232475
    Abstract: 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.
    Type: Application
    Filed: April 28, 2008
    Publication date: September 25, 2008
    Inventors: Maynard Handley, Roger Kumar, Thomas Pun, Xiaochun Nie, Hsi-Jung Wu
  • Patent number: 7418037
    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.
    Type: Grant
    Filed: April 30, 2003
    Date of Patent: August 26, 2008
    Assignee: Apple Inc.
    Inventors: Xiaochun Nie, Thomas Pun, Roger Kumar, Hsi-Jung Wu
  • Patent number: 7412080
    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.
    Type: Grant
    Filed: May 21, 2007
    Date of Patent: August 12, 2008
    Assignee: Apple Inc
    Inventors: Roger Kumar, Thomas Pun, Xiaochun Nie, Hsi-Jung Wu
  • Patent number: 7391812
    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. The method selects a sub-section of the current image.
    Type: Grant
    Filed: April 30, 2003
    Date of Patent: June 24, 2008
    Assignee: Apple Inc.
    Inventors: Thomas Pun, Maynard Handley, Roger Kumar, Xiaochun Nie, Hsi-Jung Wu
  • Publication number: 20080147765
    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.
    Type: Application
    Filed: February 25, 2008
    Publication date: June 19, 2008
    Inventors: Roger Kumar, Maynard Handley, Thomas Pun, Xiaochun Nie, Hsi-Jung Wu
  • Patent number: 7379956
    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.
    Type: Grant
    Filed: April 30, 2003
    Date of Patent: May 27, 2008
    Assignee: Apple Inc.
    Inventors: Roger Kumar, Maynard Handley, Thomas Pun, Xiaochun Nie, Hsi-Jung Wu
  • Patent number: 7376280
    Abstract: 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.
    Type: Grant
    Filed: April 30, 2003
    Date of Patent: May 20, 2008
    Assignee: Apple Inc
    Inventors: Maynard Handley, Roger Kumar, Thomas Pun, Xiaochun Nie, Hsi-Jung Wu
  • Publication number: 20080062018
    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.
    Type: Application
    Filed: September 11, 2006
    Publication date: March 13, 2008
    Inventors: Jim Normile, Thomas Pun, Xiaojin Shi, Xin Tong, Hsi-Jung Wu
  • Publication number: 20070217503
    Abstract: Scalable video coding and multiplexing compatible with non-scalable decoders is disclosed. In some embodiments, video data is received and encoded in a manner that renders at least a base layer to be compatible with a non-scalable video encoding standard, including by assigning for at least the base layer default values to one or more scalability parameters. In some embodiments, video data is received and encoded to produce an encoded video data that includes a base layer that conforms to a non-scalable video encoding standard and one or more subordinate non-scalable layers, which subordinate non-scalable layers do not by themselves conform to the non-scalable video encoding standard but which can be combined with the base layer to produce a result that does conform to the non-scalable video encoding standard, such that the result can be decoded by a non-scalable decoder.
    Type: Application
    Filed: February 23, 2007
    Publication date: September 20, 2007
    Inventors: Barin Geoffry Haskell, David William Singer, Thomas Pun, Hsi-Jung Wu, James Oliver Normile
  • Publication number: 20070217514
    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.
    Type: Application
    Filed: May 21, 2007
    Publication date: September 20, 2007
    Inventors: Roger Kumar, Thomas Pun, Xiaochun Nie, Hsi-Jung Wu
  • Patent number: 7239721
    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.
    Type: Grant
    Filed: April 30, 2003
    Date of Patent: July 3, 2007
    Assignee: Apple Inc.
    Inventors: Roger Kumar, Thomas Pun, Xiaochun Nie, Hsi-Jung Wu
  • Publication number: 20070116437
    Abstract: A method for decoding a compressed video data sequence containing one or more coded pixel blocks The compressed video sequence is buffered. Prediction information for each of the coded pixel blocks is reviewed. One or more groups of coded pixet blocks are formed based on the reviewed prediction information such that the coded pixel blocks within a given group have similar prediction dependencies and/or at least do not depend on a reconstructed pixel within a group of received pixel blocks to enable parallel decoding. The formed groups are scheduled for processing and subsequently decoded to produce a decoded video data sequence.
    Type: Application
    Filed: August 4, 2006
    Publication date: May 24, 2007
    Applicant: APPLE COMPUTER, INC.
    Inventors: Thomas PUN, Paul CHANG, Hsi-Jung WU
  • Publication number: 20070116126
    Abstract: An encoder includes an encoder engine, a storage device and a controller to implement an iterative coding process. The encoder engine compresses a selected portion of a data sequence. The storage device stores the compressed portion of the data sequence after each iteration. The controller selects the portion of the data sequence to compress for each iteration. The controller gathers statistics from the compressed portion of the data sequence. The gathered statistics include statistics generated by the selected frames and statistics extrapolated from the selected frames for the non-selected frames. The controller adjusts coding parameters of the encoder engine on each iteration until the gathered statistics meet a specified performance requirement.
    Type: Application
    Filed: March 21, 2006
    Publication date: May 24, 2007
    Inventors: Barin Haskell, Adriana Dumitras, Hsi-Jung Wu, Xin Tong, Thomas Pun
  • Publication number: 20070116124
    Abstract: This invention is directed to a method for decoding coded video data in which decoder performance is regulated based on perceptual masking. The method includes, upon receipt of coded video data, applying the coded video data to a multi-stage decoding process; computing perceptual masking measures for the coded video data; and switching a stage of the decoding process to a lower performance level based on the computed perceptual masking measures. The method may be applied to non-reference frames and reference frames with low numbers of dependent frames. The method provides scalability among decoders to allow for various decoder and/or coded data complexity.
    Type: Application
    Filed: August 4, 2006
    Publication date: May 24, 2007
    Applicant: APPLE COMPUTER, INC.
    Inventors: Hsi-Jung WU, Thomas PUN
  • Publication number: 20060245492
    Abstract: Some embodiments of the invention provide a method for specifying a bit allocation for encoding a set of images in a sequence of video images. The method computes a masking value for one or more images. The method computes a bit allocation for a current image based on the computed masking value of one or more images. In some embodiments, the method further ascertains a total number of bits used for images that have been already encoded before computing the bit allocation. The computed bit allocation for the current image is also based on the total number of bits used in some embodiments of the invention. In some embodiments, the method specifies a bit allocation for the current image by specifying a quantization parameter (QP) value for the current image. The method then adjusts the specified QP value based on a categorization of the current image.
    Type: Application
    Filed: April 28, 2005
    Publication date: November 2, 2006
    Inventors: Thomas Pun, Hsi Wu, Adriana Dumitras
  • Publication number: 20060244819
    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.
    Type: Application
    Filed: April 28, 2005
    Publication date: November 2, 2006
    Inventors: Thomas Pun, Hsi Wu, Hyeonkuk Jeong