WO2002071736A2 - Systems and methods of error resilience in a video decoder - Google Patents

Systems and methods of error resilience in a video decoder Download PDF

Info

Publication number
WO2002071736A2
WO2002071736A2 PCT/US2002/006865 US0206865W WO02071736A2 WO 2002071736 A2 WO2002071736 A2 WO 2002071736A2 US 0206865 W US0206865 W US 0206865W WO 02071736 A2 WO02071736 A2 WO 02071736A2
Authority
WO
WIPO (PCT)
Prior art keywords
error
video
data
coded
packet
Prior art date
Application number
PCT/US2002/006865
Other languages
French (fr)
Other versions
WO2002071736A8 (en
WO2002071736A3 (en
Inventor
Ioannis Katsavounidis
Chung-Chieh Kuo
Original Assignee
Intervideo, Inc.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intervideo, Inc. filed Critical Intervideo, Inc.
Priority to JP2002570518A priority Critical patent/JP2004528752A/en
Priority to EP02713780A priority patent/EP1374578A4/en
Priority to AU2002245609A priority patent/AU2002245609A1/en
Publication of WO2002071736A2 publication Critical patent/WO2002071736A2/en
Publication of WO2002071736A3 publication Critical patent/WO2002071736A3/en
Publication of WO2002071736A8 publication Critical patent/WO2002071736A8/en

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/573Motion compensation with multiple frame prediction using two or more reference frames in a given prediction direction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/65Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using error resilience
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • H04N21/234318Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements by decomposing into objects, e.g. MPEG-4 objects
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/236Assembling of a multiplex stream, e.g. transport stream, by combining a video stream with other content or additional data, e.g. inserting a URL [Uniform Resource Locator] into a video stream, multiplexing software data into a video stream; Remultiplexing of multiplex streams; Insertion of stuffing bits into the multiplex stream, e.g. to obtain a constant bit-rate; Assembling of a packetised elementary stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/434Disassembling of a multiplex stream, e.g. demultiplexing audio and video streams, extraction of additional data from a video stream; Remultiplexing of multiplex streams; Extraction or processing of SI; Disassembling of packetised elementary stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs
    • H04N21/44012Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs involving rendering scenes according to scene graphs, e.g. MPEG-4 scene graphs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/14Picture signal circuitry for video frequency region
    • H04N5/147Scene change detection
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/20Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video object coding
    • H04N19/29Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video object coding involving scalability at the object level, e.g. video object layer [VOL]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W84/00Network topologies
    • H04W84/02Hierarchically pre-organised networks, e.g. paging networks, cellular networks, WLAN [Wireless Local Area Network] or WLL [Wireless Local Loop]
    • H04W84/10Small scale networks; Flat hierarchical networks
    • H04W84/14WLL [Wireless Local Loop]; RLL [Radio Local Loop]

Definitions

  • the invention is related to video decoding techniques, hi particular, the invention relates to systems and methods of error resilient decoding of a video bitstream.
  • a variety of digital video compression techniques have arisen to transmit or to store a video signal with a lower bandwidth or with less storage space.
  • video compression techniques include international standards, such as H.261, H.263, H.263+, H.263++, H.26L, MPEG-1, MPEG-2, MPEG-4, and MPEG-7.
  • DCT discrete cosine transform
  • MC motion compensation
  • Such video compression techniques permit video bitstreams to be efficiently carried across a variety of digital networks, such as wireless cellular telephony networks, computer networks, cable networks, via satellite, and the like.
  • the various mediums used to carry or transmit digital video signals do not always work perfectly, and the transmitted data can be corrupted or otherwise interrupted. Such corruption can include errors, dropouts, and delays. Corruption occurs with relative f equency in some transmission mediums, such as in wireless channels and in asynchronous transfer mode (ATM) networks.
  • ATM asynchronous transfer mode
  • data transmission in a wireless channel can be corrupted by environmental noise, multipath, and shadowing, i another example, data transmission in an ATM network can be corrupted by network congestion and buffer overflow.
  • Corruption in a data stream or bitstream that is carrying video can cause disruptions to the displayed video. Even the loss of one bit of data can result in a loss of synchronization with the bitstream, which results in the unavailability of subsequent bits until a synchronization codeword is received. These errors in transmission can cause frames to be missed, blocks within a frame to be missed, and the like.
  • One drawback to a relatively highly compressed data stream is an increased susceptibility to corruption in the transmission of the data stream carrying the video signal.
  • error concealment techniques can be used in an attempt to hide errors in missing or corrupted blocks.
  • conventional error concealment techniques can be relatively crude and unsophisticated.
  • FEC forward error correction
  • FEC techniques are used to recover corrupted bits, and thus reconstruct data in the event of corruption.
  • FEC techniques disadvantageously introduce redundant data, which increases the bandwidth of the bitstream for the video or decreases the amount of effective bandwidth remaining for the video.
  • FEC techniques are computationally complex to implement.
  • conventional FEC techniques are not compatible with the international standards, such as H.261, H.263, MPEG-2, and MPEG-4, but instead, have to be implemented at a higher, "systems" level.
  • the invention is related to methods and apparatus that conceal errors in images of a corrupted video bitstream.
  • One embodiment conceals errors in a missing or corrupted intra-coded macroblock by linearly interpolating data from other macroblocks that correspond to portions of the image above and below the missing or corrupted macroblock.
  • One embodiment > can utilize substitute motion vectors for a missing or corrupted predictive-coded macroblock.
  • Another embodiment doubles the received motion vectors and references the doubled motion vectors to a previous-previous frame.
  • Another embodiment adaptively selects which concealment or reconstruction technique is applied according to projected error estimates.
  • Another embodiment conceals errors by replacing corrupted or missing data by combining concealment data in a weighted sum to reduce an estimated error.
  • One embodiment of the invention includes a video decoder that conceals errors received in a video bitstream, the video decoder comprising an error detection circuit adapted to detect errors in the video bitstream; a memory device configured to provide an indication of an error in a portion of a video bitstream corresponding to a portion in an image; a control circuit configured to be responsive to an indication of the error in a first portion of the image, where the control circuit is further configured to detect if a second portion above the first portion in the image and if a third portion below the first portion in the image are error-free, where the control circuit is further configured to interpolate between corresponding data in the second portion of the image and corresponding data in the third portion of the data to conceal the error.
  • Another embodiment according to the invention includes a video decoder that adaptively conceals errors received in a video bitstream, the video decoder comprising: a memory module adapted to maintain error values for selected portions of an image; a plurality of error resilience modules that generate images in response to errors; a prediction module adapted to generate a plurality of predictions of error values corresponding to the plurality of error resilience modules; a control module adapted receive an indication of an error in the video bitstream and, in response, to select an error resilience module from the error resilience module based on a comparison of the predictions of error values.
  • One embodiment of the invention includes a video decoder that conceals errors received in a video bitstream, the video decoder comprising: a memory module adapted to maintain error variances for selected portions of an image; a plurality of error resilience modules that generate images in response to errors; a prediction module adapted to generate a plurality of weights corresponding to the plurality of error resilience modules; a control module adapted receive an indication of an error in the video bitstream and, in response, to combine outputs of selected error resilience modules with the weights from the prediction module to conceal the error.
  • One embodiment of the invention includes an optimizer circuit that selectively applies an error concealment technique from among a plurality of error concealment techniques comprising: means for maintaining an estimated error relating to at least a portion of an image; means for using the estimated error to generate a plurality of projected error estimates corresponding to application of an error concealment technique; and means for selecting the error concealment technique that provides the lowest projected error estimate.
  • One embodiment of the invention includes a method of concealing errors in a video decoder comprising: detecting an error in a first portion of a video bitstream that is intra- coded; determining that a second portion of an image above the first portion and a third portion of the image below the first portion are not corrupted; and interpolating pixels in the first portion between a first horizontal row of pixels in the second portion and a second horizontal row of pixels in the third portion to conceal errors when the second portion and the third portion are not corrupted.
  • One embodiment of the invention includes a method of concealing errors in a video decoder comprising: detecting an error in a first portion of a video bitstream that is predictive-coded; providing a substitute motion vector when the error relates to a standard motion vector; using a first reference portion of a previous f ame with the substitute motion vector to reconstruct when the first reference portion is available; and using a second reference portion of a second frame that is prior to the previous frame when the first reference portion of the previous frame is not available.
  • One embodiment of the invention includes a method of adaptively producing a video image comprising: receiving video data for a frame; determining whether the video data is intra-coded or predictive-coded; when the video data is intra-coded: determining whether the intra-coded video data corresponds to an error; concealing the error when the intra-coded video data corresponds to the error; setting an error value that is associated with at least a portion of the video packet to a first predetermined value when the intra-coded video data corresponds to the error; resetting the error value when no error for the intra- coded video data is detected; and using the intra-coded video data when no error for the intra-coded video data is detected; when the video data is predictive-coded, determining whether the predictive-coded video data corresponds to an error; when the predictive-coded video data corresponds to an error: using the predictive-coded video data when no error for the predictive-coded video data is detected and the associated error value is reset; projecting a first estimated error corresponding to use of the predictive-
  • One embodiment of the invention includes a method of producing a video image comprising: receiving data for a video frame; determining whether the video frame is a predictive-coded frame or is an intra-coded frame; performing the following when the video frame is the predictive-coded frame: determining whether a group of video data from the video frame corresponds to an error; when there is no error in the group of video data: determining whether the group of video data is intra-coded or predictive-coded; intra- decoding the group of video data when the group of video data is intra coded; resetting an error variance associated with at least a portion of the group of video data when the group of video data is intra coded; using a first weighted sum to reconstruct a portion of an image corresponding to the group of video data when the video data is intra coded, where the first weighted sum combines results of at least a first and a second technique; and updating the error variance according to the first weighted sum used to reconstruct the portion of the image; and when there is an error in the group of video data:
  • One embodiment of the invention includes a method of selecting an error concealment technique from among a plurality of error concealment techniques comprising: maintaining an estimated error relating to at least a portion of an image; using the estimated error to generate a plurality of projected error estimates corresponding to application of an error concealment technique; and selecting the error concealment technique that provides the lowest projected error estimate.
  • the invention is related to methods and apparatus that recover usable video data from partially corrupted data.
  • Embodiments inspect corrupted data packets and identify the location or locations of an error, whether the corrupted data packet contains data expected to be error-free, and whether the error-free data should be used. Decoding of a packet in both the forward direction and the backward direction can be used to locate a position of an error, hitra-coded macroblocks can also be recovered.
  • a decoder can elect to use or to drop an intra-coded macroblock recovered from a corrupted data packet according to further criteria that is applied to the recovered intra-coded macroblock.
  • One embodiment inspects video bitstream data that has been encoded with an optional data partitioning feature enabled, and retrieves specified data in areas of a corrupted packet that are expected to be free from error.
  • One embodiment of the invention includes a circuit adapted to recover useful data from a video packet that is at least partially corrupted, the circuit comprising: a decoding circuit configured to decode a video packet in a forward direction and in a backward direction, where the decoding circuit detects bit locations of errors first encountered in the forward direction and in the backward direction; a counter adapted to maintain a count of complete macroblocks decoded in the forward direction and in the backward direction; and a control circuit adapted to discard at least a portion of the video packet that corresponds to an overlapping region, where the control circuit is further configured to further discard additional data corresponding to a backtracking amount when there is no overlapping region, where the control circuit is further configured to discard information in incomplete macroblocks, and where the control circuit is adapted to permit use of at least a portion of the remaining data.
  • One embodiment of the invention includes a circuit adapted to recover useful data from a video packet that is at least partially corrupted, the circuit comprising: a data parsing circuit adapted to determine whether a video packet is encoded with data partitioning enabled; an error checking circuit configured to determine whether an error exists ahead of a motion marker of the video packet; and a decoder coupled to the data parsing circuit and to the error checking circuit, where the decoder is adapted to decode at least a portion of the data in the corrupted video packet ahead of the motion marker when data parsing circuit indicates that the video packet is encoded with data partitioning enabled and when the error checking circuit indicates that the error does not exist ahead of the motion marker.
  • One embodiment of the invention includes a circuit adapted to recover useful data from a video packet that is at least partially corrupted, the circuit comprising: means for receiving the video packet; means for ending without recovering data when corruption is detected in at least one of a video packet header of the video packet, a DC portion of the video packet, and a motion vector portion of the video packet; means for initiating decoding of the video packet in a forward direction; means for maintaining a first count of a number of macroblocks decoded without error in the forward direction; means for storing codewords decoded in the forward direction; means for storing a first bit location when an error is first detected in the forward direction; means for initiating decoding of the video packet in a reverse direction; means for maintaining a second count of a number of macroblocks decoded without error in the reverse direction; means for storing codewords decoded in the reverse direction; means for storing a second bit location when an error is first detected in the reverse direction; means for determining if there is an overlapping region, where the
  • One embodiment of the invention includes a method of recovering useful data from a video packet that has been corrupted, the method comprising: receiving the video packet; ending without recovering data when corruption is detected in a video packet header of the video packet; ending without recovering data when corruption is detected in a DC portion of the video packet; ending without recovering data when corruption is detected in a motion vector portion of the video packet; initiating decoding of the video packet in a forward direction; maintaining a first count of a number of macroblocks decoded without error in the forward direction; storing codewords decoded in the forward direction; storing a first bit location when an error is first detected in the forward direction; initiating decoding of the video packet in a reverse direction; maintaining a second count of a number of macroblocks decoded without error in the reverse direction; storing codewords decoded in the reverse direction; storing a second bit location when an error is first detected in the reverse direction; determining if there is an overlapping region, where the overlapping region corresponds to a region identified in both the forward
  • One embodiment of the invention includes method for recovering data in a corrupted video packet comprising: inspecting the video packet to determine whether the video packet was encoded with data partitioning enabled; determining whether an error exists ahead of a motion marker of the video packet; and decoding at least a portion of the data in the corrupted video packet ahead of the motion marker when the video packet was encoded with data partitioning enabled and when the error does not exist ahead of the motion marker.
  • the invention is related to methods and apparatus that advantageously reconstruct and decode video data, such as video object planes (VOPs), using forward error correction (FEC) codes embedded in the video bitstream.
  • VOPs video object planes
  • FEC forward error correction
  • the original video data can be recovered even when portions of the video bitstream are corrupted or lost during transmission.
  • the methods and apparatus disclosed are backward compatible with video bitstreams that are compliant with standard syntax, thereby allowing a decoder to achieve compatibility with both standard video bitstreams and video bitstreams embedded with FEC codes.
  • a decoder retrieves the FEC codes from a user data video packet.
  • an encoder can provide FEC codes corresponding to a subset of the video data, and the decoder can receive and interpret indications as to which data the provided FEC codes correspond.
  • One embodiment of the invention includes a video decoder adapted to reconstruct corrupted video data comprising: a receiver circuit adapted to receive a video bitstream; a buffer coupled to the receiver circuit, where the buffer is adapted to store at least a portion of the video bitstream; a parsing circuit adapted to distinguish video data from forward error correction (FEC) codes; an error monitoring circuit configured to detect corruption in the video data; and an FEC decoder adapted to receive the video data and the FEC codes, where the FEC decoder is configured to remove the corruption in the video data to which the FEC codes apply.
  • FEC forward error correction
  • One embodiment of the invention includes a video decoder that decodes a video bitstream that includes forward error correction (FEC) codes, the video decoder comprising: means for receiving the video bitstream, which includes both video data and FEC codes; means for retrieving video data from the video bitstream; means for determining if there is corruption in a portion of the video data retrieved; means for retrieving FEC codes from the video bitstream in response to a detection of corruption; and means for using the FEC codes to reconstruct the portion of the video data such that the portion of the video data is recovered without corruption.
  • FEC forward error correction
  • One embodiment of the invention includes a process of decoding a video bitstream that includes forward error correction (FEC) codes, the process comprising: receiving the video bitstream, which includes both video data and FEC codes; retrieving video data from the video bitstream; determining if there is corruption in a portion of the video data retrieved; retrieving FEC codes from the video bitstream in response to a detection of corruption; and using the FEC codes to reconstruct the portion of the video data such that the portion of the video data is recovered without corruption.
  • FEC forward error correction
  • One embodiment of the invention includes a process of decoding a video bitstream that includes forward error correction (FEC) codes, the process comprising: receiving the video bitstream, which includes both video data and FEC codes; retrieving video data from the video bitstream; determining if FEC codes that correspond to the retrieved video data are available; retrieving FEC codes from the video bitstream when the FEC codes are available; and using the FEC codes to decode the portion of the video data such that the portion of the video data is recovered without corruption.
  • FEC forward error correction
  • the invention is related to methods and apparatus that manage data received in a video bitstream.
  • Video data received from the video bitstream is placed in a ring buffer, which is also known as a circular buffer.
  • Data logging information is also stored in the ring buffer, hi one embodiment, the data logging information is stored synchronously or in alignment with the corresponding video data.
  • the data logging information can include a status of whether the corresponding video data with or without error.
  • the ring buffer provides fast and efficient access to video bitstream data that may be accessed multiple times in multiple directions by modules that extract data from the video bitstream in an error resilient manner.
  • One embodiment of the invention includes a data buffer circuit for a video decoder comprising: a receiver circuit adapted to receive a video bitstream; a ring buffer adapted to store the video bitstream; and an error resilience module adapted to retrieve data from the ring buffer.
  • One embodiment of the invention includes a data buffer circuit for a video decoder comprising: means for receiving a video bitstream; means for inspecting the video bitstream for error; means for storing the video bitstream in a ring buffer regardless of an error indication; means for storing data logging information corresponding to video bitstream data in the ring buffer in an aligned manner with the corresponding video bitstream data; and means for automatically retrieving both a portion of the video bitstream and a corresponding portion of the data logging information from the ring buffer in response to a request for data.
  • One embodiment of the invention includes a method of accessing information from a video bitstream comprising: receiving a video bitstream; inspecting the video bitstream for error; storing the video bitstream in a ring buffer regardless of an error indication; storing data logging information corresponding to video bitstream data in the ring buffer in an aligned manner with the corresponding video bitstream data; and automatically retrieving both a portion of the video bitstream and a corresponding portion of the data logging information from the ring buffer in response to a request for data.
  • Figure 1 illustrates a networked system for implementing a video distribution system in accordance with one embodiment of the invention.
  • Figure 2 illustrates a sequence of frames.
  • Figure 3 is a flowchart generally illustrating a process of concealing errors or missing data in a video bitstream.
  • Figure 4 illustrates a process of temporal concealment of missing motion vectors.
  • Figure 5 is a flowchart generally illustrating a process of adaptively concealing errors in a video bitstream.
  • Figure 6 is a flowchart generally illustrating a process that can use weighted predictions to compensate for errors in a video bitstream.
  • Figure 7A illustrates a sample of a video packet with DC and AC components for an I-VOP.
  • Figure 7B illustrates a video packet for a P-VOP.
  • Figure 8 illustrates an example of discarding a corrupted macroblock.
  • Figure 9 is a flowchart that generally illustrates a process according to an embodiment of the invention of partial RVLC decoding of discrete cosine transform (DCT) portions of corrupted packets
  • DCT discrete cosine transform
  • FIGS 10-13 illustrate partial RVLC decoding strategies.
  • Figure 14 illustrates a partially corrupted video packet with at least one intra-coded macroblock.
  • Figure 15 illustrates a sequence of macroblocks with AC prediction.
  • Figure 16 illustrates a bit structure for an MPEG-4 data partitioning packet.
  • Figure 17 illustrates one example of a tradeoff between block error rate (BER) correction capability versus overhead.
  • BER block error rate
  • Figure 18 illustrates a video bitstream with systematic FEC data.
  • Figure 19 is a flowchart generally illustrating a process of decoding systematically encoded FEC data in a video bitstream.
  • Figure 20 is a block diagram generally illustrating one process of using a ring buffer in error resilient decoding of video data.
  • the display of video can consume a relatively large amount of bandwidth, especially when the video is displayed in real time.
  • packets may be lost or unacceptably delayed.
  • the packet may not be usable for decoding of the video bitstream in real time.
  • Embodiments of the invention advantageously compensate for and conceal errors that occur when packets of data in a video bitstream are delayed, dropped, or lost. Some embodiments reconstruct the original data from other data.
  • embodiments conceal or hide the result of errors so that a corresponding display of the video bitstream exhibits relatively fewer errors, thereby effectively increasing the signal-to-noise ratio (SNR) of the system. Further advantageously, embodiments of the invention can remain downward compatible with video bitstreams that are compliant with existing video encoding standards.
  • FIG. 1 illustrates a networked system for implementing a video distribution system in accordance with one embodiment of the invention.
  • An encoding computer 102 receives a video signal, which is to be encoded to a relatively compact and robust format.
  • the encoding computer 102 can correspond to a variety of machine types, including general purpose computers that execute software and to specialized hardware.
  • the encoding computer 102 can receive a video sequence from a wide variety of sources, such as via a satellite receiver 104, a video camera 106, and a video conferencing terminal 108.
  • the video camera 106 can correspond to a variety of camera types, such as video camera recorders, Web cams, cameras built into wireless devices, and the like.
  • Video sequences can also be stored in a data store 110.
  • the data store 110 can be internal to or external to the encoding computer 102.
  • the data store 110 can include devices such as tapes, hard disks, optical disks, and the like. It will be understood by one of ordinary skill in the art that a data store, such as the data store 110 illustrated in Figure 1, can store unencoded video, encoded video, or both.
  • the encoding computer 102 retrieves unencoded video from a data store, such as the data store 110, encodes the unencoded video, and stores the encoded video to a data store, which can be the same data store or another data store.
  • a source for the video can include a source that was originally taken in a film format.
  • the encoding computer 102 distributes the encoded video to a receiving device, which decodes the encoded video.
  • the receiving device can correspond to a wide variety of devices that can display video.
  • the receiving devices shown in the illustrated networked system include a cell phone 112, a personal digital assistant (PDA) 114, a laptop computer 116, and a desktop computer 118.
  • the receiving devices can communicate with the encoding computer 102 through a communication network 120, which can correspond to a variety of communication networks including a wireless communication network. It will be understood by one of ordinary skill in the art that a receiving device, such as the cell phone 112, can also be used to transmit a video signal to the encoding computer 102.
  • the encoding computer 102 can correspond to a wide variety of computers.
  • the encoding computer 102 can be any microprocessor or processor (hereinafter referred to as processor) controlled device, including, but not limited to a terminal device, such as a personal computer, a workstation, a server, a client, a mini computer, a main-frame computer, a laptop computer, a network of individual computers, a mobile computer, a palm top computer, a hand held computer, a set top box for a TV, an interactive television, an interactive kiosk, a personal digital assistant (PDA), an interactive wireless communications device, a mobile browser, a Web enabled cell phone, or a combination thereof.
  • the computer may further possess input devices such as a keyboard, a mouse, a trackball, a touch pad, or a touch screen and output devices such as a computer screen, printer, speaker, or other input devices now in existence or later developed.
  • the encoding computer 102 can correspond to a uniprocessor or multiprocessor machine.
  • the computers can include an addressable storage medium or computer accessible medium, such as random access memory (RAM), an electronically erasable programmable read-only memory (EEPROM), hard disks, floppy disks, laser disk players, digital video devices, Compact Disc ROMs, DVD-ROMs, video tapes, audio tapes, magnetic recording tracks, electronic networks, and other techniques to transmit or store electronic content such as, by way of example, programs and data, hi one embodiment, the computers are equipped with a network communication device such as a network interface card, a modem, Infra-Red (IR) port, or other network connection device suitable for connecting to a network.
  • IR Infra-Red
  • the computers execute an appropriate operating system, such as Linux, Unix, Microsoft® Windows® 3.1, Microsoft® Windows® 95, Microsoft® Windows® 98, Microsoft® Windows® NT, Microsoft® Windows® 2000, Microsoft® Windows® Me, Microsoft® Windows® XP, Apple® MacOS®, IBM® OS/2®, Microsoft® Windows® CE, or Palm OS®.
  • the appropriate operating system may advantageously include a communications protocol implementation, which handles all incoming and outgoing message traffic passed over the network, which can include a wireless network, h other embodiments, while the operating system may differ depending on the type of computer, the operating system may continue to provide the appropriate communications protocols necessary to establish communication links with the network.
  • Figure 2 illustrates a sequence of frames.
  • a video sequence includes multiple video frames taken at intervals.
  • the rate at which the frames are displayed is referred to as the frame rate
  • motion video techniques relate a frame at time k to a frame at time k-l to further compress the video information into relatively small amounts of data.
  • an error such as a transmission error
  • conventional video techniques may not be able to properly decode the frame at time k.
  • embodiments of the invention advantageously decode the video stream in a robust manner such that the frame at time k can be decoded even when the frame at time k-l is not available.
  • the frames in a sequence of frames can correspond to either interlaced frames or to non-interlaced frames, i.e., progressive frames, h an interlaced frame, each frame is made of two separate fields, which are interlaced together to create the frame. No such interlacing is performed in a non-interlaced or progressive frame.
  • the MPEG-4 standard is defined in "Coding of Audio- Visual Objects: Systems," 14496-1, ISO/TEC JTC1/SC29/WG11 N2501, November 1998, and “Coding of Audio- Visual Objects: Visual,” 14496-2, ISO/TEC JTC1/SC29/WG11 N2502, November 1998, and the MPEG-4 Video Verification Model is defined in ISO/TEC JTC 1/SC 29/WG 11, "MPEG-4 Video Verification Model 17.0,” ISO/TEC JTC1/SC29/WG11 N3515, Beijing, China, July 2000.
  • a frame is encoded into multiple blocks, and each block is encoded into six macroblocks.
  • the macroblocks include information, such as luminance and color, for composing a frame.
  • a frame may be encoded as a still frame, i.e., an intra-coded frame
  • frames in a sequence of frames can be temporally related to each other, i.e., predictive-coded frames, and the macroblocks can relate a section of one frame at one time to a section of another frame at another time.
  • a frame in a sequence of frames is further encoded into a number of video objects known as video object planes (VOPs).
  • VOPs video object planes
  • a frame can be encoded into a single VOP or in multiple VOPs.
  • each frame includes only one VOP so that a VOP is a frame.
  • the VOPs are transmitted to a receiver, where they are decoded by a decoder back into video objects for display.
  • a VOP can correspond to an intra-coded VOP (I-VOP), to a predictive-coded VOP (P-VOP) to a bidirectionally-predictive coded VOP (B-VOP), or to a sprite VOP (S-VOP).
  • I-VOP intra-coded VOP
  • P-VOP predictive-coded VOP
  • B-VOP bidirectionally-predictive coded VOP
  • S-VOP sprite VOP
  • An I-VOP is not dependent on information from another frame or picture, i.e., an I-VOP is independently decoded.
  • I- Frame When a frame consists entirely of I- VOPs, the frame is called an I- Frame. Such frames are commonly used in situations such as a scene change. Although the lack of dependence on content from another frame allows an I-VOP to be robustly transmitted and received, an I-VOP disadvantageously consumes a relatively large amount of data or data bandwidth as compared to a P-VOP or B-VOP. To efficiently compress and transmit video, many VOPs in video frames correspond to P-VOPs.
  • a P-VOP efficiently encodes a video object by referencing the video object to a past VOP, i.e., to a video object (encoded by a VOP) earlier in time.
  • This past VOP is referred to as a reference VOP.
  • motion compensation encoded in a P-VOP can be used to encode the video object with less information than with an I-VOP.
  • the reference VOP can be either an I-VOP or a P-VOP.
  • a B-VOP uses both a past VOP and a future VOP as reference VOPs. hi a real-time video bitstream, a B-VOP should not be used. However, the principles and advantages described herein can also apply to a video bitstream with B-VOPs.
  • An S-VOP is used to display animated objects.
  • the encoded VOPs are organized into macroblocks.
  • a macroblock includes sections for storing luminance (brightness) components and sections for storing chrominance (color) components.
  • the macroblocks are transmitted and received via the communication network 120.
  • the communication of the data can further include other communication layers, such as modulation to and demodulation from code division multiple access (CDMA).
  • CDMA code division multiple access
  • the video bitstream can also include corresponding audio information, which is also encoded and decoded.
  • Figure 3 is a flowchart 300 generally illustrating a process of concealing errors or missing data in a video bitstream.
  • the errors can correspond to a variety of problems or unavailability including a loss of data, a corruption of data, a header error, a syntax error, a delay in receiving data, and the like.
  • the process of Figure 3 is relatively unsophisticated to implement and can be executed by relatively slow decoders.
  • the process Upon the detection of an error, the process starts at a first decision block 304.
  • the first decision block 304 determines whether the error relates to infra-coding or predictive- coding. It will be understood by the skilled practitioner that the infra-coding or predictive- coding can refer to frames, to macroblocks, to video object planes (VOPs), and the like. While illustrated in the context of macroblocks, the skilled artisan will appreciate that the principles and advantages described in Figure 3 also apply to video object planes and the like.
  • the process proceeds from the first decision block 304 to a first state 308 when the error relates to an intra-coded macroblock. When the error relates to a predictive-coded macroblock, the process proceeds from the first decision block 304 to a second decision block 312. It will be understood that the error for a predictive-coded macroblock can arise from a missing macroblock in a present frame at time t, or from an error in a reference frame at time t-1 from which motion is referenced.
  • the process interpolates or spatially conceals the error in the intra-coded macroblock, termed a missing macroblock.
  • the process conceals the error in the missing macroblock by linearly interpolating data from an upper macroblock that is intended to be displayed "above” the missing macroblock in the image, and from a lower macroblock that is intended to be displayed "below” the missing macroblock in the image. Techniques other than linear interpolation can also be used.
  • the process can vertically linearly interpolate using a line denoted lb copied from the upper macroblock and a line denoted It copied from the lower macroblock.
  • the process uses the lowermost line of the upper macroblock as lb and the topmost line of the lower macroblock as It.
  • the upper macroblock and/or the lower macroblock may also not be available.
  • the upper macroblock and/or the lower macroblock may have an error.
  • the missing macroblock may be located at the upper boundary of an image or at the lower boundary of the image.
  • One embodiment of the invention uses the following rules to conceal errors in the missing macroblock when linear interpolation between the upper macroblock and the lower macroblock is not applicable.
  • the topmost line of the lower macroblock is used as lb. If the lower macroblock is also missing, the topmost line of the next-lower macroblock in the image is used as lb, and so forth, if further lower macroblocks are missing. If all the lower macroblocks are missing, a gray line is used as lb.
  • lb the lowermost line of the upper macroblock
  • pixels that are associated with a block with an error are stored as a "0," which corresponds to green pixels in a display.
  • Gray pixels can be closer than green to the colors associated with a missing block, and simulation tests have observed a 0.1 dB improvement over the green pixels with relatively little or no increase in complexity.
  • the gray pixel color can be implemented by a copy instruction.
  • the second decision block 312 determines whether another motion vector is available to be used for the missing macroblock.
  • the video bitstream may also include another motion vector, such as a redundant motion vector, which can be used instead of a standard motion vector in the missing macroblock.
  • a redundant motion vector is estimated by doubling the standard motion vector.
  • One embodiment of the redundant motion vector references motion in the present frame at time t to a frame at time t-2. When both the frame at time t-2 and the redundant motion vector are available, the process proceeds from the second decision block 312 to a second state 316, where the process reconstructs the missing macroblock from the redundant motion vector and the frame at time t-2.
  • the process proceeds from the second decision block 312 to a third decision block 320.
  • the process determines whether the error is due to a predictive-coded macroblock missing in the present frame, i.e., missing motion vectors.
  • the process proceeds from the third decision block 320 to a third state 324.
  • the process proceeds from the third decision block 320 to a fourth decision block 328.
  • the process substitutes the missing motion vectors in the missing macroblock to provide temporal concealment of the error.
  • temporal concealment of missing motion vectors is described in greater detail later in connection with Figure 4. The process advances from the third state 324 to the fourth decision block 328.
  • the process determines whether an error is due to a missing reference frame, e.g., the frame at time t-1. If the reference frame is available, the process proceeds from the fourth decision block 328 to a fourth state 332, where the process uses the reference frame and the substitute motion vectors from the third state 324. Otherwise, the process proceeds to a fifth state 336.
  • a missing reference frame e.g., the frame at time t-1.
  • the process uses a frame at time t-k as a reference frame. Where the frame corresponds to the previous-previous frame, k can equal 2. hi one embodiment, the process multiplies the motion vectors that were received in the macroblock or substituted in the third state 324 by a factor, such as 2 for linear motion, to conceal the error. The skilled practitioner will appreciate that other appropriate factors may be used depending on the motion characteristics of the video images. The process proceeds to end until the next error is detected.
  • Figure 4 illustrates an exemplary process of temporal concealment of missing motion vectors.
  • a macroblock includes four motion vectors.
  • the missing motion vectors of a missing macroblock 402 are substituted with motion vectors copied from other macroblocks.
  • the missing motion vectors of the missing macroblock 402 are substituted with motion vectors interpolated from other macroblocks.
  • the process copies motion vectors from an upper macroblock 404, which is above the missing macroblock 402, and copies motion vectors from a lower macroblock 406, which is below the missing macroblock 402.
  • the missing macroblock 402 corresponds to a first missing motion vector 410, a second missing motion vector 412, a third missing motion vector 414, and a fourth missing motion vector 416.
  • the upper macroblock 404 includes a first upper motion vector 420, a second upper motion vector 422, a third upper motion vector 424, and a fourth upper motion vector 426.
  • the lower macroblock 406 includes a first lower motion vector 430, a second lower motion vector 432, a third lower motion vector 434, and a fourth lower motion vector 436.
  • the illustrated process uses the third upper motion vector 424 as the first missing motion vector 410, the fourth upper motion vector 426 as the second missing motion vector 412, the first lower motion vector 430 as the third missing motion vector 414, and the second lower motion vector 432 as the fourth missing motion vector 416.
  • the process sets both the first missing motion vector 410 and the second missing motion vector 412 to the zero vector (no motion).
  • the process uses the first lower motion vector 430 as the third missing motion vector 414, and the second lower motion vector 432 as the fourth missing motion vector 416.
  • the process sets the third missing motion vector 414 equal to the value used for. the first missing motion vector 410, and the process sets the fourth missing motion vector 416 equal to the value used for the second missing motion vector 412.
  • the missing motion vectors of the missing macroblock 402 are substituted with motion vectors interpolated from other macroblocks.
  • Figure 5 is a flowchart 500 generally illustrating a process of adaptively concealing errors in a video bitstream.
  • the process of Figure 5 adaptively selects a concealment mode such that the error-concealed or reconstructed images can correspond to relatively less distorted image.
  • Simulation tests predict improvements of up to about 1.5 decibels (dB) in peak signal to noise ratio.
  • the process of Figure 5 can be used to select an error concealment mode even when data for a present frame is received without an error.
  • the process can receive three consecutive frames.
  • a first frame is cleanly received.
  • a second frame is received with a relatively high-degree of corruption.
  • Data for a third frame is cleanly received, but reconstruction of a portion of the third frame depends on portions of the second frame, which was received with a relatively high-degree of corruption.
  • it can be advantageous to conceal portion of the third frame because portions of the third frame depend on a portions of a corrupted frame.
  • the process illustrated in Figure 5 can advantageously identify when error concealment techniques should be invoked even when such error concealment techniques would not be needed by standard video decoders to provide a display of the corresponding image.
  • the process starts in a first state 504, where the process receives data from the video bitstream for the present frame, i.e., the frame at time t. A portion of the received data may be missing, due to an error, such as a dropout, corruption, delay, and the like.
  • the process advances from the first state 504 to a first decision block 506. i the first decision block 506, the process determines whether the data under analysis corresponds to an intra-coded video object plane (I-VOP) or to a predictive-coded VOP (P-VOP). It will be understood by one of ordinary skill in the art that the process can operate at different levels, such as on macroblocks or frames, and that a VOP can be a frame.
  • the process proceeds from the first decision block 506 to a second decision block 510 when the VOP is an I-VOP. Otherwise, i.e., the VOP is a P-VOP, the process proceeds to a third decision block 514.
  • the process determines whether there is an error in the received data for the I-VOP.
  • the process proceeds from the second decision block 510 to a second state 518 when there is an error. Otherwise, the process proceeds to a third state 522.
  • the process conceals the error with spatial concealment techniques, such as the spatial concealment techniques described earlier in connection with the first state 308 of Figure 3.
  • the process advances from the second state 518 to a fourth state 526.
  • the process sets an error value to an error predicted for the concealment technique used in the second state 518.
  • One embodiment normalizes the error to a range between 0 and 255, where 0 corresponds to no error, and 255 corresponds to a maximum error.
  • the error value can correspond to 255.
  • the error value is retrieved from a table of pre-calculated error estimates.
  • the pixels adjacent to error-free pixels are typically more faithfully concealed than the pixels that are farther away from the error-free pixels.
  • an error value is modeled as 97 for pixels adjacent to error-free pixels, while other pixels are modeled with an error value of 215.
  • the error values can be maintained in a memory array on a per-pixel basis, can be maintained for only a selection of pixels, can be maintained for groups of pixels, and so forth.
  • the process has received an error-free I-VOP and clears (to zero) the error value for the corresponding pixels of the VOP.
  • I-VOP error-free value
  • other values can be arbitrarily selected to indicate an error-free state.
  • the process advances from the third state 522 to a fifth state 530, where the process constructs the VOP from the received data and ends. The process can be reactivated to process the next VOP received.
  • the process determines whether the P- VOP includes an error. When there is an error, the process proceeds from the third decision block 514 to a fourth decision block 534. Otherwise, the process proceeds to an optional sixth state 538. hi the fourth decision block 534, the process determines whether the error values for the corresponding pixels are zero or not. If the error values are zero and there is no error in the data of the present P-VOP, then the process proceeds to the fifth state 520 and constructs the VOP with the received data as this corresponds to an error-free condition. The process then ends or waits for the next VOP to be processed. If the error values are non-zero, then the process proceeds to a seventh state 542.
  • the process projects the estimate error value, i.e., a new error value, that would result if the process uses the received data. For example, if a previous frame contained an error, that error may propagate to the present frame by decoding and using the P-VOP of the present frame.
  • the estimated error value is about 103 plus an error propagation term, which depends on the previous error value.
  • the error propagation term can also include a "leaky" value, such as 0.93, to reflect a slight loss in error propagation per frame.
  • the process advances from the seventh state 542 to an eighth state 546. hi the eighth state 546, the process projects the estimated error value that would result if the process used an error resilience technique.
  • the error resilience technique can correspond to a wide variety of teclmiques, such as an error concealment technique described in connection with Figures 3 and 4, the use of additional motion vectors that reference other frames, and the like. Where the additional motion vector references the previous-previous frame, one embodiment uses an error value of 46 plus the propagated error. It will be recognized that a propagated error in a previous frame can be different than a propagated error in a previous-previous frame, hi one embodiment, the process projects the estimated error values that would result from a plurality of error resilience techniques. The process advances from the eighth state 546 to a ninth state 550. hi the ninth state 550, the process selects between using the received data and using an error resilience technique.
  • the process selects between using the received data and using one of multiple error resilience techniques.
  • the construction, concealment, or reconstruction technique that provides the lowest projected estimated error value is used to construct the corresponding portion of the image.
  • the process advances from the ninth state 550 to a tenth state 554, where the process updates the affected error values according to the selected received data or error resilience technique used to generate the frame, and the process ends. It will be understood that the process can then wait until the next VOP is received, and the process can reactivate to process the next VOP.
  • the process computes the projected error values with multiple error resilience techniques. The error resilience technique that indicates the lowest projected estimated error value is selected.
  • the process advances from the optional sixth state 538 to an eleventh state 558.
  • the process applies the error resilience technique selected in the optional sixth state 538.
  • the optional sixth state 538 need not be present, and the process can apply the error resilience technique in the eleventh state 558 without a selection process.
  • the process advances from the from the eleventh state 558 to a twelfth state 562, where the process updates the corresponding error values in accordance with the error resilience technique applied in the eleventh state 558.
  • the process then ends and can be reactivated to process future VOPs.
  • Figure 6 is a flowchart 600 generally illustrating a process that can use weighted predictions to compensate for errors in a video bitstream.
  • One embodiment of the process is relatively less complex to implement than adaptive techniques.
  • the illustrated process receives a frame of data and processes the data one macroblock at a time. It will be understood that when errors in transmission arise, the process may not receive an entire frame of data. Rather, the process can start processing the present frame upon other conditions, such as determining that the timeframe for receiving the frame has expired, or receiving data for the subsequent frame, and the like.
  • the process starts in a first decision block 604, where the process determines whether the present frame is a predictive-coded frame (P-frame) or is an intra-coded frame (I-frame).
  • the process proceeds from the first decision block 604 to a second decision block 608 when the present frame corresponds to an I-frame.
  • the process proceeds from the first decision block 604 to a third decision block 612.
  • the process determines whether the macroblock under analysis includes an error.
  • the macroblock under analysis can correspond to the first macroblock of the frame and end with the last macroblock of the frame. However, the order of analysis can vary.
  • the error can correspond to a variety of anomalies, such as missing data, syntax errors, checksum errors, and the like.
  • the process proceeds from the second decision block 608 to a first state 616 when no error is detected in the macroblock. If an error is detected in the macroblock, the process proceeds to a second state 620. hi the first state 616, the process decodes the macroblock. All macroblocks of an intra-coded frame are intra-coded. An intra-coded macroblock can be decoded without reference to other macroblocks.
  • the process advances from the first state 616 to a third state 624, where the process resets an error variance (EV) value corresponding to a pixel in the macroblock to zero.
  • the error variance relates to a predicted or expected amount of error propagation.
  • an error-free intra-coded macroblock can be expected to have an error variance of zero. It will be understood by one of ordinary skill in the art that any number can be arbitrarily selected to represent zero. It will also be understood that the error variance can be tracked in a broad variety of ways, including on a per pixel basis, on groups of pixels, on selected pixels, per macroblock, and the like.
  • the process advances from the third state 624 to a fourth decision block 628. hi the fourth decision block 628, the process determines whether it has processed the last macroblock in the frame. The process returns from the fourth decision block 628 to the second decision block 608 when there are further macroblocks in the frame to be processed. When the last macroblock has been processed, the process ends and can be reactivated when for the subsequent frame.
  • the process conceals the error with spatial concealment techniques, such as the spatial concealment techniques described earlier in connection with the first state 308 of Figure 3.
  • the process fills the pixels of the macroblock with gray, which is encoded as 128.
  • the process advances from the second state 620 to a fourth state 632, where the process sets the macroblock' s corresponding error variance, ⁇ , to a predetermined value, ⁇ - .
  • the error variance, ⁇ is normalized to a range between 0 and 255.
  • the predetermined value can be obtained by, for example, simulation results, real world testing, and the like, hi addition, the predetermined value can depend on the concealment technique, hi one embodiment, where the concealment technique is to fill the macroblock with gray, the predetermined value, ⁇ Hr , is 255.
  • the process advances from the fourth state 632 to the fourth decision block 628.
  • the process proceeds from the first decision block 604 to the third decision block 612.
  • the process determines whether the macroblock under analysis includes an error.
  • the process proceeds from the third decision block 612 to a fifth decision block 636 when no error is detected.
  • the process proceeds from the third decision block 612 to a fifth state 640.
  • a macroblock in a P-frame can correspond to either an inter-coded macroblock or to an intra-coded macroblock.
  • the process determines whether the macroblock corresponds to an inter-coded macroblock or to an intra-coded macroblock.
  • the process proceeds from the fifth decision block 636 to a sixth state 644 when the macroblock corresponds to an intra-coded macroblock.
  • the process proceeds to a seventh state 648.
  • hi the sixth state 644 the process proceeds to decode the intra-coded macroblock that was received without an error.
  • the intra-coded macroblock can be decoded without reference to another macroblock.
  • the process advances from the sixth state 644 to an eighth state 652, where the process resets the corresponding error variances maintained for the macroblock to zero.
  • the process advances from the eighth state 652 to a sixth decision block 664. i the sixth decision block 664, the process determines whether it has processed the last macroblock in the frame.
  • the process returns from the sixth decision block 664 to the third decision block 612 when there are further macroblocks in the frame to be processed.
  • the process ends and can be reactivated for the subsequent frame.
  • the process reconstructs the pixels of the macroblock even when the macroblock was received without error. Reconstruction in this circumstance can improve image quality because a previous-previous frame may exhibit less corruption than a previous-frame.
  • One embodiment of the process selects between a first reconstruction mode and a second reconstruction mode depending on which mode is expected to provide better error concealment, h another embodiment, weighted sums are used to combine the two modes. In one example, the weights used correspond to the inverse of estimated errors so that the process decodes with minimal mean squared error (MMSE).
  • MMSE minimal mean squared error
  • Equation 1 r k is a prediction residual.
  • q k P k -X (Eq. 1) hi the second reconstruction mode, the process reconstructs the macroblock by doubling the amount of motion specified by the motion vectors of the macroblock, and the process uses a corresponding portion of the previous-previous frame, i.e., the frame at time k-2.
  • Equation 3 The error variance of a pixel reconstructed by the second reconstruction mode, ⁇ , is expressed in Equation 3.
  • the weights used correspond to the inverse of predicted errors so that the process decodes with minimal mean squared error (MMSE). With weighted sums, the process combines the two predictions to reconstruct the pixel, q k .
  • the pixel q k is reconstructed by q k , as expressed in Equation 4.
  • Equation 5 the weighting coefficient, ⁇ , is calculated from Equation 5.
  • the process advances from the seventh state 648 to a ninth state 656.
  • the process updates the corresponding error variances for the macroblock based on the reconstruction applied in the seventh state 648.
  • the process advances from the from the ninth state 656 to the sixth decision block 664. i one embodiment, the error variance is calculated from expression in Equation 6.
  • the process conceals the errors in the macroblock.
  • a variety of concealment techniques can be applied, hi one embodiment, the process uses temporal concealment, regardless of whether the macroblock is intra-coded or inter-coded. It will be understood that in other embodiments, the type of coding used in the macroblock can be used as a factor in the selection of a concealment technique.
  • One embodiment of the process selects between a first concealment mode based on a previous frame and a second concealment mode based on a previous-previous frame in the fifth state 640.
  • the process In the first concealment mode, the process generates an inter-coded macroblock for the missing macroblock using the motion vectors extracted from a macroblock that is above the missing macroblock in the image. If the macroblock that is above the missing macroblock has an error, the motion vectors can be set to zero vectors.
  • the corresponding portion of the frame is reconstructed with the generated inter-coded macroblock and the corresponding reference information from the previous frame, i.e., the frame at t-1.
  • the process In the second concealment mode, the process generates an inter-coded macroblock for the missing macroblock by copying and multiplying by 2 the motion vectors extracted from a macroblock that is above the missing macroblock in the image. If the macroblock above the missing macroblock has an error, the motion vectors can be set to zero vectors. The corresponding portion of the frame is reconstructed with the generated inter-coded macroblock and the corresponding reference information from the previous-previous frame, i.e., the frame at t-2.
  • the error variance can be modeled as a sum of the associated propagation error and concealment error.
  • the first concealment mode has a lower concealment error than the second concealment mode, but the second concealment mode has a lower propagation error than the first concealment mode.
  • the process selects between the first concealment mode and the second concealment mode based on which one provides a lower estimated error variance, hi another embodiment, weighted sums are used to combine the two modes.
  • ⁇ 2 k(i) denotes the error variance of a pixel q ⁇ The value of i is equal to 1 for the first concealment mode based on the previous frame and is equal to 2 for the second concealment mode based on the previous-previous frame.
  • ⁇ (l) corresponds to the error variance for the concealment mode and ⁇ 2 _ corresponds to the propagation error variance.
  • the process computes weighted sums to further reduce the error variance of the concealment.
  • q k can be replaced by q k as shown in Equation 8.
  • the weighting coefficient, a is as expressed in Equation 9.
  • the process advances from the fifth state to a tenth state 660.
  • the process updates the corresponding error variances for the macroblock based on the concealment applied in the fifth state 640, and the process advances to the sixth decision block 664.
  • the error variance is calculated from expression in Equation 10.
  • an entire frame is dropped or lost.
  • One embodiment of the invention advantageously repeats the previous frame, or interpolates between the previous frame and the next frame, in response to a detection of a frame that is missing from a frame sequence.
  • the display of the sequence of frames can be slightly delayed to allow the decoder time to receive the next frame, to decode the next frame, and to generate the interpolated replacement frame from the previous frame and the next frame.
  • the missmg frame can be detected by calculating a frame rate from received frames and by calculating an expected time to receive a subsequent frame. When a frame does not arrive at the expected time, it is replaced with the previous frame or interpolated from the previous and next frames.
  • One embodiment of the process further resynchronizes the available audio portion to correspond with the displayed images.
  • Data corruption is an occasionally unavoidable occurrence.
  • Various teclmiques can help conceal errors in the transmission or reception of video data.
  • standard video decoding techniques can inefficiently declare error-free data as erroneous.
  • the MPEG-4 standard recommends dumping an entire macroblock when an error is detected in the macroblock.
  • the following techniques illustrate that data for some macroblocks can be reliably recovered and used from video packets with corruption.
  • a macroblock in an MPEG-4 system can contain six 8-by-8 image blocks. Four of the image blocks encode luminosity, and two of the image blocks encode chromaticity. h one conventional system, all six of the image blocks are discarded even if a transmission error were only to affect one image block.
  • Figures 7A and 7B illustrate sample video packets.
  • video packets include resynchronization markers to indicate the start of a video packet.
  • the number of macroblocks within a video packet can vary.
  • FIG. 7A illustrates a sample of a video packet 700 with DC and AC components for an I-VOP.
  • the video packet 700 includes a video packet header 702, which includes the resynchronization marker and other header information that can be used to decode the macroblocks of the packet, such as the macroblock number of the first macroblock in the packet and the quantization parameter (QP) to decode the packet.
  • a DC portion 704 can include mcbpc, dquant, and dc data, such as luminosity.
  • a DC marker 706 separates the DC portion 704 from an AC portion 708. h one embodiment, the DC marker 706 is a 19- bit binary string "110 1011 0000 0000 0001.”
  • the AC portion 708 can include an ac_pred flag and other textual information.
  • FIG. 7B illustrates a video packet 720 for a P-VOP.
  • the video packet 720 includes a video packet header 722 similar to the video packet header 702 of Figure 7A.
  • the video packet 720 further includes a motion vector portion 724, which includes motion data.
  • a motion marker 726 separates the motion data in the motion vector portion 724 from texture data in a DCT portion 728.
  • the motion marker is a 17-bit binary string "l ll ll 0000 0000 0001.”
  • FIG. 8 illustrates an example of discarding a corrupted macroblock.
  • Reversible variable length codes are designed to allow data, such as texture codes, to be read or decoded in both a forward direction 802 and a reverse or backward direction 804.
  • a forward direction 802 with N macroblocks a first macroblock 806, MB #0, is read first and a last macroblock 808, MB # N-l, is read last.
  • An error can be located in a macroblock 810, which can be used to define a range of macroblocks 812 that are discarded.
  • FIG. 9 is a flowchart that generally illustrates a process according to an embodiment of the invention of partial RVLC decoding of discrete cosine transform (DCT) portions of corrupted packets.
  • the process starts at a first state 904 by reading macroblock information, such as the macroblock number, of the video packet header of the video packet.
  • the process advances from the first state 904 to a second state 908.
  • the process inspects the DC portion or the motion vector portion of the video packet, as applicable.
  • the process applies syntactic and logic tests to the video packet header and to the DC portion or motion vector portion to detect errors therein.
  • the process advances from the second state 908 to a first decision block 912.
  • the exemplary process determines whether there was an error in the video packet header from the first state 904 or the DC portion or motion vector portion from the second state 908.
  • the first decision block 912 proceeds to a third state 916 when the error is detected.
  • the process proceeds from the first decision block 912 to a fourth state 920.
  • the process discards the video packet. It will be understood by one of ordinary skill in the art that errors in the video packet header or in the DC portion or motion vector portion can lead to relatively severe errors if incorrectly decoded.
  • error concealment techniques are instead invoked, and the process ends. The process can be reactivated later to read another video packet.
  • the process decodes the video packet in the forward direction.
  • the process decodes the video packet according to standard MPEG-4 RVLC decoding teclmiques.
  • One embodiment of the process maintains a count of macroblocks in a macroblocks counter.
  • the header at the beginning of the video packet includes a macroblock index, which can be used to initialize the macroblocks counter.
  • the macroblock counter increments.
  • one embodiment removes one count from the macroblocks counter such that the macroblock counter contains the number of completely decoded macroblocks.
  • one embodiment of the process stores all codewords as leaves of a binary tree. Branches of the binary tree are labeled with either a 0 or a 1.
  • One embodiment of the process uses two different tree formats depending on whether the macroblock is intra or inter coded. When decoding in the forward direction, bits from the video packet are retrieved from a bit buffer containing the RVLC data, and the process fraverses the data in the tree until one of 3 events is encountered. These events correspond to a first event where a valid codeword is reached at a leaf-node; a second event where an invalid leaf of the binary tree (not corresponding to any RVLC codeword) is reached; and a third event where the end of the bit buffer is reached.
  • the first event indicates no error. With no error, a valid RVLC codeword is mapped, such as via a simple lookup table, to its corresponding leaf-node (last, run, level). hi one embodiment, this information is stored in an array.
  • leaf-node last, run, level
  • the second event and the third event correspond to errors.
  • errors can be caused by a variety of error conditions.
  • error conditions include an invalid RVLC codeword, such as wrong marker bits in the expected locations of ESCAPE symbols; decoded codeword from an ESCAPE symbol results in (run, length, level) information that should have been encoded by a regular (non-ESCAPE) symbol; more than 64 (or 63 for the case of Infra-blocks with DC coded separately from AC) DCT coefficients in an 8-by-8 block; extra bits remaining after successfully decoding all expected DCT coefficients of all 8-by-8 blocks in a video packet; and insufficient bits to decode all expected 8-by-8 blocks in video packet. These conditions can be tested sequentially.
  • the condition is tested after all the 8-by-8 blocks in the video packet are processed, hi another example, the testing of the number of DCT coefficients can be performed on a block-by-block basis.
  • the process advances from the fourth state 920 to a second decision block 924.
  • the fourth state 920 and the second decision block 924 can be included in a loop, such as a FOR loop.
  • the process determines whether there has been an error in the forward decoding of the video packet as described in the fourth state 920 (in the forward direction).
  • the process proceeds from the second decision block 924 to a fifth state 928 when there is no error.
  • the process proceeds from the second decision block 924 to a sixth state 932 and to a tenth state 948.
  • the process terminates further forward decoding and records the error location and type of error in the tenth state 948.
  • the error location in the forward direction, L ⁇ , and the number of completely decoded macroblocks in the forward direction, N will be described in greater detail later in connection with Figures 10-13.
  • the process reconstructs the DCT coefficient blocks and ends. In one embodiment, the reconstruction proceeds according to standard MPEG-4 techniques. It will be understood by one of ordinary skill in the art that the process can be reactivated to process the next video packet.
  • the process loads the video packet data to a bit buffer.
  • detection of the DC (for I-NOP) or Motion (for P- NOP) markers for each video packet should be obtained without prior syntax errors or data overrun, hi one embodiment, a circular buffer that reads data for the entire packet is used to obtain the remaining bits for a video packet by unpacking each byte to 8 bits.
  • the process removes stuffing bits from the end of the buffer, which leaves only data bits in the RNLC buffer.
  • This information can be stored in a data structure with the RVLC data bits.
  • the process advances from the sixth state 932 to a seventh state 936.
  • the process performs reversible variable length code (RVLC) decoding in the backward direction on the video packet, hi one embodiment, the process performs the backward decoding on the video packet according to standard MPEG- 4 RVLC decoding techniques. The maximum number of decoded codewords should be recovered in each direction.
  • One embodiment of the process maintains the number of completely decoded macroblocks encountered in the reverse direction in a counter, hi one embodiment, the counter is initialized with a value from the video packet header that relates to the number of macroblocks expected in the video packet, N, and the counter counts down as macroblocks are read.
  • the process advances from the seventh state 936 to an eighth state 940.
  • detection of the location of the error in the reverse direction can reveal ranges of data where such data is still usable.
  • Use of the error location in the reverse or backward direction, E and use of the number of completely decoded macroblocks in the reverse direction, N , will be described later in connection with Figures 10-13.
  • different decoding trees are used for reverse decoding direction than in the forward decoding direction.
  • the reverse decoding trees are obtained by reversing the order of bits for each codeword.
  • the process discards overlapping error regions from the forward and the reverse decoding directions.
  • the 2 arrays of decoded symbols are compared to evaluate overlap in error between the error obtained during forward RVLC decoding and the error obtained during reverse RVLC decoding to partially decode the video packet. Further details of partial decoding will be described in greater detail later in connection with Figure 10-13. It will be understood by one of ordinary skill in the art that that in the process described herein, the arrays contain the successfully decoded codewords before any decoding error has been declared in each direction.
  • one embodiment performs a conservative backtracking of a predetermined number of bits, T, such as about 90 bits in each direction, i.e., the last 90 bits in each direction are discarded. Those codewords that overlap (in the bit buffer) or decode to DCT coefficients that overlap (in the DCT buffer) are discarded. In addition, one embodiment retains only entire INTER macroblocks (no partial macroblock DCT data or Intra-coded macroblocks) in the decoding buffers. The remaining codewords are then used to reconstruct the 8-by-8 DCT values for individual blocks, and the process ends. It will be understood that the process can be reactivated to process the next video packet.
  • the process illustrated in Figure 9 reveals the location of the error (the bit location) in the forward direction, L ⁇ the location of the error in the reverse direction, J 2 ; the type of error that was encountered in the forward direction and in the reverse direction; the expected length of the video packet, L; the number of expected macroblocks in the video packet, N, the number of completely decoded macroblocks in the forward direction, N; and the number of completely decoded macroblocks in the reverse direction, N .
  • Figures 10-13 illustrate partial RNLC decoding strategies.
  • Figure 10 illustrates a partial decoding strategy used when L ⁇ + L 2 ⁇ L, and N + N 2 ⁇ N
  • a first portion 1002 of Figure 10 indicates the bit error positions, L ⁇ and E 2 .
  • a second portion 1004 indicates the completely decoded macroblocks in the forward direction, N ⁇ , and in the reverse direction, N .
  • a third portion 1006 indicates a backtracking of bits, T, from the bit error locations. It will be understood by one of ordinary skill in the art that the number selected for the backtracking of bits, T, can vary in a very broad range and can even be different in the forward direction and in the reverse direction, h one embodiment, the value of 7" is 90 bits.
  • the exemplary process apportions the video packet in a first partial packet 1010, a second partial packet 1012, and a discarded partial packet 1014.
  • the first partial packet 1010 may be used by the decoder and includes complete macroblocks up to a bit position corresponding to L ⁇ -T.
  • the second partial packet 1012 may also be used by the decoder and includes complete macroblocks from a bit position corresponding to L-L2+T to the end of the packet, L, such that the second partial packet is about L 2 -T in size.
  • one embodiment of the process discards intra blocks in the first partial packet 1010 and in the second partial packet 1012, even if the intra blocks are identified as uncorrupted.
  • the discarded partial packet 1014 which includes the remaining portion of the video packet, is discarded.
  • a first portion 1102 of Figure 11 indicates the bit error positions, L ⁇ and E .
  • a second portion 1104 indicates the completely decoded macroblocks in the forward direction, N, and in the reverse direction, N 2 .
  • the exemplary process apportions the video packet in a first partial packet 1110, a second partial packet 1112, and a discarded partial packet 1114.
  • the first partial packet 1110 may be used by the decoder and includes complete macroblocks from the start of the video packet to the macroblock corresponding to N-N 2 -l.
  • the second partial packet 1112 may also be used by the decoder and includes the (Ni+l)th macroblock to the last macroblock in the video packet, such that the second partial packet 1112 is about N-N-l in size.
  • One embodiment of the process discards intra blocks in the first partial packet 1110 and in the second partial packet 1112, even if the infra blocks are identified as uncorrupted.
  • the discarded partial packet 1114 which includes the remaining portion of the video packet, is discarded.
  • a first portion 1202 of Figure 12 indicates the bit error positions, L ⁇ and E 2 .
  • a second portion 1204 indicates the completely decoded macroblocks in the forward direction, N ⁇ , and in the reverse direction, N 2 .
  • the exemplary process apportions the video packet in a first partial packet 1210, a second partial packet 1212, and a discarded partial packet 1214.
  • the first partial packet 1210 may be used by the decoder and includes complete macroblocks from the beginning of the video packet to a macroblock at N-b_mb(E ), where b_mb(E 2 ) denotes the macroblock at the bit position L 2 .
  • the second partial packet 1212 may also be used by the decoder and includes the complete macroblocks from the bit position corresponding to L ⁇ to the end of the packet.
  • One embodiment of the process discards intra blocks in the first partial packet 1210 and in the second partial packet 1212, even if the intra blocks are identified as uncorrupted.
  • the discarded partial packet 1214 which includes the remaining portion of the video packet, is discarded.
  • a first portion 1302 of Figure 13 indicates the bit error positions, L ⁇ and E 2 .
  • a second portion 1304 indicates the completely decoded macroblocks in the forward direction, N ⁇ , and in the reverse direction, N 2 .
  • the exemplary process apportions the video packet in a first partial packet 1310, a second partial packet 1312, and a discarded partial packet 1314.
  • the first partial packet 1310 may be used by the decoder and includes complete macroblocks up to the bit position corresponding to the lesser of N-b_mb(L 2 ), where b_mb(E ) denotes the last complete macroblock up to bit position L 2 , and the complete macroblocks up to (N-N 2 -l)th macroblock.
  • the second partial packet 1312 may also be used by the decoder and includes the number of complete macroblocks counting from the end of the video packet corresponding to the lesser of N-f mb ⁇ i), where f_mb(L ) denotes the last macroblock in the reverse direction that is uncorrupted as determined by the forward direction, and the number of complete macroblocks corresponding to N-N-l.
  • One embodiment of the process discards intra blocks in the first partial packet 1310 and in the second partial packet 1312, even if the intra blocks are identified as uncorrupted.
  • the discarded partial packet 1314 which includes the remaining portion of the video packet, is discarded.
  • Figure 14 illustrates a partially corrupted video packet 1402 with at least one intra- coded macroblock.
  • an intra-coded macroblock in a portion of a partially corrupted video packet is discarded even if the intra-coded macroblock is in a portion of the partially corrupted video packet that is considered uncorrupted.
  • a decoding process such as the process described in connection with Figures 9 to 13, allocates the partially corrupted video packet 1402 to a first partial packet 1404, a corrupted partial packet 1406, and a second partial packet 1408.
  • the first partial packet 1404 and the second partial packet 1408 are considered error-free and can be used.
  • the corrupted partial packet 1406 includes corrupted data and should not be used.
  • the illustrated first partial packet 1404 includes a first intra-coded macroblock 1410
  • the illustrated second partial packet 1408 includes a second intra- coded macroblock 1412.
  • One process according to an embodiment of the invention also discards an intra-coded macroblock, such as the first intra-coded macroblock 1410 or the second intra-coded macroblock 1412, when any error or corruption is detected in the video packet, and the process advantageously continues to use the recovered macroblocks corresponding to error-free macroblocks. Instead, the process conceals the intra-coded macroblocks of the partially corrupted video packets.
  • One embodiment of the invention partially decodes intra-coded macroblocks from partially corrupted packets.
  • any data from a corrupted video packet is dropped.
  • Infra-coded macroblocks can be encoded in both I-NOPs and in P- VOPs.
  • a DC coefficient of an intra-coded macroblock and/or the top-row and first-column AC coefficient of the intra-coded macroblock can be predictively coded from the intra-coded macroblock' s neighboring intra- coded macroblocks.
  • Parameters encoded in the video bitstream can indicate the appropriate mode of operation.
  • a first parameter, referred to in MPEG-4 as "intra_dc_vlc_thr,” is located in the VOP header.
  • the first parameter, intra_dc_vlc_thr is encoded to one of 8 codes as described in Table I, where QP indicates a quantization parameter.
  • the infra_dc_vlc_thr code of "000" corresponds to separating DC coefficients from AC coefficients in intra-coded macroblocks.
  • the setting of the intra_dc_vlc_thr parameter to "000" results in the placement by the encoder of the DC coefficient before the DC marker, and the placement of the AC coefficients after the DC marker.
  • the setting of the intra_dc_vlc_thr parameter to "000" results in the encoder placing the DC coefficients immediately after the motion marker, together with the cbpy and ac_pred_flag information.
  • the value of the infra_dc_vlc_thr parameter is selected at the encoding level.
  • video bitstreams may be relatively more robustly encoded with the intra_dc_vlc_thr parameter set to 000.
  • one embodiment of the invention advantageously detects the setting of the intra_dc_vlc_thr parameter to "000,” and monitors for the motion marker and/or the DC marker. If the corresponding motion marker and/or is observed without an error, the process classifies the DC information received ahead of the motion marker and/or DC marker and uses the DC information in decoding. Otherwise, the DC information is dropped.
  • a second parameter, referred to in MPEG-4 as "ac_pred_flag" is located after the motion marker / DC marker, but before RVLC texture data.
  • the "ac_pred_fiag” parameter instructs the encoder to differentially encode and the decoder to differentially decode the top row and first column of DCT coefficients (a total of 14 coefficients) from a neighboring block that has the best match with the current block with regard to DC coefficients.
  • the neighboring block with the smallest difference is used as a prediction block as shown in Figure 15.
  • Figure 15 illustrates a sequence of macroblocks with AC prediction.
  • Figure 15 includes a first macroblock 1502, A, a second macroblock 1504, B, a third macroblock 1506, C, a fourth macroblock 1508, D, a fifth macroblock 1510, X, and a sixth macroblock 1512, Y.
  • the fifth macroblock 1510, X, and the sixth macroblock 1512, Y are encoded with AC prediction enabled.
  • a first column of DCT coefficients from the first macroblock 1502, A is used in the fifth macroblock 1510, X, and the sixth macroblock 1512, Y.
  • the top row of coefficients from the third macroblock 1506, C, or from the fourth macroblock 1508, D is used to encode the top row of the fifth macroblock 1510, X, or the sixth macroblock 1512, Y, respectively.
  • the encoder should disable the AC prediction or differential encoding for intra-coded macroblocks. With the AC prediction disabled, intra-coded macroblocks that correspond to either the first or second "good" part of the RVLC data can be used. hi one embodiment, with AC prediction enabled, the intra-coded macroblocks of the "good" part of the RVLC data can be dropped as described earlier in connection with Figure 14. hi addition, one decoder or decoding process according to an embodiment of the invention further determines whether the intra-coded macroblock, referred to as "suspect intra-coded macroblock" can be used even with AC prediction enabled. The decoder determines whether another infra-coded macroblock exists to the immediate left or immediately above the suspect intra-coded macroblock. When no such other intra-coded macroblock exists, the suspect intra-coded macroblock is labeled "good,” and is decoded and used.
  • One decoder further determines whether any of the other macroblocks to the immediate left or immediately above the suspect intra-coded macroblock have not been decoded. If there are any such macroblocks, the suspect intra-coded macroblock is not used.
  • Figure 16 illustrates a bit structure for an MPEG-4 data partitioning packet.
  • Data partitioning is an option that can be selected by the encoder.
  • the data partitioning packet includes a resync marker 1602, a macroblock_number 1604, a quant_scale 1606, a header extension code (HEC) 1608, a motion and header information 1610, a motion marker 1612, a texture information 1614, and a resync marker 1616.
  • HEC header extension code
  • the MPEG-4 standard allows the DC portion of frame data to be placed in the data partitioning packet either before or after the AC portion of frame data.
  • the order is determined by the encoder.
  • the encoder When data partitioning is enabled, the encoder includes motion vectors together with "not-coded” and "mcbpc" information in the motion and header information 1610 ahead of the motion marker 1612 as part of header information as shown in Figure 16.
  • one embodiment of the invention uses the data received ahead of the motion marker 1612.
  • One embodiment predicts a location for the motion marker 1612 and detects an error based on whether or not the motion marker 1612 was observed in the predicted location.
  • the data included in the motion and header information 1610 can yield a wealth amount of information that can be advantageously recovered.
  • a macroblock should be copied from the same location in the previous frame by the decoder.
  • the macroblocks corresponding to the "not coding” flag can be reconstructed safely.
  • the "mcbpc” identifies which of the 6 8- by-8 blocks that form a macroblock (4 for luminance and 2 for chrominance) have been coded and thus include corresponding DCT coefficients in the texture information 1614.
  • the texture information 1614 is further divided into a first portion and a second portion.
  • the first portion immediately following the motion marker 1612 includes "cbpy" information, which identifies which of the 4 luminance 8-by-8 blocks are actually coded and which are not.
  • the cbpy information also includes a DC coefficient for those intra-coded macroblocks in the packet for which the corresponding "Intra DC VLC encoding" has been enabled.
  • the cbpy information further includes an ac_pred_flag, which indicates whether the corresponding intra-coded macroblocks have been differentially encoded with AC prediction by the encoder from other macroblocks that are to the immediate left or are immediately above the macroblock.
  • the decoder uses all of or a selection of the cbpy information, the DC coefficient, and the ac_pred_flag in conjunction with the presence or absence of a first error-free portion of the DCT data in the texture information 1614 to assess which part can be safely decoded.
  • the presence of such a good portion of data indicates that DC coefficients of intra macroblocks and cbpy- inferred non-coded Y-blocks of a macroblock can be decoded. .
  • FEC forward error correction
  • FEC coding includes the addition of error correction information before data is stored or transmitted. Part of the FEC process can also include other techniques such as bit- interleaving. Both the original data and the error correction information are stored or transmitted, and when data is lost, the FEC decoder can reconstruct the missing data from the data that it received and the error correction information.
  • embodiments of the invention decode FEC codes in an efficient and backward compatible manner.
  • One drawback to FEC coding techniques is that the error correction information increases the amount of data that is stored or transmitted, referred to as overhead.
  • Figure 17 illusfrates one example of a tradeoff between block error rate (BER) correction capability versus overhead.
  • a horizontal axis 1710 corresponds to an average BER correction capability.
  • a vertical axis 1720 corresponds to an amount of overhead, expressed in Figure 17 in percentage.
  • a first curve 1730 corresponds to a theoretical bit overhead versus BER correction capability.
  • a second curve 1740 corresponds to one example of an actual example of overhead versus BER correction capability.
  • the benefits of receiving the original data as intended can outweigh the drawbacks of increased data storage or transmission, or the drawbacks of a revised bit allocation in a bandwidth limited system.
  • FEC coding is relatively difficult to add to existing systems and/or standards, such as MPEG-4.
  • a video bitsfream should be compliant with a standard syntax, such as MPEG-4 syntax.
  • embodiments of the invention advantageously decode FEC coded bitstreams that are encoded only with systematic FEC codes and not non-systematic codes, and retrieve FEC codes from identified user data video packets.
  • Figure 18 illustrates a video bitstream with systematic FEC data.
  • FEC codes can correspond to either systematic codes or non-systematic codes.
  • a systematic code leaves the original data untouched and appends the FEC codes separately.
  • a conventional bitstream can include a first data 1810, a second data 1830, and so forth.
  • the original data i.e., the first data 1810 and the second data 1830
  • the FEC codes are provided separately.
  • An example of the separate FEC code is illustrated by a first FEC code 1820 and a second FEC code 1840 in Figure 18.
  • the data is carried in a VOP packet
  • the FEC codes are carried in a user data packet, which follows the corresponding VOP packet in the bitsfream.
  • One embodiment of the encoder includes a packet of FEC codes in a user data video packet for each VOP packet. However, it will be understood that depending on decisions made by the encoder, less than every corresponding data may be supplemented with FEC codes.
  • FEC coding types can be used, hi one embodiment, the FEC coding techniques correspond to Bose-Chaudhuri-Hocquenghem BCH) coding techniques, hi one embodiment, a block size of 511 is used, hi the illustrated configurations, the FEC codes are applied at the packetizer level, as opposed to another level, such as a channel level.
  • the FEC codes are applied at the packetizer level, as opposed to another level, such as a channel level.
  • one way of including the separate systematic error correction data as shown by the first FEC code 1820 and the second FEC code 1840, is to include the error correction data in a user data video packet.
  • the user data video packet can be ignored by a standard MPEG-4 decoder.
  • a data packet is identified as a user data video packet in the video bitstream by a user data start code, which is a bit string of 000001B2 in hexadecimal (start code value of B2), as the start code of the data packet.
  • a user data header code identifies the type of data in the user data video packet. For example, a 16-bit code for the user data header code can identify that data in the user data video packet is FEC code.
  • the FEC codes of selected data are carried in a dedicated data packet with a unique start code.
  • One embodiment of the invention advantageously encodes FEC codes from only a selected portion of the data in the video bitsfream.
  • the user data header code in the user data video packet can further identify the selected data to which the corresponding FEC codes apply, hi one example, FEC codes are provided and decoded only for data corresponding to at least one of motion vectors, DC coefficients, and header information.
  • Figure 19 is a flowchart 1900 generally illustrating a process of decoding systematically encoded FEC data in a video bitsfream.
  • the process can be activated once per VOP.
  • the decoding process is advantageously compatible with video bitstreams that include FEC coding and those that do not.
  • the process starts at a first state 1904, where the process receives the video bitsfream.
  • the video bitstream can be received wirelessly, through a local or a remote network, and can further be temporarily stored in buffers and the like.
  • the process advances from the first state 1904 to a second state 1908.
  • the process retrieves the data from the video bitstream. For example, in an MPEG-4 decoder, the process can identify those portions corresponding to standard MPEG-4 video data and those portions corresponding to FEC codes, hi one embodiment, the process retrieves the FEC codes from a user data video packet. The process advances from the second state 1908 to a decision block 1912.
  • the process determines whether FEC codes are available to be used with the other data retrieved in the second state 1908. When FEC codes are available, the process proceeds from the decision block 1912 to a third state 1916. Otherwise, the process proceeds from the decision block 1912 to a fourth state 1920. hi another embodiment, the decision block 1912 instead determines whether an error is present in the received video bitstream. It will be understood that the corresponding portion of the video bitstream that is inspected for errors can be stored in a buffer. When an error is detected, the process proceeds from the decision block 1912 to the third state 1916. When no error is detected, the process proceeds from the decision block 1912 to the fourth state 1920.
  • the third state 1916 can include the decoding of the normal video data that is accompanied with the FEC codes, hi one embodiment, only selected portions of the video data supplemented with FEC codes, and the process reads header codes or the like, which indicate the data to which the retrieved FEC codes correspond.
  • the process advances from the third state to an optional fifth state 1924.
  • One encoding process further includes other data in the same packet as the FEC codes.
  • this other data can correspond to at least one of a count of the number of motion vectors, a count of the number of bits per packet that are encoded between the resync field and the motion marker field. This count allows a decoder to advantageously resynchronize to a video bitstream earlier than at a place in a bitsfream with the next marker that permits resynchronization
  • the process advances from the optional fifth state 1924 to the end.
  • the process can be reactivated to process the next batch of data, such as another VOP. hi the fourth state 1920, the process uses the retrieved video data.
  • the retrieved data can be the normal video data corresponding to a video bitstream without embedded FEC codes.
  • the retrieved data can also correspond the normal video data that is maintained separately in the video bitstream from the embedded FEC codes. The process then ends until reactivated to process the next batch of data.
  • Figure 20 is a block diagram generally illustrating one process of using a ring buffer in error resilient decoding of video data.
  • Data can be transmitted and/or received in varying bit rates and in bursts. For example, network congestion can cause delays in the receipt of packets of data. The dropping of data, particularly in wireless environments, can also occur, hi addition, a relatively small amount of received data can be stored in a buffer until it is ready to be processed by a decoder.
  • a ring buffer is a buffer with a fixed size. It will be understood that the size of the ring buffer can be selected in a very broad range.
  • a ring buffer can be constructed from an addressable memory, such as a random access memory (RAM). Another name for a ring buffer is circular buffer.
  • the storing of the video bitsfream in the ring buffer is advantageous in error resilient decoding, including error resilient decoding of video bitstreams in a wireless MPEG-4 compliant receiver, such as a video-enabled cellular telephone.
  • error resilient decoding teclmiques data from the video bitstream may be read from the video bitstream multiple times, in multiple locations, and in multiple directions.
  • the ring buffer permits the decoder to retrieve data from various portions of the video bitstream in a reliable and efficient manner, h one test, use of the ring buffer sped access to bitstream data by a factor of two.
  • data is advantageously not flushed from a ring buffer.
  • Data enters and exits the ring buffer in a first-in first-out (FIFO) manner.
  • FIFO first-in first-out
  • the block diagram of Figure 20 illustrates one configuration of a ring buffer 2002.
  • Data received from the video bitstream is loaded into the ring buffer 2002 as the data is received.
  • the modules of the decoder that decode the video bitstream do not access the video bitstream directly, but rather, access the video bitstream data that is stored in the ring buffer 2002.
  • the ring buffer 2002 can reside either ahead of or behind a VOP decoder in the data flow. However, the placement of the ring buffer 2002 ahead of the VOP decoder saves memory for the ring buffer 2002, as the VOP is in compressed form ahead of the VOP decoder.
  • the video bitstream data that is loaded into the ring buffer 2002 is represented in Figure 20 by a bitstream file 2004.
  • Data logging information including error logging information, such as error flags, is also stored in the ring buffer 2002 as it is generated.
  • the data logging information is represented in Figure 20 as a log file 2006.
  • a log interface between H.223 output and decoder input advantageously synchronizes or aligns the data logging information in the ring buffer 2002 with the video bitstream data.
  • a first arrow 2010 corresponds to a location (address) in the ring buffer 2002 in which data is stored. As data is added to the ring buffer 2002, the ring buffer 2002 conceptually rotates in the clockwise direction as shown in Figure 20.
  • a second arrow 2012 indicates an illustrative position from which data is retrieved from the ring buffer 2002.
  • a third arrow 2014 can correspond to an illustrative byte position in the packet that is being retrieved or accessed.
  • Packet start codes 2016 can be dispersed throughout the ring buffer 2002.
  • the decoder When data is retrieved from the ring buffer 2002 for decoding of a VOP with video packets enabled, one embodiment of the decoder inspects the corresponding error-flag of each packet. When the packets are found to be corrupted, the decoder skips the packets until the decoder encounters a clean or error-free packet. When the decoder encounters a packet, it stores the appropriate location information in an index table, which allows the decoder to access the packet efficiently without repeating a seek for the packet. In another embodiment, the decoder uses the contents of the ring buffer 2002 to recover and use data from partially corrupted video packets as described earlier in connection with Figures 7-16.
  • Table ⁇ illustrates a sample of contents of an index table, which allows relatively efficient access to packets stored in the ring buffer 2002.

