Title of Invention

METHOD AND SYSTEM FOR VIDEO TRANSCODING

Abstract The present invention discloses a method and system for lossless transcoding of video data between video protocols in a scalar manner, compressed quantized video data of a first type is examined to determine whether a DC quantization scalar is a predetermined scalar. If it is, the predetermined scalar, the compressed data is scaled to generate a video data of a second type. If it is not the predetermined scalar, transcoding of the video data between the video protocols is effected using an alternative method.
Full Text METHOD AND SYSTEM FOR VIDEO TRANSCODING
Field of the Invention
[1001] The present disclosure relates generally to the processing of video data.
BACKGROUND
[1002] The use of digital video has proliferated, and is expected to continue proliferating as digital data
processing and data transmission speeds increase. Modifying digital video from a digital video
stream having one characteristic to a digital video stream having a different characteristic is referred
to generally as video transcoding. Examples of different characteristics include protocol (e.g.
MPEG1 and MPEG2) and data rates, such as affected by different quantization values. When all
the video information of one video stream is maintained when transcoded to a different video
stream lossless, transcoding is said to occur. For lossless transcoding to occur, it is necessary that
the bandwidth available to the second video stream is sufficient to support the data present in the
original video stream.
[1003] Transcoders for transcoding between MPEG2 and MPEG4 are known and one such transcoder is
described in United States Patent Number 6, 647, 061 (Panusopone et al.) which describes the
recovery of header information of the input bit stream and the use of the input header information to
develop header information for an output bit stream. The input bit stream is partially decompressed
and is then recompressed using the output header information.
[1004] Currently, lossless video transcoding between protocols is accomplished by decoding a first
video stream having a first protocol to generate rendered data (image data), followed by encoding
the rendered data to generate a second video data stream having a second protocol. Encoding using
rendered data is a computationally intensive process. Therefore, a system and / or method of
transcoding that reduces processing requirements needed for transcoding, and / or perform lossless
transcoding would be useful.
[1005] According to one aspect of the present invention, a method of video transcoding comprises
receiving a first video data of a first type, wherein the first video data comprises compressed data
that has been quantized, determining whether a DC quantization scalar of the first video data is a
predetermined DC quantization scalar, and when the DC quantization scalar of the first video data
is the predetermined DC scalar, scaling the compressed data to generate a scaled data and encoding
the scaled data to generate a second video data of a second type.
[1006] Preferably, the scaling the compressed data includes dequantizing the first video data to obtain
the compressed data and scaling the compressed data using an AC quantization scalar.
[1007] The method of the invention can be selectively used to obtain lossless transcoding of an intra
frame where the first video data has a non-linear relationship between DC quantization scalar and
AC quantization scalar and the second video data has a linear relationship between DC quantization
scalar and AC quantization scalar.
[1008] According to another aspect of the invention, a system for video transcoding comprises an input
to receive a first video data of a first type, wherein the first video data comprises compressed data
that has been quantized, a transcoder coupled to the input, the transcoder configured to scale the
compressed data to generate a scaled data and encode the scaled data to generate a second video
data when a DC quantization scalar of the first video data is a predetermined DC quantization
scalar, and an output to provide the second video data.
[1009] Preferably, the transcoder is further configured to dequantize the first video data to obtain the
compressed data and to scale the compressed data using an AC quantization scalar.
BRIEF DESCRIPTION OF THE ACCOMPANYING DRAWINGS
[1010] It will be appreciated that for simplicity and clarity of illustration, elements illustrated in the
FIGs. have not necessarily been drawn to scale. For example, the dimensions of some of the
elements are exaggerated relative to other elements for clarity. Other advantages, features and
characteristics of the present disclosure, as well as methods, operation and functions of related
elements of structure, and the combinations of parts and economies of manufacture, will become
apparent upon consideration of the following description and claims with reference to the
accompanying drawings, all of which form a part of the specification, wherein like reference
numerals designate corresponding parts in the various figures, and wherein:
[1011] FIG. 1 illustrates a representation of video data in accordance with the prior art ;
[1012] FIG. 2-6 illustrates a video stream being transcoded in accordance with the present disclosure ;
[1013] FIG. 7 illustrates a method of quantization in accordance with the present disclosure ;
[1014] FIG. 8 illustrates, in block diagram form, a system in accordance with the present disclosure ;
[1015] FIG. 9 illustrates a method in accordance with the present disclosure ;
[1016] FIG. 10 illustrates, in block diagram form, a system in accordance with the present disclosure ;
[1017] FIGs. 11-13 illustrate, in flow diagram form, a method in accordance with the present disclosure.
DESCRIPTION OF THE PREFERRED EMBODIMENT( S)
[1018] Specific methods of transcoding video data are disclosed as well as a system of transcoding data.
One method of transcoding video data generates a motion vector for a dual prime macro block
having a motion vector and differential motion vector for its two fields respectively. Another
method of transcoding includes replacing a skipped P-macroblock that has been used to backward
predict a B-Frame with a P-macroblock having a motion vector of zero. Another method of
transcoding video data includes replacing a skipped B-macroblock with a macroblock having a
motion vector from a macroblock of the same frame of the skipped B-Macroblock that is not co-
located. A system including an open loop transcoder and a closed loop transcoder is further
disclosed. A method and system of implementing lossless quantization between video protocols in
a scalar manner is also disclosed. FIGs. 2-13 better describe the various aspects of the present
disclosure.
[1019] FIG. 1 is used to identify, for purposes of clarity, the nomenclature used herein. Specifically,
FIG. 1 illustrates five frames 102-106 of data that represent a group of video frames. Many
encoding protocols, such as protocols known as MPEG2 and MPEG4, where MPEG is an acronym
for Motion Picture Experts Group, compress video data by taking advantage of redundant image
portions of adjacent frames. The sequential order of the reference numbers (102-106) indicates the
order that the group of frames 102-106 need to be available for decoding. For example, frame 102
needs to be available at a decoder before frame 103 can be decoded, and frame 103 needs to be
available before frame 104 can be decoded, and so on.
[1020] Frame 102 is an intra frame (I frame), frames 103, 104 and 106 are forwarded predicted frames
(P frames), and frame 105 is a bi-directional predicted frames (B frame). Each of the frames are
further represented by a frame identifier that includes a frame type (I, P, or B) and an integer suffix
to indicate the display order of the specific frame relative to the other frames. Therefore, frame B3
105 is displayed prior to frame P4 104, even though P4 104 is needed by a decoder before B3 105.
[1021] Each frame 102-106 of video data comprises a plurality of macroblocks. Each macroblock in a
frame has a corresponding image location where its data, if any, representing an image is to be
displayed. For illustrative purposes, FIG. 1 represents a frame template 100 identifying image
locations 00 through 99. Therefore, image location 22 has a screen location that is immediately
adjacent horizontally to image locations 21 and 23. When discussing specific macroblocks of a
frame, the frame identifier (I1, P2, P4, B3, P5) is further modified by appending the image location
number after a slash "/". Therefore, the macroblock associated with image location 22 for frame P4
104 would be referred to herein as macroblock P4 / 22 104, and the macroblock associated with
image location 23, adjacent to macroblock 22, in frame P4 104 would be referred to as P4 / 23 104.
Additional prefix and suffix information with respect to specific frames or macroblocks will be
discussed as needed herein.
[1022] FIG. 2 illustrates graphically, a representation of a first macroblock based data stream 109, such
as a MPEG2 data stream, being converted to macroblock based data stream 110 having a different
protocol, such as a MPEG4 data stream. Specifically, the MPEG2 stream portion 109 includes an I
frame 116 followed by a P Frame 117. Note that macroblock location is not a consideration with
respect to FIG. 2. The syntax contained within the parenthesis of frames 116 and 117 of the data
stream 109 indicates that each macroblock of the frames 116 and 117 include an upper field data
and a lower field data, which are also referred to as odd and even fields, respectively. Specifically,
the syntax IO and IE refer to an odd image field texture and an even image field texture,
respectively, for an I frame; PO and PE refer to an odd field texture or prediction data and an even
field texture or prediction data, respectively, for a P frame; while MVo and MVe refer to an odd
field motion vector and an even field motion vector, for a P frame.
[1023] A specific mode of MPEG2 encoding is known as dual-prime mode. With dual prime mode
encoding, either the odd or even field motion vectors associated with a P macroblock of data is a
differential motion vector, designated dMV as opposed to a non-differential motion vector, or a
direct motion vector. A differential motion vector can be combined with the non-differential
motion vector of the other field of the same frame to generate a calculated motion vector,
designated cMV in FIG. 2. Referring to FIG. 2, the P frame 117 includes a motion vector (MVo)
for the odd field, and a differential motion vector (dMVe) for the even field.
[1024] Dual-prime mode is not supported by the MPEG4 protocol. Therefore, in accordance with a
specific embodiment of the present disclosure, the MPEG2 data stream 109 is modified to be
MPEG4 compliant. In accordance with one embodiment of the disclosure, the MPEG2 stream 109,
which has been encoded using dual-prime mode to have a differential motion vector (dMVe), is
shown being converted to a MPEG4 compliant stream 110 that includes P-frame 112, which has
two prediction fields (PO, PE), and two respective motion vectors (MVo, cMVe).
[1025] As illustrated in FIG. 2, MPEG4 stream 110 differs from MPEG2 stream 109 in that the
differential motion vector, dMVe associated with the even field, of the MPEG2 P-frame 117 has
been replaced with a calculated motion vector cMVe. The calculated motion vector cMVe, as
represented by equation 115, is determined based upon a combination of the motion vector for the
other field in the macroblock, the odd field motion vector in this example, and a value represented
by the differential motion vector (dMVe). By replacing the differential motion vectors with motion
vector calculated in this manner, a compliant MPEG4 macroblock can be generated in a lossless
manner.
[1026] Another MPEG2 mode of operation that is not supported by MPEG4 deals with skipping of co-
located P macroblocks. While both the MPEG2 and MPEG4 protocols allow for the skipping of
macroblocks, i.e. no texture or motion vector data provided for a macroblock, skipping of a P frame
macroblock in MPEG2 that is used along with a co-located B-macroblock to predict an image is
permitted. However, when a P macroblock is skipped in MPEG4, the B macroblock is skipped as
well. This can be better understood with reference to FIGs. 3 and 4.
[1027] Referring to FIG. 3, specific macroblocks 121-124 are illustrated to represent a portion of an
MPEG2 stream 120. The data stream 120 represents a specific image location of frame data that is
generally received sequentially. For purposes of illustration, the macroblocks 121-123 are received
in an order indicated by their reference numbers 121-124. Therefore, with respect to FIG. 3, the
macroblock are received in the following order: I1-P2-P4-B3.
[1028] The portion of the MPEG 2 stream 120 illustrated in FIG. 3 includes an I macroblock 121,
associated with a frame identifier II; two P frame macroblocks 122 and 123, associated with frame
identifiers P2 and P4, respectively; and a B frame macroblock 124, associated with a frame B3.
The integer suffix of each frame identifier for macroblocks type 121-124 indicates the display order
of each frame. For example, the macroblock II is to be displayed prior to the macroblock P2,
which is to be displayed before the macroblock B3, which is to be displayed before the macroblock
P4. It will be appreciated that the reception order of the frame data, that includes the macroblocks
of stream 120, is not necessarily the same as the display order when B frames are used. A slash (/)
and numeric indicator following the frame reference indicates the display location of the
macroblock.
[1029] The P and B macroblocks of FIG. 3 have motion vectors as indicated by the references MV in
the parenthesis following the numeric indicator specifying the display location. For example, MV2
is the motion vector associated with the P2 frame. A macroblock having an "s" prefix, such as for
macroblock P2/22, is a skipped macroblock, which in reality has no texture or motion vector data.
Because skipped macroblock sP2/22 122 is a previously decoded macroblock, and macroblock
B3/22 124, is predicted relative to P4/22 123, stream 120 contains a MPEG2 protocol that is also
valid in a MPEG4 stream protocol once any necessary quantization scaling is performed.
[1030] Referring to FIG. 4, the skipped P macroblock P4/22 143, of stream 140, is coded with B
macroblock B3/22 144 that has texture and or motion vector data. During MPEG2 decoding, the
skipped macroblock data for sP4/22 143 is predicted from the rendered data associated with the co-
located macroblock P2/22 142, and the macroblock B3/22 144 is rendered using the predicted data
for P4/22 143 and the prediction error data and motion vector data of macroblock B3/22 144.
However, MPEG4 requires a B macroblock to be skipped when the previously decoded collocated
P macro-block that is to be displayed subsequent to the B macroblock is skipped and prohibits to
encoding of any data for the said macroblock B3/22 144. FIG. 4 illustrates a non-lossless option for
converting the MPEG2 stream to an MPEG4 stream by skipping the B macroblock B3/22 144 in
the converted MPEG4 stream 150. However, since the data associated with the macroblock B3/22
of stream 140 would not used, skipping the B3/22 macroblock in stream 150 results in a lossy
solution relative to the MPEG2 stream.
[1031] FIG. 5, provides a lossless MPEG2 to MPEG4 transcoding solution for an MPEG2 stream
having a skipped P frame, displayed after a B-frame that is predicted based on the P-frame that is
used by a co-located B frame. Specifically, the skipped MPEG2 macroblock sP4/22 163 is encoded
in the MPEG4 stream 170 with relevant texture and motion vector. In one embodiment, the
relevant texture is the predicted texture for skipped macroblock P4/22 163 in stream 160. Note that
MPEG2 macroblock p4/22(P 160,0) 173 where the p160 designator indicates that macroblock P4/22
includes the decoded texture data, for the skipped frame SP4 163 from stream 160, which is the
same as the texture data from the previously decoded co-located macroblock, P2/22 172. The value
"0" in the parenthesis of macroblock P4/22 173 indicates the motion vector is set to zero. In this
manner, the data associated with the B macroblock 164 in MPEG2 stream 160 B3/22(MV3) 164
can be duplicated, and used, in the MPEG4 stream 170, so that lossless transcoding is realized.
[1032] FIG. 6 illustrates a MPEG2 stream 180 being converted to a MPEG4 stream 200. Specifically,
the stream 180 illustrates a skipped B macroblock, sB3/22 184, that is portion of a B frame B3.
Since MPEG4 does not treat the skipped B macro-block in the same way that MPEG2 does, an
accommodation needs to be made to allow for a lossless conversion. As illustrated in FIG. 6,
sB3/22 184 is replaced in the MPEG4 steam with B3/22(0, MV[B3/21]), where the prediction error
data is set at zero, and the motion vector is set equal to the motion vector of a macroblock of the B-
frame B3 that is not co-located with the macroblocks being decoded. For example, the motion
vector of the previous macroblock B3/21 (not illustrated) of the same frame is used. Note that if the
macroblock is being transcoded the first location of the B frame sequence, i.e. B3/00, a motion
vector of zero (0) can be used. This results in a lossless transcoding since no new data was
provided by the skipped B macroblock, and B macroblocks are not used for further prediction.
[1033] FIG. 7 illustrates a method that can be used to transcode data streams supporting different
quantization methods. The embodiment illustrated in FIG. 7 re-quantizes data from a mode
compliant with MPEG2 to a mode compliant with MPEG4. Specifically, the method of FIG. 7 can
be implemented in a scalar manner without decoding and encoding the data stream.
[1034] MPEG4 allows the use of two quantization methods. One method is known as the MPEG2
mode by the MPEG4 world, while the other is know as MPEG4, or MPEG4 mode. Although the
default quantization matrices in use in the MPEG4 mode are different from the quantization method
in use in the MPEG2 mode it is possible in MPEG4, as in MPEG2, to transmit specific matrices.
The major difference between the MPEG2 mode and the MPEG4 mode comes from the way the
DC sample in the intra block is processed.
[1035] Specifically, the quantization step used in MPEG2 for processing the DC sample in the intra
block lies in the range {8, 16, 32}, and is not dependent on the quantization step used to quantize
the AC sample. This is not the case with MPEG4 mode, wherein the DC quantization step varies
with the AC quantization step in a piecewise linear manner for AC quantized values greater than 4.
This difference in the use of the DC sample with respect to the quantizing AC sample can prevent
lossless transcoding of the intraframe that propagates an error to all subsequent frames based on the
intraframe (group of pictures).
[1036] One method of lossless transcoding from MPEG2 to MPEG4 is illustrated by the flow diagram
of FIG. 7, and can be utilized when the MPEG2 quantization scale is equal to eight (8).
[1037] At step 602, the value of the MPEG2 data DC quantization scalar (DC_Q_SCALE2) is
determined. At step 611, a determination is made whether DCQSCALE2 is equal to 8. If so, an
MPEG4 AC quantization scalar (AC_Q_SCALE4) can be used having a value of 1, 2, 3, or 4, as
allowed by the MPEG4 DC Lookup table. If not, the scalor method of FIG. 7 cannot be used to
requantize the MPEG2 data stream.
[1038] At step 603, AC_Q_SCALE4 is determined by selecting a value of AC_Q_SCALE4 such that
(AC_Q_SCALE2)/(AC_Q_SCALE4) = A, where AC_Q_SCALE2 is the AC quantization scalar of
the MPEG2 data, and A is equal to a value of 1, 2, 3, and 4. By selecting ACQSCALE4 to
maximize the value of A, greater compression will be realized on the transcoded stream.
[1039] At step 604, the MPEG2 AC element F"[u][v] is dequantized to obtain F[u][v].
[1040] At step 605, dequantized valued F[u][v] is scaled by A (F[u][v]*A) to obtain Fs[u][v].
[1041] At step 606, scaled value Fs[u][v] is encoded using the AC_Q_SCALE4 value determined in
step 603, and the value ACQSCALE4 is encoded as well in the MPEG4 data stream.
[1042] The system illustrated in FIG. 10 allows for the lossless transcoding of quantized macroblock
data from MPEG2 to MPEG4 mode, where MPEG4 encoding is utilized. In this case the
quantization scale in use by the MPEG4 intra block encoding can be kept lower than 5, allowing the
quantization value for each macro block transcoded to MPEG4 to be adjusted to maintain a lossless
transcoding.
[1043] Fig. 8 illustrates a system in accordance with a specific embodiment of the disclosure. FIG. 8
illustrates a system 700 that comprises a closed loop transcoder 710, an open loop transcoder 712, a
control module 714, an input select switch 102, and an output select switch 702.
[1044] In operation, an input stream comprising digital video data is received by the system 100. The
digital video data will generally include frame based video data such as video data specified by
various MPEG specifications, however, it will be appreciated that other proprietary and standard
video data protocols can be received as well.
[1045] The control module 714 monitors information from the input stream to control switches 102 and
702 to control operation of closed loop transcoder 710 and open loop transcoder 712. In addition,
control module 714 controls switch 702 to provide an output stream transcoded relative to the input
stream. Generally, the control module 714 will enable one of the closed loop transcoder 710 and
the open loop transcoder 712 to provide the output data stream. More specifically, the control
module 714 operates to select as the source of the output data, one of the closed loop transcoder 710
or the open loop transcoder 712 and to control the transcoding process. In one embodiment, the
switch function that results in the selection of the output is implemented by controlling an actual
switch, such as switch 702. In an alternate embodiment, the switch function is implemented by
enabling one of the outputs of the closed loop transcoder 710 and the open loop transcoder 712 so
that only one of the transcoders provides the output stream.
[1046] A closed loop transcoder is a transcoder system that following the generation of a transcoded
data frame, the transcoded data frame is decoded to provide the encoder portion of the transcoder a
decoded reference frame based upon the transcoded data frame. In an open loop transcoder, the
transcoded data frame is not decoded to provide a reference frame to the transcoder.
[1047] In one embodiment, the control module 714 selects closed loop transcoder 710 to transcode a
macroblock of frame data when the transcoding of the received macroblock is to result in a scaling
of the data rate (i.e. data reduction) that is close to one (i.e. no data reduction), and any reference
frames, relative to the received frame, have also been encoded in open-loop mode. In one
embodiment, the open loop transcoder is used when lossless transcoding can be used to perform a
lossless transcode of the input data. For example, using one of the lossless techniques of FIGs. 2, 3,
5, 6, or 7 described herein. In other embodiments, lossy techniques, such as the technique of FIG. 4
can be implemented using the system 700.
[1048] FIG. 9 illustrates a method of selecting between the open-loop transcoder 712 and the closed-
loop transcoder 710.
[1049| At step 801, data to be transcoded is received. In one embodiment this received data is
associated with a frame of video data. At step 804, a determination is made whether the data is to
undergo a data reduction scaling of approximately one based upon a precision value of the system.
For example, a system can be preset, in a programmable or fixed manner, to execute step 806 when
it is determined that the data is to be scaled within a specific range, such as 0.8 to 1.2. Otherwise
the flow proceeds to step 810, where the closed loop transcoder 710 is selected.
[1050] It will be appreciated that when the transcoding to be performed includes a data rate scaling that
is not close to one (i.e. a significant change, e.g. reduction, in data rate) that a new quantization will
need to be performed during the encoding operation. This re-quantization step is a lossy operation
that is performed by a lossy transcoder, such as the closed loop transcoder 712. When a lossy
transcode occurs to a reference frame, the loss of information will be propagated to any frames that
will be subsequently predicted using the reference frame. The need to avoid this error propagation
due to lossy transcoding results in the use of the closed loop transcoder.
[1051] At step 806, a determination is made whether the data to be transcoded is dependent on reference
frames themselves were transcoded by a lossy process (i.e. transcoded using the closed loop
transcoder 710). One way of determining if the reference frames are themselves lossy is for the
transcoder 710 and / or 712 to attach a flag to a frame of transcoded data to indicate whether a lossy
or lossless transcode was used, and for the control module 714 to monitor this flag. Generally this
flag will be an internal flag, providing the transcoder "state" (open/close) used at step 806. This
allows the transcoder to know how previously transcoded frames where transcoded. If the
reference frame has been encoded in lossy mode or if the current frame is targeted to be encoded in
a lossy mode, e.g. the scaling is considered important, then the close loop transcoder is selected
(lossy mode) otherwise flow proceeds to step 808 and the open loop transcoder (losseless) is
selected.
[1052] FIG. 10 illustrates a specific implementation of the transcoder of FIG. 8 in greater detail. The
transcoder of FIG. 10 comprises a closed-loop transcoder and a plurality of open-loop transcoders
as represented by a plurality of open-loop transcoder paths. It will be appreciated that specific
embodiments may include one or more of open-loop transcoder paths illustrated in FIG. 10.
Selection among the open-loop transcoders is controlled by elements 901-903, 921, and 931, which
at least partially represent the control module 714 of FIG. 8.
[1053] The closed loop transcoder of FIG. 10 is represented by the elements that form the data path
including control elements 901, 902 and923, decoder 905, decoder reference frames 910, encoder
915, closed-loop decoder 923, and encoder reference frames 908. When a macroblock or frame is
sent to the closed-loop transcoder it is decoded to produce a decoded reference frame which is
stored with the decoder reference frames 910. Typically the data will be decoded in a conventional
manner using an inverse quantization module, an inverse transformation module, and an inverse
motion compensation module. It will be appreciated that additional modules, or different, modules
may be used to generate the decoder reference frames. Once a frame is decoded it can be sent to the
encoder 915, through the decoder reference frames 910 memory, or through an alternate path 902,
for encoding.
[1054] Typically the data will be encoded in a conventional manner using a motion compensation
module, a transformation modules (such as a discrete cosine transformation module), and a
quantization module. It will be appreciated that additional modules, or different, modules may be
used to generate the decoder reference frames. Once a frame is encoded it is provided to the output
stream through control element 903, and to the closed-loop decoder 925 through control element
923. Typically the newly encoded data will be decoded in a conventional manner by closed loop
decoder 925 using an inverse quantization module, an inverse transformation module, and an
inverse motion compensation module. It will be appreciated that additional modules, or different,
modules may be used to generate the decoder reference frames. Once the newly encoded frame is
decoded it is stored in the encoder reference frames memory for use by the encoder 915.
[1055] FIG. 10 represents a plurality of open-loop transcoders. One or more of the open-loop
transcoders can be implemented in accordance with the present disclosure. In one embodiment a
single open-loop transcoder is implement by the data path including control elements 901, 903,
decoder 905, and encoder 915. In this embodiment, a macroblock or frame from the input stream is
transcoded by being provided to the decoder 905 generate a reference frame. Subsequently, the
decoded reference frame is encoded to provide data to the output stream. In one embodiment, the
open-loop transcoder is selected when the data being transcoded is being transcoded in a lossless
manner, thereby reducing the need to decode the data subsequent to encoding, since the original
reference frame being encoded contains substantially the same data.
[1056] Another embodiment of an open-loop transcoder is illustrated by the data path that includes the
control elements 901 and 903, and quantization scalar 290. In one embodiment, quantization scalar
290 is used when a macroblock or frame of the input stream needs quantization scaling for purposes
of protocol conversion, such as discussed with reference to FIG. 7 for scaling input data from
MPEG2 format to MPEG4 format. Once transcoded (e.g. scaled to be compliant with a different
protocol), the data is provided to the output stream. In order to assure that the received data is
available for any subsequent decoding steps, the data can also be provided to the reference frame
decoder portion 905 so that a reference frame can be stored in the decoder reference frames location
910. It will be further appreciated that the scaling function performed by the quantization scalar
290 can also be performed by the first transcoder described. However, the first transcoder is more
complex requiring more processing resources than use of the quantization scalar 290. Therefore,
use of the quantization requires fewer processing resources resulting in a more efficient transcoder
implementation.
[1057] Another open-loop transcoder is represented by the data path that includes the control element
901, the open-loop protocol transcoder 922, and the quantizer scalar 290, and the control element
923. Input stream data sent to the open-loop protocol transcoder 922 can be transcoded
heuristically using the methods described with reference to FIGS. 2-6, and provided to the
quantization scalar as needed. In this manner the amount of processing resources needed to
transcode input data is reduced. The open-loop protocol transcoder is illustrated as being
implemented separate from the decoder 905 and the encoder 915. However, it will be appreciated
that in another embodiment the open-loop protocol transcoder function could be implemented as
part of one or both of the decoder 905 or the encoder 915. For example the macroblocks from the
input stream could be inverse quantized by the decoder 905 and provided to the encoder 915, by
control module 902, before inverse transformation, thereby allowing the data to be heuristically
transformed. A heuristical transformation module, such as open-loop protocol transcoder 922,
within the encoder 915 could be used to transcode the data prior to quantization. Once heuristically
transformed, the data would be quantized, generally by quantization module 916, and provided to
the output stream. In another embodiment, the input data would not need to be inverse quantized,
and instead, the heuristically transformed data would be sent to the quantization module 290
(connection not shown) before being provided to the output stream. A specific embodiment of
operation of the system of FIG. 10 can be further appreciated based on the method of FIGs. 11-13.
[1058] At step 820 of FIG. 11, a determination is made whether a data rate scaling criteria is met. In
one embodiment, when a data rate scale factor substantially close to 1, as predefined by the system
or a user, is to be maintained, the criteria is met and the flow proceeds to step 822. Otherwise, if
significant data rate scaling is to be performed, for example resulting in a loss of data when a lower
data rate needs to be supported, the flow proceeds to step 851, whereby the data being evaluated is
sent to the closed-loop encoder for transcoding so that an encoder reference frame will be generated
by the closed-loop decoder 915.
[1059] At step 822 a determination is made whether the macroblock or frame data being evaluated is
dependent upon a reference frame that was transcoded in a lossy manner. If so, the flow proceeds
to step 851, so that the current data can be transcoded by the closed-loop transcoder using the lossy
reference data. Otherwise, the flow proceeds to step 824.
[1060] At step 824 a determination is made whether the current macroblock was encoded using dual
prime mode as discussed with reference to FIG. 2. If so, the flow proceeds to step 852 where the
macroblock is sent to an open-loop transcoder for transcoding, otherwise the flow proceeds to step
826. It will be appreciated that with respect to the specific system of FIG. 10 that the open-loop
transcoder of step 852 can be the open-loop protocol transcoder for heuristic transcoding, or to the
open loop transcoder that includes the decoder 905 and the encoder 915. Where a heuristic
transformation is performed, the data will typically be sent to the step 853, where the macroblock is
decoded to generate a reference frame for use in the decoding of subsequent reference frames, if
needed.
[1061] At step 826 a determination to identify an associated frame-type of the data being transcoded. If
B-type data is being transcoded, the flow proceeds to FIG. 12; if a P-type data is being transcoded
the flow proceeds to FIG. 13; if an I-type data is being transcoded the flow proceeds to steps 853
and 854.
[1062] At step 853 the I-type frame is sent to an open-loop transcoder for transcoding. In one
embodiment a quantization scalar, such as quantization scalar 290, is the open-loop transcoder used
to transcode the data. It will be appreciated that other open-loop transcoders can also be used. In
addition, I-frame data is sent to a reference frame decoder at step 854, such as decoder 905, to
facilitate the decoding of subsequent frames that reference the current I-frame.
[1063] When B-type data is encountered at step 826, flow proceeds to step 828 of FIG. 12. At step 828
a determination is made whether the B macroblock being evaluated has been skipped. If so, flow
proceeds to step 854, where the skipped macroblock, or an indication of the skipped macroblock is
provided to an open-loop transcoder for transcoding. It will be appreciated that the open-loop
transcoder need not perform any actual data transformation where a transcoding between protocols
is being performed and the syntax for identifying a skipped B macroblock is the same for both
protocols.
[1064] If the B macroblock was not skipped, the flow proceeds to step 830 where a determination is
made whether the B macroblock depends on reference data that itself was received as skipped data.
When the B macroblock does not depend on skipped reference data the flow proceeds to step 855
where the macroblock information is sent to an open-loop transcoder, such as the open-loop
quantizer scalar 290. Otherwise the flow proceeds to step 832.
[1065] At step 832 a determination is made if the skipped reference data upon which the B macroblock
depends is a subsequently displayed reference data, e.g. displayed, relative to the skipped B-frame
being evaluated. Where the transcode being performed is from MPEG2 to MPEG4, this is invalid
in MPEG4. and the skipped reference frame, or an indication of the skipped reference frame, is sent
to the open-loop transcoder for transcoding. In one embodiment, the open-loop protocol transcoder
922 can be used to transcode the skipped B-frame in accordance with the method of FIG. 4 or FIG.
5. In another embodiment, the open-loop transcoder including the decoder 905 and the encoder 915
can be used.
[1066] If the B macroblock is not dependent on subsequently displayed reference data the flow proceeds
to step 855, where an indication of the skipped B macroblock is provided to an open-loop
transcoder, such as open loop transcoder 922 of FIG. 10.
[1067] Note that none of the B-macroblocks are indicated as decoded when the open-loop transcoding is
used. This is because B-frames are not used as reference frames, making their decode unnecessary
to support the decode of subsequent frames.
[1068] FIG. 13 illustrates a flow used when it is determined at step 826 of FIG. 11 that data associated
with a P-frame is being transcoded. At step 838 a determination is made whether the P macroblock
being evaluated has been skipped. If not, flow proceeds to steps 857 and 858. At step 857, an
indication of the skipped macroblock is provided to an open-loop transcoder such as the open-loop
quantizer scalar, for transcoding. It will be appreciated that the open-loop transcoder need not
perform any actual data transformation where a transcoding between protocols is being performed
and the syntax for identifying a skipped P macroblock is the same for both protocols. At step 858,
an indication of the skipped macroblock is provided to a reference decoder, such as decoder 905.
[1069] If the B macroblock was skipped, the flow proceeds to step 840 where a determination is made
whether the P macroblock is a part of a reference frame for a B macrobock. If not, the flow
proceeds to steps 857 and 858. Otherwise, the flow proceeds to step 842 where a determination is
made whether the P data being evaluate is subsequently displayed reference data to reconstruct a B-
frame. If not the flow proceeds to steps 857 and 858 for transcoding.
[1070] If the P macroblock is reference data for a B-frame and subsequently displayed relative to the B-
frame, the flow proceeds to step 859 where the P data is sent to an open-loop transcoder for
transcoding.
[1071] The various functions and components in the present application may be implemented using an
information handling machine such as a data processor, or a plurality of processing devices. Such a
data processor may be a microprocessor, microcontroller, microcomputer, digital signal processor,
state machine, logic circuitry, and/or any device that manipulates digital information based on
operational instruction, or in a predefined manner. Generally, the various functions, and systems
represented by block diagrams are readily implemented by one of ordinary skill in the art using one
or more of the implementation techniques listed herein. When a data processor for issuing
instructions is used, the instruction may be stored in memory. Such a memory may be a single
memory device or a plurality of memory devices. Such a memory device may be read-only memory
device, random access memory device, magnetic tape memory, floppy disk memory, hard drive
memory, external tape, and/or any device that stores digital information. Note that when the data
processor implements one or more of its functions via a state machine or logic circuitry, the
memory storing the corresponding instructions may be embedded within the circuitry that includes
a state machine and/or logic circuitry, or it may be unnecessary because the function is performed
using combinational logic. Such an information handling machine may be a system, or part of a
system, such as a computer, a personal digital assistant (PDA), a hand held computing device, a
cable set-top box, an Internet capable device, such as a cellular phone, and the like.
[1072] In the preceding detailed description of the figures, reference has been made to the
accompanying drawings which form a part thereof, and in which is shown by way of illustration
specific embodiments in which the disclosure may be practiced. These embodiments are described
in sufficient detail to enable those skilled in the art to practice the disclosure, and it is to be
understood that other embodiments may be utilized and that logical, mechanical, chemical and
electrical changes may be made without departing from the spirit or scope of the disclosure. To
avoid detail not necessary to enable those skilled in the art to practice the disclosure, the description
may omit certain information known to those skilled in the art. Furthermore, many other varied
embodiments that incorporate the teachings of the disclosure may be easily constructed by those
skilled in the art. Accordingly, the present disclosure is not intended to be limited to the specific
form set forth herein, but on the contrary, it is intended to cover such alternatives, modifications,
and equivalents, as can be reasonably included within the spirit and scope of the disclosure. For
example, the present disclosure refers specifically to MPEG2 and MPEG4 protocols. It will be
appreciated that the present disclosure can apply to other protocols, many of which are variations of
one or more MPEG protocols. The preceding detailed description is, therefore, not to be taken in a
limiting sense, and the scope of the present disclosure is defined only by the appended claims.
WE CLAIM :
1. A method of video transcoding comprising :
receiving a first video data of a first type, wherein the first video data comprises compressed
data that has been quantized;
determining whether a DC quantization scalar of the first video data is a predetermined DC
quantization scalar; and
in the event of the DC quantization scalar of the first video data being the predetermined DC
scalar, scaling the compressed data to generate a scaled data and encoding the scaled
data to generate a second video data of a second type.
2. A method of video transcoding as claimed in claim 1, wherein the scaling the compressed
data involves dequantizing the first video data to obtain the compressed data and scaling the
compressed data using an AC quantization scalar.
3. A method of video transcoding as claimed in claim 1 or 2, wherein the first video data is
MPEG2 data.
4. A method of video transcoding as claimed in any of claims 1 to 3, wherein the DC
quantization scalar is equal to 8.
5. A method of video transcoding as claimed in any of claims 1 to 4, wherein the second video
data is MPEG4 data.
6. A method of video transcoding as claimed in claim 2. wherein the AC quantization scalar is
a positive integer of 4 or less.
7. A system for video transcoding comprising :
an input to receive a first video data of a first type, wherein the first video data comprises
compressed data that has been quantized ;
a transcoder coupled to the input, the transcoder configured to scale the compressed data to
generate a scaled data and encode the scaled data to generate a second video data when a
DC quantization scalar of the first video data is a predetermined DC quantization scalar; and
an output to provide the second video data.
8. A system for video transcoding as claimed in claim 7, wherein the transcoder is adapted to
dequantize the first video data to obtain the compressed data and to scale the compressed data using an
AC quantization scalar.
9. A system for video transcoding as claimed in claim 7 or 8, wherein the transcoder is adapted
to process the first video data being MPEG2 data.
10. A system for video transcoding as claimed in any of claims 7, 8 or 9, wherein the
transcoder is adapted to generate the second video data when the DC quantization scalar of the first
video data is equal to 8.
11. A system for video transcoding as claimed in any of claims 7 to 10, wherein the transcoder
is adapted to process the second video data being MPEG4 data.
12. A system for lossless transcoding as claimed in claim 8, wherein the transcoder is adapted
to scale the compressed data with an AC quantization scalar being a positive integer of 4 or less.
The present invention discloses a method and system for lossless transcoding of
video data between video protocols in a scalar manner, compressed quantized video
data of a first type is examined to determine whether a DC quantization scalar is a
predetermined scalar. If it is, the predetermined scalar, the compressed data is scaled to
generate a video data of a second type. If it is not the predetermined scalar, transcoding
of the video data between the video protocols is effected using an alternative method.

Documents:

1693-KOLNP-2005-(20-04-2012)-CORRESPONDENCE.pdf

1693-KOLNP-2005-(20-04-2012)-OTHERS.pdf

1693-KOLNP-2005-(20-04-2012)-PA.pdf

1693-KOLNP-2005-CORRESPONDENCE 1.1.pdf

1693-KOLNP-2005-CORRESPONDENCE.pdf

1693-KOLNP-2005-FORM 27.pdf

1693-KOLNP-2005-FORM-15.pdf

1693-KOLNP-2005-FORM-27.pdf

1693-KOLNP-2005-GPA.pdf

1693-kolnp-2005-granted-abstract.pdf

1693-kolnp-2005-granted-assignment.pdf

1693-kolnp-2005-granted-claims.pdf

1693-kolnp-2005-granted-correspondence.pdf

1693-kolnp-2005-granted-description (complete).pdf

1693-kolnp-2005-granted-drawings.pdf

1693-kolnp-2005-granted-examination report.pdf

1693-kolnp-2005-granted-form 1.pdf

1693-kolnp-2005-granted-form 13.pdf

1693-kolnp-2005-granted-form 18.pdf

1693-kolnp-2005-granted-form 3.pdf

1693-kolnp-2005-granted-form 5.pdf

1693-kolnp-2005-granted-gpa.pdf

1693-kolnp-2005-granted-reply to examination report.pdf

1693-kolnp-2005-granted-specification.pdf


Patent Number 223839
Indian Patent Application Number 1693/KOLNP/2005
PG Journal Number 39/2008
Publication Date 26-Sep-2008
Grant Date 23-Sep-2008
Date of Filing 24-Aug-2005
Name of Patentee VIXS SYSTEMS INC.
Applicant Address 2235 SHEPPARD AVENUE EAST, SUITE 1705, TORONTO, ONTARIO M2J 5B5
Inventors:
# Inventor's Name Inventor's Address
1 ZENG STEVE ZHIHUA 285, PRIMROSE LANE, NEW MARKET, ONTARIO L3Y 5Z1
2 RAULT PATRICK 66 CAMERON AVENUE, TORONTO, ONTARIO M2N 1E1
PCT International Classification Number H04N 7/50
PCT International Application Number PCT/CA2004/000262
PCT International Filing date 2004-02-24
PCT Conventions:
# PCT Application Number Date of Convention Priority Country
1 10/375,582 2003-02-24 U.S.A.