Stitching of video for continuous presence multipoint video conferencing
First Claim
1. A method of generating a stitched video frame in a sequence of stitched video frames;
- decoding a plurality of video bitstreams to produce a plurality of pixel-domain pictures;
spatially composing said plurality of pixel domain pictures to create a single ideal stitched video frame;
storing prediction information from said plurality of decoded video bitstreams;
forming a stitched predictor by performing temporal prediction for inter-coded portions of the stitched video frame based on the stored prediction information and a retained reference frame in said sequence of stitched video frames and performing spatial prediction using retained intra-prediction information on the stitched video frame;
forming a stitched raw residual by subtracting the stitched predictor for a portion of the stitched video frame from a corresponding portion of the ideal stitched video frame;
forward transforming and quantizing the stitched raw residual; and
entropy encoding the forward transformed and quantized stitched raw residual.
9 Assignments
0 Petitions
Accused Products
Abstract
A drift-free hybrid method of performing video stitching is provided. The method includes decoding a plurality of video bitstreams and storing prediction information. The decoded bitstreams form video images, spatially composed into a combined image. The image comprises frames of ideal stitched video sequence. The method uses prediction information in conjunction with previously generated frames to predict pixel blocks in the next frame. A stitched predicted block in the next frame is subtracted from a corresponding block in a corresponding frame to create a stitched raw residual block. The raw residual block is forward transformed, quantized, entropy encoded and added to the stitched video bitstream along with the prediction information. Also, the stitched raw residual block is inverse transformed and dequantized to create a stitched decoded residual block. The residual block is added to the predicted block to generate the stitched reconstructed block in the next frame of the sequence.
281 Citations
56 Claims
-
1. A method of generating a stitched video frame in a sequence of stitched video frames;
-
decoding a plurality of video bitstreams to produce a plurality of pixel-domain pictures;
spatially composing said plurality of pixel domain pictures to create a single ideal stitched video frame;
storing prediction information from said plurality of decoded video bitstreams;
forming a stitched predictor by performing temporal prediction for inter-coded portions of the stitched video frame based on the stored prediction information and a retained reference frame in said sequence of stitched video frames and performing spatial prediction using retained intra-prediction information on the stitched video frame;
forming a stitched raw residual by subtracting the stitched predictor for a portion of the stitched video frame from a corresponding portion of the ideal stitched video frame;
forward transforming and quantizing the stitched raw residual; and
entropy encoding the forward transformed and quantized stitched raw residual. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. A hybrid drift free method of performing video stitching comprising:
-
spatially an ideal stitched video sequence in the pixel domain;
predicting elements of a current frame in a stitched video sequence; and
generating the current frame in the stitched video sequence based on the predicted elements of the current frame and the differences between the predicted elements of the current frame and corresponding elements of a corresponding frame of the ideal stitched video sequence. - View Dependent Claims (11, 12, 13, 14, 15, 16, 17, 18, 19)
-
-
20. A method of generating a stitched video sequence comprising:
-
composing a first stitched video sequence in the pixel domain;
generating a stitched predictor for predicting the pixel data comprising an array of pixels in a current frame of a second stitched video sequence;
subtracting the stitched predictor from a corresponding array of pixels in a corresponding frame of the first stitched video sequence to form a stitched raw residual array of pixels;
encoding the stitched raw residual array of pixels;
decoding the encoded stitched raw residual array of pixels to form a stitched decoded residual array of pixels; and
adding the stitched residual array of pixels to the stitched predictor. - View Dependent Claims (21, 22, 23, 24, 25)
-
-
26. A method of decoding a pixel block in a frame of a stitched video sequence;
-
retaining a previous frame in said stitched video sequence;
generating a stitched residual block by entropy decoding, inverse transforming and dequantizing a bitstream containing entropy coded, forward transformed and quantized stitched raw residual block formed by subtracting a first stitched predictor from a frame in an ideal stitched video sequence;
generating a second stitched predictor for the pixel block in the frame to be decoded in the video sequence in substantially the same manner that said first stitched predictor was generated; and
adding the decoded stitched residual block to the stitched predictor. - View Dependent Claims (27)
-
-
28. A method of stitching a plurality of input video bitstreams conforming to the ITU-T H.264 video coding standard, the method comprising:
-
decoding said plurality of input video bitstreams to produce a plurality of pixel-domain pictures;
spatially composing said plurality of pixel-domain pictures to create an ideal stitched video frame;
storing at least one of prediction information and a quantization parameter for at least a portion of the pixel domain pictures produced from said plurality of decoded video bitstreams;
forming a stitched predictor by performing temporal prediction for inter-coded portions of the stitched video frame based on the stored information and a retained reference frame in said sequence of stitched video frames, and performing spatial prediction using stored information on the stitched video frame;
forming a stitched raw residual by subtracting the stitched predictor for a portion of the stitched video frame from a corresponding portion of the ideal stitched video frame;
forward transforming and quantizing the stitched raw residual; and
entropy encoding the forward transformed and quantized stitched raw residual. - View Dependent Claims (29, 30, 31, 32, 33, 34, 35, 36, 37)
-
-
38. A method of stitching a plurality of input video bitstreams conforming to the ITU-T H.263 video coding standard, the method comprising:
-
decoding said plurality of video bitstreams to produce a plurality of pixel-domain pictures;
spatially composing said plurality of pixel-domain pictures to create a single ideal stitched video frame;
storing at least one of prediction information, and a quantization parameter for at least one macroblock in said plurality of decoded video bitstreams;
forming a stitched predictor by performing temporal prediction for inter-coded portions of the stitched video frame based on the stored information and a retained reference frame in said sequence of stitched video frames and performing spatial prediction using stored information on the stitched video frame;
forming a stitched raw residual by subtracting the stitched predictor for a portion of the stitched video frame from a corresponding portion of the ideal stitched video frame;
forward transforming and quantizing the stitched raw residual; and
entropy encoding the forward transformed and quantized stitched raw residual to form a stitched bitstream. - View Dependent Claims (39, 40, 41, 42, 43)
-
-
44. A partially drift-free method for performing nearly compressed domain video stitching for H.263 video bitstreams, method comprising:
-
parsing a plurality of individual video bitstreams;
decoding picture, GOB (group of blocks), and MB (macroblock) layer headers in the said individual video bitstreams;
modifying a differential motion vector for at least one macroblock associated with one of said individual video bitstreams;
modifying a COD value from 1 to 0 for at least one macroblock in one of said individual video bitstreams;
modifying a DQUANT value for at least one macrobrock in one of said individual video bitstreams;
modifying a QUANT value for at least one macroblock in one of said video bitstreams;
requantizing and VLC encoding the macroblock for which the QUANT value was modified; and
constructing the stitched bitstream including the modified DQUANT value and the requantized VLC encoded macroblock. - View Dependent Claims (45, 46, 47)
-
-
48. A lossless method for performing compressed domain video stitching of a plurality of H.263 video bitstreams encapsulated as RTP packets the method comprising:
-
extracting a plurality of individual video bitstreams from a current incoming RTP packets from among a plurality of incoming RTP packets;
parsing the individual video bitstreams;
decoding picture, GOB (group of blocks), and MB (macroblock) layer headers in the individual video bitstreams;
modifying a differential motion vector for at least one macroblock in one of said individual video bitstreams;
modifying a DQUANT value for at least one macrobrock in one of said individual video bitstreams;
terminating the current incoming RTP packet and starting a next RTP packet of said plurality of incoming RTP packets the if the absolute value of the DQUANT modification exceeds 2, or if a motion vector points to a location in another quadrant for a macroblock in one of said video bitstreams, and incorporating an actual MV and QUANT value in the RTP header fields of every RTP packet of the stitched video bitstream.
-
-
49. A lossless method of performing video stitching on first, second, third, and fourth individual video sequences encoded according to ITU-T H.263 Annex K where each video frame of said first, second, third, and fourth video sequence comprises a plurality of rectangular slices, the method comprising:
-
modifying OPPTYPE bits 1-3 in a picture header of a frame in said first video sequence;
modifying an MBA parameter for each slice in a frame from each of said first, second, third, and fourth video sequences such that the modified MBA parameters represent locations in a stitched video frame having four times higher resolution than a frame in said first, second, third and fourth video sequences, such that slices from said first video sequence occupy a first quadrant of said stitched video frame, slices from said second video sequence occupy a second quadrant of said stitched video frame, slices from said third video sequence occupy a third quadrant of said stitched video frame, and slices from said fourth video sequence occupy a fourth quadrant of said stitched video frame; and
arranging the slices from the first, second, third, and fourth video sequences into a stitched bitstream such that the slices from said first video stream alternate with the slices from said second video stream, and the slices from the third video sequences alternate with the slices from the fourth vide sequences, following the slices from the first and second video sequences in a similar alternating manner.
-
-
50. A method of stitching frames from a plurality of video sequences comprising:
-
defining a nominal frame rate fnom;
defining a maximum frame rate fmax;
decoding received frames in said plurality of video sequences;
stitching together a set of decoded frames one from each of said plurality of video sequences to form a composite stitched video frame;
determining when bitstream data corresponding to two complete frames belonging to one of the said plurality of video sequences are available for decoding;
defining a time ttau as the time elapsed between the time a previous composite frame was stitched and the time that bitstream data corresponding to two complete frames belonging to one of the said plurality of video sequences are available for decoding;
invoking the stitching operation at a time ts, where ts is equal to the greater of 1/fmax and the smaller of 1/fnom and ttau.
-
-
51. A method of concealing macroblock lost in the transmission of an H.264 encoded video stream comprising:
-
determining whether the macroblock was in an inter-coded slice;
if the slice was an inter-coded slice, estimating the motion vector and corresponding reference picture of the lost macroblock from received macroblocks neighboring the lost macroblock;
performing motion compensation using the estimated motion vector and corresponding reference picture to obtain pixel information for the lost macroblock.
-
-
52. A method of concealing a macroblock lost in transmission of an H.264 encoded video stream, the method comprising:
-
determining whether the macroblock was in an intra-coded slice or an IDR slice;
if the slice was an intra-coded slice or IDR slice, initiating a videofastupdatepicture command through an H.241 signaling mechanism.
-
-
53. A method of concealing the loss of bitstream data corresponding to one or more frames in the transmission of an H.264 encoded video stream comprising:
-
determining a number of frames lost in transmission;
copying pixel information from a temporally previous frame to re-create a lost frame;
marking said lost frame as a short-term reference picture through a sliding window process specified in the H.264 standard.
-
-
54. A method of decoding an ITU-T H.264 bitstream comprising:
-
initiating a videofastupdatepicture command via an H.241 signalling method when any one of the following conditions is detected;
a loss of sequence parameter set is detected in the bitstream;
a loss of picture parameter set is detected in the bitstream;
a loss of an IDR-slice is detected in the bitstream;
a loss of an I-slice is detected in the bitstream;
orgaps in frame_num are allowed in the bitstream and packet loss is detected in the bitstream;
-
-
55. A method of concealing a macroblock lost in the transmission of an H.263 encoded video stream comprising:
-
determining whether the macroblock was a P-macroblock;
if the macroblock was a P-macroblock, estimating the motion vector of the lost macroblock from received macroblocks neighboring the lost macroblock;
performing motion compensation using the estimated motion vector to obtain pixel information for the lost macroblock.
-
-
56. A method of concealing a macroblock lost in the transmission of an H.263 encoded video stream comprising:
-
determining whether the macroblock was an I-macroblock in an I-frame;
if the macroblock was an I-macroblock in an I-frame, initiating a videofastupdatepicture command through an H.245 signaling mechanism.
-
Specification