Abstract

The method and apparatus conceal errors in images of a corrupted video bitstream (2); that cover usable video data from partially corrupted data; that advantageously reconstruct and decode video data (3), such as video object planes (VOPs), using forward error correction (FEC) codes embedded in the video bitstream; and that manage data received in a video bitstream. Various concealment techniques are performed in this apparatus. Embodiments inspect corrupted data packets identify the location or locations of an error, whether the corrupted data packet contains data expected to be error-free (6), data should be used. Backward compatible techniques of decoding FEC codes embedded in video bitstreams are shown (9).

Description

SYSTEMS AND METHODS OF ERROR RESILIENCE IN A VIDEO DECODER
Background of the Invention Field of the Invention
The invention is related to video decoding techniques, hi particular, the invention relates to systems and methods of error resilient decoding of a video bitstream.
Description of the Related Art
A variety of digital video compression techniques have arisen to transmit or to store a video signal with a lower bandwidth or with less storage space. Such video compression techniques include international standards, such as H.261, H.263, H.263+, H.263++, H.26L, MPEG-1, MPEG-2, MPEG-4, and MPEG-7. These compression techniques achieve relatively high compression ratios by discrete cosine transform (DCT) techniques and motion compensation (MC) techniques, among others. Such video compression techniques permit video bitstreams to be efficiently carried across a variety of digital networks, such as wireless cellular telephony networks, computer networks, cable networks, via satellite, and the like.
Unfortunately for users, the various mediums used to carry or transmit digital video signals do not always work perfectly, and the transmitted data can be corrupted or otherwise interrupted. Such corruption can include errors, dropouts, and delays. Corruption occurs with relative f equency in some transmission mediums, such as in wireless channels and in asynchronous transfer mode (ATM) networks. For example, data transmission in a wireless channel can be corrupted by environmental noise, multipath, and shadowing, i another example, data transmission in an ATM network can be corrupted by network congestion and buffer overflow.
Corruption in a data stream or bitstream that is carrying video can cause disruptions to the displayed video. Even the loss of one bit of data can result in a loss of synchronization with the bitstream, which results in the unavailability of subsequent bits until a synchronization codeword is received. These errors in transmission can cause frames to be missed, blocks within a frame to be missed, and the like. One drawback to a relatively highly compressed data stream is an increased susceptibility to corruption in the transmission of the data stream carrying the video signal.
Those in the art have sought to develop techniques to mitigate against the corruption of data in the bitstream. For example, error concealment techniques can be used in an attempt to hide errors in missing or corrupted blocks. However, conventional error concealment techniques can be relatively crude and unsophisticated.
In another example, forward error correction (FEC) techniques are used to recover corrupted bits, and thus reconstruct data in the event of corruption. However, FEC techniques disadvantageously introduce redundant data, which increases the bandwidth of the bitstream for the video or decreases the amount of effective bandwidth remaining for the video. Also, FEC techniques are computationally complex to implement. In addition, conventional FEC techniques are not compatible with the international standards, such as H.261, H.263, MPEG-2, and MPEG-4, but instead, have to be implemented at a higher, "systems" level.
Summary of the Invention
The invention is related to methods and apparatus that conceal errors in images of a corrupted video bitstream. One embodiment conceals errors in a missing or corrupted intra-coded macroblock by linearly interpolating data from other macroblocks that correspond to portions of the image above and below the missing or corrupted macroblock. One embodiment > can utilize substitute motion vectors for a missing or corrupted predictive-coded macroblock. Another embodiment doubles the received motion vectors and references the doubled motion vectors to a previous-previous frame. Another embodiment adaptively selects which concealment or reconstruction technique is applied according to projected error estimates. Another embodiment conceals errors by replacing corrupted or missing data by combining concealment data in a weighted sum to reduce an estimated error.
One embodiment of the invention includes a video decoder that conceals errors received in a video bitstream, the video decoder comprising an error detection circuit adapted to detect errors in the video bitstream; a memory device configured to provide an indication of an error in a portion of a video bitstream corresponding to a portion in an image; a control circuit configured to be responsive to an indication of the error in a first portion of the image, where the control circuit is further configured to detect if a second portion above the first portion in the image and if a third portion below the first portion in the image are error-free, where the control circuit is further configured to interpolate between corresponding data in the second portion of the image and corresponding data in the third portion of the data to conceal the error.
Another embodiment according to the invention includes a video decoder that adaptively conceals errors received in a video bitstream, the video decoder comprising: a memory module adapted to maintain error values for selected portions of an image; a plurality of error resilience modules that generate images in response to errors; a prediction module adapted to generate a plurality of predictions of error values corresponding to the plurality of error resilience modules; a control module adapted receive an indication of an error in the video bitstream and, in response, to select an error resilience module from the error resilience module based on a comparison of the predictions of error values.
One embodiment of the invention includes a video decoder that conceals errors received in a video bitstream, the video decoder comprising: a memory module adapted to maintain error variances for selected portions of an image; a plurality of error resilience modules that generate images in response to errors; a prediction module adapted to generate a plurality of weights corresponding to the plurality of error resilience modules; a control module adapted receive an indication of an error in the video bitstream and, in response, to combine outputs of selected error resilience modules with the weights from the prediction module to conceal the error.
One embodiment of the invention includes an optimizer circuit that selectively applies an error concealment technique from among a plurality of error concealment techniques comprising: means for maintaining an estimated error relating to at least a portion of an image; means for using the estimated error to generate a plurality of projected error estimates corresponding to application of an error concealment technique; and means for selecting the error concealment technique that provides the lowest projected error estimate.
One embodiment of the invention includes a method of concealing errors in a video decoder comprising: detecting an error in a first portion of a video bitstream that is intra- coded; determining that a second portion of an image above the first portion and a third portion of the image below the first portion are not corrupted; and interpolating pixels in the first portion between a first horizontal row of pixels in the second portion and a second horizontal row of pixels in the third portion to conceal errors when the second portion and the third portion are not corrupted.
One embodiment of the invention includes a method of concealing errors in a video decoder comprising: detecting an error in a first portion of a video bitstream that is predictive-coded; providing a substitute motion vector when the error relates to a standard motion vector; using a first reference portion of a previous f ame with the substitute motion vector to reconstruct when the first reference portion is available; and using a second reference portion of a second frame that is prior to the previous frame when the first reference portion of the previous frame is not available.
One embodiment of the invention includes a method of adaptively producing a video image comprising: receiving video data for a frame; determining whether the video data is intra-coded or predictive-coded; when the video data is intra-coded: determining whether the intra-coded video data corresponds to an error; concealing the error when the intra-coded video data corresponds to the error; setting an error value that is associated with at least a portion of the video packet to a first predetermined value when the intra-coded video data corresponds to the error; resetting the error value when no error for the intra- coded video data is detected; and using the intra-coded video data when no error for the intra-coded video data is detected; when the video data is predictive-coded, determining whether the predictive-coded video data corresponds to an error; when the predictive-coded video data corresponds to an error: using the predictive-coded video data when no error for the predictive-coded video data is detected and the associated error value is reset; projecting a first estimated error corresponding to use of the predictive-coded video data when no error is detected for the predictive-coded video data and the associated error value is not reset; projecting a second estimated error corresponding to use of a first predictive-coded error concealment technique when no error is detected for the predictive-coded video data and the associated error value is not reset; selecting between the use of the predictive-coded video data and the use of the first predictive-coded error concealment technique based on a comparison between the first projected estimated error and the second projected estimated error; and updating the error value according to which of the predictive-coded video data and the first predictive-coded error concealment technique is selected; and when the predictive-coded video data corresponds to an error: applying a second predictive-coded error concealment technique; and updating the error value according to the second predictive-coded error concealment technique.
One embodiment of the invention includes a method of producing a video image comprising: receiving data for a video frame; determining whether the video frame is a predictive-coded frame or is an intra-coded frame; performing the following when the video frame is the predictive-coded frame: determining whether a group of video data from the video frame corresponds to an error; when there is no error in the group of video data: determining whether the group of video data is intra-coded or predictive-coded; intra- decoding the group of video data when the group of video data is intra coded; resetting an error variance associated with at least a portion of the group of video data when the group of video data is intra coded; using a first weighted sum to reconstruct a portion of an image corresponding to the group of video data when the video data is intra coded, where the first weighted sum combines results of at least a first and a second technique; and updating the error variance according to the first weighted sum used to reconstruct the portion of the image; and when there is an error in the group of video data: concealing the error in the portion of the image corresponding to the group of video data; and updating the error variance according to the error concealment.
One embodiment of the invention includes a method of selecting an error concealment technique from among a plurality of error concealment techniques comprising: maintaining an estimated error relating to at least a portion of an image; using the estimated error to generate a plurality of projected error estimates corresponding to application of an error concealment technique; and selecting the error concealment technique that provides the lowest projected error estimate.
The invention is related to methods and apparatus that recover usable video data from partially corrupted data. Embodiments inspect corrupted data packets and identify the location or locations of an error, whether the corrupted data packet contains data expected to be error-free, and whether the error-free data should be used. Decoding of a packet in both the forward direction and the backward direction can be used to locate a position of an error, hitra-coded macroblocks can also be recovered. A decoder can elect to use or to drop an intra-coded macroblock recovered from a corrupted data packet according to further criteria that is applied to the recovered intra-coded macroblock. One embodiment inspects video bitstream data that has been encoded with an optional data partitioning feature enabled, and retrieves specified data in areas of a corrupted packet that are expected to be free from error.
One embodiment of the invention includes a circuit adapted to recover useful data from a video packet that is at least partially corrupted, the circuit comprising: a decoding circuit configured to decode a video packet in a forward direction and in a backward direction, where the decoding circuit detects bit locations of errors first encountered in the forward direction and in the backward direction; a counter adapted to maintain a count of complete macroblocks decoded in the forward direction and in the backward direction; and a control circuit adapted to discard at least a portion of the video packet that corresponds to an overlapping region, where the control circuit is further configured to further discard additional data corresponding to a backtracking amount when there is no overlapping region, where the control circuit is further configured to discard information in incomplete macroblocks, and where the control circuit is adapted to permit use of at least a portion of the remaining data.
One embodiment of the invention includes a circuit adapted to recover useful data from a video packet that is at least partially corrupted, the circuit comprising: a data parsing circuit adapted to determine whether a video packet is encoded with data partitioning enabled; an error checking circuit configured to determine whether an error exists ahead of a motion marker of the video packet; and a decoder coupled to the data parsing circuit and to the error checking circuit, where the decoder is adapted to decode at least a portion of the data in the corrupted video packet ahead of the motion marker when data parsing circuit indicates that the video packet is encoded with data partitioning enabled and when the error checking circuit indicates that the error does not exist ahead of the motion marker.
One embodiment of the invention includes a circuit adapted to recover useful data from a video packet that is at least partially corrupted, the circuit comprising: means for receiving the video packet; means for ending without recovering data when corruption is detected in at least one of a video packet header of the video packet, a DC portion of the video packet, and a motion vector portion of the video packet; means for initiating decoding of the video packet in a forward direction; means for maintaining a first count of a number of macroblocks decoded without error in the forward direction; means for storing codewords decoded in the forward direction; means for storing a first bit location when an error is first detected in the forward direction; means for initiating decoding of the video packet in a reverse direction; means for maintaining a second count of a number of macroblocks decoded without error in the reverse direction; means for storing codewords decoded in the reverse direction; means for storing a second bit location when an error is first detected in the reverse direction; means for determining if there is an overlapping region, where the overlapping region corresponds to a region identified in both the forward direction and in the reverse direction as having an error; means for discarding the data in the overlapping region and for using the data in a remaining portion of the video packet if there is an overlapping region; and means for discarding the data between a first backtracking amount ahead of the first error location in the forward direction and a second backtracking amount behind the second error location in the first location, and for recovering the remaining portion of the video packet if there is no overlapping region.
One embodiment of the invention includes a method of recovering useful data from a video packet that has been corrupted, the method comprising: receiving the video packet; ending without recovering data when corruption is detected in a video packet header of the video packet; ending without recovering data when corruption is detected in a DC portion of the video packet; ending without recovering data when corruption is detected in a motion vector portion of the video packet; initiating decoding of the video packet in a forward direction; maintaining a first count of a number of macroblocks decoded without error in the forward direction; storing codewords decoded in the forward direction; storing a first bit location when an error is first detected in the forward direction; initiating decoding of the video packet in a reverse direction; maintaining a second count of a number of macroblocks decoded without error in the reverse direction; storing codewords decoded in the reverse direction; storing a second bit location when an error is first detected in the reverse direction; determining if there is an overlapping region, where the overlapping region corresponds to a region identified in both the forward direction and in the reverse direction as having an error; if there is an overlapping region, discarding the data in the overlapping region and using the data in a remaining portion of the video packet; and if there is no overlapping region, discarding the data between a first backtracking amount ahead of the first error location in the forward direction and a second backtracking amount behind the second error location in the first location, and recovering the remaining portion of the video packet. One embodiment of the invention includes method for recovering data in a corrupted video packet comprising: inspecting the video packet to determine whether the video packet was encoded with data partitioning enabled; determining whether an error exists ahead of a motion marker of the video packet; and decoding at least a portion of the data in the corrupted video packet ahead of the motion marker when the video packet was encoded with data partitioning enabled and when the error does not exist ahead of the motion marker.
The invention is related to methods and apparatus that advantageously reconstruct and decode video data, such as video object planes (VOPs), using forward error correction (FEC) codes embedded in the video bitstream. Advantageously, the original video data can be recovered even when portions of the video bitstream are corrupted or lost during transmission. Further advantageously, the methods and apparatus disclosed are backward compatible with video bitstreams that are compliant with standard syntax, thereby allowing a decoder to achieve compatibility with both standard video bitstreams and video bitstreams embedded with FEC codes. In one embodiment, a decoder retrieves the FEC codes from a user data video packet. To save bandwidth, an encoder can provide FEC codes corresponding to a subset of the video data, and the decoder can receive and interpret indications as to which data the provided FEC codes correspond.
One embodiment of the invention includes a video decoder adapted to reconstruct corrupted video data comprising: a receiver circuit adapted to receive a video bitstream; a buffer coupled to the receiver circuit, where the buffer is adapted to store at least a portion of the video bitstream; a parsing circuit adapted to distinguish video data from forward error correction (FEC) codes; an error monitoring circuit configured to detect corruption in the video data; and an FEC decoder adapted to receive the video data and the FEC codes, where the FEC decoder is configured to remove the corruption in the video data to which the FEC codes apply.
One embodiment of the invention includes a video decoder that decodes a video bitstream that includes forward error correction (FEC) codes, the video decoder comprising: means for receiving the video bitstream, which includes both video data and FEC codes; means for retrieving video data from the video bitstream; means for determining if there is corruption in a portion of the video data retrieved; means for retrieving FEC codes from the video bitstream in response to a detection of corruption; and means for using the FEC codes to reconstruct the portion of the video data such that the portion of the video data is recovered without corruption.
One embodiment of the invention includes a process of decoding a video bitstream that includes forward error correction (FEC) codes, the process comprising: receiving the video bitstream, which includes both video data and FEC codes; retrieving video data from the video bitstream; determining if there is corruption in a portion of the video data retrieved; retrieving FEC codes from the video bitstream in response to a detection of corruption; and using the FEC codes to reconstruct the portion of the video data such that the portion of the video data is recovered without corruption.
One embodiment of the invention includes a process of decoding a video bitstream that includes forward error correction (FEC) codes, the process comprising: receiving the video bitstream, which includes both video data and FEC codes; retrieving video data from the video bitstream; determining if FEC codes that correspond to the retrieved video data are available; retrieving FEC codes from the video bitstream when the FEC codes are available; and using the FEC codes to decode the portion of the video data such that the portion of the video data is recovered without corruption.
The invention is related to methods and apparatus that manage data received in a video bitstream. Video data received from the video bitstream is placed in a ring buffer, which is also known as a circular buffer. Data logging information is also stored in the ring buffer, hi one embodiment, the data logging information is stored synchronously or in alignment with the corresponding video data. The data logging information can include a status of whether the corresponding video data with or without error. The ring buffer provides fast and efficient access to video bitstream data that may be accessed multiple times in multiple directions by modules that extract data from the video bitstream in an error resilient manner.
One embodiment of the invention includes a data buffer circuit for a video decoder comprising: a receiver circuit adapted to receive a video bitstream; a ring buffer adapted to store the video bitstream; and an error resilience module adapted to retrieve data from the ring buffer.
One embodiment of the invention includes a data buffer circuit for a video decoder comprising: means for receiving a video bitstream; means for inspecting the video bitstream for error; means for storing the video bitstream in a ring buffer regardless of an error indication; means for storing data logging information corresponding to video bitstream data in the ring buffer in an aligned manner with the corresponding video bitstream data; and means for automatically retrieving both a portion of the video bitstream and a corresponding portion of the data logging information from the ring buffer in response to a request for data.
One embodiment of the invention includes a method of accessing information from a video bitstream comprising: receiving a video bitstream; inspecting the video bitstream for error; storing the video bitstream in a ring buffer regardless of an error indication; storing data logging information corresponding to video bitstream data in the ring buffer in an aligned manner with the corresponding video bitstream data; and automatically retrieving both a portion of the video bitstream and a corresponding portion of the data logging information from the ring buffer in response to a request for data.
Brief Description of the Drawings
These and other features of the invention will now be described with reference to the drawings summarized below. These drawings and the associated description are provided to illustrate preferred embodiments of the invention and are not intended to limit the scope of the invention.
Figure 1 illustrates a networked system for implementing a video distribution system in accordance with one embodiment of the invention.
Figure 2 illustrates a sequence of frames.
Figure 3 is a flowchart generally illustrating a process of concealing errors or missing data in a video bitstream.
Figure 4 illustrates a process of temporal concealment of missing motion vectors.
Figure 5 is a flowchart generally illustrating a process of adaptively concealing errors in a video bitstream.
Figure 6 is a flowchart generally illustrating a process that can use weighted predictions to compensate for errors in a video bitstream.
Figure 7A illustrates a sample of a video packet with DC and AC components for an I-VOP.
Figure 7B illustrates a video packet for a P-VOP.
Figure 8 illustrates an example of discarding a corrupted macroblock. Figure 9 is a flowchart that generally illustrates a process according to an embodiment of the invention of partial RVLC decoding of discrete cosine transform (DCT) portions of corrupted packets
Figures 10-13 illustrate partial RVLC decoding strategies.
Figure 14 illustrates a partially corrupted video packet with at least one intra-coded macroblock.
Figure 15 illustrates a sequence of macroblocks with AC prediction.
Figure 16 illustrates a bit structure for an MPEG-4 data partitioning packet.
Figure 17 illustrates one example of a tradeoff between block error rate (BER) correction capability versus overhead.
Figure 18 illustrates a video bitstream with systematic FEC data.
Figure 19 is a flowchart generally illustrating a process of decoding systematically encoded FEC data in a video bitstream.
Figure 20 is a block diagram generally illustrating one process of using a ring buffer in error resilient decoding of video data.
Detailed Description of Preferred Embodiments
Although this invention will be described in terms of certain preferred embodiments, other embodiments that are apparent to those of ordinary skill in the art, including embodiments that do not provide all of the benefits and features set forth herein, are also within the scope of this invention. Accordingly, the scope of the invention is defined only by reference to the appended claims.
The display of video can consume a relatively large amount of bandwidth, especially when the video is displayed in real time. Moreover, when the video bitstream is wirelessly transmitted or is transmitted over a congested network, packets may be lost or unacceptably delayed. Even when a packet of data in a video bitstream is received, if the packet is not timely received due to network congestion and the like, the packet may not be usable for decoding of the video bitstream in real time. Embodiments of the invention advantageously compensate for and conceal errors that occur when packets of data in a video bitstream are delayed, dropped, or lost. Some embodiments reconstruct the original data from other data. Other embodiments conceal or hide the result of errors so that a corresponding display of the video bitstream exhibits relatively fewer errors, thereby effectively increasing the signal-to-noise ratio (SNR) of the system. Further advantageously, embodiments of the invention can remain downward compatible with video bitstreams that are compliant with existing video encoding standards.
Figure 1 illustrates a networked system for implementing a video distribution system in accordance with one embodiment of the invention. An encoding computer 102 receives a video signal, which is to be encoded to a relatively compact and robust format. The encoding computer 102 can correspond to a variety of machine types, including general purpose computers that execute software and to specialized hardware. The encoding computer 102 can receive a video sequence from a wide variety of sources, such as via a satellite receiver 104, a video camera 106, and a video conferencing terminal 108. The video camera 106 can correspond to a variety of camera types, such as video camera recorders, Web cams, cameras built into wireless devices, and the like. Video sequences can also be stored in a data store 110. The data store 110 can be internal to or external to the encoding computer 102. The data store 110 can include devices such as tapes, hard disks, optical disks, and the like. It will be understood by one of ordinary skill in the art that a data store, such as the data store 110 illustrated in Figure 1, can store unencoded video, encoded video, or both. In one embodiment, the encoding computer 102 retrieves unencoded video from a data store, such as the data store 110, encodes the unencoded video, and stores the encoded video to a data store, which can be the same data store or another data store. It will be understood that a source for the video can include a source that was originally taken in a film format.
The encoding computer 102 distributes the encoded video to a receiving device, which decodes the encoded video. The receiving device can correspond to a wide variety of devices that can display video. For example, the receiving devices shown in the illustrated networked system include a cell phone 112, a personal digital assistant (PDA) 114, a laptop computer 116, and a desktop computer 118. The receiving devices can communicate with the encoding computer 102 through a communication network 120, which can correspond to a variety of communication networks including a wireless communication network. It will be understood by one of ordinary skill in the art that a receiving device, such as the cell phone 112, can also be used to transmit a video signal to the encoding computer 102.
The encoding computer 102, as well as a receiving device or decoder, can correspond to a wide variety of computers. For example, the encoding computer 102 can be any microprocessor or processor (hereinafter referred to as processor) controlled device, including, but not limited to a terminal device, such as a personal computer, a workstation, a server, a client, a mini computer, a main-frame computer, a laptop computer, a network of individual computers, a mobile computer, a palm top computer, a hand held computer, a set top box for a TV, an interactive television, an interactive kiosk, a personal digital assistant (PDA), an interactive wireless communications device, a mobile browser, a Web enabled cell phone, or a combination thereof. The computer may further possess input devices such as a keyboard, a mouse, a trackball, a touch pad, or a touch screen and output devices such as a computer screen, printer, speaker, or other input devices now in existence or later developed.
The encoding computer 102, as well as a decoder, described can correspond to a uniprocessor or multiprocessor machine. Additionally, the computers can include an addressable storage medium or computer accessible medium, such as random access memory (RAM), an electronically erasable programmable read-only memory (EEPROM), hard disks, floppy disks, laser disk players, digital video devices, Compact Disc ROMs, DVD-ROMs, video tapes, audio tapes, magnetic recording tracks, electronic networks, and other techniques to transmit or store electronic content such as, by way of example, programs and data, hi one embodiment, the computers are equipped with a network communication device such as a network interface card, a modem, Infra-Red (IR) port, or other network connection device suitable for connecting to a network. Furthermore, the computers execute an appropriate operating system, such as Linux, Unix, Microsoft® Windows® 3.1, Microsoft® Windows® 95, Microsoft® Windows® 98, Microsoft® Windows® NT, Microsoft® Windows® 2000, Microsoft® Windows® Me, Microsoft® Windows® XP, Apple® MacOS®, IBM® OS/2®, Microsoft® Windows® CE, or Palm OS®. As is conventional, the appropriate operating system may advantageously include a communications protocol implementation, which handles all incoming and outgoing message traffic passed over the network, which can include a wireless network, h other embodiments, while the operating system may differ depending on the type of computer, the operating system may continue to provide the appropriate communications protocols necessary to establish communication links with the network.
Figure 2 illustrates a sequence of frames. A video sequence includes multiple video frames taken at intervals. The rate at which the frames are displayed is referred to as the frame rate, hi addition to techniques used to compress still video, motion video techniques relate a frame at time k to a frame at time k-l to further compress the video information into relatively small amounts of data. However, if the frame at time k-l is not available due to an error, such as a transmission error, conventional video techniques may not be able to properly decode the frame at time k. As will be explained later, embodiments of the invention advantageously decode the video stream in a robust manner such that the frame at time k can be decoded even when the frame at time k-l is not available.
The frames in a sequence of frames can correspond to either interlaced frames or to non-interlaced frames, i.e., progressive frames, h an interlaced frame, each frame is made of two separate fields, which are interlaced together to create the frame. No such interlacing is performed in a non-interlaced or progressive frame. While illustrated in the context of non-interlaced or progressive video, the skilled artisan will appreciate that the principles and advantages described herein are applicable to both interlaced video and noninterlaced video, hi addition, while certain embodiments of the invention may be described only in the context of MPEG-2 or only in the context of MPEG-4, the principles and advantages described herein are applicable to a broad variety of video standards, including H.261, H.263, MPEG-2, and MPEG-4, as well as video standards yet to be developed, hi addition, while certain embodiments of the invention may describe error concealment techniques in the context of, for example, a macroblock, the skilled practitioner will appreciate that the techniques described herein can apply to blocks, macroblocks, video object planes, lines, individual pixels, groups of pixels, and the like.
The MPEG-4 standard is defined in "Coding of Audio- Visual Objects: Systems," 14496-1, ISO/TEC JTC1/SC29/WG11 N2501, November 1998, and "Coding of Audio- Visual Objects: Visual," 14496-2, ISO/TEC JTC1/SC29/WG11 N2502, November 1998, and the MPEG-4 Video Verification Model is defined in ISO/TEC JTC 1/SC 29/WG 11, "MPEG-4 Video Verification Model 17.0," ISO/TEC JTC1/SC29/WG11 N3515, Beijing, China, July 2000.
In an MPEG-2 system, a frame is encoded into multiple blocks, and each block is encoded into six macroblocks. The macroblocks include information, such as luminance and color, for composing a frame. In addition, while a frame may be encoded as a still frame, i.e., an intra-coded frame, frames in a sequence of frames can be temporally related to each other, i.e., predictive-coded frames, and the macroblocks can relate a section of one frame at one time to a section of another frame at another time. hi an MPEG-4 system, a frame in a sequence of frames is further encoded into a number of video objects known as video object planes (VOPs). A frame can be encoded into a single VOP or in multiple VOPs. In one system, such as a wireless system, each frame includes only one VOP so that a VOP is a frame. The VOPs are transmitted to a receiver, where they are decoded by a decoder back into video objects for display. A VOP can correspond to an intra-coded VOP (I-VOP), to a predictive-coded VOP (P-VOP) to a bidirectionally-predictive coded VOP (B-VOP), or to a sprite VOP (S-VOP). An I-VOP is not dependent on information from another frame or picture, i.e., an I-VOP is independently decoded. When a frame consists entirely of I- VOPs, the frame is called an I- Frame. Such frames are commonly used in situations such as a scene change. Although the lack of dependence on content from another frame allows an I-VOP to be robustly transmitted and received, an I-VOP disadvantageously consumes a relatively large amount of data or data bandwidth as compared to a P-VOP or B-VOP. To efficiently compress and transmit video, many VOPs in video frames correspond to P-VOPs.
A P-VOP efficiently encodes a video object by referencing the video object to a past VOP, i.e., to a video object (encoded by a VOP) earlier in time. This past VOP is referred to as a reference VOP. For example, where an object in a frame at time k is related to an object in a frame at time k-l, motion compensation encoded in a P-VOP can be used to encode the video object with less information than with an I-VOP. The reference VOP can be either an I-VOP or a P-VOP.
A B-VOP uses both a past VOP and a future VOP as reference VOPs. hi a real-time video bitstream, a B-VOP should not be used. However, the principles and advantages described herein can also apply to a video bitstream with B-VOPs. An S-VOP is used to display animated objects.
The encoded VOPs are organized into macroblocks. A macroblock includes sections for storing luminance (brightness) components and sections for storing chrominance (color) components. The macroblocks are transmitted and received via the communication network 120. It will be understood by one of ordinary skill in the art that the communication of the data can further include other communication layers, such as modulation to and demodulation from code division multiple access (CDMA). It will be understood by one of ordinary skill in the art that the video bitstream can also include corresponding audio information, which is also encoded and decoded.
Figure 3 is a flowchart 300 generally illustrating a process of concealing errors or missing data in a video bitstream. The errors can correspond to a variety of problems or unavailability including a loss of data, a corruption of data, a header error, a syntax error, a delay in receiving data, and the like. Advantageously, the process of Figure 3 is relatively unsophisticated to implement and can be executed by relatively slow decoders.
Upon the detection of an error, the process starts at a first decision block 304. The first decision block 304 determines whether the error relates to infra-coding or predictive- coding. It will be understood by the skilled practitioner that the infra-coding or predictive- coding can refer to frames, to macroblocks, to video object planes (VOPs), and the like. While illustrated in the context of macroblocks, the skilled artisan will appreciate that the principles and advantages described in Figure 3 also apply to video object planes and the like. The process proceeds from the first decision block 304 to a first state 308 when the error relates to an intra-coded macroblock. When the error relates to a predictive-coded macroblock, the process proceeds from the first decision block 304 to a second decision block 312. It will be understood that the error for a predictive-coded macroblock can arise from a missing macroblock in a present frame at time t, or from an error in a reference frame at time t-1 from which motion is referenced.
In the first state 308, the process interpolates or spatially conceals the error in the intra-coded macroblock, termed a missing macroblock. In one embodiment, the process conceals the error in the missing macroblock by linearly interpolating data from an upper macroblock that is intended to be displayed "above" the missing macroblock in the image, and from a lower macroblock that is intended to be displayed "below" the missing macroblock in the image. Techniques other than linear interpolation can also be used.
For example, the process can vertically linearly interpolate using a line denoted lb copied from the upper macroblock and a line denoted It copied from the lower macroblock. In one embodiment, the process uses the lowermost line of the upper macroblock as lb and the topmost line of the lower macroblock as It.
Depending on the circumstances, the upper macroblock and/or the lower macroblock may also not be available. For example, the upper macroblock and/or the lower macroblock may have an error. In addition, the missing macroblock may be located at the upper boundary of an image or at the lower boundary of the image.
One embodiment of the invention uses the following rules to conceal errors in the missing macroblock when linear interpolation between the upper macroblock and the lower macroblock is not applicable.
When the missing macroblock is at the upper boundary of the image, the topmost line of the lower macroblock is used as lb. If the lower macroblock is also missing, the topmost line of the next-lower macroblock in the image is used as lb, and so forth, if further lower macroblocks are missing. If all the lower macroblocks are missing, a gray line is used as lb.
When the missing macroblock is at the lower boundary of the image or the lower macroblock is missing, lb, the lowermost line of the upper macroblock, is also used as It.
When the missing macroblock is neither at the upper boundary of the image nor at the lower boundary of the image, and interpolation between the upper macroblock and the lower macroblock is not applicable, one embodiment of the invention replaces the missing macroblock with gray pixels (Y=U=V=128 value).
According to one decoding standard, MPEG-4, pixels that are associated with a block with an error are stored as a "0," which corresponds to green pixels in a display. Gray pixels can be closer than green to the colors associated with a missing block, and simulation tests have observed a 0.1 dB improvement over the green pixels with relatively little or no increase in complexity. For example, the gray pixel color can be implemented by a copy instruction. When the spatial concealment is complete, the process ends.
When the error relates to a predictive-coded macroblock, the second decision block 312 determines whether another motion vector is available to be used for the missing macroblock. For example, the video bitstream may also include another motion vector, such as a redundant motion vector, which can be used instead of a standard motion vector in the missing macroblock. In one embodiment, a redundant motion vector is estimated by doubling the standard motion vector. One embodiment of the redundant motion vector references motion in the present frame at time t to a frame at time t-2. When both the frame at time t-2 and the redundant motion vector are available, the process proceeds from the second decision block 312 to a second state 316, where the process reconstructs the missing macroblock from the redundant motion vector and the frame at time t-2. Otherwise, the process proceeds from the second decision block 312 to a third decision block 320. hi the third decision block 320, the process determines whether the error is due to a predictive-coded macroblock missing in the present frame, i.e., missing motion vectors. When the motion vectors are missing, the process proceeds from the third decision block 320 to a third state 324. Otherwise, the process proceeds from the third decision block 320 to a fourth decision block 328. hi the third state 324, the process substitutes the missing motion vectors in the missing macroblock to provide temporal concealment of the error. One embodiment of temporal concealment of missing motion vectors is described in greater detail later in connection with Figure 4. The process advances from the third state 324 to the fourth decision block 328. hi the fourth decision block 328, the process determines whether an error is due to a missing reference frame, e.g., the frame at time t-1. If the reference frame is available, the process proceeds from the fourth decision block 328 to a fourth state 332, where the process uses the reference frame and the substitute motion vectors from the third state 324. Otherwise, the process proceeds to a fifth state 336.
In the fifth state 336, the process uses a frame at time t-k as a reference frame. Where the frame corresponds to the previous-previous frame, k can equal 2. hi one embodiment, the process multiplies the motion vectors that were received in the macroblock or substituted in the third state 324 by a factor, such as 2 for linear motion, to conceal the error. The skilled practitioner will appreciate that other appropriate factors may be used depending on the motion characteristics of the video images. The process proceeds to end until the next error is detected.
Figure 4 illustrates an exemplary process of temporal concealment of missing motion vectors. In one embodiment, a macroblock includes four motion vectors. In the illustrated temporal concealment technique, the missing motion vectors of a missing macroblock 402 are substituted with motion vectors copied from other macroblocks. In another embodiment, which will be described later, the missing motion vectors of the missing macroblock 402 are substituted with motion vectors interpolated from other macroblocks. When the missing macroblock 402 is below and above other macroblocks in the image, the process copies motion vectors from an upper macroblock 404, which is above the missing macroblock 402, and copies motion vectors from a lower macroblock 406, which is below the missing macroblock 402.
The missing macroblock 402 corresponds to a first missing motion vector 410, a second missing motion vector 412, a third missing motion vector 414, and a fourth missing motion vector 416. The upper macroblock 404 includes a first upper motion vector 420, a second upper motion vector 422, a third upper motion vector 424, and a fourth upper motion vector 426. The lower macroblock 406 includes a first lower motion vector 430, a second lower motion vector 432, a third lower motion vector 434, and a fourth lower motion vector 436.
When both the upper macroblock 404 and the lower macroblock 406 are available and include motion vectors, the illustrated process uses the third upper motion vector 424 as the first missing motion vector 410, the fourth upper motion vector 426 as the second missing motion vector 412, the first lower motion vector 430 as the third missing motion vector 414, and the second lower motion vector 432 as the fourth missing motion vector 416.
When the missing macroblock 402 at the upper boundary of the image, the process sets both the first missing motion vector 410 and the second missing motion vector 412 to the zero vector (no motion). The process uses the first lower motion vector 430 as the third missing motion vector 414, and the second lower motion vector 432 as the fourth missing motion vector 416.
When the lower macroblock 406 is corrupted or otherwise unavailable and/or the missing macroblock 402 is at the lower boundary of the image, the process sets the third missing motion vector 414 equal to the value used for. the first missing motion vector 410, and the process sets the fourth missing motion vector 416 equal to the value used for the second missing motion vector 412.
In one embodiment, the missing motion vectors of the missing macroblock 402 are substituted with motion vectors interpolated from other macroblocks. A variety of techniques for interpolation exist. In one example, the first missing motion vector 410 is substituted with a vector sum of the first upper motion vector 420 and 3 times the third upper motion vector 424, i.e., vl410 = vl420 + (3)(v3424). In another example, the third missing motion vector 414 can be substituted with a vector sum of the third lower motion vector 434 and 3 times the first lower motion vector 430, i.e., v3414 = (3)(vl430)+v3434.
Figure 5 is a flowchart 500 generally illustrating a process of adaptively concealing errors in a video bitstream. Advantageously, the process of Figure 5 adaptively selects a concealment mode such that the error-concealed or reconstructed images can correspond to relatively less distorted image. Simulation tests predict improvements of up to about 1.5 decibels (dB) in peak signal to noise ratio. The process of Figure 5 can be used to select an error concealment mode even when data for a present frame is received without an error.
For example, the process can receive three consecutive frames. A first frame is cleanly received. A second frame is received with a relatively high-degree of corruption. Data for a third frame is cleanly received, but reconstruction of a portion of the third frame depends on portions of the second frame, which was received with a relatively high-degree of corruption. Under certain conditions, it can be advantageous to conceal portion of the third frame because portions of the third frame depend on a portions of a corrupted frame. The process illustrated in Figure 5 can advantageously identify when error concealment techniques should be invoked even when such error concealment techniques would not be needed by standard video decoders to provide a display of the corresponding image.
The process starts in a first state 504, where the process receives data from the video bitstream for the present frame, i.e., the frame at time t. A portion of the received data may be missing, due to an error, such as a dropout, corruption, delay, and the like. The process advances from the first state 504 to a first decision block 506. i the first decision block 506, the process determines whether the data under analysis corresponds to an intra-coded video object plane (I-VOP) or to a predictive-coded VOP (P-VOP). It will be understood by one of ordinary skill in the art that the process can operate at different levels, such as on macroblocks or frames, and that a VOP can be a frame. The process proceeds from the first decision block 506 to a second decision block 510 when the VOP is an I-VOP. Otherwise, i.e., the VOP is a P-VOP, the process proceeds to a third decision block 514.
In the second decision block 510, the process determines whether there is an error in the received data for the I-VOP. The process proceeds from the second decision block 510 to a second state 518 when there is an error. Otherwise, the process proceeds to a third state 522. h the second state 518, the process conceals the error with spatial concealment techniques, such as the spatial concealment techniques described earlier in connection with the first state 308 of Figure 3. The process advances from the second state 518 to a fourth state 526. hi the fourth state 526, the process sets an error value to an error predicted for the concealment technique used in the second state 518. One embodiment normalizes the error to a range between 0 and 255, where 0 corresponds to no error, and 255 corresponds to a maximum error. For example, where gray pixels replace a pixel in an error concealment mode, the error value can correspond to 255. hi one embodiment, the error value is retrieved from a table of pre-calculated error estimates. In spatial interpolation, the pixels adjacent to error-free pixels are typically more faithfully concealed than the pixels that are farther away from the error-free pixels. In one embodiment, an error value is modeled as 97 for pixels adjacent to error-free pixels, while other pixels are modeled with an error value of 215. The error values can be maintained in a memory array on a per-pixel basis, can be maintained for only a selection of pixels, can be maintained for groups of pixels, and so forth.
In the third state 522, the process has received an error-free I-VOP and clears (to zero) the error value for the corresponding pixels of the VOP. Of course, other values can be arbitrarily selected to indicate an error-free state. The process advances from the third state 522 to a fifth state 530, where the process constructs the VOP from the received data and ends. The process can be reactivated to process the next VOP received.
Returning to the third decision block 514, the process determines whether the P- VOP includes an error. When there is an error, the process proceeds from the third decision block 514 to a fourth decision block 534. Otherwise, the process proceeds to an optional sixth state 538. hi the fourth decision block 534, the process determines whether the error values for the corresponding pixels are zero or not. If the error values are zero and there is no error in the data of the present P-VOP, then the process proceeds to the fifth state 520 and constructs the VOP with the received data as this corresponds to an error-free condition. The process then ends or waits for the next VOP to be processed. If the error values are non-zero, then the process proceeds to a seventh state 542. h the seventh state 542, the process projects the estimate error value, i.e., a new error value, that would result if the process uses the received data. For example, if a previous frame contained an error, that error may propagate to the present frame by decoding and using the P-VOP of the present frame. In one embodiment, the estimated error value is about 103 plus an error propagation term, which depends on the previous error value. The error propagation term can also include a "leaky" value, such as 0.93, to reflect a slight loss in error propagation per frame. The process advances from the seventh state 542 to an eighth state 546. hi the eighth state 546, the process projects the estimated error value that would result if the process used an error resilience technique. The error resilience technique can correspond to a wide variety of teclmiques, such as an error concealment technique described in connection with Figures 3 and 4, the use of additional motion vectors that reference other frames, and the like. Where the additional motion vector references the previous-previous frame, one embodiment uses an error value of 46 plus the propagated error. It will be recognized that a propagated error in a previous frame can be different than a propagated error in a previous-previous frame, hi one embodiment, the process projects the estimated error values that would result from a plurality of error resilience techniques. The process advances from the eighth state 546 to a ninth state 550. hi the ninth state 550, the process selects between using the received data and using an error resilience technique. In one embodiment, the process selects between using the received data and using one of multiple error resilience techniques. The construction, concealment, or reconstruction technique that provides the lowest projected estimated error value is used to construct the corresponding portion of the image. The process advances from the ninth state 550 to a tenth state 554, where the process updates the affected error values according to the selected received data or error resilience technique used to generate the frame, and the process ends. It will be understood that the process can then wait until the next VOP is received, and the process can reactivate to process the next VOP. hi the optional sixth state 538, the process computes the projected error values with multiple error resilience techniques. The error resilience technique that indicates the lowest projected estimated error value is selected. The process advances from the optional sixth state 538 to an eleventh state 558. hi the eleventh state 558, the process applies the error resilience technique selected in the optional sixth state 538. Where the process uses only one error resilience technique to conceal errors for P-VOPs, the skilled practitioner will appreciate that the optional sixth state 538 need not be present, and the process can apply the error resilience technique in the eleventh state 558 without a selection process. The process advances from the from the eleventh state 558 to a twelfth state 562, where the process updates the corresponding error values in accordance with the error resilience technique applied in the eleventh state 558. The process then ends and can be reactivated to process future VOPs.
Figure 6 is a flowchart 600 generally illustrating a process that can use weighted predictions to compensate for errors in a video bitstream. One embodiment of the process is relatively less complex to implement than adaptive techniques. The illustrated process receives a frame of data and processes the data one macroblock at a time. It will be understood that when errors in transmission arise, the process may not receive an entire frame of data. Rather, the process can start processing the present frame upon other conditions, such as determining that the timeframe for receiving the frame has expired, or receiving data for the subsequent frame, and the like.
The process starts in a first decision block 604, where the process determines whether the present frame is a predictive-coded frame (P-frame) or is an intra-coded frame (I-frame). The process proceeds from the first decision block 604 to a second decision block 608 when the present frame corresponds to an I-frame. When the present frame corresponds to a P-frame, the process proceeds from the first decision block 604 to a third decision block 612. hi the second decision block 608, the process determines whether the macroblock under analysis includes an error. The macroblock under analysis can correspond to the first macroblock of the frame and end with the last macroblock of the frame. However, the order of analysis can vary. The error can correspond to a variety of anomalies, such as missing data, syntax errors, checksum errors, and the like. The process proceeds from the second decision block 608 to a first state 616 when no error is detected in the macroblock. If an error is detected in the macroblock, the process proceeds to a second state 620. hi the first state 616, the process decodes the macroblock. All macroblocks of an intra-coded frame are intra-coded. An intra-coded macroblock can be decoded without reference to other macroblocks. The process advances from the first state 616 to a third state 624, where the process resets an error variance (EV) value corresponding to a pixel in the macroblock to zero. The error variance relates to a predicted or expected amount of error propagation. Since the intra-coded macroblock does not depend on other macroblocks, an error-free intra-coded macroblock can be expected to have an error variance of zero. It will be understood by one of ordinary skill in the art that any number can be arbitrarily selected to represent zero. It will also be understood that the error variance can be tracked in a broad variety of ways, including on a per pixel basis, on groups of pixels, on selected pixels, per macroblock, and the like. The process advances from the third state 624 to a fourth decision block 628. hi the fourth decision block 628, the process determines whether it has processed the last macroblock in the frame. The process returns from the fourth decision block 628 to the second decision block 608 when there are further macroblocks in the frame to be processed. When the last macroblock has been processed, the process ends and can be reactivated when for the subsequent frame.
In the second state 620, the process conceals the error with spatial concealment techniques, such as the spatial concealment techniques described earlier in connection with the first state 308 of Figure 3. In one embodiment, the process fills the pixels of the macroblock with gray, which is encoded as 128. The process advances from the second state 620 to a fourth state 632, where the process sets the macroblock' s corresponding error variance, σ^ , to a predetermined value, σ^- . hi one embodiment, the error variance, σ^ , is normalized to a range between 0 and 255. The predetermined value can be obtained by, for example, simulation results, real world testing, and the like, hi addition, the predetermined value can depend on the concealment technique, hi one embodiment, where the concealment technique is to fill the macroblock with gray, the predetermined value,σHr, is 255. The process advances from the fourth state 632 to the fourth decision block 628.
When the frame is a P-frame, the process proceeds from the first decision block 604 to the third decision block 612. hi the third decision block 612, the process determines whether the macroblock under analysis includes an error. The process proceeds from the third decision block 612 to a fifth decision block 636 when no error is detected. When an error is detected, the process proceeds from the third decision block 612 to a fifth state 640. A macroblock in a P-frame can correspond to either an inter-coded macroblock or to an intra-coded macroblock. hi the fifth decision block 636, the process determines whether the macroblock corresponds to an inter-coded macroblock or to an intra-coded macroblock. The process proceeds from the fifth decision block 636 to a sixth state 644 when the macroblock corresponds to an intra-coded macroblock. When the macroblock corresponds to an inter-coded macroblock, the process proceeds to a seventh state 648. hi the sixth state 644, the process proceeds to decode the intra-coded macroblock that was received without an error. The intra-coded macroblock can be decoded without reference to another macroblock. The process advances from the sixth state 644 to an eighth state 652, where the process resets the corresponding error variances maintained for the macroblock to zero. The process advances from the eighth state 652 to a sixth decision block 664. i the sixth decision block 664, the process determines whether it has processed the last macroblock in the frame. The process returns from the sixth decision block 664 to the third decision block 612 when there are further macroblocks in the frame to be processed. When the last macroblock has been processed, the process ends and can be reactivated for the subsequent frame.
In the seventh state 648, the process reconstructs the pixels of the macroblock even when the macroblock was received without error. Reconstruction in this circumstance can improve image quality because a previous-previous frame may exhibit less corruption than a previous-frame. One embodiment of the process selects between a first reconstruction mode and a second reconstruction mode depending on which mode is expected to provide better error concealment, h another embodiment, weighted sums are used to combine the two modes. In one example, the weights used correspond to the inverse of estimated errors so that the process decodes with minimal mean squared error (MMSE). hi the first reconstruction mode, the process reconstructs the macroblock based on the received motion vector and the corresponding portion in the previous frame. The reconstructed pixel, qk , as reconstructed by the first reconstruction mode, is expressed in
Equation 1. In Equation 1, rk is a prediction residual. qk = Pk-X (Eq. 1) hi the second reconstruction mode, the process reconstructs the macroblock by doubling the amount of motion specified by the motion vectors of the macroblock, and the process uses a corresponding portion of the previous-previous frame, i.e., the frame at time k-2.
The error variance of a pixel reconstructed by the first reconstruction mode, σ ^ , is expressed in Equation 2, where k indicates the frame, e.g., k=0 for the present frame. The error variance of a pixel reconstructed by the second reconstruction mode, σ , is expressed in Equation 3.
σ^^ EK^ -Rw)2} (Εq. 2)
X= E{(P^ -P^}
= E{(pk_x -Pk^2)2} + E(pk_1 ~ pk_2)2 = σm 2Λ 2 _2 hi one embodiment, the process selects the second reconstruction mode when c Pt-i > Cw H ra (=> +o" P?k-2 . In another embodiment, ' wei °ghted sums are used to combine the reconstruction techniques, hi one example, the weights used correspond to the inverse of predicted errors so that the process decodes with minimal mean squared error (MMSE). With weighted sums, the process combines the two predictions to reconstruct the pixel, qk. In one embodiment, the pixel qk is reconstructed by qk , as expressed in Equation 4.
& = -ι + (l- β)Λ-2 + i (Eq- ) In one embodiment, the weighting coefficient, β, is calculated from Equation 5.
Figure imgf000028_0001
The process advances from the seventh state 648 to a ninth state 656. In the ninth state 656, the process updates the corresponding error variances for the macroblock based on the reconstruction applied in the seventh state 648. The process advances from the from the ninth state 656 to the sixth decision block 664. i one embodiment, the error variance is calculated from expression in Equation 6.
_2 _ σ Plt-i (c Hae) + r Plk-2 ) ' rτ n σgk ~ ~^~, — 2 — ; — 1~ ^q. b) ttW Λ-i Pk-2 h the fifth state 640, the process conceals the errors in the macroblock. A variety of concealment techniques can be applied, hi one embodiment, the process uses temporal concealment, regardless of whether the macroblock is intra-coded or inter-coded. It will be understood that in other embodiments, the type of coding used in the macroblock can be used as a factor in the selection of a concealment technique.
One embodiment of the process selects between a first concealment mode based on a previous frame and a second concealment mode based on a previous-previous frame in the fifth state 640. In the first concealment mode, the process generates an inter-coded macroblock for the missing macroblock using the motion vectors extracted from a macroblock that is above the missing macroblock in the image. If the macroblock that is above the missing macroblock has an error, the motion vectors can be set to zero vectors. The corresponding portion of the frame is reconstructed with the generated inter-coded macroblock and the corresponding reference information from the previous frame, i.e., the frame at t-1.
In the second concealment mode, the process generates an inter-coded macroblock for the missing macroblock by copying and multiplying by 2 the motion vectors extracted from a macroblock that is above the missing macroblock in the image. If the macroblock above the missing macroblock has an error, the motion vectors can be set to zero vectors. The corresponding portion of the frame is reconstructed with the generated inter-coded macroblock and the corresponding reference information from the previous-previous frame, i.e., the frame at t-2.
The error variance can be modeled as a sum of the associated propagation error and concealment error. In one embodiment, the first concealment mode has a lower concealment error than the second concealment mode, but the second concealment mode has a lower propagation error than the first concealment mode.
In one embodiment, the process selects between the first concealment mode and the second concealment mode based on which one provides a lower estimated error variance, hi another embodiment, weighted sums are used to combine the two modes. In Equation 7, σ 2 k(i) , denotes the error variance of a pixel q^ The value of i is equal to 1 for the first concealment mode based on the previous frame and is equal to 2 for the second concealment mode based on the previous-previous frame.
= E{(qk - c,.,.)2} + ^{(c,_r. -?,_,)2} = σ2 +σ; hi Equation 7, σ^(l) corresponds to the error variance for the concealment mode and σ2_ corresponds to the propagation error variance.
In another embodiment, the process computes weighted sums to further reduce the error variance of the concealment. For example, qk can be replaced by qk as shown in Equation 8.
Figure imgf000030_0001
hi one embodiment, the weighting coefficient, a, is as expressed in Equation 9.
Figure imgf000030_0002
The process advances from the fifth state to a tenth state 660. In the tenth state 660, the process updates the corresponding error variances for the macroblock based on the concealment applied in the fifth state 640, and the process advances to the sixth decision block 664. hi one embodiment with weighted sums, the error variance is calculated from expression in Equation 10.
= E{(qk - qk)2} = ° - °ft( ) (Eq. 10)
In some situations, an entire frame is dropped or lost. One embodiment of the invention advantageously repeats the previous frame, or interpolates between the previous frame and the next frame, in response to a detection of a frame that is missing from a frame sequence. In a real-time application, the display of the sequence of frames can be slightly delayed to allow the decoder time to receive the next frame, to decode the next frame, and to generate the interpolated replacement frame from the previous frame and the next frame. The missmg frame can be detected by calculating a frame rate from received frames and by calculating an expected time to receive a subsequent frame. When a frame does not arrive at the expected time, it is replaced with the previous frame or interpolated from the previous and next frames. One embodiment of the process further resynchronizes the available audio portion to correspond with the displayed images.
Data corruption is an occasionally unavoidable occurrence. Various teclmiques can help conceal errors in the transmission or reception of video data. However, standard video decoding techniques can inefficiently declare error-free data as erroneous. For example, the MPEG-4 standard recommends dumping an entire macroblock when an error is detected in the macroblock. The following techniques illustrate that data for some macroblocks can be reliably recovered and used from video packets with corruption. For example, a macroblock in an MPEG-4 system can contain six 8-by-8 image blocks. Four of the image blocks encode luminosity, and two of the image blocks encode chromaticity. h one conventional system, all six of the image blocks are discarded even if a transmission error were only to affect one image block.
Figures 7A and 7B illustrate sample video packets. In an MPEG-4 system, video packets include resynchronization markers to indicate the start of a video packet. The number of macroblocks within a video packet can vary.
Figure 7A illustrates a sample of a video packet 700 with DC and AC components for an I-VOP. The video packet 700 includes a video packet header 702, which includes the resynchronization marker and other header information that can be used to decode the macroblocks of the packet, such as the macroblock number of the first macroblock in the packet and the quantization parameter (QP) to decode the packet. A DC portion 704 can include mcbpc, dquant, and dc data, such as luminosity. A DC marker 706 separates the DC portion 704 from an AC portion 708. h one embodiment, the DC marker 706 is a 19- bit binary string "110 1011 0000 0000 0001." The AC portion 708 can include an ac_pred flag and other textual information.
Figure 7B illustrates a video packet 720 for a P-VOP. The video packet 720 includes a video packet header 722 similar to the video packet header 702 of Figure 7A. The video packet 720 further includes a motion vector portion 724, which includes motion data. A motion marker 726 separates the motion data in the motion vector portion 724 from texture data in a DCT portion 728. hi one embodiment, the motion marker is a 17-bit binary string "l ll ll 0000 0000 0001."
Figure 8 illustrates an example of discarding a corrupted macroblock. Reversible variable length codes (RVLC) are designed to allow data, such as texture codes, to be read or decoded in both a forward direction 802 and a reverse or backward direction 804. For example, in the forward direction 802 with N macroblocks, a first macroblock 806, MB #0, is read first and a last macroblock 808, MB # N-l, is read last. An error can be located in a macroblock 810, which can be used to define a range of macroblocks 812 that are discarded. Figure 9 is a flowchart that generally illustrates a process according to an embodiment of the invention of partial RVLC decoding of discrete cosine transform (DCT) portions of corrupted packets. The process starts at a first state 904 by reading macroblock information, such as the macroblock number, of the video packet header of the video packet. The process advances from the first state 904 to a second state 908. hi the second state 908, the process inspects the DC portion or the motion vector portion of the video packet, as applicable. The process applies syntactic and logic tests to the video packet header and to the DC portion or motion vector portion to detect errors therein. The process advances from the second state 908 to a first decision block 912. hi the first decision block 912, the exemplary process determines whether there was an error in the video packet header from the first state 904 or the DC portion or motion vector portion from the second state 908. The first decision block 912 proceeds to a third state 916 when the error is detected. When the error is not detected, the process proceeds from the first decision block 912 to a fourth state 920. hi the third state 916, the process discards the video packet. It will be understood by one of ordinary skill in the art that errors in the video packet header or in the DC portion or motion vector portion can lead to relatively severe errors if incorrectly decoded. In one embodiment, error concealment techniques are instead invoked, and the process ends. The process can be reactivated later to read another video packet. hi the fourth state 920, the process decodes the video packet in the forward direction. In one embodiment, the process decodes the video packet according to standard MPEG-4 RVLC decoding teclmiques. One embodiment of the process maintains a count of macroblocks in a macroblocks counter. The header at the beginning of the video packet includes a macroblock index, which can be used to initialize the macroblocks counter. As decoding proceeds in the forward direction, the macroblock counter increments. When an error is encountered, one embodiment removes one count from the macroblocks counter such that the macroblock counter contains the number of completely decoded macroblocks.
In addition, one embodiment of the process stores all codewords as leaves of a binary tree. Branches of the binary tree are labeled with either a 0 or a 1. One embodiment of the process uses two different tree formats depending on whether the macroblock is intra or inter coded. When decoding in the forward direction, bits from the video packet are retrieved from a bit buffer containing the RVLC data, and the process fraverses the data in the tree until one of 3 events is encountered. These events correspond to a first event where a valid codeword is reached at a leaf-node; a second event where an invalid leaf of the binary tree (not corresponding to any RVLC codeword) is reached; and a third event where the end of the bit buffer is reached.
The first event indicates no error. With no error, a valid RVLC codeword is mapped, such as via a simple lookup table, to its corresponding leaf-node (last, run, level). hi one embodiment, this information is stored in an array. When an entire 8-by-8 block is decoded, as indicated by the presence of an RVLC codeword with lastr , the process proceeds to decode the next block until an error is encountered or the last block is reached.
The second event and the third event correspond to errors. These errors can be caused by a variety of error conditions. Examples of error conditions include an invalid RVLC codeword, such as wrong marker bits in the expected locations of ESCAPE symbols; decoded codeword from an ESCAPE symbol results in (run, length, level) information that should have been encoded by a regular (non-ESCAPE) symbol; more than 64 (or 63 for the case of Infra-blocks with DC coded separately from AC) DCT coefficients in an 8-by-8 block; extra bits remaining after successfully decoding all expected DCT coefficients of all 8-by-8 blocks in a video packet; and insufficient bits to decode all expected 8-by-8 blocks in video packet. These conditions can be tested sequentially. For example, when testing for extra bits remaining, the condition is tested after all the 8-by-8 blocks in the video packet are processed, hi another example, the testing of the number of DCT coefficients can be performed on a block-by-block basis. The process advances from the fourth state 920 to a second decision block 924. However, it will be understood by the skilled practitioner that the fourth state 920 and the second decision block 924 can be included in a loop, such as a FOR loop. i the second decision block 924, the process determines whether there has been an error in the forward decoding of the video packet as described in the fourth state 920 (in the forward direction). The process proceeds from the second decision block 924 to a fifth state 928 when there is no error. If there is an error in the forward decoding, the process proceeds from the second decision block 924 to a sixth state 932 and to a tenth state 948. Upon an error in forward decoding, the process terminates further forward decoding and records the error location and type of error in the tenth state 948. The error location in the forward direction, L\, and the number of completely decoded macroblocks in the forward direction, N , will be described in greater detail later in connection with Figures 10-13. i the fifth state 928, the process reconstructs the DCT coefficient blocks and ends. In one embodiment, the reconstruction proceeds according to standard MPEG-4 techniques. It will be understood by one of ordinary skill in the art that the process can be reactivated to process the next video packet. i the sixth state 932, the process loads the video packet data to a bit buffer. In order to perform partial RNLC decoding, detection of the DC (for I-NOP) or Motion (for P- NOP) markers for each video packet should be obtained without prior syntax errors or data overrun, hi one embodiment, a circular buffer that reads data for the entire packet is used to obtain the remaining bits for a video packet by unpacking each byte to 8 bits.
The process removes stuffing bits from the end of the buffer, which leaves only data bits in the RNLC buffer. During parsing of the video packet header and motion vector portion or DC portion of the video packet, the expected number of macroblocks, the type of each one macroblock (TΝTRA or INTER), whether a macroblock is skipped or not, how many and which of the expected 4 luminance and 2 chrominance 8-by-8 blocks have been coded and should thus be present in the bitstream, and whether INTRA blocks have 63 or 64 coefficients (i.e., whether their DC coefficient is coded together or separate from the AC coefficients) should be known. This information can be stored in a data structure with the RVLC data bits. The process advances from the sixth state 932 to a seventh state 936. hi the seventh state 936, the process performs reversible variable length code (RVLC) decoding in the backward direction on the video packet, hi one embodiment, the process performs the backward decoding on the video packet according to standard MPEG- 4 RVLC decoding techniques. The maximum number of decoded codewords should be recovered in each direction. One embodiment of the process maintains the number of completely decoded macroblocks encountered in the reverse direction in a counter, hi one embodiment, the counter is initialized with a value from the video packet header that relates to the number of macroblocks expected in the video packet, N, and the counter counts down as macroblocks are read. The process advances from the seventh state 936 to an eighth state 940. hi the eighth state 940, the process detects an error in the video packet from the backward decoding and records the error and the type of error, hi addition to the errors for the forward direction described earlier in connection with the fourth state 920, another error that can occur in the reverse decoding direction occurs when the last decoded codeword, i.e., the first codeword in the reverse direction, decodes to a codeword with last=0. Advantageously, detection of the location of the error in the reverse direction can reveal ranges of data where such data is still usable. Use of the error location in the reverse or backward direction, E , and use of the number of completely decoded macroblocks in the reverse direction, N , will be described later in connection with Figures 10-13. i the exemplary process, different decoding trees (IΝTRA/IΝTER) are used for reverse decoding direction than in the forward decoding direction. In one embodiment, the reverse decoding trees are obtained by reversing the order of bits for each codeword. In addition, one embodiment modifies the symbol decoding routine to take into account that a sign bit that is coming last in forward decoding is encountered first in backward decoding; and that Last=l indicates the last codeword of an 8-by-8 block in forward decoding, but indicates the first codeword in reverse decoding. When decoding in the reverse direction, the very first codeword should have last=l or otherwise an error is declared.
When data is read in the reverse order, the process looks ahead by one symbol when decoding a block. If a codeword with last=l is reached, the process has reached the end of reverse decoding of the current 8-by-8 block, and the process advances to the next block. In addition, the order of the blocks is reversed for the same reason. For example, if 5 INTER blocks followed by 3 INTRA blocks are expected in the forward direction, 3 INTRA blocks followed by 5 INTER blocks should be expected in the reverse direction. The process advances from the eighth state 940 to a ninth state 944.
In the ninth state 944, the process discards overlapping error regions from the forward and the reverse decoding directions. The 2 arrays of decoded symbols are compared to evaluate overlap in error between the error obtained during forward RVLC decoding and the error obtained during reverse RVLC decoding to partially decode the video packet. Further details of partial decoding will be described in greater detail later in connection with Figure 10-13. It will be understood by one of ordinary skill in the art that that in the process described herein, the arrays contain the successfully decoded codewords before any decoding error has been declared in each direction. If there is no overlap between successfully decoded regions in forward and reverse direction at the bit-level and also at the DCT (Macroblock) level, then one embodiment performs a conservative backtracking of a predetermined number of bits, T, such as about 90 bits in each direction, i.e., the last 90 bits in each direction are discarded. Those codewords that overlap (in the bit buffer) or decode to DCT coefficients that overlap (in the DCT buffer) are discarded. In addition, one embodiment retains only entire INTER macroblocks (no partial macroblock DCT data or Intra-coded macroblocks) in the decoding buffers. The remaining codewords are then used to reconstruct the 8-by-8 DCT values for individual blocks, and the process ends. It will be understood that the process can be reactivated to process the next video packet.
The process illustrated in Figure 9 reveals the location of the error (the bit location) in the forward direction, L\ the location of the error in the reverse direction, J2; the type of error that was encountered in the forward direction and in the reverse direction; the expected length of the video packet, L; the number of expected macroblocks in the video packet, N, the number of completely decoded macroblocks in the forward direction, N; and the number of completely decoded macroblocks in the reverse direction, N .
Figures 10-13 illustrate partial RNLC decoding strategies. In one exemplary partial RNLC decoding process, a partial decoding strategy for extraction of useful data from a video packet is selected according to one of four outcomes. Processing of a first outcome, where
Figure imgf000036_0001
+ N2 < N, will be described later in connection with Figure 10. Processing of a second outcome, where L\ + Z2 < L, and N\ + N2 >= N, will be described later in connection with Figure 11. Processing of a third outcome, where L\ + X >= L, and N + N < N, will be described later in connection with Figure 12. Processing of a fourth outcome, where L\ + E2 >=L, and N + N2 >= N, will be described later in connection with Figure 13.
Figure 10 illustrates a partial decoding strategy used when Lι + L2 < L, and N + N2 < N A first portion 1002 of Figure 10 indicates the bit error positions, L\ and E2. A second portion 1004 indicates the completely decoded macroblocks in the forward direction, N\, and in the reverse direction, N . A third portion 1006 indicates a backtracking of bits, T, from the bit error locations. It will be understood by one of ordinary skill in the art that the number selected for the backtracking of bits, T, can vary in a very broad range and can even be different in the forward direction and in the reverse direction, h one embodiment, the value of 7" is 90 bits. The exemplary process apportions the video packet in a first partial packet 1010, a second partial packet 1012, and a discarded partial packet 1014. The first partial packet 1010 may be used by the decoder and includes complete macroblocks up to a bit position corresponding to L\-T. The second partial packet 1012 may also be used by the decoder and includes complete macroblocks from a bit position corresponding to L-L2+T to the end of the packet, L, such that the second partial packet is about L2-T in size. As described in greater detail later in connection with Figure 14, one embodiment of the process discards intra blocks in the first partial packet 1010 and in the second partial packet 1012, even if the intra blocks are identified as uncorrupted. The discarded partial packet 1014, which includes the remaining portion of the video packet, is discarded.
Figure 11 illustrates a partial decoding strategy used when L\ + J2 < L, and N\ + N2 >= N A first portion 1102 of Figure 11 indicates the bit error positions, L\ and E . A second portion 1104 indicates the completely decoded macroblocks in the forward direction, N, and in the reverse direction, N2.
The exemplary process apportions the video packet in a first partial packet 1110, a second partial packet 1112, and a discarded partial packet 1114. The first partial packet 1110 may be used by the decoder and includes complete macroblocks from the start of the video packet to the macroblock corresponding to N-N2-l. The second partial packet 1112 may also be used by the decoder and includes the (Ni+l)th macroblock to the last macroblock in the video packet, such that the second partial packet 1112 is about N-N-l in size. One embodiment of the process discards intra blocks in the first partial packet 1110 and in the second partial packet 1112, even if the infra blocks are identified as uncorrupted. The discarded partial packet 1114, which includes the remaining portion of the video packet, is discarded.
Figure 12 illustrates a partial decoding strategy used when L\ + 2 >= L, and N\ + N2 < N A first portion 1202 of Figure 12 indicates the bit error positions, L\ and E2. A second portion 1204 indicates the completely decoded macroblocks in the forward direction, N\, and in the reverse direction, N2.
The exemplary process apportions the video packet in a first partial packet 1210, a second partial packet 1212, and a discarded partial packet 1214. The first partial packet 1210 may be used by the decoder and includes complete macroblocks from the beginning of the video packet to a macroblock at N-b_mb(E ), where b_mb(E2) denotes the macroblock at the bit position L2. The second partial packet 1212 may also be used by the decoder and includes the complete macroblocks from the bit position corresponding to L\ to the end of the packet. One embodiment of the process discards intra blocks in the first partial packet 1210 and in the second partial packet 1212, even if the intra blocks are identified as uncorrupted. The discarded partial packet 1214, which includes the remaining portion of the video packet, is discarded.
Figure 13 illustrates a partial decoding strategy used when L\ + L2 >=L, and N + N2 >= N. A first portion 1302 of Figure 13 indicates the bit error positions, L\ and E2. A second portion 1304 indicates the completely decoded macroblocks in the forward direction, N\, and in the reverse direction, N2.
The exemplary process apportions the video packet in a first partial packet 1310, a second partial packet 1312, and a discarded partial packet 1314. The first partial packet 1310 may be used by the decoder and includes complete macroblocks up to the bit position corresponding to the lesser of N-b_mb(L2), where b_mb(E ) denotes the last complete macroblock up to bit position L2, and the complete macroblocks up to (N-N2-l)th macroblock. The second partial packet 1312 may also be used by the decoder and includes the number of complete macroblocks counting from the end of the video packet corresponding to the lesser of N-f mb^i), where f_mb(L ) denotes the last macroblock in the reverse direction that is uncorrupted as determined by the forward direction, and the number of complete macroblocks corresponding to N-N-l. One embodiment of the process discards intra blocks in the first partial packet 1310 and in the second partial packet 1312, even if the intra blocks are identified as uncorrupted. The discarded partial packet 1314, which includes the remaining portion of the video packet, is discarded.
Figure 14 illustrates a partially corrupted video packet 1402 with at least one intra- coded macroblock. In one embodiment, an intra-coded macroblock in a portion of a partially corrupted video packet is discarded even if the intra-coded macroblock is in a portion of the partially corrupted video packet that is considered uncorrupted.
A decoding process, such as the process described in connection with Figures 9 to 13, allocates the partially corrupted video packet 1402 to a first partial packet 1404, a corrupted partial packet 1406, and a second partial packet 1408. The first partial packet 1404 and the second partial packet 1408 are considered error-free and can be used. The corrupted partial packet 1406 includes corrupted data and should not be used. However, the illustrated first partial packet 1404 includes a first intra-coded macroblock 1410, and the illustrated second partial packet 1408 includes a second intra- coded macroblock 1412. One process according to an embodiment of the invention also discards an intra-coded macroblock, such as the first intra-coded macroblock 1410 or the second intra-coded macroblock 1412, when any error or corruption is detected in the video packet, and the process advantageously continues to use the recovered macroblocks corresponding to error-free macroblocks. Instead, the process conceals the intra-coded macroblocks of the partially corrupted video packets.
One embodiment of the invention partially decodes intra-coded macroblocks from partially corrupted packets. According to the MPEG-4 standard, any data from a corrupted video packet is dropped. Infra-coded macroblocks can be encoded in both I-NOPs and in P- VOPs. As provided in the MPEG-4 standard, a DC coefficient of an intra-coded macroblock and/or the top-row and first-column AC coefficient of the intra-coded macroblock can be predictively coded from the intra-coded macroblock' s neighboring intra- coded macroblocks.
Parameters encoded in the video bitstream can indicate the appropriate mode of operation. A first parameter, referred to in MPEG-4 as "intra_dc_vlc_thr," is located in the VOP header. As set forth in MPEG-4, the first parameter, intra_dc_vlc_thr, is encoded to one of 8 codes as described in Table I, where QP indicates a quantization parameter.
Figure imgf000039_0001
Table I The infra_dc_vlc_thr code of "000" corresponds to separating DC coefficients from AC coefficients in intra-coded macroblocks. With respect to an I-VOP, the setting of the intra_dc_vlc_thr parameter to "000" results in the placement by the encoder of the DC coefficient before the DC marker, and the placement of the AC coefficients after the DC marker.
With respect to a P-VOP, the setting of the intra_dc_vlc_thr parameter to "000" results in the encoder placing the DC coefficients immediately after the motion marker, together with the cbpy and ac_pred_flag information. It will be understood that the value of the infra_dc_vlc_thr parameter is selected at the encoding level. For error resilience, video bitstreams may be relatively more robustly encoded with the intra_dc_vlc_thr parameter set to 000. Nonetheless, one embodiment of the invention advantageously detects the setting of the intra_dc_vlc_thr parameter to "000," and monitors for the motion marker and/or the DC marker. If the corresponding motion marker and/or is observed without an error, the process classifies the DC information received ahead of the motion marker and/or DC marker and uses the DC information in decoding. Otherwise, the DC information is dropped.
A second parameter, referred to in MPEG-4 as "ac_pred_flag" is located after the motion marker / DC marker, but before RVLC texture data. The "ac_pred_fiag" parameter instructs the encoder to differentially encode and the decoder to differentially decode the top row and first column of DCT coefficients (a total of 14 coefficients) from a neighboring block that has the best match with the current block with regard to DC coefficients. The neighboring block with the smallest difference is used as a prediction block as shown in Figure 15.
Figure 15 illustrates a sequence of macroblocks with AC prediction. Figure 15 includes a first macroblock 1502, A, a second macroblock 1504, B, a third macroblock 1506, C, a fourth macroblock 1508, D, a fifth macroblock 1510, X, and a sixth macroblock 1512, Y. The fifth macroblock 1510, X, and the sixth macroblock 1512, Y, are encoded with AC prediction enabled. A first column of DCT coefficients from the first macroblock 1502, A, is used in the fifth macroblock 1510, X, and the sixth macroblock 1512, Y. The top row of coefficients from the third macroblock 1506, C, or from the fourth macroblock 1508, D, is used to encode the top row of the fifth macroblock 1510, X, or the sixth macroblock 1512, Y, respectively.
It will be understood that for error resilience, the encoder should disable the AC prediction or differential encoding for intra-coded macroblocks. With the AC prediction disabled, intra-coded macroblocks that correspond to either the first or second "good" part of the RVLC data can be used. hi one embodiment, with AC prediction enabled, the intra-coded macroblocks of the "good" part of the RVLC data can be dropped as described earlier in connection with Figure 14. hi addition, one decoder or decoding process according to an embodiment of the invention further determines whether the intra-coded macroblock, referred to as "suspect intra-coded macroblock" can be used even with AC prediction enabled. The decoder determines whether another infra-coded macroblock exists to the immediate left or immediately above the suspect intra-coded macroblock. When no such other intra-coded macroblock exists, the suspect intra-coded macroblock is labeled "good," and is decoded and used.
One decoder further determines whether any of the other macroblocks to the immediate left or immediately above the suspect intra-coded macroblock have not been decoded. If there are any such macroblocks, the suspect intra-coded macroblock is not used.
Figure 16 illustrates a bit structure for an MPEG-4 data partitioning packet. Data partitioning is an option that can be selected by the encoder. The data partitioning packet includes a resync marker 1602, a macroblock_number 1604, a quant_scale 1606, a header extension code (HEC) 1608, a motion and header information 1610, a motion marker 1612, a texture information 1614, and a resync marker 1616.
The MPEG-4 standard allows the DC portion of frame data to be placed in the data partitioning packet either before or after the AC portion of frame data. The order is determined by the encoder. When data partitioning is enabled, the encoder includes motion vectors together with "not-coded" and "mcbpc" information in the motion and header information 1610 ahead of the motion marker 1612 as part of header information as shown in Figure 16.
When an error is detected in the receiving of a packet, but the error occurs after the motion marker 1612, one embodiment of the invention uses the data received ahead of the motion marker 1612. One embodiment predicts a location for the motion marker 1612 and detects an error based on whether or not the motion marker 1612 was observed in the predicted location. Depending on the nature of the scenes encoded, the data included in the motion and header information 1610 can yield a wealth amount of information that can be advantageously recovered.
For example, when the "not coded" flag is set, a macroblock should be copied from the same location in the previous frame by the decoder. The macroblocks corresponding to the "not coding" flag can be reconstructed safely. The "mcbpc" identifies which of the 6 8- by-8 blocks that form a macroblock (4 for luminance and 2 for chrominance) have been coded and thus include corresponding DCT coefficients in the texture information 1614.
When RVLC is enabled, the texture information 1614 is further divided into a first portion and a second portion. The first portion immediately following the motion marker 1612 includes "cbpy" information, which identifies which of the 4 luminance 8-by-8 blocks are actually coded and which are not. The cbpy information also includes a DC coefficient for those intra-coded macroblocks in the packet for which the corresponding "Intra DC VLC encoding" has been enabled.
The cbpy information further includes an ac_pred_flag, which indicates whether the corresponding intra-coded macroblocks have been differentially encoded with AC prediction by the encoder from other macroblocks that are to the immediate left or are immediately above the macroblock. In one embodiment, the decoder uses all of or a selection of the cbpy information, the DC coefficient, and the ac_pred_flag in conjunction with the presence or absence of a first error-free portion of the DCT data in the texture information 1614 to assess which part can be safely decoded. In one example, the presence of such a good portion of data indicates that DC coefficients of intra macroblocks and cbpy- inferred non-coded Y-blocks of a macroblock can be decoded. .
One technique used in digital communications to increase the robustness of transmitted or stored digital information is forward error correction (FEC) coding. FEC coding includes the addition of error correction information before data is stored or transmitted. Part of the FEC process can also include other techniques such as bit- interleaving. Both the original data and the error correction information are stored or transmitted, and when data is lost, the FEC decoder can reconstruct the missing data from the data that it received and the error correction information.
Advantageously, embodiments of the invention decode FEC codes in an efficient and backward compatible manner. One drawback to FEC coding techniques is that the error correction information increases the amount of data that is stored or transmitted, referred to as overhead. Figure 17 illusfrates one example of a tradeoff between block error rate (BER) correction capability versus overhead. A horizontal axis 1710 corresponds to an average BER correction capability. A vertical axis 1720 corresponds to an amount of overhead, expressed in Figure 17 in percentage. A first curve 1730 corresponds to a theoretical bit overhead versus BER correction capability. A second curve 1740 corresponds to one example of an actual example of overhead versus BER correction capability. Despite the overhead costs, the benefits of receiving the original data as intended can outweigh the drawbacks of increased data storage or transmission, or the drawbacks of a revised bit allocation in a bandwidth limited system.
Another disadvantage to FEC coding is that the data, as encoded with FEC codes, may no longer be compatible with systems and/or standards in use prior to FEC coding. Thus, FEC coding is relatively difficult to add to existing systems and/or standards, such as MPEG-4.
To be compatible with existing systems, a video bitsfream should be compliant with a standard syntax, such as MPEG-4 syntax. To retain compatibility with existing systems, embodiments of the invention advantageously decode FEC coded bitstreams that are encoded only with systematic FEC codes and not non-systematic codes, and retrieve FEC codes from identified user data video packets.
Figure 18 illustrates a video bitstream with systematic FEC data. FEC codes can correspond to either systematic codes or non-systematic codes. A systematic code leaves the original data untouched and appends the FEC codes separately. For example, a conventional bitstream can include a first data 1810, a second data 1830, and so forth. With systematic coding, the original data, i.e., the first data 1810 and the second data 1830, is preserved, and the FEC codes are provided separately. An example of the separate FEC code is illustrated by a first FEC code 1820 and a second FEC code 1840 in Figure 18. In one embodiment, the data is carried in a VOP packet, and the FEC codes are carried in a user data packet, which follows the corresponding VOP packet in the bitsfream. One embodiment of the encoder includes a packet of FEC codes in a user data video packet for each VOP packet. However, it will be understood that depending on decisions made by the encoder, less than every corresponding data may be supplemented with FEC codes.
By contrast, in a non-systematic code, the original data and the FEC codes are combined. It will be understood by one of ordinary skill in the art that the application of FEC techniques that generate non-systematic code result in bitstreams should be avoided where the applicable video standard does not specify FEC coding.
A wide variety of FEC coding types can be used, hi one embodiment, the FEC coding techniques correspond to Bose-Chaudhuri-Hocquenghem BCH) coding techniques, hi one embodiment, a block size of 511 is used, hi the illustrated configurations, the FEC codes are applied at the packetizer level, as opposed to another level, such as a channel level. hi the context of an MPEG-4 system, one way of including the separate systematic error correction data, as shown by the first FEC code 1820 and the second FEC code 1840, is to include the error correction data in a user data video packet. The user data video packet can be ignored by a standard MPEG-4 decoder. In the MPEG-4 syntax, a data packet is identified as a user data video packet in the video bitstream by a user data start code, which is a bit string of 000001B2 in hexadecimal (start code value of B2), as the start code of the data packet. Various data can be included with the FEC codes in the user data video packet. In one embodiment, a user data header code identifies the type of data in the user data video packet. For example, a 16-bit code for the user data header code can identify that data in the user data video packet is FEC code. In another example, such as in a standard yet to be defined, the FEC codes of selected data are carried in a dedicated data packet with a unique start code.
It will be appreciated that error correction codes corresponding to all the data in the video bitstream can be included in the user data video packet. However, this disadvantageously results in a relatively large amount of overhead. One embodiment of the invention advantageously encodes FEC codes from only a selected portion of the data in the video bitsfream. The user data header code in the user data video packet can further identify the selected data to which the corresponding FEC codes apply, hi one example, FEC codes are provided and decoded only for data corresponding to at least one of motion vectors, DC coefficients, and header information.
Figure 19 is a flowchart 1900 generally illustrating a process of decoding systematically encoded FEC data in a video bitsfream. The process can be activated once per VOP. The decoding process is advantageously compatible with video bitstreams that include FEC coding and those that do not. The process starts at a first state 1904, where the process receives the video bitsfream. The video bitstream can be received wirelessly, through a local or a remote network, and can further be temporarily stored in buffers and the like. The process advances from the first state 1904 to a second state 1908.
In the second state 1908, the process retrieves the data from the video bitstream. For example, in an MPEG-4 decoder, the process can identify those portions corresponding to standard MPEG-4 video data and those portions corresponding to FEC codes, hi one embodiment, the process retrieves the FEC codes from a user data video packet. The process advances from the second state 1908 to a decision block 1912.
In the decision block 1912, the process determines whether FEC codes are available to be used with the other data retrieved in the second state 1908. When FEC codes are available, the process proceeds from the decision block 1912 to a third state 1916. Otherwise, the process proceeds from the decision block 1912 to a fourth state 1920. hi another embodiment, the decision block 1912 instead determines whether an error is present in the received video bitstream. It will be understood that the corresponding portion of the video bitstream that is inspected for errors can be stored in a buffer. When an error is detected, the process proceeds from the decision block 1912 to the third state 1916. When no error is detected, the process proceeds from the decision block 1912 to the fourth state 1920. hi the third state 1916, the process decodes the FEC codes to reconstruct the faulty data and/or verify the correctness of the received data. The third state 1916 can include the decoding of the normal video data that is accompanied with the FEC codes, hi one embodiment, only selected portions of the video data supplemented with FEC codes, and the process reads header codes or the like, which indicate the data to which the retrieved FEC codes correspond.
The process advances from the third state to an optional fifth state 1924. One encoding process further includes other data in the same packet as the FEC codes. For example, this other data can correspond to at least one of a count of the number of motion vectors, a count of the number of bits per packet that are encoded between the resync field and the motion marker field. This count allows a decoder to advantageously resynchronize to a video bitstream earlier than at a place in a bitsfream with the next marker that permits resynchronization The process advances from the optional fifth state 1924 to the end. The process can be reactivated to process the next batch of data, such as another VOP. hi the fourth state 1920, the process uses the retrieved video data. The retrieved data can be the normal video data corresponding to a video bitstream without embedded FEC codes. The retrieved data can also correspond the normal video data that is maintained separately in the video bitstream from the embedded FEC codes. The process then ends until reactivated to process the next batch of data.
Figure 20 is a block diagram generally illustrating one process of using a ring buffer in error resilient decoding of video data. Data can be transmitted and/or received in varying bit rates and in bursts. For example, network congestion can cause delays in the receipt of packets of data. The dropping of data, particularly in wireless environments, can also occur, hi addition, a relatively small amount of received data can be stored in a buffer until it is ready to be processed by a decoder.
One embodiment of the invention advantageously uses a ring buffer to store incoming video bitstreams for error resilient decoding. A ring buffer is a buffer with a fixed size. It will be understood that the size of the ring buffer can be selected in a very broad range. A ring buffer can be constructed from an addressable memory, such as a random access memory (RAM). Another name for a ring buffer is circular buffer.
The storing of the video bitsfream in the ring buffer is advantageous in error resilient decoding, including error resilient decoding of video bitstreams in a wireless MPEG-4 compliant receiver, such as a video-enabled cellular telephone. With error resilient decoding teclmiques, data from the video bitstream may be read from the video bitstream multiple times, in multiple locations, and in multiple directions. The ring buffer permits the decoder to retrieve data from various portions of the video bitstream in a reliable and efficient manner, h one test, use of the ring buffer sped access to bitstream data by a factor of two.
In contrast to other buffer implementations, data is advantageously not flushed from a ring buffer. Data enters and exits the ring buffer in a first-in first-out (FIFO) manner. When a ring buffer is full, the addition of an additional element overwrites the first element or the oldest element in the ring buffer.
The block diagram of Figure 20 illustrates one configuration of a ring buffer 2002. Data received from the video bitstream is loaded into the ring buffer 2002 as the data is received. In one embodiment, the modules of the decoder that decode the video bitstream do not access the video bitstream directly, but rather, access the video bitstream data that is stored in the ring buffer 2002. Also, the skilled practitioner will appreciate that the ring buffer 2002 can reside either ahead of or behind a VOP decoder in the data flow. However, the placement of the ring buffer 2002 ahead of the VOP decoder saves memory for the ring buffer 2002, as the VOP is in compressed form ahead of the VOP decoder.
The video bitstream data that is loaded into the ring buffer 2002 is represented in Figure 20 by a bitstream file 2004. Data logging information, including error logging information, such as error flags, is also stored in the ring buffer 2002 as it is generated. The data logging information is represented in Figure 20 as a log file 2006. In one embodiment, a log interface between H.223 output and decoder input advantageously synchronizes or aligns the data logging information in the ring buffer 2002 with the video bitstream data.
A first arrow 2010 corresponds to a location (address) in the ring buffer 2002 in which data is stored. As data is added to the ring buffer 2002, the ring buffer 2002 conceptually rotates in the clockwise direction as shown in Figure 20. A second arrow 2012 indicates an illustrative position from which data is retrieved from the ring buffer 2002. A third arrow 2014 can correspond to an illustrative byte position in the packet that is being retrieved or accessed. Packet start codes 2016 can be dispersed throughout the ring buffer 2002.
When data is retrieved from the ring buffer 2002 for decoding of a VOP with video packets enabled, one embodiment of the decoder inspects the corresponding error-flag of each packet. When the packets are found to be corrupted, the decoder skips the packets until the decoder encounters a clean or error-free packet. When the decoder encounters a packet, it stores the appropriate location information in an index table, which allows the decoder to access the packet efficiently without repeating a seek for the packet. In another embodiment, the decoder uses the contents of the ring buffer 2002 to recover and use data from partially corrupted video packets as described earlier in connection with Figures 7-16.
Table π illustrates a sample of contents of an index table, which allows relatively efficient access to packets stored in the ring buffer 2002.
Figure imgf000047_0001
Figure imgf000048_0001
Table II Various embodiments of the invention have been described above. Although this invention has been described with reference to these specific embodiments, the descriptions are intended to be illusfrative of the invention and are not intended to be limiting. Various modifications and applications may occur to those skilled in the art without departing from the true spirit and scope of the invention as defined in the appended claims.

