Claims
- 1. A video encoder adapted to compress video information in a robust coded bitstream comprising:
a definition module adapted to receive video frames and to parse the video frames into video objects; and a video object plane (VOP) encoders adapted to generate intra-coded VOPs (I-VOPs) and predictive-coded VOPs (P-VOPs) that correspond to the video objects, where a VOP encoder from the VOP encoders is configured to generate a predictive-coded VOP (P-VOP) from the video frame, where the VOP encoder is configured to generate a standard motion vector for the video object of the present frame, where the standard motion vector references motion to a portion of a frame that is immediately prior to the present frame, where the VOP encoder is configured to generate a redundant motion vector that is independent of the standard motion vector for the video object of the present frame, where the redundant motion vector references motion to a portion of a frame that is prior to the frame referenced by the standard motion vector, where the VOP encoder embeds the redundant motion vector in a data packet, where an output of the VOP encoder is related to the robust coded bitstream.
- 2. The video encoder as defined in claim 1, wherein the VOP encoder embeds the redundant motion vector in the data packet such that the bitstream is compliant with existing syntax.
- 3. The video encoder as defined in claim 1, wherein the data packet is a user data video packet.
- 4. The video encoder as defined in claim 1, further comprises a multiplexer adapted to combine outputs of multiple VOP encoders to generate the robust coded bitstream.
- 5. The video encoder as defined in claim 1, wherein the video encoder is further configured to detect a scene change in the received frames and to encode the scene change with two consecutive Intra-coded Frames (I-Frames), where the I-Frames include only I-VOPs and not P-VOPs.
- 6. The video encoder as defined in claim 1, wherein the video encoder is configured to generate robust coded bitstream that is compliant with MPEG-4 syntax.
- 7. The video encoder as defined in claim 1, wherein the VOP encoder frame references motion for the redundant motion vector from an encoded frame that is immediately prior to the previous frame.
- 8. The video encoder as defined in claim 1, wherein the multiplexer is configured to store the redundant motion vector in a user data video packet of an MPEG-4 video bitstream.
- 9. A motion encoder that robustly encodes temporal movement of video object planes (VOPs) for a first video frame in a sequence of video frames to be encoded, the motion encoder comprising:
a previous VOP memory configured to store VOPs of a second video frame, where the second video frame corresponds to a video frame that is immediately prior to the first video frame; a previous VOP reconstruction circuit in communication with the previous VOP memory, where the previous VOP reconstruction circuit is configured to reconstruct video objects from the previous VOP memory; a first motion vector generator adapted to generate a standard motion vector from a first video object in the first video frame and a first reconstructed video object from the previous VOP reconstruction circuit; previous-previous VOP memory configured to store VOPs of at least a third video frame, where the third video frame corresponds to a video frame that is immediately prior to the second video frame; a previous-previous VOP reconstruction circuit in communication with the previous VOP memory, where the previous-previous VOP reconstruction circuit is configured to reconstruct video objects from the previous-previous VOP memory; and a second motion vector generator to generate a standard motion vector from the first video object in the first video frame and a second reconstructed video object from the previous-previous VOP reconstruction circuit.
- 10. The motion encoder as defined in claim 9, where the previous-previous VOP memory is further configured to store VOPs of a frame that is earlier than the previous-previous frame.
- 11. The motion encoder as defined in claim 9, where the second motion vector generator comprises a motion estimator and a motion compensator.
- 12. A process of providing a redundant motion vectors in an encoded video bitstream, the process comprising:
receiving a plurality of video frames to be encoded; determining whether to encode a video frame as an Intra-coded frame (I-frame) or as a Predictive-coded frame (P-frame); when encoding a P-frame:
encoding a first video object in the frame as a first predictive video object plane (P-VOP); determining whether the first P-VOP is related to a second VOP in a video frame at least two video frames prior to the P-frame that is being encoded; and computing a redundant motion vector that references motion for the first P-VOP based on the second VOP.
- 13. The process as defined in claim 12, further comprising storing the redundant motion vector in a user data video packet such that the encoded video bitstream is compliant with standard MPEG-4 syntax.
- 14. The process as defined in claim 13, further comprising storing a header extension code in the user data video packet.
- 15. The process as defined in claim 12, further comprising storing the redundant motion vector in a user data video packet that immediately follows a data packet corresponding to the first P-VOP in the bitstream.
- 16. The process as defined in claim 12, wherein the second VOP that is used as a reference for the redundant motion vector is from a video frame that is two frames prior to the P-frame that is being encoded.
- 17. The process as defined in claim 12, further comprising:
selecting a video frame the video frames that are at least two video frames prior to the P-frame that is being encoded, where the selected video frame is related to the P-frame that is being encoded; selecting the second VOP from the selected video frame; and providing an indication of the selected video frame in the encoded video bitstream.
- 18. The process as defined in claim 12, further comprising automatically encoding at least two I-frames consecutively when encoding a frame as an I-frame.
- 19. The process as defined in claim 12, wherein the determining whether to encode a video frame as an I-frame comprises detecting a scene change, further comprising:
encoding the video frame corresponding to the scene change as an I-frame; and automatically encoding a video frame subsequent to the video frame that corresponds to the scene change as a scene change.
- 20. The process as defined in claim 12, wherein the determining whether to encode a video frame as an I-frame comprises detecting a rapidly changing scene, further comprising:
encoding the video frame corresponding to the rapidly changing scene as an I-frame; and automatically encoding a video frame subsequent to the video frame that corresponds to the rapidly changing as a scene change.
- 21. The process as defined in claim 12, further comprising wirelessly transmitting the encoded video bitstream such that the encoded video bitstream can be received by at least one remote video decoder.
- 22. A video bitstream that carries a plurality of video frames including intra-coded frames (I-frames) and predictive-coded frames (P-frames), the video bitstream comprising:
a plurality of first packets that carry video object planes (VOPs), where the plurality of packets include packets for intra-coded VOPs (I-VOPs) and packets for predictive-coded VOPs (P-VOPs); and a plurality of second packets, where a second packet carries at least one redundant motion vector corresponding to a P-VOP in the video bitstream.
- 23. The video bitstream as defined in claim 22, where the plurality of second packets comprises user data video packets, where a user data video packet carries the redundant motion vector such that the video bitstream is compliant with MPEG-4 syntax.
- 24. The video bitstream as defined in claim 23, wherein the user data video packet follows the first packet for a corresponding P-VOP in the video bitstream.
- 25. The video bitstream as defined in claim 23, wherein the user data video packet further carriers an indication of which frame to use as a reference frame for the corresponding redundant motion vector.
- 26. The video bitstream as defined in claim 23, wherein the user data video packet further comprises at least one user data header code that identifies data within the user data video packet.
- 27. The video bitstream as defined in claim 23, wherein the user data header code is 16-bits long.
- 28. The video bitstream as defined in claim 23, wherein the user data video packet includes a header extension code.
- 29. A user data video packet in a video bitstream comprising:
a start code corresponding to syntax that indicates a user data video packet; and data corresponding to a motion vector of a portion of a first frame relative to a portion of a second frame earlier in time than the first frame.
- 30. The user data video packet as defined in claim 29, where the user data video packet follows a corresponding data packet that includes a standard motion vector for the first frame relative to a different frame than the second frame.
- 31. The user data video packet as defined in claim 29, where the user data packet is identified by a start code such that a decoder that is not capable of using the motion vector in the user data video packet ignores the user data video packet.
- 32. The user data video packet as defined in claim 29, further comprising a user data header code to identify the data in the user data video packet corresponding to the motion vector.
- 33. The user data video packet as defined in claim 29, further comprising additional data in the user data video packet corresponding to a temporal relationship between the first frame and the second frame.
- 34. A video encoder that provides redundant motion vectors in an encoded video bitstream comprising:
means for receiving a plurality of video frames to be encoded; means for determining whether to encode a video frame as an Intra-coded frame (I-frame) or as a Predictive-coded frame (P-frame); means for encoding a first video object in the frame as a first predictive video object plane (P-VOP) when encoding a P-frame; means for determining whether the first P-VOP is related to a second VOP in a video frame at least two video frames prior to the P-frame that is being encoded when encoding a P-frame; and means for computing a redundant motion vector that references motion for the first P-VOP based on the second VOP.
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 |