IP Library Granted Patent US 7,428,339
Granted Patent B2
US 7,428,339 · App. 10/703,847 · Granted Sep 23, 2008

Pseudo-frames for MPEG-2 encoding

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,428,339
App. No.
10/703,847
Granted
Sep 23, 2008
Kind
B2
Abstract

A method for real-time video encoding includes buffering frames in an encoder input buffer, retrieving the frames from the encoder input buffer, encoding the retrieved frames into a bit stream, monitoring the encoder input buffer for buffer overflow, and, if the encoder input buffer is about to overflow, encoding one of the retrieved frames as a pseudo-frame that completely references one reference frame of the one retrieved frame. Encoding one of the retrieved frames as a pseudo-frame bypasses a majority of the encoding procedures to improve the overall encoding speed. The method further includes monitoring a hypothetical decoder input buffer that models an actual decoder input buffer in a video decoder, encoding one of the retrieved frames with a pseudo-frame if the hypothetical decoder input buffer is about to underflow, and adding stuffing bits to the bit stream if the hypothetical decoder input buffer is about to overflow.

Claims (95)

1. A method for encoding a video, comprising:

buffering frames of the video in an encoder input buffer;

retrieving the frames from the encoder input buffer;

encoding the retrieved frames into a bit stream;

monitoring the encoder input buffer for buffer overflow; and

when the encoder input buffer is about to overflow, encoding one of the retrieved frames as a pseudo-frame that completely references one reference frame of said one of the retrieved frames, said encoding one of the retrieved frames as a pseudo-frame comprising setting transform coefficients, motion vectors, and coded block patterns of said one of the retrieved frames to zeroes.

2. The method of claim 1 , wherein said encoding the retrieved frames into a bit stream comprises:

performing temporal coding to the retrieved frames to generate motion vectors and residual blocks;

performing spatial coding to the residual blocks to generate transform coefficients and coded block patterns; and

performing a variable-length coding to the motion vectors, the transform coefficients, and the coded block patterns to generate the bit stream.

3. The method of claim 2 , wherein said one of the retrieved frames is a predicated frame (P-frame) or a bidirectional frame (B-frame).

4. The method of claim 3 , wherein said encoding one of the retrieved frames as a pseudo-frame further comprises bypassing the temporal coding and the spatial coding for said one of the retrieved frames.

5. The method of claim 1 , further comprising:

monitoring a hypothetical decoder input buffer for buffer underflow; and

when the hypothetical decoder input buffer is about to underflow, performing said encoding one of the retrieved frames with as a pseudo-frame.

6. The method of claim 5 , wherein said encoding the retrieved frames into a bit stream comprises:

performing temporal coding to the retrieved frames to generate motion vectors and residual blocks;

performing spatial coding to the residual blocks to generate transform coefficients and coded block patterns; and

performing a variable-length coding to the motion vectors, the transform coefficients, and the coded block patterns to generate the bit stream.

7. The method of claim 6 , wherein said one of the retrieved frames is a predicated frame (P-frame) or a bidirectional frame (B-frame).

8. The method of claim 7 , wherein said encoding one of the retrieved frames as a pseudo-frame further comprises bypassing the temporal coding and the spatial coding for said one of the retrieved frames.

9. The method of claim 1 , further comprising:

monitoring a hypothetical decoder input buffer for buffer overflow; and when the hypothetical decoder input buffer is about to overflow, adding stuffing bits before the pseudo-frame in the bit stream.

10. The method of claim 9 , wherein a number of the stuffing bits added before the pseudo-frame in the bit stream is calculated as follows:

stuffing_bits

_num

=

(

vbv_delay

-

vbv_up

_bound

)

×

bit_rate

90000.0

,

wherein a parameter stuffing_bits_num is the number of the stuffing bits added, a parameter vbv_up _bound is a maximum allowable value of a parameter vbv _delay, the parameter vbv_delay is a delay between storing a pseudo-frame staff code in the hypothetical decoder input buffer and staffing the decoding of the pseudo-frame, and a parameter bit_rate is a channel data rate.

11. The method of claim 10 , further comprising, when the hypothetical decoder input buffer is about to overflow, recalculating the parameter vbv_delay as follows:

vbv_delay

=

vbv_delay

-

stuffing_bits

_num

×

90000.0

bit_rate

.

12. The method of claim 11 , wherein the hypothetical decoder input buffer is a video buffer verifier (VBV) buffer.

13. A video encoder, comprising:

an encoder input buffer for storing frames of a video;

a temporal coder for reducing temporal redundancies of the frames, the temporal coder generating motion vectors;

a spatial coder for reducing spatial redundancies of the frames, the spatial coder generating transform coefficients and coded block patterns;