Claims

WHAT IS CLAIMED IS:
1. A video decoder that conceals errors received in a video bitstream, the video decoder comprising: an error detection circuit adapted to detect errors in the video bitstream; a memory device configured to provide an indication of an error in a portion of a video bitstream corresponding to a portion in an image; a control circuit configured to be responsive to an indication of the error in a first portion of the image, where the control circuit is further configured to detect if a second portion above the first portion in the image and if a third portion below the first portion in the image are error-free, where the control circuit is further configured to interpolate between corresponding data in the second portion of the image and corresponding data in the third portion of the data to conceal the error.
2. The video decoder as defined in Claim 1, wherein the control circuit is further configured to determine when the first portion is at an upper boundary of the image and to copy corresponding data from the third portion of the data to the first portion to conceal the error.
3. The video decoder as defined in Claim 1, wherein the control circuit is further configured to conceal the error by setting pixels in the first portion to gray.
4. A video decoder that adaptively conceals errors received in a video bitstream, the video decoder comprising: a memory module adapted to maintain error values for selected portions of an image; a plurality of error resilience modules that generate images in response to errors; a prediction module adapted to generate a plurality of predictions of error values corresponding to the plurality of error resilience modules; a control module adapted receive an indication of an error in the video bitstream and, in response, to select an error resilience module from the error resilience module based on a comparison of the predictions of error values.
5. The video decoder as defined in Claim 4, further comprising a lookup table that stores predetermined error values corresponding to error resilience techniques, where the lookup table is coupled to the prediction module.
6. A video decoder that conceals errors received in a video bitstream, the video decoder comprising: a memory module adapted to maintain error variances for selected portions of an image; a plurality of error resilience modules that generate images in response to errors; a prediction module adapted to generate a plurality of weights corresponding to the plurality of error resilience modules; a control module adapted receive an indication of an error in the video bitstream and, in response, to combine outputs of selected error resilience modules with the weights from the prediction module to conceal the error.
7. The video decoder as defined in Claim 6, wherein the prediction module provides a weight that is related to an inverse of an expected error.
8. The video decoder as defined in Claim 6, wherein the prediction module provides a weight that provides a minimal mean squared error.
9. An optimizer circuit that selectively applies an error concealment technique from among a plurality of error concealment techniques comprising: means for maintaining an estimated error relating to at least a portion of an image; means for using the estimated error to generate a plurality of projected error estimates corresponding to application of an error concealment technique; and means for selecting the error concealment technique that provides the lowest projected error estimate.
10. A method of concealing errors in a video decoder comprising: detecting an error in a first portion of a video bitstream that is infra-coded; determining that a second portion of an image above the first portion and a third portion of the image below the first portion are not corrupted; and interpolating pixels in the first portion between a first horizontal row of pixels in the second portion and a second horizontal row of pixels in the third portion to conceal errors when the second portion and the third portion are not corrupted.
11. The method as defined in Claim 10, wherein the interpolating comprises linear interpolating.
12. The method as defined in Claim 10, further comprising: determining that the first portion corresponds to an upper boundary of the image; and copying the second horizontal row of pixels from the third portion when the third portion is not corrupted.
13. The method as defined in Claim 10, further comprising: determining that the second portion is corrupted; determining that the third portion is not corrupted; and copying the second horizontal row of pixels from the third portion when the second portion is corrupted and the third portion is not corrupted.
14. The method as defined in Claim 10, further comprising: determining that the second portion is corrupted; determining that the third portion is corrupted; and setting pixels in the first portion to gray when the second portion and the third portion are corrupted.
15. The method as defined in Claim 10, wherein the detected error relates to an error in a frame.
16. The method as defined in Claim 10, wherein the detected error relates to an error in a video object plane (VOP).
17. The method as defined in Claim 10, wherein the detected error relates to an error in a macroblock.
18. A method of concealing errors in a video decoder comprising: detecting an error in a first portion of a video bitstream that is predictive- coded; providing a substitute motion vector when the error relates to a standard motion vector; using a first reference portion of a previous frame with the substitute motion vector to reconstruct when the first reference portion is available; and using a second reference portion of a second frame that is prior to the previous frame when the first reference portion of the previous frame is not available.
19. The method as defined in Claim 18, further comprising: using the standard motion vector from the video bitsfream with the second reference portion of the second frame when the motion vector is available and the first reference portion is not available; and compensating a magnitude of the standard motion vector to account for a temporal difference between the previous frame and the second frame.
20. The method as defined in Claim 19, wherein the compensating the magnitude comprises multiplying by two when the second frame is a previous-previous frame.
21. The method as defined in Claim 18, further comprising: using the substitute motion vector with the second reference portion of the second frame when the standard motion vector is not available and the first reference portion is not available; and compensating a magnitude of the substitute motion vector to account for a temporal difference between the previous frame and the second frame.
22. The method as defined in Claim 18, wherein the substitute motion vector is a copy of an adjacent motion vector.
23. The method as defined in Claim 18, wherein the substitute motion vector is interpolated from adjacent motion vectors.
24. The method as defined in Claim 18, further comprising: determining that another motion vector from the video bitstream is available; and using the other motion vector in lieu of the standard motion vector and the substitute motion vector to conceal the error.
25. A method of adaptively producing a video image comprising: receiving video data for a frame; determining whether the video data is intra-coded or predictive-coded; when the video data is infra-coded: determining whether the intra-coded video data corresponds to an error; concealing the error when the intra-coded video data corresponds to the error; setting an error value that is associated with at least a portion of the video packet to a first predetermined value when the intra- coded video data corresponds to the error; resetting the error value when no error for the intra-coded video data is detected; and using the intra-coded video data when no error for the intra- coded video data is detected; when the video data is predictive-coded, determining whether the predictive- coded video data corresponds to an error; when the predictive-coded video data corresponds to an error: using the predictive-coded video data when no error for the predictive-coded video data is detected and the associated error value is reset; projecting a first estimated error corresponding to use of the predictive-coded video data when no error is detected for the predictive-coded video data and the associated error value is not reset; projecting a second estimated error corresponding to use of a first predictive-coded error concealment technique when no error is detected for the predictive-coded video data and the associated error value is not reset; selecting between the use of the predictive-coded video data and the use of the first predictive-coded error concealment technique based on a comparison between the first projected estimated error and the second projected estimated error; and updating the error value according to which of the predictive- coded video data and the first predictive-coded error concealment technique is selected; and when the predictive-coded video data corresponds to an error: applying a second predictive-coded error concealment technique; and updating the error value according to the second predictive- coded error concealment technique.
26. The method as defined in Claim 25, wherein the first predictive-coded error concealment technique and the second predictive-coded error concealment technique are the same.
27. The method as defined in Claim 25, wherein the projecting a second estimated error further comprises projecting a plurality of estimated errors corresponding to a plurality of error concealment techniques for predictive coding, and wherein the selecting between the use of the predictive-coded video data and the use of the predictive-coded error concealment technique further comprises selecting among the use of the predictive-coded video data and the use of an error concealment technique from the plurality of error concealment techniques based on the corresponding estimated error projections.
28. The method as defined in Claim 25, wherein the applying the second predictive-coded error concealment technique further comprises: projecting a plurality of estimated errors corresponding to a plurality of error concealment techniques for predictive coding; using the projected estimate errors to select among the plurality of error concealment techniques; applying the selected error concealment technique; and adjusting the error value according to the selected error concealment teclmique.
29. The method as defined in Claim 25, wherein the video data is a macroblock.
30. The method as defined in Claim 25, wherein the video data is a video object plane (VOP).
31. The method as defined in Claim 25, wherein the video data is a frame.
32. The method as defined in Claim 25, further comprising normalizing the error value to a range between 0 to 255.
33. The method as defined in Claim 25, further comprising multiplying the error value with a leaky value that has a value of less than 1 in response to an advancement in a frame sequence.
34. The method as defined in Claim 33, wherein the leaky value is about 0.93.
35. The method as defined in Claim 25, further comprising maintaining the error value in a memory array, wherein an error value in the array is associated with at least one pixel in the image.
36. The method as defined in Claim 25, further comprising maintaining the error value in a memory array, wherein each pixel in the image is associated with an error value in the array.
37. A method of producing a video image comprising: receiving data for a video frame; determining whether the video frame is a predictive-coded frame or is an intra-coded frame; performing the following when the video frame is the predictive-coded frame: determining whether a group of video data from the video frame corresponds to an error; when there is no error in the group of video data: determining whether the group of video data is intra-coded or predictive-coded; infra-decoding the group of video data when the group of video data is intra coded; resetting an error variance associated with at least a portion of the group of video data when the group of video data is infra coded; using a first weighted sum to reconstruct a portion of an image corresponding to the group of video data when the video data is intra coded, where the first weighted sum combines results of at least a first and a second technique; and updating the error variance according to the first weighted sum used to reconstruct the portion of the image; and when there is an error in the group of video data: concealing the error in the portion of the image corresponding to the group of video data; and updating the error variance according to the error concealment.
38. The method as defined in Claim 37, wherein the group of video data comprises a macroblock.
39. The method as defined in Claim 37, wherein the group of video data comprises a video object plane (VOP).
40. The method as defined in Claim 37, wherein the group of video data comprises missing data.
41. The method as defined in Claim 37, wherein the concealing the error further comprises using a second weighted sum to conceal the portion of the image corresponding to the group of video data, where the second weighted sum combines results of at least at least two error concealing techniques.
42. The method as defined in Claim 37, wherein the first weighted sum weighs the results of the first and the second technique according to values that are related to inverses of expected errors of the first and the second techniques.
43. The method as defined in Claim 37, wherein the first technique comprises constructing the portion of the image from a first reference portion of a previous frame and the second technique comprises constructing the portion of the image from a second reference portion of a frame that is prior to the previous frame.
44. The method as defined in Claim 37, wherein the second weighted sum weighs the results of the third and the fourth error concealing techniques according to inverses of expected errors of the third and the fourth error concealing techniques, respectively.
45. The method as defined in Claim 37, when the video frame is the predictive- coded frame, further comprising: receiving a next group of video data; and continuing execution of the method until the groups of video data are processed.
46. The method as defined in Claim 37, further comprising: performing the following when the video frame is the intra-coded frame: determining whether a group of data from the corresponds to an error; when there is no error in the group of video data: infra-decoding the group of video data; and resetting an error variance associated with at least a portion of the group of video data; and when there is error in the group of video data: concealing the error in the portion of the image corresponding to the group of video data; and setting the error variance to a predetermined value.
47. The method as defined in Claim 46, when the video frame is the intra-coded frame, further comprising: receiving a next group of video data; and continuing execution of portions of the method corresponding to groups of data in an infra-decoded frame until the groups of video data are processed.
48. A method of selecting an error concealment technique from among a plurality of error concealment techniques comprising: maintaining an estimated error relating to at least a portion of an image; using the estimated error to generate a plurality of projected error estimates corresponding to application of an error concealment technique; and selecting the error concealment technique that provides the lowest projected error estimate.
49. The method as defined in Claim 48, wherein an error concealment technique from the plurality of error concealment technique comprises setting all corresponding pixels to gray.
50. The method as defined in Claim 48, wherein an error concealment technique from the plurality of error concealment technique comprises interpolating between a previous frame and a subsequent frame.
51. A circuit adapted to recover useful data from a video packet that is at least partially corrupted, the circuit comprising: a decoding circuit configured to decode a video packet in a forward direction and in a backward direction, where the decoding circuit detects bit locations of errors first encountered in the forward direction and in the backward direction; a counter adapted to maintain a count of complete macroblocks decoded in the forward direction and in the backward direction; and a control circuit adapted to discard at least a portion of the video packet that corresponds to an overlapping region, where the control circuit is further configured to further discard additional data corresponding to a backtracking amount when there is no overlapping region, where the control circuit is further configured to discard information in incomplete macroblocks, and where the control circuit is adapted to permit use of at least a portion of the remaining data.
52. The circuit as defined in Claim 51, wherein the backtracking amount is 90 bits in each direction.
53. The circuit as defined in Claim 51, wherein the control circuit is further configured to discard an intra-coded macroblock from a partially corrupted video packet.
54. The circuit as defined in Claim 51, further comprising a ring buffer, which stores a video bitstream and is coupled to the decoding circuit such that the decoding circuit can access a video packet in both the forward direction and in the backward direction.
55. A circuit adapted to recover useful data from a video packet that is at least partially corrupted, the circuit comprising: a data parsing circuit adapted to determine whether a video packet is encoded with data partitioning enabled; an error checking circuit configured to determine whether an error exists ahead of a motion marker of the video packet; and a decoder coupled to the data parsing circuit and to the error checking circuit, where the decoder is adapted to decode at least a portion of the data in the corrupted video packet ahead of the motion marker when data parsing circuit indicates that the video packet is encoded with data partitioning enabled and when the error checking circuit indicates that the error does not exist ahead of the motion marker.
56. The circuit as defined in Claim 55, wherein the error checking circuit further comprises: a prediction circuit that generates a predicted location for the motion marker; a circuit that detects an actual location of the motion marker; and a comparison circuit that indicates that the error exists ahead of the motion marker when the actual location and the predicted location do not match.
57. A circuit adapted to recover useful data from a video packet that is at least partially corrupted, the circuit comprising: means for receiving the video packet; means for ending without recovering data when corruption is detected in at least one of a video packet header of the video packet, a DC portion of the video packet, and a motion vector portion of the video packet; means for initiating decoding of the video packet in a forward direction; means for maintaining a first count of a number of macroblocks decoded without error in the forward direction; means for storing codewords decoded in the forward direction; means for storing a first bit location when an error is first detected in the forward direction; means for initiating decoding of the video packet in a reverse direction; means for maintaining a second count of a number of macroblocks decoded without error in the reverse direction; means for storing codewords decoded in the reverse direction; means for storing a second bit location when an error is first detected in the reverse direction; means for determining if there is an overlapping region, where the overlapping region corresponds to a region identified in both the forward direction and in the reverse direction as having an error; means for discarding the data in the overlapping region and for using the data in a remaining portion of the video packet if there is an overlapping region; and means for discarding the data between a first backtracking amount ahead of the first error location in the forward direction and a second backtracking amount behind the second error location in the first location, and for recovering the remaining portion of the video packet if there is no overlapping region.
58. A method of recovering useful data from a video packet that has been corrupted, the method comprising: receiving the video packet; ending without recovering data when corruption is detected in a video packet header of the video packet; ending without recovering data when corruption is detected in a DC portion of the video packet; ending without recovering data when corruption is detected in a motion vector portion of the video packet; initiating decoding of the video packet in a forward direction; maintaining a first count of a number of macroblocks decoded without error in the forward direction; storing codewords decoded in the forward direction; storing a first bit location when an error is first detected in the forward direction; initiating decoding of the video packet in a reverse direction; maintaining a second count of a number of macroblocks decoded without error in the reverse direction; storing codewords decoded in the reverse direction; storing a second bit location when an error is first detected in the reverse direction; determining if there is an overlapping region, where the overlapping region corresponds to a region identified in both the forward direction and in the reverse direction as having an error; if there is an overlapping region, discarding the data in the overlapping region and using the data in a remaining portion of the video packet; and if there is no overlapping region, discarding the data between a first backtracking amount ahead of the first error location in the forward direction and a second backtracking amount behind the second error location in the first location, and recovering the remaining portion of the video packet.
59. The method as defined in Claim 58, wherein the first error location and the second error location correspond to bit locations.
60. The method as defined in Claim 58, wherein the first error location and the second error location correspond to macroblock boundaries.
61. The method as defined in Claim 58, wherein the first backfracking amount and the second backtracking amount are each to a next valid macroblock boundary.
62. The method as defined in Claim 58, wherein the first backfracking amount and the second backtracking amount are about 90 bits.
63. The method as defined in Claim 58, further comprising discarding recovered data from a corrupted video packet that corresponds to an intra-coded macroblock.
64. The method as defined in Claim 58, further comprising: determining whether AC prediction was disabled by the encoder; using a recovered infra-coded macroblock if the intra-coded macroblock is recovered from a portion of the video packet that is ahead of a DC marker in the forward direction, where the video packet was encoded with AC prediction disabled; and otherwise discarding recovered data corresponding to an intra-coded macroblock.
65. The method as defined in Claim 58, further comprising using recovered data corresponding to a first intra-coded macroblock only if no other infra-coded macroblock exists to the immediate left of the first intra-coded macroblock and no other intra-coded macroblock exists immediately above the first intra-coded macroblock in the image.
66. The method as defined in Claim 58, further comprising concealing errors with gray pixels for portions of the video packet that were not recoverable.
67. A method for recovering data in a corrupted video packet comprising: inspecting the video packet to determine whether the video packet was encoded with data partitioning enabled; determining whether an error exists ahead of a motion marker of the video packet; and decoding at least a portion of the data in the corrupted video packet ahead of the motion marker when the video packet was encoded with data partitioning enabled and when the error does not exist ahead of the motion marker.
68. The method as defined in Claim 67, wherein the determining whether the error exists ahead of the motion marker further comprises: predicting a location for the motion marker; detecting the motion marker; comparing an actual location of the motion marker to the predicted location of the motion marker; determining that the error exists behind the motion marker when the actual location and the predicted location match; and determining that the error exists ahead of the motion marker when the actual location and the predicted location do not match.
69. The method as defined in Claim 67, wherein the portion of the data decoded includes decoding of motion vectors.
70. The method as defined in Claim 67, wherein the portion of the data decoded includes decoding of not-coded macroblock flags.
71. The method as defined in Claim 67, wherein the portion of the data decoded includes decoding of luminance (DC) information.
72. A video decoder adapted to reconstruct corrupted video data comprising: a receiver circuit adapted to receive a video bitstream; a buffer coupled to the receiver circuit, where the buffer is adapted to store at least a portion of the video bitstream; a parsing circuit adapted to distinguish video data from forward error correction (FEC) codes; an error monitoring circuit configured to detect corruption in the video data; and an FEC decoder adapted to receive the video data and the FEC codes, where the FEC decoder is configured to remove the corruption in the video data to which the FEC codes apply.
73. The video decoder as defined in Claim 72, wherein the FEC decoder decodes FEC codes that correspond to Bose-Chaudhuri-Hocquenghem (BCH) codes.
74. The video decoder as defined in Claim 72, wherein the buffer is a ring buffer.
75. The video decoder as defined in Claim 72, wherein the parsing circuit is configured to retrieve the video data from a packet for a video object plane (VOP) and retrieving the FEC codes from a user data video packet associated with the VOP.
76. A video decoder that decodes a video bitsfream that includes forward error correction (FEC) codes, the video decoder comprising: means for receiving the video bitstream, which includes both video data and FEC codes; means for retrieving video data from the video bitstream; means for determining if there is corruption in a portion of the video data retrieved; means for retrieving FEC codes from the video bitsfream in response to a detection of corruption; and means for using the FEC codes to reconstruct the portion of the video data such that the portion of the video data is recovered without corruption.
77. A process of decoding a video bitstream that includes forward error correction (FEC) codes, the process comprising: receiving the video bitstream, which includes both video data and FEC codes; retrieving video data from the video bitstream; determining if there is corruption in a portion of the video data retrieved; retrieving FEC codes from the video bitsfream in response to a detection of corruption; and using the FEC codes to reconstruct the portion of the video data such that the portion of the video data is recovered without corruption.
78. The process as defined in Claim 77, wherein the FEC codes correspond to Bose-Chaudhuri-Hocquenghem (BCH) codes.
79. The process as defined in Claim 77, further comprising: storing the video bitsfream in a buffer; retrieving the video data from the buffer when retrieving video data from the video bitstream; and retrieving the FEC codes from the buffer when retrieving the FEC codes from the video bitstream.
80. The process as defined in Claim 79, wherein the buffer is a ring buffer.
81. The process as defined in Claim 77, further comprising retrieving the video data from a packet for a video object plane (VOP) and retrieving the FEC codes from a user data video packet associated with the VOP.
82. The process as defined in Claim 77, further comprising receiving a header code that specifies a subset of video data to which the FEC codes correspond, and applying the FEC codes only to the subset of video data.
83. The process as defined in Claim 77, further comprising concealing an error in a corresponding pixel with a gray color pixel when the portion of the video data cannot be recovered without corruption.
84. A process of decoding a video bitstream that includes forward error correction (FEC) codes, the process comprising: receiving the video bitstream, which includes both video data and FEC codes; retrieving video data from the video bitstream; determining if FEC codes that correspond to the retrieved video data are available; retrieving FEC codes from the video bitstream when the FEC codes are available; and using the FEC codes to decode the portion of the video data such that the portion of the video data is recovered without corruption.
85. The process as defined in Claim 84, wherein the FEC codes correspond to Bose-Chaudhuri-Hocquenghem (BCH) codes.
86. The process as defined in Claim 84, further comprising: storing the video bitstream in a buffer; retrieving the video data from the buffer when retrieving video data from the video bitstream; and retrieving the FEC codes from the buffer when retrieving the FEC codes from the video bitstream.
87. The process as defined in Claim 86, wherein the buffer is a ring buffer.
88. The process as defined in Claim 84, further comprising retrieving the video data from a packet for a video object plane (VOP) and retrieving the FEC codes from a user data video packet associated with the VOP.
89. The process as defined in Claim 84, further comprising receiving a header code that specifies a subset of video data to which the FEC codes correspond, and applying the FEC codes only to the subset of video data.
90. A data buffer circuit for a video decoder comprising: a receiver circuit adapted to receive a video bitsfream; a ring buffer adapted to store the video bitsfream; and an error resilience module adapted to retrieve data from the ring buffer.
91. The data buffer circuit as defined in Clam 90, wherein the receiver circuit comprises a wireless receiver.
92. The data buffer circuit as defined in Clam 90, further comprising a log interface circuit adapted to store data logging information in the ring buffer such that the data logging information is aligned with corresponding data from the video bitstream.
93. The data buffer circuit as defined in Clam 90, further comprising a VOP decoder disposed in a data flow between the receiver circuit and the ring buffer such that the video bitstream stored by the ring buffer is in a decoded form.
94. A data buffer circuit for a video decoder comprising: means for receiving a video bitstream; means for inspecting the video bitstream for error; means for storing the video bitstream in a ring buffer regardless of an error indication; means for storing data logging information corresponding to video bitstream data in the ring buffer in an aligned manner with the corresponding video bitstream data; and means for automatically retrieving both a portion of the video bitstream and a corresponding portion of the data logging information from the ring buffer in response to a request for data.
95. A method of accessing information from a video bitstream comprising: receiving a video bitstream; inspecting the video bitsfream for error; storing the video bitsfream in a ring buffer regardless of an error indication; storing data logging information corresponding to video bitstream data in the ring buffer in an aligned manner with the corresponding video bitsfream data; and automatically retrieving both a portion of the video bitstream and a corresponding portion of the data logging information from the ring buffer in response to a request for data.
96. The method as defined in Claim 95, further comprising wirelessly receiving the video bitstream.
97. The method as defined in Claim 95, further comprising receiving the video bitstream in an MPEG-4 compliant decoder.
98. The method as defined in Claim 95, further comprising decoding video object planes (VOPs) from the video bitstream prior to storing the video bitstream in the ring buffer, and wherein the storing of the video bitstream comprises storing the decoded VOPs.
99. The method as defined in Claim 95, further comprising decoding video object planes (VOPs) from the video bitstream after the video bitstream has been stored in the ring buffer.
PCT/US2002/006865 2001-03-05 2002-03-05 Systems and methods of error resilience in a video decoder WO2002071736A2 (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2002570518A JP2004528752A (en) 2001-03-05 2002-03-05 Error restoration system and restoration method in video decoder
EP02713780A EP1374578A4 (en) 2001-03-05 2002-03-05 Systems and methods of error resilience in a video decoder
AU2002245609A AU2002245609A1 (en) 2001-03-05 2002-03-05 Systems and methods of error resilience in a video decoder

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US27344301P 2001-03-05 2001-03-05
US60/273,443 2001-03-05
US27585901P 2001-03-14 2001-03-14
US60/275,859 2001-03-14
US28628001P 2001-04-25 2001-04-25
US60/286,280 2001-04-25

Publications (3)

Publication Number Publication Date
WO2002071736A2 true WO2002071736A2 (en) 2002-09-12
WO2002071736A3 WO2002071736A3 (en) 2003-04-03
WO2002071736A8 WO2002071736A8 (en) 2003-10-23

Family

ID=27402570

Family Applications (3)

Application Number Title Priority Date Filing Date
PCT/US2002/006726 WO2002071639A1 (en) 2001-03-05 2002-03-05 Systems and methods for error resilient encoding
PCT/US2002/006880 WO2002071640A1 (en) 2001-03-05 2002-03-05 Systems and methods for encoding and decoding redundant motion vectors in compressed video bitstreams
PCT/US2002/006865 WO2002071736A2 (en) 2001-03-05 2002-03-05 Systems and methods of error resilience in a video decoder

Family Applications Before (2)

Application Number Title Priority Date Filing Date
PCT/US2002/006726 WO2002071639A1 (en) 2001-03-05 2002-03-05 Systems and methods for error resilient encoding
PCT/US2002/006880 WO2002071640A1 (en) 2001-03-05 2002-03-05 Systems and methods for encoding and decoding redundant motion vectors in compressed video bitstreams

Country Status (5)

Country Link
US (23) US20030012287A1 (en)
EP (3) EP1374429A4 (en)
JP (10) JP2004528752A (en)
AU (1) AU2002245609A1 (en)
WO (3) WO2002071639A1 (en)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006513643A (en) * 2003-01-10 2006-04-20 トムソン ライセンシング Technology to define concealment order to minimize error propagation
WO2006075890A1 (en) * 2005-01-17 2006-07-20 Samsung Electronics Co., Ltd. Display apparatus and control method thereof
JP2007525908A (en) * 2004-02-27 2007-09-06 トムソン ライセンシング Error concealment technique using weighted prediction
JP2009518950A (en) * 2005-12-07 2009-05-07 トムソン ライセンシング Method and apparatus for video error concealment using reference frame selection rules
US7796499B2 (en) 2003-12-05 2010-09-14 Telefonaktiebolaget L M Ericsson (Publ) Method of and system for video fast update
US7992074B2 (en) 2005-09-13 2011-08-02 Mitsubishi Electric Corporation Decoding device
WO2012030262A1 (en) * 2010-09-03 2012-03-08 Telefonaktiebolaget Lm Ericsson (Publ) Co-compression and co-decompression of data values
US8452884B2 (en) 2004-02-12 2013-05-28 Core Wireless Licensing S.A.R.L. Classified media quality of experience
WO2016062865A1 (en) * 2014-10-23 2016-04-28 Avl List Gmbh Method for reconstructing a data packet defectively received in a wireless sensor network

Families Citing this family (535)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6104754A (en) * 1995-03-15 2000-08-15 Kabushiki Kaisha Toshiba Moving picture coding and/or decoding systems, and variable-length coding and/or decoding system
US6563953B2 (en) 1998-11-30 2003-05-13 Microsoft Corporation Predictive image compression using a single variable length code for both the luminance and chrominance blocks for each macroblock
IL134182A (en) 2000-01-23 2006-08-01 Vls Com Ltd Method and apparatus for visual lossless pre-processing
US6753929B1 (en) 2000-06-28 2004-06-22 Vls Com Ltd. Method and system for real time motion picture segmentation and superposition
ES2331111T3 (en) * 2000-11-29 2009-12-22 British Telecommunications Public Limited Company TRANSMISSION AND RECEIPT OF DATA IN REAL TIME.
US6765964B1 (en) 2000-12-06 2004-07-20 Realnetworks, Inc. System and method for intracoding video data
US20020126759A1 (en) * 2001-01-10 2002-09-12 Wen-Hsiao Peng Method and apparatus for providing prediction mode fine granularity scalability
US20030012287A1 (en) * 2001-03-05 2003-01-16 Ioannis Katsavounidis Systems and methods for decoding of systematic forward error correction (FEC) codes of selected data in a video bitstream
KR100425676B1 (en) * 2001-03-15 2004-04-03 엘지전자 주식회사 Error recovery method for video transmission system
US20020180891A1 (en) * 2001-04-11 2002-12-05 Cyber Operations, Llc System and method for preconditioning analog video signals
US7209519B2 (en) 2001-04-16 2007-04-24 Mitsubishi Electric Research Laboratories, Inc. Encoding a video with a variable frame-rate while minimizing total average distortion
US7139398B2 (en) * 2001-06-06 2006-11-21 Sony Corporation Time division partial encryption
US7895616B2 (en) 2001-06-06 2011-02-22 Sony Corporation Reconstitution of program streams split across multiple packet identifiers
US7110525B1 (en) 2001-06-25 2006-09-19 Toby Heller Agent training sensitive call routing system
US7266150B2 (en) 2001-07-11 2007-09-04 Dolby Laboratories, Inc. Interpolation of video compression frames
KR100388612B1 (en) * 2001-07-25 2003-06-25 엘지전자 주식회사 Method of Compressing Packing In Switching System
US7039117B2 (en) * 2001-08-16 2006-05-02 Sony Corporation Error concealment of video data using texture data recovery
JP2003153254A (en) * 2001-08-31 2003-05-23 Canon Inc Data processing apparatus and method, as well as program, and storage medium
US8923688B2 (en) * 2001-09-12 2014-12-30 Broadcom Corporation Performing personal video recording (PVR) functions on digital video streams
US20050021830A1 (en) * 2001-09-21 2005-01-27 Eduardo Urzaiz Data communications method and system using buffer size to calculate transmission rate for congestion control
US6956902B2 (en) * 2001-10-11 2005-10-18 Hewlett-Packard Development Company, L.P. Method and apparatus for a multi-user video navigation system
WO2003034743A1 (en) * 2001-10-16 2003-04-24 Koninklijke Philips Electronics N.V. Video coding method and corresponding transmittable video signal
US7120168B2 (en) * 2001-11-20 2006-10-10 Sony Corporation System and method for effectively performing an audio/video synchronization procedure
WO2003045065A2 (en) * 2001-11-22 2003-05-30 Matsushita Electric Industrial Co., Ltd. Variable length coding method and variable length decoding method
US20050021821A1 (en) * 2001-11-30 2005-01-27 Turnbull Rory Stewart Data transmission
WO2003053066A1 (en) 2001-12-17 2003-06-26 Microsoft Corporation Skip macroblock coding
KR100460950B1 (en) * 2001-12-18 2004-12-09 삼성전자주식회사 Transcoder and transcoding method
FR2833796B1 (en) * 2001-12-19 2004-04-09 Thomson Licensing Sa METHOD AND DEVICE FOR COMPRESSING VIDEO DATA ENCODED BY VIDEO PACKETS
US7020203B1 (en) 2001-12-21 2006-03-28 Polycom, Inc. Dynamic intra-coded macroblock refresh interval for video error concealment
US7302059B2 (en) * 2002-01-02 2007-11-27 Sony Corporation Star pattern partial encryption
US8051443B2 (en) * 2002-01-02 2011-11-01 Sony Corporation Content replacement by PID mapping
US7823174B2 (en) 2002-01-02 2010-10-26 Sony Corporation Macro-block based content replacement by PID mapping
US7376233B2 (en) * 2002-01-02 2008-05-20 Sony Corporation Video slice and active region based multiple partial encryption
US7155012B2 (en) 2002-01-02 2006-12-26 Sony Corporation Slice mask and moat pattern partial encryption
US8027470B2 (en) * 2002-01-02 2011-09-27 Sony Corporation Video slice and active region based multiple partial encryption
US7765567B2 (en) 2002-01-02 2010-07-27 Sony Corporation Content replacement by PID mapping
US7292690B2 (en) * 2002-01-02 2007-11-06 Sony Corporation Video scene change detection
US7215770B2 (en) 2002-01-02 2007-05-08 Sony Corporation System and method for partially encrypted multimedia stream
JP4114859B2 (en) * 2002-01-09 2008-07-09 松下電器産業株式会社 Motion vector encoding method and motion vector decoding method
FI114527B (en) * 2002-01-23 2004-10-29 Nokia Corp Grouping of picture frames in video encoding
JP4996040B2 (en) * 2002-01-23 2012-08-08 シーメンス アクチエンゲゼルシヤフト Method for encoding a sequence of digital images using a number of image blocks and a reference image
EP1670259A3 (en) * 2002-01-23 2010-03-03 Nokia Corporation Grouping of image frames in video coding
US7152197B2 (en) * 2002-01-24 2006-12-19 Koninklijke Philips Electronics, N.V. Error correction of stream data
US7003035B2 (en) * 2002-01-25 2006-02-21 Microsoft Corporation Video coding methods and apparatuses
WO2003071783A1 (en) * 2002-02-20 2003-08-28 Koninklijke Philips Electronics N.V. Video information stream distribution unit
GB2386275B (en) * 2002-03-05 2004-03-17 Motorola Inc Scalable video transmissions
KR100846770B1 (en) * 2002-03-05 2008-07-16 삼성전자주식회사 Method for encoding a moving picture and apparatus therefor
KR100850705B1 (en) * 2002-03-09 2008-08-06 삼성전자주식회사 Method for adaptive encoding motion image based on the temperal and spatial complexity and apparatus thereof
EP1345451A1 (en) * 2002-03-15 2003-09-17 BRITISH TELECOMMUNICATIONS public limited company Video processing
JP4440651B2 (en) * 2002-03-27 2010-03-24 ブリティッシュ・テレコミュニケーションズ・パブリック・リミテッド・カンパニー Data structures for data streaming systems
EP1359722A1 (en) * 2002-03-27 2003-11-05 BRITISH TELECOMMUNICATIONS public limited company Data streaming system and method
EP1488645B1 (en) * 2002-03-27 2010-12-01 BRITISH TELECOMMUNICATIONS public limited company Video coding and transmission
US7151856B2 (en) * 2002-04-25 2006-12-19 Matsushita Electric Industrial Co., Ltd. Picture coding apparatus and picture coding method
JP4135395B2 (en) * 2002-04-26 2008-08-20 日本電気株式会社 Encoded packet transmission receiving method and apparatus and program thereof
US7428684B2 (en) * 2002-04-29 2008-09-23 Fraunhofer-Gesellschaft Zur Forderung Der Angewandten Forschung E.V. Device and method for concealing an error
JP2003348594A (en) * 2002-05-27 2003-12-05 Sony Corp Device and method for decoding image
FR2840495B1 (en) * 2002-05-29 2004-07-30 Canon Kk METHOD AND DEVICE FOR SELECTING A TRANSCODING METHOD FROM A SET OF TRANSCODING METHODS
US20040001546A1 (en) 2002-06-03 2004-01-01 Alexandros Tourapis Spatiotemporal prediction for bidirectionally predictive (B) pictures and motion vector prediction for multi-picture reference motion compensation
US7450646B2 (en) * 2002-06-04 2008-11-11 Panasonic Corporation Image data transmitting apparatus and method and image data reproducing apparatus and method
US7471880B2 (en) * 2002-07-04 2008-12-30 Mediatek Inc. DVD-ROM controller and MPEG decoder with shared memory controller
US7944971B1 (en) * 2002-07-14 2011-05-17 Apple Inc. Encoding video
MXPA05000559A (en) * 2002-07-15 2005-04-19 Nokia Corp Method for error concealment in video sequences.
US7154952B2 (en) 2002-07-19 2006-12-26 Microsoft Corporation Timestamp-independent motion vector prediction for predictive (P) and bidirectionally predictive (B) pictures
US7421129B2 (en) 2002-09-04 2008-09-02 Microsoft Corporation Image compression and synthesis for video effects
US8818896B2 (en) 2002-09-09 2014-08-26 Sony Corporation Selective encryption with coverage encryption
JP2004112593A (en) * 2002-09-20 2004-04-08 Pioneer Electronic Corp Data read method, data read device, and program for data read
US7075987B2 (en) * 2002-09-23 2006-07-11 Intel Corporation Adaptive video bit-rate control
US20060126718A1 (en) * 2002-10-01 2006-06-15 Avocent Corporation Video compression encoder
US7321623B2 (en) * 2002-10-01 2008-01-22 Avocent Corporation Video compression system
US7466755B2 (en) * 2002-10-04 2008-12-16 Industrial Technology Research Institute Method for video error concealment by updating statistics
US7027515B2 (en) * 2002-10-15 2006-04-11 Red Rock Semiconductor Ltd. Sum-of-absolute-difference checking of macroblock borders for error detection in a corrupted MPEG-4 bitstream
US7509553B2 (en) 2002-11-04 2009-03-24 Tandberg Telecom As Inter-network and inter-protocol video conference privacy method, apparatus, and computer program product
TWI220636B (en) * 2002-11-13 2004-08-21 Mediatek Inc System and method for video encoding according to degree of macroblock distortion
US7440502B2 (en) * 2002-11-14 2008-10-21 Georgia Tech Research Corporation Signal processing system
SG111978A1 (en) * 2002-11-20 2005-06-29 Victor Company Of Japan An mpeg-4 live unicast video streaming system in wireless network with end-to-end bitrate-based congestion control
JP2004179687A (en) * 2002-11-22 2004-06-24 Toshiba Corp Motion picture coding/decoding method and apparatus thereof
US9077991B2 (en) 2002-12-10 2015-07-07 Sony Computer Entertainment America Llc System and method for utilizing forward error correction with video compression
US9138644B2 (en) 2002-12-10 2015-09-22 Sony Computer Entertainment America Llc System and method for accelerated machine switching
US9314691B2 (en) 2002-12-10 2016-04-19 Sony Computer Entertainment America Llc System and method for compressing video frames or portions thereof based on feedback information from a client device
US8964830B2 (en) 2002-12-10 2015-02-24 Ol2, Inc. System and method for multi-stream video compression using multiple encoding formats
US8711923B2 (en) 2002-12-10 2014-04-29 Ol2, Inc. System and method for selecting a video encoding format based on feedback data
US9108107B2 (en) * 2002-12-10 2015-08-18 Sony Computer Entertainment America Llc Hosting and broadcasting virtual events using streaming interactive video
US20090118019A1 (en) 2002-12-10 2009-05-07 Onlive, Inc. System for streaming databases serving real-time applications used through streaming interactive video
US20040125237A1 (en) * 2002-12-31 2004-07-01 Intel Corporation Fast slope calculation method for shot detection in a video sequence
US20060146940A1 (en) * 2003-01-10 2006-07-06 Thomson Licensing S.A. Spatial error concealment based on the intra-prediction modes transmitted in a coded stream
US7256797B2 (en) * 2003-01-31 2007-08-14 Yamaha Corporation Image processing device with synchronized sprite rendering and sprite buffer
US9818136B1 (en) 2003-02-05 2017-11-14 Steven M. Hoffberg System and method for determining contingent relevance
DE10310023A1 (en) * 2003-02-28 2004-09-16 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Method and arrangement for video coding, the video coding comprising texture analysis and texture synthesis, as well as a corresponding computer program and a corresponding computer-readable storage medium
KR20040079084A (en) * 2003-03-06 2004-09-14 삼성전자주식회사 Method for adaptively encoding motion image based on the temperal complexity and apparatus thereof
US7949047B2 (en) 2003-03-17 2011-05-24 Qualcomm Incorporated System and method for partial intraframe encoding for wireless multimedia transmission
GB0306296D0 (en) * 2003-03-19 2003-04-23 British Telecomm Data transmission
US7292692B2 (en) * 2003-03-25 2007-11-06 Sony Corporation Content scrambling with minimal impact on legacy devices
US7551671B2 (en) * 2003-04-16 2009-06-23 General Dynamics Decision Systems, Inc. System and method for transmission of video signals using multiple channels
DE10318068B4 (en) * 2003-04-17 2009-08-27 Phoenix Contact Gmbh & Co. Kg Method and device for packet-oriented transmission of security-relevant data
US20040218669A1 (en) * 2003-04-30 2004-11-04 Nokia Corporation Picture coding method
US8824553B2 (en) 2003-05-12 2014-09-02 Google Inc. Video compression method
US7499104B2 (en) * 2003-05-16 2009-03-03 Pixel Instruments Corporation Method and apparatus for determining relative timing of image and associated information
KR100584422B1 (en) * 2003-06-04 2006-05-26 삼성전자주식회사 Method and device for compressing image data
US7558320B2 (en) 2003-06-13 2009-07-07 Microsoft Corporation Quality control in frame interpolation with motion analysis
US7408986B2 (en) 2003-06-13 2008-08-05 Microsoft Corporation Increasing motion smoothness using frame interpolation with motion analysis
US20040258154A1 (en) * 2003-06-19 2004-12-23 Microsoft Corporation System and method for multi-stage predictive motion estimation
US20040260827A1 (en) * 2003-06-19 2004-12-23 Nokia Corporation Stream switching based on gradual decoder refresh
US7313183B2 (en) * 2003-06-24 2007-12-25 Lsi Corporation Real time scene change detection in video sequences
MXPA05014209A (en) * 2003-06-26 2006-05-31 Thomson Licensing Multipass video rate control to match sliding window channel constraints.
WO2005004487A1 (en) * 2003-06-30 2005-01-13 Mitsubishi Denki Kabushiki Kaisha Image encoding device and image encoding method
FR2857205B1 (en) * 2003-07-04 2005-09-23 Nextream France DEVICE AND METHOD FOR VIDEO DATA CODING
EP1499131A1 (en) * 2003-07-14 2005-01-19 Deutsche Thomson-Brandt Gmbh Method and apparatus for decoding a data stream in audio video streaming systems
US7609763B2 (en) * 2003-07-18 2009-10-27 Microsoft Corporation Advanced bi-directional predictive coding of video frames
US7606391B2 (en) * 2003-07-25 2009-10-20 Sony Corporation Video content scene change determination
US9560371B2 (en) * 2003-07-30 2017-01-31 Avocent Corporation Video compression system
US7489726B2 (en) * 2003-08-13 2009-02-10 Mitsubishi Electric Research Laboratories, Inc. Resource-constrained sampling of multiple compressed videos
US7324592B2 (en) * 2003-08-13 2008-01-29 Mitsubishi Electric Research Laboratories, Inc. Resource-constrained encoding of multiple videos
US7284072B2 (en) * 2003-08-13 2007-10-16 Broadcom Corporation DMA engine for fetching words in reverse order
JP2005065122A (en) * 2003-08-19 2005-03-10 Matsushita Electric Ind Co Ltd Dynamic image encoding device and its method
KR100640498B1 (en) * 2003-09-06 2006-10-30 삼성전자주식회사 Apparatus and method for concealing error of frame
US7724827B2 (en) * 2003-09-07 2010-05-25 Microsoft Corporation Multi-layer run level encoding and decoding
US8064520B2 (en) * 2003-09-07 2011-11-22 Microsoft Corporation Advanced bi-directional predictive coding of interlaced video
US7092576B2 (en) * 2003-09-07 2006-08-15 Microsoft Corporation Bitplane coding for macroblock field/frame coding type information
US7286667B1 (en) 2003-09-15 2007-10-23 Sony Corporation Decryption system
GB2406184B (en) * 2003-09-17 2006-03-15 Advanced Risc Mach Ltd Data processing system
WO2005029833A2 (en) * 2003-09-21 2005-03-31 Servision Ltd. Deriving motion detection information from motion-vector-search type video encoders
US7573872B2 (en) * 2003-10-01 2009-08-11 Nortel Networks Limited Selective forwarding of damaged packets
BR0318528A (en) * 2003-10-09 2006-09-12 Thomson Licensing direct mode derivation process for error concealment
KR20050040448A (en) * 2003-10-28 2005-05-03 삼성전자주식회사 Method for video decording with error detection, and apparatus for the same
US7853980B2 (en) 2003-10-31 2010-12-14 Sony Corporation Bi-directional indices for trick mode video-on-demand
US7394855B2 (en) * 2003-11-20 2008-07-01 Mitsubishi Electric Research Laboratories, Inc. Error concealing decoding method of intra-frames of compressed videos
US7370125B2 (en) * 2003-11-25 2008-05-06 Intel Corporation Stream under-run/over-run recovery
US8472792B2 (en) 2003-12-08 2013-06-25 Divx, Llc Multimedia distribution system
US7519274B2 (en) 2003-12-08 2009-04-14 Divx, Inc. File format for multiple track digital data
US8717868B2 (en) * 2003-12-19 2014-05-06 Rockstar Consortium Us Lp Selective processing of damaged packets
US7889792B2 (en) * 2003-12-24 2011-02-15 Apple Inc. Method and system for video encoding using a variable number of B frames
EP1551185A1 (en) * 2004-01-05 2005-07-06 Thomson Licensing S.A. Encoding method, decoding method, and encoding apparatus for a digital picture sequence
US7606313B2 (en) * 2004-01-15 2009-10-20 Ittiam Systems (P) Ltd. System, method, and apparatus for error concealment in coded video signals
EP1745653B1 (en) * 2004-01-30 2017-10-18 Thomson Licensing DTV Encoder with adaptive rate control for h.264
US7843959B2 (en) * 2004-01-30 2010-11-30 Telefonaktiebolaget Lm Ericsson Prioritising data elements of a data stream
US20050169369A1 (en) * 2004-02-03 2005-08-04 Sony Corporation Scalable MPEG video/macro block rate control
US7697608B2 (en) * 2004-02-03 2010-04-13 Sony Corporation Scalable MPEG video/macro block rate control
US20050169473A1 (en) * 2004-02-03 2005-08-04 Candelore Brant L. Multiple selective encryption with DRM
US7986731B2 (en) 2004-02-06 2011-07-26 Apple Inc. H.264/AVC coder incorporating rate and quality controller
US7869503B2 (en) * 2004-02-06 2011-01-11 Apple Inc. Rate and quality controller for H.264/AVC video coder and scene analyzer therefor
US7492820B2 (en) 2004-02-06 2009-02-17 Apple Inc. Rate control for video coder employing adaptive linear regression bits modeling
US20070171979A1 (en) * 2004-02-20 2007-07-26 Onno Eerenberg Method of video decoding
US7586924B2 (en) 2004-02-27 2009-09-08 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Apparatus and method for coding an information signal into a data stream, converting the data stream and decoding the data stream
US7599565B2 (en) * 2004-03-10 2009-10-06 Nokia Corporation Method and device for transform-domain video editing
US20050201469A1 (en) * 2004-03-11 2005-09-15 John Sievers Method and apparatus for improving the average image refresh rate in a compressed video bitstream
US20050201470A1 (en) * 2004-03-12 2005-09-15 John Sievers Intra block walk around refresh for H.264
US20050207501A1 (en) * 2004-03-18 2005-09-22 Sony Corporation Method of and system for video bit allocation for scene cuts and scene changes
KR100647948B1 (en) * 2004-03-22 2006-11-17 엘지전자 주식회사 Method for refreshing of adaptative intra macro block
JP4031455B2 (en) * 2004-03-29 2008-01-09 株式会社東芝 Image encoding device
WO2005104676A2 (en) 2004-03-29 2005-11-10 Nielsen Media Research, Inc. Methods and apparatus to detect a blank frame in a digital video broadcast signal
JP4020883B2 (en) * 2004-04-20 2007-12-12 株式会社東芝 Video decoding device
US7882421B2 (en) * 2004-05-06 2011-02-01 Seyfullah Halit Oguz Method and apparatus for joint source-channel map decoding
WO2005125213A1 (en) * 2004-06-15 2005-12-29 Ntt Docomo, Inc. Apparatus and method for generating a transmit frame
US7457461B2 (en) * 2004-06-25 2008-11-25 Avocent Corporation Video compression noise immunity
US20070058614A1 (en) * 2004-06-30 2007-03-15 Plotky Jon S Bandwidth utilization for video mail
US7903902B2 (en) 2004-07-26 2011-03-08 Sheraizin Semion M Adaptive image improvement
US7639892B2 (en) 2004-07-26 2009-12-29 Sheraizin Semion M Adaptive image improvement
US8861601B2 (en) * 2004-08-18 2014-10-14 Qualcomm Incorporated Encoder-assisted adaptive video frame interpolation
US8060807B2 (en) * 2004-09-02 2011-11-15 The Regents Of The University Of California Content and channel aware object scheduling and error control
US20060045190A1 (en) * 2004-09-02 2006-03-02 Sharp Laboratories Of America, Inc. Low-complexity error concealment for real-time video decoder
JP2006079779A (en) * 2004-09-13 2006-03-23 Matsushita Electric Ind Co Ltd Demultiplexer
JP2006086670A (en) * 2004-09-15 2006-03-30 Hitachi Ltd Data recording device
US20060062304A1 (en) * 2004-09-17 2006-03-23 Shih-Chang Hsia Apparatus and method for error concealment
US20060062312A1 (en) * 2004-09-22 2006-03-23 Yen-Chi Lee Video demultiplexer and decoder with efficient data recovery
US7474701B2 (en) * 2004-09-23 2009-01-06 International Business Machines Corporation Single pass variable bit rate control strategy and encoder for processing a video frame of a sequence of video frames
US7679627B2 (en) * 2004-09-27 2010-03-16 Qualcomm Mems Technologies, Inc. Controller and driver features for bi-stable display
EP1800492B1 (en) * 2004-10-07 2012-12-12 Panasonic Corporation Picture coding apparatus and picture decoding apparatus
US8948266B2 (en) * 2004-10-12 2015-02-03 Qualcomm Incorporated Adaptive intra-refresh for digital video encoding
EP1803094B1 (en) * 2004-10-18 2020-02-19 InterDigital VC Holdings, Inc. Film grain simulation method
US7382381B2 (en) * 2004-10-22 2008-06-03 Hewlett-Packard Development Company, L.P. Graphics to video encoder
US7587091B2 (en) * 2004-10-29 2009-09-08 Intel Corporation De-interlacing using decoder parameters
CN101692710B (en) * 2004-11-12 2012-10-31 汤姆森特许公司 Pseudo random number generator management method device and film grain simulation method device
TWI248312B (en) * 2004-11-16 2006-01-21 Aiptek Int Inc Method for locating the partitions of a video image
ES2381982T3 (en) 2004-11-16 2012-06-04 Thomson Licensing Film grain simulation method based on transformation coefficients previously generated by computer
JP4950059B2 (en) 2004-11-16 2012-06-13 トムソン ライセンシング Film grain SEI message insertion for bit accurate simulation in video systems
TWI246862B (en) * 2004-11-16 2006-01-01 An Lnternet Products & Technol Video coding/decoding buffering apparatus and buffering method thereof
EP1812905B1 (en) 2004-11-17 2019-07-03 InterDigital VC Holdings, Inc. Bit-accurate film grain simulation method based on pre-computed transformed coefficients
JP2008521100A (en) * 2004-11-17 2008-06-19 ザ リージェンツ オブ ザ ユニバーシティ オブ カリフォルニア System and method for generating web pages
BRPI0518037A (en) * 2004-11-22 2008-10-28 Thomson Licensing methods, apparatus and system for dividing film granulation cache for film granulation simulation
US7650031B2 (en) * 2004-11-23 2010-01-19 Microsoft Corporation Method and system for detecting black frames in a sequence of frames
KR20060059782A (en) * 2004-11-29 2006-06-02 엘지전자 주식회사 Method for supporting scalable progressive downloading of video signal
US20060120406A1 (en) * 2004-12-03 2006-06-08 Chao-Hung Wu Internet A/V data imaging results & transmission rate improvement methodology
US8041190B2 (en) 2004-12-15 2011-10-18 Sony Corporation System and method for the creation, synchronization and delivery of alternate content
US7895617B2 (en) 2004-12-15 2011-02-22 Sony Corporation Content substitution editor
GB0428156D0 (en) * 2004-12-22 2005-01-26 British Telecomm Buffer overflow prevention
GB0428160D0 (en) * 2004-12-22 2005-01-26 British Telecomm Variable bit rate processing
GB0428155D0 (en) * 2004-12-22 2005-01-26 British Telecomm Buffer underflow prevention
US20060140591A1 (en) * 2004-12-28 2006-06-29 Texas Instruments Incorporated Systems and methods for load balancing audio/video streams
JP4367337B2 (en) * 2004-12-28 2009-11-18 セイコーエプソン株式会社 Multimedia processing system and multimedia processing method
EP1897374A1 (en) * 2004-12-29 2008-03-12 Koninklijke Philips Electronics N.V. Method and apparatus for encoding video data stream
US7415041B2 (en) * 2004-12-31 2008-08-19 Motorola, Inc. Method and apparatus for decoding data in a wireless communication system
FR2880462A1 (en) * 2005-01-06 2006-07-07 Thomson Licensing Sa METHOD FOR REPRODUCING DOCUMENTS INCLUDING ALTERED SEQUENCES AND RELATED REPRODUCTION DEVICE
EP1834489A1 (en) * 2005-01-07 2007-09-19 France Telecom Video encoding method and device
GB0500332D0 (en) * 2005-01-08 2005-02-16 Univ Bristol Enhanced error concealment
FR2881013B1 (en) * 2005-01-14 2007-05-18 Canon Kk METHOD AND DEVICE FOR CONTINUOUS TRANSMISSION AND RECEIVING A VIDEO IN A COMMUNICATION NETWORK
US8780957B2 (en) 2005-01-14 2014-07-15 Qualcomm Incorporated Optimal weights for MMSE space-time equalizer of multicode CDMA system
JP5036559B2 (en) * 2005-01-18 2012-09-26 トムソン ライセンシング Method and apparatus for estimating distortion caused by a channel
KR100755688B1 (en) * 2005-02-02 2007-09-05 삼성전자주식회사 Apparatus and method for Error concealment
US7526142B2 (en) * 2005-02-22 2009-04-28 Sheraizin Vitaly S Enhancement of decompressed video
US8514933B2 (en) 2005-03-01 2013-08-20 Qualcomm Incorporated Adaptive frame skipping techniques for rate controlled video encoding
US20060198441A1 (en) * 2005-03-02 2006-09-07 Hua-Chang Chi Motion detection method for detecting motion objects in video frames generated from a video surveillance system
AU2006223416A1 (en) 2005-03-10 2006-09-21 Qualcomm Incorporated Content adaptive multimedia processing
EP1703513A1 (en) * 2005-03-15 2006-09-20 Deutsche Thomson-Brandt Gmbh Method and apparatus for encoding plural video signals as a single encoded video signal, method and and apparatus for decoding such an encoded video signal
US8223845B1 (en) * 2005-03-16 2012-07-17 Apple Inc. Multithread processing of video frames
US20060217027A1 (en) * 2005-03-25 2006-09-28 Martuccio Michael C Method and apparatus for fan expressing participation in sporting events
US7982757B2 (en) * 2005-04-01 2011-07-19 Digital Multitools Inc. Method for reducing noise and jitter effects in KVM systems
US20060230428A1 (en) * 2005-04-11 2006-10-12 Rob Craig Multi-player video game system
US20060233237A1 (en) * 2005-04-15 2006-10-19 Apple Computer, Inc. Single pass constrained constant bit-rate encoding
US20060268996A1 (en) * 2005-05-13 2006-11-30 Sethi Sumeet S Error recovery using in band error patterns
EP1886486A4 (en) * 2005-05-16 2010-10-13 Human Monitoring Ltd Monitoring method and device
CN101176352B (en) 2005-05-20 2011-01-19 Nxp股份有限公司 Video encoder using a refresh map
JP4574444B2 (en) * 2005-05-27 2010-11-04 キヤノン株式会社 Image decoding apparatus and method, image encoding apparatus and method, computer program, and storage medium
US8442126B1 (en) 2005-06-14 2013-05-14 Apple Inc. Synchronizing audio and video content through buffer wrappers
US8284842B2 (en) 2005-07-08 2012-10-09 Activevideo Networks, Inc. Video game system using pre-encoded macro-blocks and a reference grid
US8118676B2 (en) * 2005-07-08 2012-02-21 Activevideo Networks, Inc. Video game system using pre-encoded macro-blocks
US8270439B2 (en) * 2005-07-08 2012-09-18 Activevideo Networks, Inc. Video game system using pre-encoded digital audio mixing
US9061206B2 (en) * 2005-07-08 2015-06-23 Activevideo Networks, Inc. Video game system using pre-generated motion vectors
US9661376B2 (en) * 2005-07-13 2017-05-23 Polycom, Inc. Video error concealment method
US7587098B2 (en) * 2005-07-14 2009-09-08 Mavs Lab. Inc. Pixel data generating method
US8774272B1 (en) * 2005-07-15 2014-07-08 Geo Semiconductor Inc. Video quality by controlling inter frame encoding according to frame position in GOP
US8074248B2 (en) 2005-07-26 2011-12-06 Activevideo Networks, Inc. System and method for providing video content associated with a source image to a television in a communication network
US7944967B2 (en) * 2005-07-28 2011-05-17 Delphi Technologies, Inc. Technique for addressing frame loss in a video stream
US20070030894A1 (en) * 2005-08-03 2007-02-08 Nokia Corporation Method, device, and module for improved encoding mode control in video encoding
US7286498B1 (en) * 2005-08-09 2007-10-23 H-Itt, Llc Validation method and data structures for wireless communications
JP4264656B2 (en) * 2005-08-11 2009-05-20 ソニー株式会社 Encoding apparatus and method, program, and recording medium
US9077960B2 (en) 2005-08-12 2015-07-07 Microsoft Corporation Non-zero coefficient block pattern coding
US20070036227A1 (en) * 2005-08-15 2007-02-15 Faisal Ishtiaq Video encoding system and method for providing content adaptive rate control
WO2007026302A2 (en) * 2005-09-01 2007-03-08 Koninklijke Philips Electronics N.V. Method and device for coding and decoding of video error resilience
US20070120969A1 (en) * 2005-09-15 2007-05-31 Alpha Omega International Audio visual communication system and method
US7676591B2 (en) * 2005-09-22 2010-03-09 Packet Video Corporation System and method for transferring multiple data channels
US9113147B2 (en) 2005-09-27 2015-08-18 Qualcomm Incorporated Scalability techniques based on content information
US8427578B2 (en) 2005-10-14 2013-04-23 Broadcom Corporation Method and system for frame rate adaptation
US8654848B2 (en) * 2005-10-17 2014-02-18 Qualcomm Incorporated Method and apparatus for shot detection in video streaming
US8948260B2 (en) 2005-10-17 2015-02-03 Qualcomm Incorporated Adaptive GOP structure in video streaming
US7916796B2 (en) * 2005-10-19 2011-03-29 Freescale Semiconductor, Inc. Region clustering based error concealment for video data
US8687689B2 (en) * 2005-10-25 2014-04-01 William Marsh Rice University Method and apparatus for on-line compressed sensing
CN100466725C (en) * 2005-11-03 2009-03-04 华为技术有限公司 Multimedia communication method and terminal thereof
US20070140353A1 (en) * 2005-12-19 2007-06-21 Sharp Laboratories Of America, Inc. Intra prediction skipping in mode selection for video compression
WO2007078253A2 (en) * 2006-01-05 2007-07-12 Telefonaktiebolaget Lm Ericsson (Publ) Media container file management
KR100889745B1 (en) * 2006-01-09 2009-03-24 한국전자통신연구원 Method defining NAL unit type and system of trasmission bitstream and redundant slice coding
TWI309529B (en) * 2006-01-19 2009-05-01 Avermedia Tech Inc Multi-bit stream of multimedia data processing
US8325822B2 (en) * 2006-01-20 2012-12-04 Qualcomm Incorporated Method and apparatus for determining an encoding method based on a distortion value related to error concealment
US8861585B2 (en) * 2006-01-20 2014-10-14 Qualcomm Incorporated Method and apparatus for error resilience algorithms in wireless video communication
US7979059B2 (en) * 2006-02-06 2011-07-12 Rockefeller Alfred G Exchange of voice and video between two cellular or wireless telephones
KR100846787B1 (en) * 2006-02-15 2008-07-16 삼성전자주식회사 Method and apparatus for importing transport stream
US7555570B2 (en) 2006-02-17 2009-06-30 Avocent Huntsville Corporation Device and method for configuring a target device
US8718147B2 (en) * 2006-02-17 2014-05-06 Avocent Huntsville Corporation Video compression algorithm
US8185921B2 (en) 2006-02-28 2012-05-22 Sony Corporation Parental control of displayed content using closed captioning
US8189686B2 (en) * 2006-03-03 2012-05-29 David John Boyes Systems and methods for visualizing errors in video signals
FR2898459B1 (en) * 2006-03-08 2008-09-05 Canon Kk METHOD AND APPARATUS FOR RECEIVING IMAGES HAVING FOUND LOSS DURING TRANSMISSION
US9131164B2 (en) 2006-04-04 2015-09-08 Qualcomm Incorporated Preprocessor method and apparatus
EP1843587A1 (en) 2006-04-05 2007-10-10 STMicroelectronics S.r.l. Method for the frame-rate conversion of a digital video signal and related apparatus
US7577898B2 (en) * 2006-04-10 2009-08-18 At&T Intellectual Property I, L.P. System and method of correcting video data errors
JP4730183B2 (en) * 2006-04-17 2011-07-20 株式会社日立製作所 Video display device
US7714838B2 (en) * 2006-04-27 2010-05-11 Research In Motion Limited Handheld electronic device having hidden sound openings offset from an audio source
TW200743386A (en) * 2006-04-27 2007-11-16 Koninkl Philips Electronics Nv Method and apparatus for encoding/transcoding and decoding
EP2016767A4 (en) * 2006-04-28 2014-08-13 Avocent Corp Dvc delta commands
US8798172B2 (en) * 2006-05-16 2014-08-05 Samsung Electronics Co., Ltd. Method and apparatus to conceal error in decoded audio signal
JP4692388B2 (en) * 2006-05-24 2011-06-01 ソニー株式会社 Data processing apparatus and data processing method
CN100548051C (en) * 2006-05-25 2009-10-07 联想(北京)有限公司 Video decoding/encoding device and method and system
US20080034396A1 (en) * 2006-05-30 2008-02-07 Lev Zvi H System and method for video distribution and billing
GB2438660B (en) * 2006-06-02 2011-03-30 Tandberg Television Asa Recursive filter system for a video signal
GB2438905B (en) * 2006-06-07 2011-08-24 Tandberg Television Asa Temporal noise analysis of a video signal
US8559501B2 (en) 2006-06-09 2013-10-15 Thomson Licensing Method and apparatus for adaptively determining a bit budget for encoding video pictures
US9432433B2 (en) 2006-06-09 2016-08-30 Qualcomm Incorporated Enhanced block-request streaming system using signaling or block creation
FR2903270B1 (en) * 2006-06-30 2008-08-29 Canon Kk METHOD AND DEVICE FOR ENCODING AN IMAGE SEQUENCE, TELECOMMUNICATION SYSTEM COMPRISING SUCH A DEVICE AND PROGRAM USING SUCH A METHOD
FR2903556B1 (en) * 2006-07-04 2008-10-03 Canon Kk METHODS AND DEVICES FOR ENCODING AND DECODING IMAGES, A TELECOMMUNICATIONS SYSTEM COMPRISING SUCH DEVICES AND COMPUTER PROGRAMS USING SUCH METHODS
KR100790149B1 (en) * 2006-07-27 2008-01-02 삼성전자주식회사 Rate control of scene-changed video encoder
KR100834625B1 (en) * 2006-07-27 2008-06-02 삼성전자주식회사 Real-time scene-change detection for rate control of video encoder
KR100790150B1 (en) * 2006-07-28 2008-01-02 삼성전자주식회사 Video encoder and method for encoding video data frame
JP2008042332A (en) * 2006-08-02 2008-02-21 Toshiba Corp Interpolation frame preparation method and interpolation frame preparation device
US8699561B2 (en) * 2006-08-25 2014-04-15 Sony Computer Entertainment Inc. System and methods for detecting and handling errors in a multi-threaded video data decoder
US8238442B2 (en) 2006-08-25 2012-08-07 Sony Computer Entertainment Inc. Methods and apparatus for concealing corrupted blocks of video data
US8135063B2 (en) * 2006-09-08 2012-03-13 Mediatek Inc. Rate control method with frame-layer bit allocation and video encoder
US8379733B2 (en) * 2006-09-26 2013-02-19 Qualcomm Incorporated Efficient video packetization methods for packet-switched video telephony applications
EP2067358A2 (en) * 2006-09-28 2009-06-10 Thomson Licensing Method for rho-domain frame level bit allocation for effective rate control and enhanced video coding quality
US8509313B2 (en) * 2006-10-10 2013-08-13 Texas Instruments Incorporated Video error concealment
JP4851911B2 (en) * 2006-10-23 2012-01-11 富士通株式会社 Encoding apparatus, encoding program, and encoding method
US8218641B2 (en) * 2006-10-31 2012-07-10 Sony Computer Entertainment Inc. Picture encoding using same-picture reference for pixel reconstruction
JPWO2008053557A1 (en) * 2006-11-02 2010-02-25 パイオニア株式会社 Moving image re-encoding device, moving image re-encoding method, moving image re-encoding program, and recording medium storing moving image re-encoding program
US20080115175A1 (en) * 2006-11-13 2008-05-15 Rodriguez Arturo A System and method for signaling characteristics of pictures' interdependencies
US8875199B2 (en) 2006-11-13 2014-10-28 Cisco Technology, Inc. Indicating picture usefulness for playback optimization
US8416859B2 (en) 2006-11-13 2013-04-09 Cisco Technology, Inc. Signalling and extraction in compressed video of pictures belonging to interdependency tiers
US8873932B2 (en) 2007-12-11 2014-10-28 Cisco Technology, Inc. Inferential processing to ascertain plural levels of picture interdependencies
US20090180546A1 (en) 2008-01-09 2009-07-16 Rodriguez Arturo A Assistance for processing pictures in concatenated video streams
TWI339073B (en) * 2006-11-13 2011-03-11 Univ Nat Chiao Tung Video coding method using image data skipping
EP1924097A1 (en) * 2006-11-14 2008-05-21 Sony Deutschland Gmbh Motion and scene change detection using color components
WO2008079503A2 (en) * 2006-12-19 2008-07-03 Motorola, Inc. Method and apparatus for adaptive error resilience for video decoders
FR2910211A1 (en) * 2006-12-19 2008-06-20 Canon Kk METHODS AND DEVICES FOR RE-SYNCHRONIZING A DAMAGED VIDEO STREAM
JP5746811B2 (en) * 2006-12-21 2015-07-08 味の素株式会社 Colorectal cancer evaluation method, colorectal cancer evaluation device, colorectal cancer evaluation method, colorectal cancer evaluation system, colorectal cancer evaluation program, and recording medium
JP4427086B2 (en) * 2006-12-27 2010-03-03 パナソニック株式会社 Video decoding device
US7895502B2 (en) * 2007-01-04 2011-02-22 International Business Machines Corporation Error control coding methods for memories with subline accesses
US9042454B2 (en) 2007-01-12 2015-05-26 Activevideo Networks, Inc. Interactive encoded content system including object models for viewing on a remote device
US9826197B2 (en) 2007-01-12 2017-11-21 Activevideo Networks, Inc. Providing television broadcasts over a managed network and interactive content over an unmanaged network to a client device
US8494049B2 (en) * 2007-04-09 2013-07-23 Cisco Technology, Inc. Long term reference frame management with error video feedback for compressed video communication
FR2915342A1 (en) * 2007-04-20 2008-10-24 Canon Kk VIDEO ENCODING METHOD AND DEVICE
GB0708440D0 (en) * 2007-05-02 2007-06-06 Film Night Ltd Data transmission
US7978669B2 (en) * 2007-05-09 2011-07-12 Cisco Technology, Inc. Methods and apparatus for efficient MPEG transmission over 802.11
US10715834B2 (en) 2007-05-10 2020-07-14 Interdigital Vc Holdings, Inc. Film grain simulation based on pre-computed transform coefficients
US8300699B2 (en) * 2007-05-31 2012-10-30 Qualcomm Incorporated System, method, and computer-readable medium for reducing required throughput in an ultra-wideband system
JP4833923B2 (en) * 2007-06-15 2011-12-07 富士通セミコンダクター株式会社 Transcoding device, transcoder, decoder and transcoding method
US8171030B2 (en) 2007-06-18 2012-05-01 Zeitera, Llc Method and apparatus for multi-dimensional content search and video identification
US8605779B2 (en) 2007-06-20 2013-12-10 Microsoft Corporation Mechanisms to conceal real time video artifacts caused by frame loss
KR20090000502A (en) * 2007-06-28 2009-01-07 삼성전자주식회사 Method and apparatus adaptive to characteristics of the adjacent blocks of lost block
US7962640B2 (en) * 2007-06-29 2011-06-14 The Chinese University Of Hong Kong Systems and methods for universal real-time media transcoding
US8254455B2 (en) * 2007-06-30 2012-08-28 Microsoft Corporation Computing collocated macroblock information for direct mode macroblocks
US8094713B2 (en) * 2007-07-16 2012-01-10 Telchemy, Inc. Method and system for viewer quality estimation of packet video streams
DE102007035262B4 (en) * 2007-07-27 2018-05-24 Texas Instruments Deutschland Gmbh A receiver and method for handling a data packet stream in the event of a physical layer failure
CN101755455A (en) * 2007-07-30 2010-06-23 日本电气株式会社 Connection terminal, distribution system, conversion method, and program
US8804845B2 (en) 2007-07-31 2014-08-12 Cisco Technology, Inc. Non-enhancing media redundancy coding for mitigating transmission impairments
US8958486B2 (en) 2007-07-31 2015-02-17 Cisco Technology, Inc. Simultaneous processing of media and redundancy streams for mitigating impairments
US8023562B2 (en) * 2007-09-07 2011-09-20 Vanguard Software Solutions, Inc. Real-time video coding/decoding
US7769015B2 (en) * 2007-09-11 2010-08-03 Liquid Computing Corporation High performance network adapter (HPNA)
US7802062B2 (en) 2007-09-28 2010-09-21 Microsoft Corporation Non-blocking variable size recyclable buffer management
KR100928324B1 (en) * 2007-10-02 2009-11-25 주식회사 아이브이넷 Operation method of frame buffer memory for recovering compressed video and decoding device suitable for this
US20090103617A1 (en) * 2007-10-22 2009-04-23 The Hong Kong University Of Science And Technology Efficient error recovery with intra-refresh
WO2009065137A1 (en) 2007-11-16 2009-05-22 Divx, Inc. Hierarchical and reduced index structures for multimedia files
AU2007237313A1 (en) * 2007-12-03 2009-06-18 Canon Kabushiki Kaisha Improvement for error correction in distributed vdeo coding
KR20100103547A (en) * 2007-12-05 2010-09-27 온라이브, 인크. System and method for compressing video based on detected data rate of a communication channel
US20090177942A1 (en) * 2008-01-09 2009-07-09 Nokia Corporation Systems and methods for media container file generation
US8010694B2 (en) * 2008-01-22 2011-08-30 At&T Intellectual Property Ii, L.P. Network performance and reliability evaluation taking into account multiple traffic matrices
US9357233B2 (en) * 2008-02-26 2016-05-31 Qualcomm Incorporated Video decoder error handling
US7940777B2 (en) * 2008-02-26 2011-05-10 Cisco Technology, Inc. Loss-free packet networks
US8416858B2 (en) 2008-02-29 2013-04-09 Cisco Technology, Inc. Signalling picture encoding schemes and associated picture properties
US20090231439A1 (en) * 2008-03-14 2009-09-17 Arkady Kopansky Method for Propagating Data Through a Video Stream
KR101431545B1 (en) * 2008-03-17 2014-08-20 삼성전자주식회사 Method and apparatus for Video encoding and decoding
US8861598B2 (en) * 2008-03-19 2014-10-14 Cisco Technology, Inc. Video compression using search techniques of long-term reference memory
US8406296B2 (en) 2008-04-07 2013-03-26 Qualcomm Incorporated Video refresh adaptation algorithms responsive to error feedback
US20090268097A1 (en) * 2008-04-28 2009-10-29 Siou-Shen Lin Scene change detection method and related apparatus according to summation results of block matching costs associated with at least two frames
US8254469B2 (en) * 2008-05-07 2012-08-28 Kiu Sha Management Liability Company Error concealment for frame loss in multiple description coding
US8370887B2 (en) 2008-05-30 2013-02-05 Microsoft Corporation Media streaming with enhanced seek operation
WO2009152450A1 (en) 2008-06-12 2009-12-17 Cisco Technology, Inc. Picture interdependencies signals in context of mmco to assist stream manipulation
US8699578B2 (en) * 2008-06-17 2014-04-15 Cisco Technology, Inc. Methods and systems for processing multi-latticed video streams
US8705631B2 (en) 2008-06-17 2014-04-22 Cisco Technology, Inc. Time-shifted transport of multi-latticed video for resiliency from burst-error effects
US8971402B2 (en) 2008-06-17 2015-03-03 Cisco Technology, Inc. Processing of impaired and incomplete multi-latticed video streams
US20130022114A1 (en) * 2008-06-23 2013-01-24 Mediatek Inc. Method and related apparatuses for decoding multimedia data
US8494058B2 (en) * 2008-06-23 2013-07-23 Mediatek Inc. Video/image processing apparatus with motion estimation sharing, and related method and machine readable medium
US20090327334A1 (en) * 2008-06-30 2009-12-31 Rodriguez Arturo A Generating Measures of Video Sequences to Detect Unauthorized Use
US8347408B2 (en) * 2008-06-30 2013-01-01 Cisco Technology, Inc. Matching of unknown video content to protected video content
US8259177B2 (en) * 2008-06-30 2012-09-04 Cisco Technology, Inc. Video fingerprint systems and methods
EP2141703B1 (en) * 2008-07-04 2013-09-04 Samsung Electronics Co., Ltd. Methods and apparatus for copying data
KR20100004792A (en) * 2008-07-04 2010-01-13 삼성전자주식회사 Method for storing defected information, information processing apparatus capable of storing defected information, information storing apparatus for transmitting defected information in storable form, and medium capable of being read by information processing apparatus, in which a software needed for storing defected information is recorded
FR2934453B1 (en) * 2008-07-22 2010-10-15 Canon Kk ERROR MASKING METHOD AND DEVICE
JP5164714B2 (en) * 2008-07-24 2013-03-21 キヤノン株式会社 Transmitting apparatus and method, program
US8867752B2 (en) * 2008-07-30 2014-10-21 Orange Reconstruction of multi-channel audio data
CN102113326A (en) 2008-08-04 2011-06-29 杜比实验室特许公司 Overlapped block disparity estimation and compensation architecture
US8254441B2 (en) * 2008-08-18 2012-08-28 Sprint Communications Company L.P. Video streaming based upon wireless quality
US8239900B1 (en) 2008-08-27 2012-08-07 Clearwire Ip Holdings Llc Video bursting based upon wireless device location
US8270307B2 (en) * 2008-09-05 2012-09-18 Cisco Technology, Inc. Network-adaptive preemptive repair in real-time video
US8275046B2 (en) * 2008-09-19 2012-09-25 Texas Instruments Incorporated Fast macroblock structure decision using SAD discrepancy and its prediction mode
US9237034B2 (en) * 2008-10-21 2016-01-12 Iii Holdings 1, Llc Methods and systems for providing network access redundancy
WO2010046854A1 (en) 2008-10-22 2010-04-29 Nxp B.V. Device and method for motion estimation and compensation
US20100104003A1 (en) * 2008-10-24 2010-04-29 Manufacturing Resources International Inc. System and method for securely transmitting video data
US8787447B2 (en) * 2008-10-30 2014-07-22 Vixs Systems, Inc Video transcoding system with drastic scene change detection and method for use therewith
US8320465B2 (en) 2008-11-12 2012-11-27 Cisco Technology, Inc. Error concealment of plural processed representations of a single video signal received in a video program
US20100158130A1 (en) * 2008-12-22 2010-06-24 Mediatek Inc. Video decoding method
JP4600574B2 (en) * 2009-01-07 2010-12-15 日本電気株式会社 Moving picture decoding apparatus, moving picture decoding method, and program
US20100195742A1 (en) * 2009-02-02 2010-08-05 Mediatek Inc. Error concealment method and apparatus
US8189666B2 (en) 2009-02-02 2012-05-29 Microsoft Corporation Local picture identifier and computation of co-located information
US9812047B2 (en) 2010-02-25 2017-11-07 Manufacturing Resources International, Inc. System and method for remotely monitoring the operating life of electronic displays
WO2010096767A1 (en) 2009-02-20 2010-08-26 Cisco Technology, Inc. Signalling of decodable sub-sequences
US8782261B1 (en) 2009-04-03 2014-07-15 Cisco Technology, Inc. System and method for authorization of segment boundary notifications
US20100269147A1 (en) 2009-04-15 2010-10-21 Echostar Technologies Llc Video stream index generation at a video content transmitter
US9942558B2 (en) 2009-05-01 2018-04-10 Thomson Licensing Inter-layer dependency information for 3DV
US8949883B2 (en) 2009-05-12 2015-02-03 Cisco Technology, Inc. Signalling buffer characteristics for splicing operations of video streams
US8279926B2 (en) 2009-06-18 2012-10-02 Cisco Technology, Inc. Dynamic streaming with latticed representations of video
US8665964B2 (en) * 2009-06-30 2014-03-04 Qualcomm Incorporated Video coding based on first order prediction and pre-defined second order prediction mode
US9654792B2 (en) 2009-07-03 2017-05-16 Intel Corporation Methods and systems for motion vector derivation at a video decoder
US8917769B2 (en) * 2009-07-03 2014-12-23 Intel Corporation Methods and systems to estimate motion based on reconstructed reference frames at a video decoder
US20110002387A1 (en) * 2009-07-03 2011-01-06 Yi-Jen Chiu Techniques for motion estimation
US8462852B2 (en) 2009-10-20 2013-06-11 Intel Corporation Methods and apparatus for adaptively choosing a search range for motion estimation
US20120114049A1 (en) * 2009-07-15 2012-05-10 Nokia Corporation Apparatus
US8194862B2 (en) * 2009-07-31 2012-06-05 Activevideo Networks, Inc. Video game system with mixing of independent pre-encoded digital audio bitstreams
US8582952B2 (en) * 2009-09-15 2013-11-12 Apple Inc. Method and apparatus for identifying video transitions
US20110064129A1 (en) * 2009-09-16 2011-03-17 Broadcom Corporation Video capture and generation at variable frame rates
US9917874B2 (en) 2009-09-22 2018-03-13 Qualcomm Incorporated Enhanced block-request streaming using block partitioning or request controls for improved client-side handling
WO2011059419A1 (en) 2009-11-13 2011-05-19 Thomson Licensing Preamble identification in a mobile dtv system
US9391741B2 (en) 2009-11-13 2016-07-12 Thomson Licensing Joint preamble and code rate identifier in a mobile DTV system
EP2323404A1 (en) * 2009-11-17 2011-05-18 Research In Motion Limited Additional information for in-loop video deblocking
GB2475739A (en) * 2009-11-30 2011-06-01 Nokia Corp Video decoding with error concealment dependent upon video scene change.
KR101345098B1 (en) * 2009-12-18 2013-12-26 한국전자통신연구원 Apparatus and method for assessing image quality based on real-time
TWI535028B (en) 2009-12-21 2016-05-21 半導體能源研究所股份有限公司 Thin film transistor
US8588297B2 (en) * 2009-12-23 2013-11-19 Oracle America, Inc. Quantization parameter prediction
US8476744B2 (en) 2009-12-28 2013-07-02 Semiconductor Energy Laboratory Co., Ltd. Thin film transistor with channel including microcrystalline and amorphous semiconductor regions
US8925024B2 (en) 2009-12-31 2014-12-30 The Nielsen Company (Us), Llc Methods and apparatus to detect commercial advertisements associated with media presentations
JP5758405B2 (en) 2010-01-11 2015-08-05 テレフオンアクチーボラゲット エル エム エリクソン(パブル) Video quality estimation technology
KR101675118B1 (en) 2010-01-14 2016-11-10 삼성전자 주식회사 Method and apparatus for video encoding considering order of skip and split, and method and apparatus for video decoding considering order of skip and split
WO2011097010A1 (en) * 2010-02-03 2011-08-11 Thomson Licensing Valid replacement data in encoded video
US8526488B2 (en) * 2010-02-09 2013-09-03 Vanguard Software Solutions, Inc. Video sequence encoding system and algorithms
US9313526B2 (en) * 2010-02-19 2016-04-12 Skype Data compression for video
US9819358B2 (en) * 2010-02-19 2017-11-14 Skype Entropy encoding based on observed frequency
US20110206118A1 (en) * 2010-02-19 2011-08-25 Lazar Bivolarsky Data Compression for Video
US9609342B2 (en) * 2010-02-19 2017-03-28 Skype Compression for frames of a video signal using selected candidate blocks
US20110206132A1 (en) * 2010-02-19 2011-08-25 Lazar Bivolarsky Data Compression for Video
JP5583992B2 (en) * 2010-03-09 2014-09-03 パナソニック株式会社 Signal processing device
US20110222837A1 (en) * 2010-03-11 2011-09-15 Cisco Technology, Inc. Management of picture referencing in video streams for plural playback modes
US20110255596A1 (en) * 2010-04-15 2011-10-20 Himax Technologies Limited Frame rate up conversion system and method
JP2012010263A (en) * 2010-06-28 2012-01-12 Sony Corp Encoding device, imaging device, encoding/transmitting system and encoding method
EP2612443A1 (en) * 2010-09-03 2013-07-10 Loglogic, Inc. Random access data compression
GB2483282B (en) * 2010-09-03 2017-09-13 Advanced Risc Mach Ltd Data compression and decompression using relative and absolute delta values
JP2013538534A (en) 2010-09-14 2013-10-10 トムソン ライセンシング Compression method and apparatus for occlusion data
US9021541B2 (en) 2010-10-14 2015-04-28 Activevideo Networks, Inc. Streaming digital video between video devices using a cable television system
US8419547B1 (en) * 2010-11-04 2013-04-16 Wms Gaming, Inc. Iterative XOR-matrix forward error correction for gaming
US11307930B1 (en) 2010-11-29 2022-04-19 Pure Storage, Inc. Optimized selection of participants in distributed data rebuild/verification
US10802763B2 (en) * 2010-11-29 2020-10-13 Pure Storage, Inc. Remote storage verification
CN102986224B (en) 2010-12-21 2017-05-24 英特尔公司 System and method for enhanced dmvd processing
US8914534B2 (en) 2011-01-05 2014-12-16 Sonic Ip, Inc. Systems and methods for adaptive bitrate streaming of media stored in matroska container files using hypertext transfer protocol
JP5878295B2 (en) * 2011-01-13 2016-03-08 ソニー株式会社 Image processing apparatus, image processing method, and program
US8838680B1 (en) 2011-02-08 2014-09-16 Google Inc. Buffer objects for web-based configurable pipeline media processing
KR101803970B1 (en) * 2011-03-16 2017-12-28 삼성전자주식회사 Method and apparatus for composing content
US9204203B2 (en) 2011-04-07 2015-12-01 Activevideo Networks, Inc. Reduction of latency in video distribution networks using adaptive bit rates
US8681866B1 (en) 2011-04-28 2014-03-25 Google Inc. Method and apparatus for encoding video by downsampling frame resolution
US9106787B1 (en) 2011-05-09 2015-08-11 Google Inc. Apparatus and method for media transmission bandwidth control using bandwidth estimation
US9288251B2 (en) * 2011-06-10 2016-03-15 Citrix Systems, Inc. Adaptive bitrate management on progressive download with indexed media files
JPWO2013001794A1 (en) 2011-06-27 2015-02-23 パナソニック インテレクチュアル プロパティ コーポレーション オブアメリカPanasonic Intellectual Property Corporation of America Image coding method and image coding apparatus
MY170743A (en) * 2011-06-30 2019-08-27 Sony Corp Image processing device and image processing method
US8767824B2 (en) 2011-07-11 2014-07-01 Sharp Kabushiki Kaisha Video decoder parallelization for tiles
US10498359B2 (en) * 2011-07-14 2019-12-03 Microsoft Technology Licensing, Llc Correction data
US8984156B2 (en) * 2011-07-21 2015-03-17 Salesforce.Com, Inc. Multi-party mesh conferencing with stream processing
JP5558431B2 (en) * 2011-08-15 2014-07-23 株式会社東芝 Image processing apparatus, method, and program
US10659724B2 (en) * 2011-08-24 2020-05-19 Ati Technologies Ulc Method and apparatus for providing dropped picture image processing
KR102163151B1 (en) * 2011-08-30 2020-10-08 디빅스, 엘엘씨 Systems and methods for encoding and streaming video encoded using a plurality of maximum bitrate levels
US8818171B2 (en) 2011-08-30 2014-08-26 Kourosh Soroushian Systems and methods for encoding alternative streams of video for playback on playback devices having predetermined display aspect ratios and network connection maximum data rates
US9467708B2 (en) 2011-08-30 2016-10-11 Sonic Ip, Inc. Selection of resolutions for seamless resolution switching of multimedia content
US8856624B1 (en) 2011-10-27 2014-10-07 Google Inc. Method and apparatus for dynamically generating error correction
US8693551B2 (en) 2011-11-16 2014-04-08 Vanguard Software Solutions, Inc. Optimal angular intra prediction for block-based video coding
US9490850B1 (en) 2011-11-28 2016-11-08 Google Inc. Method and apparatus for decoding packetized data
WO2013106390A1 (en) 2012-01-09 2013-07-18 Activevideo Networks, Inc. Rendering of an interactive lean-backward user interface on a television
US8850054B2 (en) * 2012-01-17 2014-09-30 International Business Machines Corporation Hypertext transfer protocol live streaming
US9531990B1 (en) 2012-01-21 2016-12-27 Google Inc. Compound prediction using multiple sources or prediction modes
US8737824B1 (en) 2012-03-09 2014-05-27 Google Inc. Adaptively encoding a media stream with compound prediction
US9489827B2 (en) 2012-03-12 2016-11-08 Cisco Technology, Inc. System and method for distributing content in a video surveillance network
US9489659B1 (en) * 2012-04-02 2016-11-08 Cisco Technology, Inc. Progressive sharing during a collaboration session
US9800945B2 (en) 2012-04-03 2017-10-24 Activevideo Networks, Inc. Class-based intelligent multiplexing over unmanaged networks
US9123084B2 (en) 2012-04-12 2015-09-01 Activevideo Networks, Inc. Graphical application integration with MPEG objects
US9071842B2 (en) 2012-04-19 2015-06-30 Vixs Systems Inc. Detection of video feature based on variance metric
US20130287100A1 (en) * 2012-04-30 2013-10-31 Wooseung Yang Mechanism for facilitating cost-efficient and low-latency encoding of video streams
US9185429B1 (en) 2012-04-30 2015-11-10 Google Inc. Video encoding and decoding using un-equal error protection
US9049349B2 (en) * 2012-05-16 2015-06-02 Cisco Technology, Inc. System and method for video recording and retention in a network
US9532080B2 (en) 2012-05-31 2016-12-27 Sonic Ip, Inc. Systems and methods for the reuse of encoding information in encoding alternative streams of video data
US8819525B1 (en) 2012-06-14 2014-08-26 Google Inc. Error concealment guided robustness
US9185414B1 (en) 2012-06-29 2015-11-10 Google Inc. Video encoding using variance
JP2014027448A (en) * 2012-07-26 2014-02-06 Sony Corp Information processing apparatus, information processing metho, and program
US10034023B1 (en) 2012-07-30 2018-07-24 Google Llc Extended protection of digital video streams
US9256803B2 (en) 2012-09-14 2016-02-09 Palo Alto Research Center Incorporated Automatic detection of persistent changes in naturally varying scenes
US9491487B2 (en) * 2012-09-25 2016-11-08 Apple Inc. Error resilient management of picture order count in predictive coding systems
WO2014061925A1 (en) * 2012-09-28 2014-04-24 (주)휴맥스 Method for adaptively transmitting fec parity data using cross-layer optimization
US9386326B2 (en) * 2012-10-05 2016-07-05 Nvidia Corporation Video decoding error concealment techniques
CN103780801A (en) * 2012-10-25 2014-05-07 特克特朗尼克公司 Heuristic method for scene cut detection in digital baseband video
US10015486B2 (en) * 2012-10-26 2018-07-03 Intel Corporation Enhanced video decoding with application layer forward error correction
US10341047B2 (en) * 2013-10-31 2019-07-02 Hewlett Packard Enterprise Development Lp Method and system for controlling the forwarding of error correction data
US9307235B2 (en) * 2012-12-03 2016-04-05 Vixs Systems, Inc. Video encoding system with adaptive hierarchical B-frames and method for use therewith
US10349069B2 (en) * 2012-12-11 2019-07-09 Sony Interactive Entertainment Inc. Software hardware hybrid video encoder
US9106922B2 (en) 2012-12-19 2015-08-11 Vanguard Software Solutions, Inc. Motion estimation engine for video encoding
US9191457B2 (en) 2012-12-31 2015-11-17 Sonic Ip, Inc. Systems, methods, and media for controlling delivery of content
US9628790B1 (en) 2013-01-03 2017-04-18 Google Inc. Adaptive composite intra prediction for image and video compression
US9172740B1 (en) 2013-01-15 2015-10-27 Google Inc. Adjustable buffer remote access
US9146808B1 (en) * 2013-01-24 2015-09-29 Emulex Corporation Soft error protection for content addressable memory
US9311692B1 (en) 2013-01-25 2016-04-12 Google Inc. Scalable buffer remote access
US9225979B1 (en) 2013-01-30 2015-12-29 Google Inc. Remote access encoding
US9177245B2 (en) 2013-02-08 2015-11-03 Qualcomm Technologies Inc. Spiking network apparatus and method with bimodal spike-timing dependent plasticity
JP6182888B2 (en) * 2013-02-12 2017-08-23 三菱電機株式会社 Image encoding device
US9357210B2 (en) 2013-02-28 2016-05-31 Sonic Ip, Inc. Systems and methods of encoding multiple video streams for adaptive bitrate streaming
US8928815B1 (en) * 2013-03-13 2015-01-06 Hrl Laboratories, Llc System and method for outdoor scene change detection
US10275128B2 (en) 2013-03-15 2019-04-30 Activevideo Networks, Inc. Multiple-mode system and method for providing user selectable video content
JP5838351B2 (en) * 2013-03-26 2016-01-06 パナソニックIpマネジメント株式会社 Video receiving apparatus and image recognition method for received video
CN103237108B (en) * 2013-05-13 2015-11-25 百度在线网络技术(北京)有限公司 For method of testing and the test terminal of mobile terminal
US9374578B1 (en) 2013-05-23 2016-06-21 Google Inc. Video coding using combined inter and intra predictors
EP3005712A1 (en) 2013-06-06 2016-04-13 ActiveVideo Networks, Inc. Overlay rendering of user interface onto source video
US9294785B2 (en) 2013-06-06 2016-03-22 Activevideo Networks, Inc. System and method for exploiting scene graph information in construction of an encoded video sequence
US9219922B2 (en) 2013-06-06 2015-12-22 Activevideo Networks, Inc. System and method for exploiting scene graph information in construction of an encoded video sequence
US9185275B2 (en) * 2013-07-09 2015-11-10 Lenovo (Singapore) Pte. Ltd. Control flap
US9894311B2 (en) 2013-07-30 2018-02-13 Robert Bosch Gmbh Adaptive methods for wireless camera communication
JP6132914B2 (en) * 2013-08-02 2017-05-24 株式会社日立製作所 Data transfer system and method
US9609343B1 (en) 2013-12-20 2017-03-28 Google Inc. Video coding using compound prediction
KR102143618B1 (en) * 2014-01-17 2020-08-11 삼성전자주식회사 Method for controlling a frame rate and an electronic device
JP6248671B2 (en) * 2014-02-10 2017-12-20 富士通株式会社 Information processing apparatus, method, program, and information processing system
US9788029B2 (en) 2014-04-25 2017-10-10 Activevideo Networks, Inc. Intelligent multiplexing using class-based, multi-dimensioned decision logic for managed networks
US9723377B2 (en) 2014-04-28 2017-08-01 Comcast Cable Communications, Llc Video management
US9713982B2 (en) 2014-05-22 2017-07-25 Brain Corporation Apparatus and methods for robotic operation using video imagery
US10194163B2 (en) * 2014-05-22 2019-01-29 Brain Corporation Apparatus and methods for real time estimation of differential motion in live video
US9939253B2 (en) 2014-05-22 2018-04-10 Brain Corporation Apparatus and methods for distance estimation using multiple image sensors
US9848112B2 (en) 2014-07-01 2017-12-19 Brain Corporation Optical detection apparatus and methods
US10057593B2 (en) 2014-07-08 2018-08-21 Brain Corporation Apparatus and methods for distance estimation using stereo imagery
EP4063738A1 (en) * 2014-09-03 2022-09-28 Electrolux Appliances Aktiebolag Mobile computer device for data communication with a domestic appliance
US10055850B2 (en) 2014-09-19 2018-08-21 Brain Corporation Salient features tracking apparatus and methods using visual initialization
US9544615B2 (en) 2014-11-14 2017-01-10 Sony Corporation Method and system for processing video content
KR101690375B1 (en) 2014-11-14 2016-12-27 영남대학교 산학협력단 Controlling apparatus for agricultural products drying machine
US10319408B2 (en) 2015-03-30 2019-06-11 Manufacturing Resources International, Inc. Monolithic display with separately controllable sections
KR20160131526A (en) * 2015-05-07 2016-11-16 삼성전자주식회사 System on chip, display system including the same, and operating method thereof
US10922736B2 (en) 2015-05-15 2021-02-16 Manufacturing Resources International, Inc. Smart electronic display for restaurants
US10269156B2 (en) 2015-06-05 2019-04-23 Manufacturing Resources International, Inc. System and method for blending order confirmation over menu board background
US9848222B2 (en) 2015-07-15 2017-12-19 The Nielsen Company (Us), Llc Methods and apparatus to detect spillover
US10197664B2 (en) 2015-07-20 2019-02-05 Brain Corporation Apparatus and methods for detection of objects using broadband signals
CA2997779A1 (en) 2015-09-10 2017-03-16 Manufacturing Resources International, Inc. System and method for systemic detection of display errors
KR102453803B1 (en) * 2015-09-10 2022-10-12 삼성전자주식회사 Method and apparatus for processing image
US10756997B2 (en) 2015-09-28 2020-08-25 Cybrook Inc. Bandwidth adjustment for real-time video transmission
US10506257B2 (en) 2015-09-28 2019-12-10 Cybrook Inc. Method and system of video processing with back channel message management
US10516892B2 (en) 2015-09-28 2019-12-24 Cybrook Inc. Initial bandwidth estimation for real-time video transmission
CN105245908B (en) * 2015-10-27 2018-06-29 大连海事大学 A kind of video fault-tolerant coding method based on error correction preferred value feedback
US10506245B2 (en) * 2015-11-18 2019-12-10 Cybrook Inc. Video data processing using a ring buffer
US10506283B2 (en) 2015-11-18 2019-12-10 Cybrook Inc. Video decoding and rendering using combined jitter and frame buffer
DE102015121148A1 (en) * 2015-12-04 2017-06-08 Technische Universität München Reduce the transmission time of pictures
US10798396B2 (en) 2015-12-08 2020-10-06 Samsung Display Co., Ltd. System and method for temporal differencing with variable complexity
CN107181968B (en) 2016-03-11 2019-11-19 腾讯科技(深圳)有限公司 A kind of redundancy control method and device of video data
US10319271B2 (en) 2016-03-22 2019-06-11 Manufacturing Resources International, Inc. Cyclic redundancy check for electronic displays
CN105847796A (en) * 2016-03-31 2016-08-10 乐视控股(北京)有限公司 Bit distribution method and device used for video coding
WO2017210317A1 (en) 2016-05-31 2017-12-07 Manufacturing Resources International, Inc. Electronic display remote image verification system and method
US10148989B2 (en) 2016-06-15 2018-12-04 Divx, Llc Systems and methods for encoding video content
WO2018031717A2 (en) 2016-08-10 2018-02-15 Manufacturing Resources International, Inc. Dynamic dimming led backlight for lcd array
US10785279B2 (en) 2016-12-29 2020-09-22 Facebook, Inc. Video encoding using starve mode
US10868569B2 (en) * 2017-05-08 2020-12-15 Qualcomm Incorporated PBCH signal design and efficient continuous monitoring and polar decoding
CN107169117B (en) * 2017-05-25 2020-11-10 西安工业大学 Hand-drawn human motion retrieval method based on automatic encoder and DTW
US10560910B2 (en) 2017-06-12 2020-02-11 Qualcomm Incoporated Synchronization signal for a broadcast channel
JP2019016850A (en) * 2017-07-04 2019-01-31 ヒロテック株式会社 Video transmission method, video transmission system, transmission device, and reception device
CN109413427B (en) 2017-08-17 2022-04-08 腾讯科技(深圳)有限公司 Video frame coding method and terminal
US10152275B1 (en) 2017-08-30 2018-12-11 Red Hat, Inc. Reverse order submission for pointer rings
CN107948735B (en) * 2017-12-06 2020-09-25 北京乐我无限科技有限责任公司 Video playing method and device and electronic equipment
US11632151B2 (en) * 2018-06-20 2023-04-18 Telefonaktiebolaget Lm Ericsson (Publ) Method and apparatus for massive MU-MIMO
US10908863B2 (en) 2018-07-12 2021-02-02 Manufacturing Resources International, Inc. System and method for providing access to co-located operations data for an electronic display
US11818419B2 (en) 2018-09-28 2023-11-14 Apple Inc. Mobile device content provisioning adjustments based on wireless communication channel bandwidth condition
US11695977B2 (en) 2018-09-28 2023-07-04 Apple Inc. Electronic device content provisioning adjustments based on wireless communication channel bandwidth condition
CN114885159B (en) * 2018-12-21 2023-10-20 华为技术有限公司 Method and apparatus for mode dependent and size dependent block level restriction of position dependent prediction combinations
WO2020164752A1 (en) 2019-02-13 2020-08-20 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Audio transmitter processor, audio receiver processor and related methods and computer programs
US11137847B2 (en) 2019-02-25 2021-10-05 Manufacturing Resources International, Inc. Monitoring the status of a touchscreen
US11402940B2 (en) 2019-02-25 2022-08-02 Manufacturing Resources International, Inc. Monitoring the status of a touchscreen
EP3962091A1 (en) * 2020-08-26 2022-03-02 Tata Consultancy Services Limited Methods and systems for maintaining quality of experience in real-time live video streaming
US11368250B1 (en) * 2020-12-28 2022-06-21 Aira Technologies, Inc. Adaptive payload extraction and retransmission in wireless data communications with error aggregations
CN114630122B (en) * 2021-03-19 2023-04-28 杭州海康威视数字技术股份有限公司 Decoding and encoding method based on self-adaptive intra-frame refreshing mechanism and related equipment
KR102620281B1 (en) * 2021-05-14 2023-12-29 연세대학교 산학협력단 Apparatus and Method for Selecting Skip Frames
US11921010B2 (en) 2021-07-28 2024-03-05 Manufacturing Resources International, Inc. Display assemblies with differential pressure sensors
CN113630597B (en) * 2021-08-19 2024-01-23 随锐科技集团股份有限公司 Method and system for preventing video from losing packets irrelevant to encoding and decoding
US20230098691A1 (en) * 2021-09-29 2023-03-30 Tencent America LLC Techniques for constraint flag signaling for range extension with extended precision
US11895362B2 (en) 2021-10-29 2024-02-06 Manufacturing Resources International, Inc. Proof of play for images displayed at electronic displays
US11917269B2 (en) 2022-01-11 2024-02-27 Tencent America LLC Multidimensional metadata for parallel processing of segmented media data

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5912707A (en) * 1995-12-23 1999-06-15 Daewoo Electronics., Ltd. Method and apparatus for compensating errors in a transmitted video signal
US5936674A (en) * 1995-12-23 1999-08-10 Daewoo Electronics Co., Ltd. Method and apparatus for concealing errors in a transmitted video signal
US5995171A (en) * 1991-10-22 1999-11-30 Canon Kabushiki Kaisha Coding and/or decoding apparatus for decoding variable-length coded image information

Family Cites Families (104)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2637438B2 (en) * 1987-10-27 1997-08-06 キヤノン株式会社 Image processing device
EP0350653B1 (en) * 1988-07-14 1995-12-06 Casio Computer Company Limited Slip data processing apparatus
US5164828A (en) * 1990-02-26 1992-11-17 Sony Corporation Video signal transmission and method and apparatus for coding video signal used in this
US5455629A (en) * 1991-02-27 1995-10-03 Rca Thomson Licensing Corporation Apparatus for concealing errors in a digital video processing system
US5212742A (en) * 1991-05-24 1993-05-18 Apple Computer, Inc. Method and apparatus for encoding/decoding image data
US5141448A (en) * 1991-12-02 1992-08-25 Matrix Science Corporation Apparatus for retaining a coupling ring in non-self locking electrical connectors
GB2263373B (en) * 1992-01-09 1995-05-24 Sony Broadcast & Communication Data error concealment
FR2696026B1 (en) * 1992-09-18 1994-12-30 Sgs Thomson Microelectronics Method for masking errors in transmission of image compressed in MPEG.
JPH06111495A (en) * 1992-09-30 1994-04-22 Sony Corp Device for reproducing data
JP3255308B2 (en) * 1992-12-18 2002-02-12 ソニー株式会社 Data playback device
US5737022A (en) * 1993-02-26 1998-04-07 Kabushiki Kaisha Toshiba Motion picture error concealment using simplified motion compensation
JP3519441B2 (en) * 1993-02-26 2004-04-12 株式会社東芝 Video transmission equipment
US5442400A (en) * 1993-04-29 1995-08-15 Rca Thomson Licensing Corporation Error concealment apparatus for MPEG-like video data
JPH0775110A (en) * 1993-08-31 1995-03-17 Sony Corp Encoding method for image signal
US5771081A (en) * 1994-02-28 1998-06-23 Korea Telecommunication Authority Bit system for transmitting digital video data
CA2156463A1 (en) * 1994-09-05 1996-03-06 Nobuyuki Aoki Data reproducing method and data reproducing apparatus
JP3500724B2 (en) * 1994-09-05 2004-02-23 ソニー株式会社 Data reproducing method and data reproducing apparatus
US5550847A (en) * 1994-10-11 1996-08-27 Motorola, Inc. Device and method of signal loss recovery for realtime and/or interactive communications
US6222881B1 (en) * 1994-10-18 2001-04-24 Intel Corporation Using numbers of non-zero quantized transform signals and signal differences to determine when to encode video signals using inter-frame or intra-frame encoding
US5600663A (en) * 1994-11-16 1997-02-04 Lucent Technologies Inc. Adaptive forward error correction system
US5617149A (en) * 1994-11-22 1997-04-01 Electronics And Telecommunications Research Institute Apparatus and method for detecting scene changes using the difference of mad between image frames
JPH08214265A (en) * 1995-01-31 1996-08-20 Sony Corp Method and device for reproducing encoded data
US5621467A (en) * 1995-02-16 1997-04-15 Thomson Multimedia S.A. Temporal-spatial error concealment apparatus and method for video signal processors
US5731840A (en) * 1995-03-10 1998-03-24 Kabushiki Kaisha Toshiba Video coding/decoding apparatus which transmits different accuracy prediction levels
KR100226528B1 (en) * 1995-03-29 1999-10-15 가나이 쓰도무 Decoder for compressed and multiplexed video and audio data
US5568200A (en) * 1995-06-07 1996-10-22 Hitachi America, Ltd. Method and apparatus for improved video display of progressively refreshed coded video
US6571361B1 (en) * 1995-09-29 2003-05-27 Kabushiki Kaisha Toshiba Encoder and decoder
US5862153A (en) * 1995-09-29 1999-01-19 Kabushiki Kaisha Toshiba Coding apparatus and decoding apparatus for transmission/storage of information
US5737537A (en) * 1995-09-29 1998-04-07 Intel Corporation Two-measure block classification scheme for encoding video images
US6415398B1 (en) * 1995-09-29 2002-07-02 Kabushiki Kaisha Toshiba Coding system and decoding system
US5778191A (en) * 1995-10-26 1998-07-07 Motorola, Inc. Method and device for error control of a macroblock-based video compression technique
US5724369A (en) * 1995-10-26 1998-03-03 Motorola Inc. Method and device for concealment and containment of errors in a macroblock-based video codec
US6192081B1 (en) * 1995-10-26 2001-02-20 Sarnoff Corporation Apparatus and method for selecting a coding mode in a block-based coding system
US6310922B1 (en) * 1995-12-12 2001-10-30 Thomson Consumer Electronics, Inc. Method and apparatus for generating variable rate synchronization signals
US5801779A (en) * 1995-12-26 1998-09-01 C-Cube Microsystems, Inc. Rate control with panic mode
JPH09180273A (en) * 1995-12-28 1997-07-11 Toray Ind Inc Stamper for forming recording surface of optical recording medium and production of optical recording medium
KR100220678B1 (en) * 1995-12-29 1999-09-15 전주범 Method for rectifying channel errors in an image signal transmitted from a block-based encoder
JP3297293B2 (en) * 1996-03-07 2002-07-02 三菱電機株式会社 Video decoding method and video decoding device
JP3823275B2 (en) * 1996-06-10 2006-09-20 富士通株式会社 Video encoding device
DE69738035T2 (en) * 1996-07-05 2008-04-30 Matsushita Electric Industrial Co., Ltd., Kadoma Method for display time stamping and synchronization of multiple video object levels
US5875199A (en) * 1996-08-22 1999-02-23 Lsi Logic Corporation Video device with reed-solomon erasure decoder and method thereof
JPH1174868A (en) * 1996-09-02 1999-03-16 Toshiba Corp Information transmission method, coder/decoder in information transmission system adopting the method, coding multiplexer/decoding inverse multiplexer
JP3011680B2 (en) * 1996-09-06 2000-02-21 株式会社東芝 Variable length coding apparatus and method
KR100501902B1 (en) * 1996-09-25 2005-10-10 주식회사 팬택앤큐리텔 Image information encoding / decoding apparatus and method
JPH10145789A (en) * 1996-11-15 1998-05-29 Oki Electric Ind Co Ltd Animation encoding and decoding method
CA2190785A1 (en) * 1996-11-20 1998-05-20 Nael Hirzalla Method of processing a video stream
KR100196840B1 (en) * 1996-12-27 1999-06-15 전주범 Apparatus for reconstucting bits error in the image decoder
US6148026A (en) * 1997-01-08 2000-11-14 At&T Corp. Mesh node coding to enable object based functionalities within a motion compensated transform video coder
EP0960532B1 (en) * 1997-02-12 2007-01-31 MediaTek Inc. Apparatus and method for optimizing the rate control in a coding system
JP3575215B2 (en) * 1997-03-05 2004-10-13 株式会社日立製作所 Packet communication method and communication terminal device
US5991447A (en) * 1997-03-07 1999-11-23 General Instrument Corporation Prediction and coding of bi-directionally predicted video object planes for interlaced digital video
US6005980A (en) * 1997-03-07 1999-12-21 General Instrument Corporation Motion estimation and compensation of video object planes for interlaced digital video
US6118817A (en) * 1997-03-14 2000-09-12 Microsoft Corporation Digital video signal encoder and encoding method having adjustable quantization
US6115420A (en) * 1997-03-14 2000-09-05 Microsoft Corporation Digital video signal encoder and encoding method
KR100557103B1 (en) * 1997-03-17 2006-03-03 마츠시타 덴끼 산교 가부시키가이샤 Data processing method and data processing apparatus
US6304607B1 (en) * 1997-03-18 2001-10-16 Texas Instruments Incorporated Error resilient video coding using reversible variable length codes (RVLCS)
US6118823A (en) * 1997-04-01 2000-09-12 International Business Machines Corporation Control scheme for shared-use dual-port predicted error array
US6141448A (en) 1997-04-21 2000-10-31 Hewlett-Packard Low-complexity error-resilient coder using a block-based standard
US6057884A (en) * 1997-06-05 2000-05-02 General Instrument Corporation Temporal and spatial scaleable coding for video object planes
US6181711B1 (en) * 1997-06-26 2001-01-30 Cisco Systems, Inc. System and method for transporting a compressed video and data bit stream over a communication channel
US6233356B1 (en) * 1997-07-08 2001-05-15 At&T Corp. Generalized scalability for video coder based on video objects
US6097725A (en) * 1997-10-01 2000-08-01 International Business Machines Corporation Low cost searching method and apparatus for asynchronous transfer mode systems
WO1999021285A1 (en) * 1997-10-23 1999-04-29 Sony Electronics, Inc. Apparatus and method for recovery of lost/damaged data in a bitstream of data based on compatibility
US6043838A (en) * 1997-11-07 2000-03-28 General Instrument Corporation View offset estimation for stereoscopic video coding
US6266375B1 (en) * 1997-11-13 2001-07-24 Sony Corporation Method and apparatus for selecting a quantization table for encoding a digital image
JP3622460B2 (en) * 1997-11-28 2005-02-23 松下電工株式会社 Semiconductor relay
KR100301825B1 (en) * 1997-12-29 2001-10-27 구자홍 Mpeg video decoding system and method of processing overflow of mpeg video decoding system
EP1051853B1 (en) * 1998-01-26 2003-06-18 STMicroelectronics Asia Pacific Pte Ltd. One-pass variable bit rate moving pictures encoding
JP3905969B2 (en) * 1998-01-30 2007-04-18 株式会社東芝 Moving picture coding apparatus and moving picture coding method
EP0935396A3 (en) * 1998-02-09 2004-08-11 Matsushita Electric Industrial Co., Ltd. Video coding method and apparatus
US6438165B2 (en) * 1998-03-09 2002-08-20 Lg Electronics Method and apparatus for advanced encoder system
US6289054B1 (en) * 1998-05-15 2001-09-11 North Carolina University Method and systems for dynamic hybrid packet loss recovery for video transmission over lossy packet-based network
US6804294B1 (en) * 1998-08-11 2004-10-12 Lucent Technologies Inc. Method and apparatus for video frame selection for improved coding quality at low bit-rates
US6137915A (en) * 1998-08-20 2000-10-24 Sarnoff Corporation Apparatus and method for error concealment for hierarchical subband coding and decoding
JP3604290B2 (en) * 1998-09-25 2004-12-22 沖電気工業株式会社 Moving image decoding method and apparatus
US6754277B1 (en) * 1998-10-06 2004-06-22 Texas Instruments Incorporated Error protection for compressed video
US6490705B1 (en) * 1998-10-22 2002-12-03 Lucent Technologies Inc. Method and apparatus for receiving MPEG video over the internet
US6192148B1 (en) * 1998-11-05 2001-02-20 Winbond Electronics Corp. Method for determining to skip macroblocks in encoding video
JP3166736B2 (en) * 1998-11-25 2001-05-14 日本電気株式会社 Moving picture coding apparatus and moving picture coding method
JP2000209580A (en) * 1999-01-13 2000-07-28 Canon Inc Picture processor and its method
GB2347038A (en) * 1999-02-18 2000-08-23 Nokia Mobile Phones Ltd A video codec using re-transmission
JP2000295626A (en) * 1999-04-08 2000-10-20 Mitsubishi Electric Corp Multi-stage image coder
KR100357093B1 (en) * 1999-06-02 2002-10-18 엘지전자 주식회사 apparatus and method for concealing error in moving picture decompression system
US6351491B1 (en) * 1999-06-23 2002-02-26 Sarnoff Corporation Apparatus and method for optimizing the rate control for multiscale entropy encoding
US6968008B1 (en) * 1999-07-27 2005-11-22 Sharp Laboratories Of America, Inc. Methods for motion estimation with adaptive motion accuracy
JP3630590B2 (en) * 1999-08-25 2005-03-16 沖電気工業株式会社 Decoding device and transmission system
US6999673B1 (en) * 1999-09-30 2006-02-14 Matsushita Electric Industrial Co., Ltd. Moving picture decoding method, moving picture decoding apparatus and program recording medium
KR100416307B1 (en) * 1999-10-25 2004-01-31 마츠시타 덴끼 산교 가부시키가이샤 Motion image decoding method, motion image decoding apparatus and program recording medium
JP3840020B2 (en) * 1999-12-14 2006-11-01 株式会社東芝 Video encoding device
US6493392B1 (en) * 1999-12-27 2002-12-10 Hyundai Electronics Industries Co., Ltd. Method for coding digital interlaced moving video
US6421386B1 (en) * 1999-12-29 2002-07-16 Hyundai Electronics Industries Co., Ltd. Method for coding digital moving video including gray scale shape information
JP2001197501A (en) * 2000-01-07 2001-07-19 Fujitsu Ltd Motion vector searching device and motion vector searching method, and moving picture coder
US6601209B1 (en) * 2000-03-17 2003-07-29 Verizon Laboratories Inc. System and method for reliable data transmission over fading internet communication channels
US6724945B1 (en) * 2000-05-24 2004-04-20 Hewlett-Packard Development Company, L.P. Correcting defect pixels in a digital image
US6650705B1 (en) * 2000-05-26 2003-11-18 Mitsubishi Electric Research Laboratories Inc. Method for encoding and transcoding multiple video objects with variable temporal resolution
JP3662171B2 (en) * 2000-06-05 2005-06-22 三菱電機株式会社 Encoding apparatus and encoding method
US6738427B2 (en) * 2000-09-15 2004-05-18 International Business Machines Corporation System and method of processing MPEG streams for timecode packet insertion
US7133455B2 (en) * 2000-12-29 2006-11-07 Intel Corporation Providing error resilience and concealment for video data
JP3876227B2 (en) * 2001-02-06 2007-01-31 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ A preprocessing method applied to the texture of objects of arbitrary shape
US20030012287A1 (en) * 2001-03-05 2003-01-16 Ioannis Katsavounidis Systems and methods for decoding of systematic forward error correction (FEC) codes of selected data in a video bitstream
US6700934B2 (en) * 2001-03-14 2004-03-02 Redrock Semiconductor, Ltd. Error detection using a maximum distance among four block-motion-vectors in a macroblock in a corrupted MPEG-4 bitstream
US6842484B2 (en) * 2001-07-10 2005-01-11 Motorola, Inc. Method and apparatus for random forced intra-refresh in digital image and video coding
US6810144B2 (en) * 2001-07-20 2004-10-26 Koninklijke Philips Electronics N.V. Methods of and system for detecting a cartoon in a video data stream
DE10139641C1 (en) * 2001-08-11 2003-04-10 Freudenberg Carl Kg cleaning tool

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5995171A (en) * 1991-10-22 1999-11-30 Canon Kabushiki Kaisha Coding and/or decoding apparatus for decoding variable-length coded image information
US5912707A (en) * 1995-12-23 1999-06-15 Daewoo Electronics., Ltd. Method and apparatus for compensating errors in a transmitted video signal
US5936674A (en) * 1995-12-23 1999-08-10 Daewoo Electronics Co., Ltd. Method and apparatus for concealing errors in a transmitted video signal

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See also references of EP1374578A2 *

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006513643A (en) * 2003-01-10 2006-04-20 トムソン ライセンシング Technology to define concealment order to minimize error propagation
US7693338B2 (en) 2003-01-10 2010-04-06 Thomson Licensing Technique for defining concealment order to minimize error propagation
US7796499B2 (en) 2003-12-05 2010-09-14 Telefonaktiebolaget L M Ericsson (Publ) Method of and system for video fast update
US9641587B2 (en) 2004-02-12 2017-05-02 Core Wireless Licensing S.A.R.L. Classified media quality of experience
US10652306B2 (en) 2004-02-12 2020-05-12 Conversant Wireless Licensing S.A R.L. Classified media quality of experience
US8452884B2 (en) 2004-02-12 2013-05-28 Core Wireless Licensing S.A.R.L. Classified media quality of experience
US10225312B2 (en) 2004-02-12 2019-03-05 Conversant Wireless Licencing S.a r.l. Classified media quality of experience
JP2007525908A (en) * 2004-02-27 2007-09-06 トムソン ライセンシング Error concealment technique using weighted prediction
WO2006075890A1 (en) * 2005-01-17 2006-07-20 Samsung Electronics Co., Ltd. Display apparatus and control method thereof
US7992074B2 (en) 2005-09-13 2011-08-02 Mitsubishi Electric Corporation Decoding device
JP2009518950A (en) * 2005-12-07 2009-05-07 トムソン ライセンシング Method and apparatus for video error concealment using reference frame selection rules
US9210447B2 (en) 2005-12-07 2015-12-08 Thomson Licensing Llc Method and apparatus for video error concealment using reference frame selection rules
US9143160B2 (en) 2010-09-03 2015-09-22 Telefonaktiebolaget L M Ericsson (Publ) Co-compression and co-decompression of data values
WO2012030262A1 (en) * 2010-09-03 2012-03-08 Telefonaktiebolaget Lm Ericsson (Publ) Co-compression and co-decompression of data values
WO2016062865A1 (en) * 2014-10-23 2016-04-28 Avl List Gmbh Method for reconstructing a data packet defectively received in a wireless sensor network

Also Published As

Publication number Publication date
US20030031128A1 (en) 2003-02-13
US7224730B2 (en) 2007-05-29
US7236520B2 (en) 2007-06-26
WO2002071639A8 (en) 2003-10-30
US7110452B2 (en) 2006-09-19
US20030053454A1 (en) 2003-03-20
WO2002071736A8 (en) 2003-10-23
US20050105614A1 (en) 2005-05-19
JP2008259229A (en) 2008-10-23
US7260150B2 (en) 2007-08-21
WO2002071736A3 (en) 2003-04-03
US20030012285A1 (en) 2003-01-16
JP2008236789A (en) 2008-10-02
EP1374578A2 (en) 2004-01-02
US20020181594A1 (en) 2002-12-05
US7042948B2 (en) 2006-05-09
JP2008259230A (en) 2008-10-23
US20030053538A1 (en) 2003-03-20
JP2009005357A (en) 2009-01-08
EP1374430A4 (en) 2005-08-17
JP2004528752A (en) 2004-09-16
US20050201465A1 (en) 2005-09-15
US20050105625A1 (en) 2005-05-19
EP1374429A4 (en) 2009-11-11
US20030012287A1 (en) 2003-01-16
US20020176025A1 (en) 2002-11-28
WO2002071639A1 (en) 2002-09-12
JP2004531925A (en) 2004-10-14
JP2008306735A (en) 2008-12-18
US6940903B2 (en) 2005-09-06
US20030063806A1 (en) 2003-04-03
US7003033B2 (en) 2006-02-21
US20050089091A1 (en) 2005-04-28
US8135067B2 (en) 2012-03-13
US20050123044A1 (en) 2005-06-09
US6993075B2 (en) 2006-01-31
US20050058199A1 (en) 2005-03-17
US7133451B2 (en) 2006-11-07
US20030067981A1 (en) 2003-04-10
US20050117648A1 (en) 2005-06-02
US7215712B2 (en) 2007-05-08
US20020176505A1 (en) 2002-11-28
US7221706B2 (en) 2007-05-22
US7164717B2 (en) 2007-01-16
US6876705B2 (en) 2005-04-05
US20070121721A1 (en) 2007-05-31
WO2002071640A1 (en) 2002-09-12
AU2002245609A1 (en) 2002-09-19
EP1374430A1 (en) 2004-01-02
US6970506B2 (en) 2005-11-29
US7164716B2 (en) 2007-01-16
EP1374429A1 (en) 2004-01-02
US20030026343A1 (en) 2003-02-06
US20050149831A1 (en) 2005-07-07
EP1374578A4 (en) 2007-11-14
US6990151B2 (en) 2006-01-24
US20050201466A1 (en) 2005-09-15
JP2008306734A (en) 2008-12-18
US20030053537A1 (en) 2003-03-20
US20050254584A1 (en) 2005-11-17
JP2008278505A (en) 2008-11-13
US7242715B2 (en) 2007-07-10
JP2004532540A (en) 2004-10-21

Similar Documents

Publication Publication Date Title
US7215712B2 (en) Systems and methods for decoding of partially corrupted reversible variable length code (RVLC) intra-coded macroblocks and partial block decoding of corrupted macroblocks in a video decoder
US6381282B1 (en) Video signal decoding arrangement and method for improved error concealment
US6744924B1 (en) Error concealment in a video signal
JP2003533950A (en) Video coding method
KR20010002218A (en) Wireless communication system for video packet transmission
US6983016B2 (en) Method for detecting errors in video information
Katsaggelos et al. Error resilience and concealment in video coding
KR20010108077A (en) Method and device for robust decoding of header information in macroblock-based compressed video data
EP1555788A1 (en) Method for improving the quality of an encoded video bit stream transmitted over a wireless link, and corresponding receiver
Girod et al. Error-resilient coding for H. 263
KR100213288B1 (en) Method for detecting error of bit stream in h.263 algorithm
Chong Simulation of MPEG-4 Video Streams and Design of an Error-Concealment Method via a Noisy Wireless Network

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A2

Designated state(s): AE AG AL AM AT AT AU AZ BA BB BG BR BY BZ CA CH CN CO CR CU CZ CZ DE DE DK DK DM DZ EC EE EE ES FI FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NO NZ OM PH PL PT RO RU SD SE SG SI SK SK SL TJ TM TN TR TT TZ UA UG US UZ VN YU ZA ZM ZW

AL Designated countries for regional patents

Kind code of ref document: A2

Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZM ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
WWE Wipo information: entry into national phase

Ref document number: 2002570518

Country of ref document: JP

WWE Wipo information: entry into national phase

Ref document number: 2002713780

Country of ref document: EP

CFP Corrected version of a pamphlet front page
CR1 Correction of entry in section i

Free format text: IN PCT GAZETTE 37/2002 DUE TO A TECHNICAL PROBLEM AT THE TIME OF INTERNATIONAL PUBLICATION, SOME INFORMATION WAS MISSING (81). THE MISSING INFORMATION NOW APPEARS IN THE CORRECTED VERSION.

WWP Wipo information: published in national office

Ref document number: 2002713780

Country of ref document: EP

REG Reference to national code

Ref country code: DE

Ref legal event code: 8642