Same frame motion estimation and compensation
Abstract
Motion estimation or compensation functionality of a hardware component is used to encode or decode key frames and other video frames. The hardware component includes a memory, which may, for example, be a local static random access memory or an external dynamic random access memory. Upon a block of a frame being encoded or decoded, data associated with that block is stored in the memory. That data can then be processed by motion estimation or motion compensation for use in encoding or decoding one or more later blocks within the same frame. The data may, for example, be stored in the memory after operations for reconstruction and loop filtering have been performed. The data stored in the memory may effectively be processed using traditional inter-prediction operations, such as to identify similar video objects within blocks of the same frame.
Claims
exact text as granted — not AI-modifiedWhat is claimed is:
1 . A method, comprising:
decoding a first encoded block of an encoded video frame to produce a first decoded block, wherein decoding the first encoded block includes dequantizing, inverse transforming, predicting, reconstructing, and filtering video data of the first encoded block; storing data associated with the first decoded block within a local static memory of a hardware decoder; selecting a motion vector from one of a first set of motion vector candidates identified by performing motion compensation based on the data stored within the local static memory or a second set of motion vector candidates identified by performing motion compensation based on one or more reference frames; and decoding a second encoded block of the encoded video frame using the motion vector to produce a second decoded block.
2 . The method of claim 1 , wherein the data associated with the first decoded block is first data and the motion vector is a first motion vector, the method further comprising:
storing second data associated with the second decoded block within the local static memory, wherein the second data is used to identify a second motion vector for decoding a third encoded block of the encoded video frame.
3 . The method of claim 2 , wherein the second data is indicative of a video object associated with the second decoded block.
4 . The method of claim 1 , wherein the motion vector is determined using sub-pixel interpolation or motion warping.
5 . The method of claim 1 , wherein, when the second encoded block is decoded, the first decoded block is outside of a restricted area of the encoded video frame.
6 . The method of claim 1 , wherein one or more syntax elements encoded to a bitstream from which the encoded video frame is decoded indicate whether to use the first set of motion vector candidates or the second set of motion vector candidates to select the motion vector, wherein selecting the motion vector from the one of the first set of motion vector candidates or the second set of motion vector candidates comprises:
selecting the motion vector from the one of the first set of motion vector candidates or the second set of motion vector candidates based on the one or more syntax elements.
7 . The method of claim 1 , wherein the encoded video frame is a key frame.
8 . A method, comprising:
storing, in a local static memory of a hardware decoder used to decode an encoded video frame, first data associated with a first encoded block previously decoded from the encoded video frame, wherein the first encoded block is decoded by dequantizing, inverse transforming, predicting, reconstructing, and filtering video data of the first encoded block; selecting a motion vector from one of a first set of motion vector candidates identified by performing motion compensation based on the first data stored within the local static memory or a second set of motion vector candidates identified by performing motion compensation based on one or more reference frames; decoding a second encoded block of the encoded video frame using the motion vector to produce a second decoded block; and storing, in the local static memory, second data associated with the second decoded block, wherein the hardware decoder is configured to use the second data to decode one or more other encoded blocks from the encoded video frame.
9 . The method of claim 8 , wherein the first data is indicative of a video object associated with the first encoded block and the second data is indicative of a video object associated with the second encoded block.
10 . The method of claim 8 , wherein the motion vector is determined using sub-pixel interpolation or motion warping.
11 . The method of claim 8 , wherein, when the second encoded block is decoded, the first decoded block is outside of a restricted area of the encoded video frame.
12 . The method of claim 8 , wherein one or more syntax elements encoded to a bitstream from which the encoded video frame is decoded indicate whether to use the first set of motion vector candidates or the second set of motion vector candidates to select the motion vector, wherein selecting the motion vector from the one of the first set of motion vector candidates or the second set of motion vector candidates comprises:
selecting the motion vector from the one of the first set of motion vector candidates or the second set of motion vector candidates based on the one or more syntax elements.
13 . The method of claim 8 , wherein the encoded video frame is a key frame.
14 . A method, comprising:
decoding, from a bitstream to which an encoded video frame is encoded, one or more syntax elements indicating to select a motion vector for decoding an encoded block of the encoded video frame from one of a first set of motion vector candidates identified by performing motion compensation based on data stored within a local static memory of a hardware decoder or a second set of motion vector candidates identified by performing motion compensation based on one or more reference frames; and decoding the encoded block using the motion vector selected according to the one or more syntax elements.
15 . The method of claim 14 , wherein the encoded block is a second encoded block, the method further comprising:
storing the data within the local static memory responsive to decoding a first encoded block of the encoded video frame to produce a first decoded block, wherein the data stored within the local static memory is associated with the first decoded block.
16 . The method of claim 15 , wherein decoding the first encoded block includes dequantizing, inverse transforming, predicting, reconstructing, and filtering video data of the first encoded block.
17 . The method of claim 15 , wherein the data stored within the local static memory is first data and decoding the encoded block produces a second decoded block, the method further comprising:
storing second data associated with the second encoded block within the local static memory responsive to decoding the second encoded block, wherein the hardware decoder is configured to use the second data to decode one or more other encoded blocks from the encoded video frame.
18 . The method of claim 17 , wherein the second data is indicative of a video object associated with the second decoded block.
19 . The method of claim 15 , wherein, when the encoded block is decoded, the first decoded block is outside of a restricted area of the encoded video frame.
20 . The method of claim 14 , wherein the motion vector is determined using sub-pixel interpolation or motion warping.Join the waitlist — get patent alerts
Track US2021021859A1 — get alerts on status changes and closely related new filings.
We store only your email — no account needed. See our privacy policy.