a variable-length coder, the variable-length coder generating a bit stream from the motion vectors, the transform coefficients, and the coded block patterns;

a controller being coupled to the encoder input buffer, the temporal coder, the spatial coder, and the variable-length coder;

wherein the controller monitors the encoder input buffer and instructs the temporal coder and the spatial coder to encode one of the retrieved frames as a pseudo-frame that completely references one reference frame of said one of the retrieved frames by setting motion vectors, transform coefficients, and coded block patterns of said one of the retrieved frames to zeroes when the encoder input buffer is about to overflow.

14. The video encoder of claim 13 , wherein said one of the retrieved frames is a predicated frame (P-frame) or a bidirectional frame (B-frame).

15. The video encoder of claim 14 , wherein the controller further instructs the temporal coder and the spatial coder to bypass coding of said one of the retrieved frames.

16. The video encoder of claim 13 , wherein the controller monitors a hypothetical encoder input buffer, the controller also performing said instructing when the hypothetical decoder input buffer is about to underflow.

17. The video encoder of claim 16 , wherein said one of the retrieved frames is a predicated frame (P-frame) or a bidirectional frame (B-frame).

18. The video encoder of claim 17 , wherein the controller further instructs the temporal coder and the spatial coder to bypass coding of said one of the retrieved frames.

19. The video encoder of claim 13 , wherein the controller monitors a hypothetical decoder input buffer for buffer overflow and adds stuffing bits before the pseudo-frame in the bit stream when the hypothetical decoder input buffer is about to overflow.

20. The video encoder of claim 19 , wherein a number of the stuffing bits added before the pseudo-frame in the bit stream is calculated as follows:

stuffing_bits

_num

=

(

vbv_delay

-

vbv_up

_bound

)

×

bit_rate

90000.0

,

wherein a parameter stuffing_bits_num is the number of the stuffing bits added, a parameter bit_rate is a channel data rate, a parameter vbv_up_bound is a maximum allowable value of a parameter vbv_delay, a parameter vbv_delay is a delay between storing a pseudo-frame start code in the hypothetical decoder input buffer and starting the decoding of the pseudo-frame, wherein the parameter vbv_delay is calculated as follows:

vbv_delay

=

vbv_delay

-

stuffing_bits

_num

×

90000.0

bit_rate

.

21. The video encoder of claim 20 , wherein the hypothetical decoder input buffer is a video buffer verifier (VBV) buffer.

Assignments (7)
RELEASE OF SECURITY INTEREST Recorded Nov 13, 2015
From: EAST WEST BANK
To: ARCSOFT, INC.; MULTIMEDIA IMAGE SOLUTION LIMITED; ARCSOFT (HANGZHOU) MULTIMEDIA TECHNOLOGY CO., LTD.; ARCSOFT (SHANGHAI) TECHNOLOGY CO., LTD.; ARCSOFT HANGZHOU CO., LTD.
Reel/Frame 037109/0027 →
CORRECTIVE ASSIGNMENT TO CORRECT THE INCORRECTLY LISED PATENT NUMBER 7438339 PREVIOUSLY RECORDED AT REEL: 024218 FRAME: 0828. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT. Recorded Jul 24, 2015
From: ARCSOFT, INC.
To: EAST WEST BANK
Reel/Frame 036180/0575 →
CORRECTIVE ASSIGNMENT TO CORRECT THE INCORRECTLY LISED PATENT NUMBER 7438339 PREVIOUSLY RECORDED AT REEL: 026616 FRAME: 0643. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURED PARTY. Recorded Jul 24, 2015
From: EAST WEST BANK
To: ARCSOFT, INC.
Reel/Frame 036180/0680 →
SECURITY INTEREST Recorded Aug 14, 2014
From: ARCSOFT, INC.; ARCSOFT (SHANGHAI) TECHNOLOGY CO., LTD.; ARCSOFT (HANGZHOU) MULTIMEDIA TECHNOLOGY CO., LTD.; MULTIMEDIA IMAGE SOLUTION LIMITED; ARCSOFT HANGZHOU CO., LTD.
To: EAST WEST BANK
Reel/Frame 033535/0537 →
RELEASE OF SECURITY INTEREST Recorded Jul 19, 2011
From: EAST WEST BANK
To: ARCSOFT, INC.
Reel/Frame 026616/0643 →
SECURITY AGREEMENT Recorded Apr 13, 2010
From: ARCSOFT, INC.
To: EAST WEST BANK
Reel/Frame 024218/0828 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 7, 2003
From: WANG, XINGGUO; CHEN, GUOBIN; ZHOU, LINGXIANG
To: ARCSOFT, INC.
Reel/Frame 014686/0655 →