Claims
- 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 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.
- 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 bitstream 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 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.
- 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 technique.
- 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; 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.
- 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:
intra-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 intra-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.
RELATED APPLICATION
[0001] This application claims the benefit under 35 U.S.C. §119(e) of U.S. Provisional Application No. 60/273,443, filed Mar. 5, 2001; U.S. Provisional Application No. 60/275,859, filed Mar. 14, 2001; and U.S. Provisional Application No. 60/286,280, filed Apr. 25, 2001, the entireties of which are hereby incorporated by reference.
Provisional Applications (3)
|
Number |
Date |
Country |
|
60273443 |
Mar 2001 |
US |
|
60275859 |
Mar 2001 |
US |
|
60286280 |
Apr 2001 |
US |