Glycan binding patterns of human rotavirus P[10] VP8* protein
Nokia VP8 Infringement Claim Chart for '211 Patent
-
Upload
florian-mueller -
Category
Documents
-
view
218 -
download
0
Transcript of Nokia VP8 Infringement Claim Chart for '211 Patent
-
7/30/2019 Nokia VP8 Infringement Claim Chart for '211 Patent
1/37
EXHIBIT 16
CLAIM CHART SHOWING INFRINGEMENT OF THE 6,711,211 PATENT BY THE
HTC ONE MOBILE PHONE
-
7/30/2019 Nokia VP8 Infringement Claim Chart for '211 Patent
2/37
- 2 -
Exhibit No. 16
Claim Chart Showing Infringement of the 6,711,211 Patent by The HTC One Mobile
Phone1
Claims of the 211Patent HTC One Mobile Phone
26. A method for
decoding encoded video
information, including
deriving prediction
motion coefficients for
blocks within a
macroblock of a video
frame being decoded
from motion coefficients
of at least one prediction
block that is a previously
decoded macroblock orblock within said video
frame, the method
comprising:
The HTC One (hereafter referred to as the device) uses a method for decoding encoded
video information, including deriving prediction motion coefficients for blocks within a
macroblock of a video frame being decoded from motion coefficients of at least one
prediction block that is a previously decoded macroblock or block within said video frame.
The method is necessarily performed, for example, when an end-user of the device uses the
device to view and play back VP8 encoded videos, as encouraged by HTC. See, e.g.,
Exhibit 24 (HTC One User Guide) at pp. 46, 75, 83, 145-146. Moreover, the device runs the
Android version 4.1.2 operating system.
(Figure 1).
All products running Android version 2.3 and above are capable of decoding encoded video
information by decoding encoded VP8 videos. See Exhibit 25
(http://developer.android.com/about/versions/android-2.3-highlights.html) (The platform
now offers built-in support for the VP8 open video compression format and the WebM open
container format).
Exhibit 50, titled VP8 Data Format and Decoding Guide describes the method for
decoding the encoded VP8 video information.
1 This claim chart is based on the information currently available to Nokia and is intended to be exemplary
in nature. Nokia reserves all rights to update and elaborate its infringement positions, including as Nokia obtains
additional information during the course of discovery.
-
7/30/2019 Nokia VP8 Infringement Claim Chart for '211 Patent
3/37
- 3 -
Claims of the 211
Patent
HTC One Mobile Phone
1. Introduction. . .
This document describes the VP8 compressed video data format, together with a
discussion of the decoding procedure for the format. It is intended to be used inconjunction with, and as a guide to, the reference decoder source code provided in
Attachment One (Section 20).
(Exhibit 50 at p. 4).
4. Overview of Compressed Data Format
The input to a VP8 decoder is a sequence of compressed frames whose order matches
their order in time.
(Exhibit 50 at p. 8).
The following excerpts from Exhibit 50 illustrate that the device derives prediction motioncoefficients for blocks within a macroblock of a video frame being decoded from motion
coefficients of at least one prediction block that is a previously decoded macroblock or
block within said video frame.
2. Format Overview. . .
Internally, VP8 decomposes each output frame into an array of macroblocks. A
macroblock is a square array of pixels whose Y dimensions are 16x16 and whose U and
V dimensions are 8x8.. . .
Macroblocks are further decomposed into 4x4 subblocks. Every macroblock has 16 Y
subblocks, 4 U subblocks, and 4 V subblocks.
(Exhibit 50 at p. 6).
5. Overview of the Decoding Process. . .
Inter-prediction is conceptually very simple. While, for reasons of efficiency, there are
several methods of encoding the relationship between the current macroblock and
corresponding sections of the prediction frame, ultimately each of the sixteen Y
subblocks is related to a 4x4 subblock of the prediction frame, whose position in that
frame differs from the current subblock position by a (usually small) displacement.
These two-dimensional displacements are called motion vectors.
(Exhibit 50 at p. 12).
16.2 Inter-Predicted Macroblocks. . .the purpose of inter-mode decoding is to set a motion vector for each of the sixteen Y
subblocks of the current macroblock.. . .
After the reference frame selector comes the mode (or motion vector reference) applied
to the macroblock as a whole, coded using the following enumeration and tree. . .
-
7/30/2019 Nokia VP8 Infringement Claim Chart for '211 Patent
4/37
- 4 -
Claims of the 211
Patent
HTC One Mobile Phone
(Exhibit 50 at p. 98, 99).
16.3. Mode and Motion Vector Contexts. . .
The algorithm generates a sorted list of distinct motion vectors adjacent to the search
site. The best_mv is the vector with the highest score. The mv_nearest is the
non-zero vector with the highest score. The mv_near is the non-zero vector with the
next highest score.. . .
In the function vp8_find_near_mvs(), the vectors nearest and near are used
by the corresponding modes.. . .
The first three entries in the return value cnt are (in order) weighted census values for
zero, nearest, and near vectors.
. . .For the first four inter-coding modes, the same motion vector is used for all the Y
subblocks. The first three modes use an implicit motion vector.
(Exhibit 50 at pp. 99, 101, 104-105).
16.4 Split PredictionThe remaining mode ( SPLITMV) causes multiple vectors to be applied to the Y
-
7/30/2019 Nokia VP8 Infringement Claim Chart for '211 Patent
5/37
- 5 -
Claims of the 211
Patent
HTC One Mobile Phone
subblocks. It is immediately followed by a partition specification that determines how
many vectors will be specified and how they will be assigned to the subblocks. . .
.
. . .
After the partition come two (for mv_top_bottom or mv_left_right), four (for
mv_quarters), or sixteen (for MV_16) subblock inter-prediction modes.
. . .
. . .
The first two sub-prediction modes simply copy the already-coded motion vectors used
by the blocks above and to the left of the subblock at the upper left corner of the current
subset (i.e., collection of subblocks being predicted). These prediction blocks need not
lie in the current macroblock and, if the current subset lies at the top or left edges of the
frame, need not lie in the frame. In this latter case, their motion vectors are taken to be
zero, as are subblock motion vectors within an intra-predicted macroblock. Also, to
ensure the correctness of prediction within this macroblock, all subblocks lying in an
already-decoded subset of the current macroblock must have their motion vectors set.
ZERO4x4 uses a zero motion vector and predicts the current subset using thecorresponding subset from the prediction frame.
NEW4x4 is exactly like NEWMV except that NEW4x4 is applied only to the current
subset. It is followed by a two-dimensional motion vector offset (described in the next
section) that is added to the best vector returned by the earlier call to find_near_mvs to
form the motion vector in effect for the subset.
(Exhibit 50 at pp. 105, 106, 108).
-
7/30/2019 Nokia VP8 Infringement Claim Chart for '211 Patent
6/37
- 6 -
Claims of the 211
Patent
HTC One Mobile Phone
(a) defining a certain
number of available
macroblock
segmentations that
specify possible ways inwhich a macroblock can
be segmented into
blocks;
The device performs the step of defining a certain number of available macroblock
segmentations that specify possible ways in which a macroblock can be segmented into
blocks.
2. Format Overview. . .
Internally, VP8 decomposes each output frame into an array of macroblocks. A
macroblock is a square array of pixels whose Y dimensions are 16x16 and whose U and
V dimensions are 8x8.. . .
Macroblocks are further decomposed into 4x4 subblocks. Every macroblock has 16 Y
subblocks, 4 U subblocks, and 4 V subblocks.
(Exhibit 50 at p. 6).
16.4 Split PredictionThe remaining mode ( SPLITMV) causes multiple vectors to be applied to the Y
subblocks. It is immediately followed by a partition specification that determines howmany vectors will be specified and how they will be assigned to the subblocks. The
possible partitions, with indicated subdivisions and coding tree, are as follows.
(Exhibit 50 at p. 105).
(b) defining for each
available macroblock
segmentation at least one
available prediction
method, thereby
providing a certain finite
number of available
macroblock-
segmentation--
prediction-method pairs,
The device performs the step of defining for each available macroblock segmentation at
least one available prediction method, thereby providing a certain finite number of
available macroblock-segmentation--prediction-method pairs, each prediction method
defining a method for deriving prediction motion coefficients for blocks within a
macroblock using motion coefficients of at least one prediction block.
16.2 Inter-Predicted Macroblocks. . .
the purpose of inter-mode decoding is to set a motion vector for each of the sixteen Y
subblocks of the current macroblock.. . .
After the reference frame selector comes the mode (or motion vector reference) applied
to the macroblock as a whole, coded using the following enumeration and tree
-
7/30/2019 Nokia VP8 Infringement Claim Chart for '211 Patent
7/37
- 7 -
Claims of the 211
Patent
HTC One Mobile Phone
(Exhibit 50 at p. 98, 99).
16.3 Mode and Motion Vector Contexts. . .
The algorithm generates a sorted list of distinct motion vectors adjacent to the search
site. The best_mv is the vector with the highest score. The mv_nearest is the
non-zero vector with the highest score. The mv_near is the non-zero vector with the
next highest score.. . .
For the first four inter-coding modes, the same motion vector is used
for all the Y subblocks.. . .
(Exhibit 50 at pp. 99, 105).
16.4 Split PredictionThe remaining mode ( SPLITMV ) causes multiple vectors to be applied to the Y
subblocks. It is immediately followed by a partition specification that determines how
many vectors will be specified and how they will be assigned to the subblocks. The
possible partitions, with indicated subdivisions and coding tree, are as follows.
. . .
-
7/30/2019 Nokia VP8 Infringement Claim Chart for '211 Patent
8/37
- 8 -
Claims of the 211
Patent
HTC One Mobile Phone
. . .
After the partition come two (for mv_top_bottom or mv_left_right),four (for
mv_quarters), or sixteen (for MV_16) subblock inter-prediction modes.
. . .
. . .
The first two sub-prediction modes simply copy the already-coded motion vectors used
by the blocks above and to the left of the subblock at the upper left corner of the current
subset (i.e.,collection of subblocks being predicted). These prediction blocks need not
lie in the current macroblock and, if the current subset lies at the top or left edges of the
frame, need not lie in the frame. In this latter case, their motion vectors are taken to be
zero, as are subblock motion vectors within an intra-predicted macroblock. Also, to
ensure the correctness of prediction within this macroblock, all subblocks lying in an
already-decoded subset of the current macroblock must have their motion vectors set.
ZERO4x4 uses a zero motion vector and predicts the current subset using the
corresponding subset from the prediction frame.
NEW4x4 is exactly like NEWMV except that NEW4x4 is applied only to the current
subset. It is followed by a two-dimensional motion vector offset (described in the next
section) that is added to the best vector returned by the earlier call to find_near_mvs to
form the motion vector in effect for the subset.
(Exhibit 50 at pp. 105, 106, 108).
-
7/30/2019 Nokia VP8 Infringement Claim Chart for '211 Patent
9/37
- 9 -
Claims of the 211
Patent
HTC One Mobile Phone
each prediction method
defining a method for
deriving prediction
motion coefficients forblocks within a
macroblock using motion
coefficients of at least
one prediction block;
The device performs the step of defining for each available macroblock segmentation at
least one available prediction method, thereby providing a certain finite number of
available macroblock-segmentation--prediction-method pairs, each prediction method
defining a method for deriving prediction motion coefficients for blocks within amacroblock using motion coefficients of at least one prediction block.
16.3 Mode and Motion Vector Contexts. . .
The algorithm generates a sorted list of distinct motion vectors adjacent to the search
site. The best_mv is the vector with the highest score. The mv_nearest is the
non-zero vector with the highest score. The mv_near is the non-zero vector with the
next highest score.. . .
In the function vp8_find_near_mvs(), the vectors nearest and near are used
by the corresponding modes.. . .
The first three entries in the return valuecnt
are (in order) weighted census values for
zero, nearest, and near vectors.. . .
For the first four inter-coding modes, the same motion vector is used for all the Y
subblocks. The first three modes use an implicit motion vector.
(Exhibit 50 at pp. 99, 101, 104-105).
16.4 Split Prediction. . .
. . .
-
7/30/2019 Nokia VP8 Infringement Claim Chart for '211 Patent
10/37
- 10 -
Claims of the 211
Patent
HTC One Mobile Phone
The first two sub-prediction modes simply copy the already-coded motion vectors used
by the blocks above and to the left of the subblock at the upper left corner of the current
subset (i.e.,collection of subblocks being predicted). These prediction blocks need not
lie in the current macroblock and, if the current subset lies at the top or left edges of the
frame, need not lie in the frame. In this latter case, their motion vectors are taken to bezero, as are subblock motion vectors within an intra-predicted macroblock. Also, to
ensure the correctness of prediction within this macroblock, all subblocks lying in an
already-decoded subset of the current macroblock must have their motion vectors set.
ZERO4x4 uses a zero motion vector and predicts the current subset using the
corresponding subset from the prediction frame.
NEW4x4 is exactly like NEWMV except that NEW4x4 is applied only to the current
subset. It is followed by a two-dimensional motion vector offset (described in the next
section) that is added to the best vector returned by the earlier call to find_near_mvs to
form the motion vector in effect for the subset.
(Exhibit 50 at pp. 105, 106, 108).
(c) receiving information
indicating at least the
macroblock
segmentation selected for
a macroblock in said
encoded video
information; and
The device performs the step of receiving information indicating at least the
macroblock segmentation selected for a macroblock in said encoded video information.
16.2 Inter-Predicted Macroblocks. . .
After the reference frame selector comes the mode (or motion vector reference) applied
to the macroblock as a whole, coded using the following enumeration and tree. . .
(Exhibit 50 at pp. 98, 99).
16.3 Mode and Motion Vector ContextsThe probability table used to decode the mv_ref, along with three reference motion
vectors used by the selected mode, is calculated via a survey of the already-decoded
motion vectors in (up to) 3 nearby macroblocks.. . .mvr = (mv_ref) treed_read( d, mv_ref_tree, mv_ref_p);
(Exhibit 50 at pp. 99, 104).
8. Compressed Data Components
At the lowest level, VP8s compressed data is simply a sequence of probabilistically-
encoded bools.
-
7/30/2019 Nokia VP8 Infringement Claim Chart for '211 Patent
11/37
- 11 -
Claims of the 211
Patent
HTC One Mobile Phone
. . .
The node probabilities associated to a tree-coded value are stored in an array whose
indices are half the indices of the corresponding tree positions. The length of the
probability array is one less than the size of the alphabet.
Here is C code implementing the foregoing. The advantages of our data structure should
be noted. Aside from the smallness of the structure itself, the tree-directed reading
algorithm is essentially a single line of code.
(Exhibit 50 at pp. 25, 27-28).
16.4 Split PredictionThe remaining mode ( SPLITMV ) causes multiple vectors to be applied to the Y
subblocks. It is immediately followed by a partition specification that determines how
many vectors will be specified and how they will be assigned to the subblocks.. . .
(Exhibit 50 at p. 105).
(d) determining the The device performs the step of determining the prediction method relating to the
-
7/30/2019 Nokia VP8 Infringement Claim Chart for '211 Patent
12/37
- 12 -
Claims of the 211
Patent
HTC One Mobile Phone
prediction method
relating to the
macroblock
segmentation of said
macroblock withreference to the defined
macroblock-
segmentation--
prediction-method pairs
macroblock segmentation of said macroblock with reference to the defined macroblock-
segmentation--prediction-method pairs and producing prediction motion coefficients for
blocks within said macroblock using the determined prediction method.
16.2 Inter-Predicted Macroblocks. . .
(Exhibit 50 at p. 99).
16.4. Split PredictionThe remaining mode (SPLITMV) causes multiple vectors to be applied to the Y
subblocks. It is immediately followed by a partition specification that determines how
many vectors will be specified and how they will be assigned to the subblocks. The
possible partitions, with indicated subdivisions and coding tree, are as follows.. . .
(Exhibit 50 at pp. 105-106).
and producing prediction
motion coefficients for
blocks within said
macroblock using thedetermined prediction
method.
The device performs the step of determining the prediction method relating to the
macroblock segmentation of said macroblock with reference to the defined macroblock-
segmentation--prediction-method pairs and producing prediction motion coefficients for
blocks within said macroblock using the determined prediction method.
16.3 Mode and Motion Vector Contexts. . .
For the first four inter-coding modes, the same motion vector is used for all the Y
subblocks. The first three modes use an implicit motion vector.
-
7/30/2019 Nokia VP8 Infringement Claim Chart for '211 Patent
13/37
- 13 -
Claims of the 211
Patent
HTC One Mobile Phone
(Exhibit 50 at pp. 104-105).
16.4 Split PredictionThe remaining mode ( SPLITMV ) causes multiple vectors to be applied to the Y
subblocks.. . .
. . .
The first two sub-prediction modes simply copy the already-coded motion vectors used
by the blocks above and to-the-left of the subblock at the upper left corner of the current
subset (i.e., collection of subblocks being predicted).
(Exhibit 50 at pp. 105, 106, 108).
-
7/30/2019 Nokia VP8 Infringement Claim Chart for '211 Patent
14/37
- 14 -
Claims of the 211
Patent
HTC One Mobile Phone
50. A decoder for
performing motion
compensated decoding of
encoded video
information, said decoderbeing arranged to derive
prediction motion
coefficients for blocks
within a macroblock of a
video frame being
decoded from motion
coefficients of at least
one prediction block that
is a previously decoded
macroblock or block
within said video frame,
the decoder comprising:
The HTC One (hereafter referred to as the device) contains and uses a decoder for
performing motion compensated decoding of encoded video information, said decoder
being arranged to derive prediction motion coefficients for blocks within a macroblock
of a video frame being decoded from motion coefficients of at least one prediction
block that is a previously decoded macroblock or block within said video frame.
Specifically, all products running Android version 2.3 and above are capable of decoding
encoded video information by decoding encoded VP8 videos. See Exhibit 25
(http://developer.android.com/about/versions/android-2.3-highlights.html) (The platform
now offers built-in support for the VP8 open video compression format and the WebM open
container format).
The device runs the Android version 4.1.2 operating system.
(Figure 2).
Exhibit 50, titled VP8 Data Format and Decoding Guide describes the decoder used to
perform motion compensated decoding of encoded VP8 video information.
1. Introduction. . .
This document describes the VP8 compressed video data format, together with a
discussion of the decoding procedure for the format. It is intended to be used inconjunction with, and as a guide to, the reference decoder source code provided in
Attachment One (Section 20).
(Exhibit 50 at p. 4).
3. Compressed Frame Types. . .
Interframes (also called prediction frames and, in MPEG terminology, P-frames) are
encoded with reference to prior frames, specifically all prior frames up to and including
-
7/30/2019 Nokia VP8 Infringement Claim Chart for '211 Patent
15/37
- 15 -
Claims of the 211
Patent
HTC One Mobile Phone
the most recent key frame.
(Exhibit 50 at p. 7).
4. Overview of Compressed Data Format
The input to a VP8 decoder is a sequence of compressed frames whose order matches
their order in time.
(Exhibit 50 at p. 8).
The following excerpts from Exhibit 50 illustrate that the decoder in the device is arranged
to derive prediction motion coefficients for blocks within a macroblock of a video frame
being decoded from motion coefficients of at least one prediction block that is a
previously decoded macroblock or block within said video frame.
2. Format Overview. . .Internally, VP8 decomposes each output frame into an array of macroblocks. A
macroblock is a square array of pixels whose Y dimensions are 16x16 and whose U and
V dimensions are 8x8.. . .
Macroblocks are further decomposed into 4x4 subblocks. Every macroblock has 16 Y
subblocks, 4 U subblocks, and 4 V subblocks.
(Exhibit 50 at p. 6).
5. Overview of the Decoding Process. . .
Inter-prediction is conceptually very simple. While, for reasons of efficiency, there are
several methods of encoding the relationship between the current macroblock andcorresponding sections of the prediction frame, ultimately each of the sixteen Y
subblocks is related to a 4x4 subblock of the prediction frame, whose position in that
frame differs from the current subblock position by a (usually small) displacement.
These two-dimensional displacements are called motion vectors.
(Exhibit 50 at p. 12).
16.2 Inter-Predicted Macroblocks. . .
the purpose of inter-mode decoding is to set a motion vector for each of the sixteen Y
subblocks of the current macroblock.. . .
After the reference frame selector comes the mode (or motion vector reference) applied
to the macroblock as a whole, coded using the following enumeration and tree. . .
-
7/30/2019 Nokia VP8 Infringement Claim Chart for '211 Patent
16/37
- 16 -
Claims of the 211
Patent
HTC One Mobile Phone
(Exhibit 50 at p. 98, 99).
16.3. Mode and Motion Vector Contexts. . .
The algorithm generates a sorted list of distinct motion vectors adjacent to the searchsite. The best_mv is the vector with the highest score. The mv_nearest is the
non-zero vector with the highest score. The mv_near is the non-zero vector with the
next highest score.. . .
In the function vp8_find_near_mvs(), the vectors nearest and near are used
by the corresponding modes.. . .
The first three entries in the return value cnt are (in order) weighted census values for
zero, nearest, and near vectors.. . .
For the first four inter-coding modes, the same motion vector is used for all the Y
subblocks. The first three modes use an implicit motion vector.
(Exhibit 50 at pp. 99, 101, 104-105).
16.4 Split PredictionThe remaining mode ( SPLITMV) causes multiple vectors to be applied to the Y
subblocks. It is immediately followed by a partition specification that determines how
many vectors will be specified and how they will be assigned to the subblocks. . . .
-
7/30/2019 Nokia VP8 Infringement Claim Chart for '211 Patent
17/37
- 17 -
Claims of the 211
Patent
HTC One Mobile Phone
. . .
After the partition come two (for mv_top_bottom or mv_left_right), four (for
mv_quarters), or sixteen (for MV_16) subblock inter-prediction modes.
. . .
. . .
The first two sub-prediction modes simply copy the already-coded motion vectors used
by the blocks above and to the left of the subblock at the upper left corner of the current
subset (i.e., collection of subblocks being predicted). These prediction blocks need not
lie in the current macroblock and, if the current subset lies at the top or left edges of the
frame, need not lie in the frame. In this latter case, their motion vectors are taken to be
zero, as are subblock motion vectors within an intra-predicted macroblock. Also, to
ensure the correctness of prediction within this macroblock, all subblocks lying in an
already-decoded subset of the current macroblock must have their motion vectors set.
ZERO4x4 uses a zero motion vector and predicts the current subset using the
corresponding subset from the prediction frame.
NEW4x4 is exactly like NEWMV except that NEW4x4 is applied only to the currentsubset. It is followed by a two-dimensional motion vector offset (described in the next
section) that is added to the best vector returned by the earlier call to find_near_mvs to
form the motion vector in effect for the subset.
(Exhibit 50 at pp. 105, 106, 108).
(a) means for defining a
certain number of
available macroblock
The device contains a means for defining a certain number of available macroblock
segmentations that specify possible ways in which a macroblock can be segmented into
blocks.
-
7/30/2019 Nokia VP8 Infringement Claim Chart for '211 Patent
18/37
- 18 -
Claims of the 211
Patent
HTC One Mobile Phone
segmentations that
specify possible ways in
which a macroblock can
be segmented into
blocks;
2. Format Overview. . .
Internally, VP8 decomposes each output frame into an array of macroblocks. A
macroblock is a square array of pixels whose Y dimensions are 16x16 and whose U andV dimensions are 8x8.. . .
Macroblocks are further decomposed into 4x4 subblocks. Every macroblock has 16 Y
subblocks, 4 U subblocks, and 4 V subblocks.
(Exhibit 50 at p. 6).
16.4 Split PredictionThe remaining mode ( SPLITMV) causes multiple vectors to be applied to the Y
subblocks. It is immediately followed by a partition specification that determines how
many vectors will be specified and how they will be assigned to the subblocks. The
possible partitions, with indicated subdivisions and coding tree, are as follows.
(Exhibit 50 at p. 105).
(b) means for specifying
at least one available
prediction method for
each available
macroblock
segmentation, thereby
providing a certain finite
number of available
macroblock-
segmentation--
prediction-method pairs,
The device contains a means for specifying at least one available prediction method for
each available macroblock segmentation, thereby providing a certain finite number of
available macroblock-segmentation--prediction-method pairs, each prediction method
defining a method for deriving prediction motion coefficients for blocks within a
macroblock using motion coefficients of at least one prediction block.
16.2 Inter-Predicted Macroblocks. . .
the purpose of inter-mode decoding is to set a motion vector for each of the sixteen Y
subblocks of the current macroblock.. . .
After the reference frame selector comes the mode (or motion vector reference) applied
to the macroblock as a whole, coded using the following enumeration and tree
-
7/30/2019 Nokia VP8 Infringement Claim Chart for '211 Patent
19/37
- 19 -
Claims of the 211
Patent
HTC One Mobile Phone
(Exhibit 50 at p. 98, 99).
16.3 Mode and Motion Vector Contexts. . .
The algorithm generates a sorted list of distinct motion vectors adjacent to the searchsite. The best_mv is the vector with the highest score. The mv_nearest is the
non-zero vector with the highest score. The mv_near is the non-zero vector with the
next highest score.. . .
For the first four inter-coding modes, the same motion vector is used
for all the Y subblocks.. . .
(Exhibit 50 at pp. 99, 105).
16.4 Split Prediction
The remaining mode ( SPLITMV ) causes multiple vectors to be applied to the Ysubblocks. It is immediately followed by a partition specification that determines how
many vectors will be specified and how they will be assigned to the subblocks. The
possible partitions, with indicated subdivisions and coding tree, are as follows.
. . .
-
7/30/2019 Nokia VP8 Infringement Claim Chart for '211 Patent
20/37
- 20 -
Claims of the 211
Patent
HTC One Mobile Phone
. . .
After the partition come two (for mv_top_bottom or mv_left_right),four (for
mv_quarters), or sixteen (for MV_16) subblock inter-prediction modes.
. . .
. . .
The first two sub-prediction modes simply copy the already-coded motion vectors used
by the blocks above and to the left of the subblock at the upper left corner of the current
subset (i.e.,collection of subblocks being predicted). These prediction blocks need not
lie in the current macroblock and, if the current subset lies at the top or left edges of the
frame, need not lie in the frame. In this latter case, their motion vectors are taken to be
zero, as are subblock motion vectors within an intra-predicted macroblock. Also, to
ensure the correctness of prediction within this macroblock, all subblocks lying in an
already-decoded subset of the current macroblock must have their motion vectors set.
ZERO4x4 uses a zero motion vector and predicts the current subset using the
corresponding subset from the prediction frame.
NEW4x4 is exactly like NEWMV except that NEW4x4 is applied only to the current
subset. It is followed by a two-dimensional motion vector offset (described in the nextsection) that is added to the best vector returned by the earlier call to find_near_mvs to
form the motion vector in effect for the subset.
(Exhibit 50 at pp. 105, 106, 108).
each prediction method
defining a method for
deriving prediction
motion coefficients for
The device contains a means for specifying at least one available prediction method for
each available macroblock segmentation, thereby providing a certain finite number of
available macroblock-segmentation--prediction-method pairs, each prediction method
defining a method for deriving prediction motion coefficients for blocks within a
-
7/30/2019 Nokia VP8 Infringement Claim Chart for '211 Patent
21/37
- 21 -
Claims of the 211
Patent
HTC One Mobile Phone
blocks within a
macroblock using motion
coefficients of at least
one prediction block;
macroblock using motion coefficients of at least one prediction block.
16.3 Mode and Motion Vector Contexts. . .
The algorithm generates a sorted list of distinct motion vectors adjacent to the searchsite. The best_mv is the vector with the highest score. The mv_nearest is the
non-zero vector with the highest score. The mv_near is the non-zero vector with the
next highest score.. . .
In the function vp8_find_near_mvs(), the vectors nearest and near are used
by the corresponding modes.. . .
The first three entries in the return value cnt are (in order) weighted census values for
zero, nearest, and near vectors.. . .
For the first four inter-coding modes, the same motion vector is used for all the Y
subblocks. The first three modes use an implicit motion vector..
(Exhibit 50 at pp. 99, 101, 104-105).
16.4 Split Prediction. . .
. . .
The first two sub-prediction modes simply copy the already-coded motion vectors used
by the blocks above and to the left of the subblock at the upper left corner of the current
subset (i.e.,collection of subblocks being predicted). These prediction blocks need not
lie in the current macroblock and, if the current subset lies at the top or left edges of the
frame, need not lie in the frame. In this latter case, their motion vectors are taken to be
zero, as are subblock motion vectors within an intra-predicted macroblock. Also, to
-
7/30/2019 Nokia VP8 Infringement Claim Chart for '211 Patent
22/37
- 22 -
Claims of the 211
Patent
HTC One Mobile Phone
ensure the correctness of prediction within this macroblock, all subblocks lying in an
already-decoded subset of the current macroblock must have their motion vectors set.
ZERO4x4 uses a zero motion vector and predicts the current subset using the
corresponding subset from the prediction frame.
NEW4x4 is exactly like NEWMV except that NEW4x4 is applied only to the current
subset. It is followed by a two-dimensional motion vector offset (described in the next
section) that is added to the best vector returned by the earlier call to find_near_mvs to
form the motion vector in effect for the subset.
(Exhibit 50 at pp. 105, 106, 108).
(c) input means for
receiving information
indicating at least the
macroblock
segmentation selected fora macroblock;
The device contains an input means for receiving information indicating at least the
macroblock segmentation selected for a macroblock.
16.2 Inter-Predicted Macroblocks. . .
After the reference frame selector comes the mode (or motion vector reference) applied
to the macroblock as a whole, coded using the following enumeration and tree. . .
(Exhibit 50 at pp. 98, 99).
16.3 Mode and Motion Vector ContextsThe probability table used to decode the mv_ref, along with three reference motion
vectors used by the selected mode, is calculated via a survey of the already-decoded
motion vectors in (up to) 3 nearby macroblocks.. . .
mvr = (mv_ref) treed_read( d, mv_ref_tree, mv_ref_p);
(Exhibit 50 at pp. 99, 104).
8. Compressed Data Components
At the lowest level, VP8s compressed data is simply a sequence of probabilistically-
encoded bools.. . .
The node probabilities associated to a tree-coded value are stored in an array whose
indices are half the indices of the corresponding tree positions. The length of the
probability array is one less than the size of the alphabet.
-
7/30/2019 Nokia VP8 Infringement Claim Chart for '211 Patent
23/37
- 23 -
Claims of the 211
Patent
HTC One Mobile Phone
Here is C code implementing the foregoing. The advantages of our data structure should
be noted. Aside from the smallness of the structure itself, the tree-directed reading
algorithm is essentially a single line of code.
(Exhibit 50 at pp. 25, 27-28).
16.4 Split PredictionThe remaining mode ( SPLITMV ) causes multiple vectors to be applied to the Y
subblocks. It is immediately followed by a partition specification that determines how
many vectors will be specified and how they will be assigned to the subblocks.. . .
(Exhibit 50 at p. 105).
(d) means for
determining the
prediction method
relating to the
segmentation of the
macroblock with
The device contains a means for determining the prediction method relating to the
segmentation of the macroblock with reference to the defined macroblock-
segmentation--prediction-method pairs.
-
7/30/2019 Nokia VP8 Infringement Claim Chart for '211 Patent
24/37
- 24 -
Claims of the 211
Patent
HTC One Mobile Phone
reference to the defined
macroblock-
segmentation--
prediction-method pairs;
and
16.2 Inter-Predicted Macroblocks
. . .
(Exhibit 50 at p. 99).
16.4. Split PredictionThe remaining mode (SPLITMV) causes multiple vectors to be applied to the Y
subblocks. It is immediately followed by a partition specification that determines how
many vectors will be specified and how they will be assigned to the subblocks. The
possible partitions,
with indicated subdivisions and coding tree, are as follows.. . .
(Exhibit 50 at pp. 105-106).
(e) means for producing
prediction motion
coefficients for blocks
within said macroblock
using the determined
prediction method.
The device contains a means for producing prediction motion coefficients for blocks
within said macroblock using the determined prediction method.
16.3 Mode and Motion Vector Contexts. . .
For the first four inter-coding modes, the same motion vector is used for all the Y
subblocks. The first three modes use an implicit motion vector.
-
7/30/2019 Nokia VP8 Infringement Claim Chart for '211 Patent
25/37
- 25 -
Claims of the 211
Patent
HTC One Mobile Phone
(Exhibit 50 at pp. 104-105).
16.4 Split PredictionThe remaining mode ( SPLITMV ) causes multiple vectors to be applied to the Y
subblocks.. . .
. . .
The first two sub-prediction modes simply copy the already-coded motion vectors used
by the blocks above and to-the-left of the subblock at the upper left corner of the current
subset (i.e., collection of subblocks being predicted).
(Exhibit 50 at pp. 105, 106, 108).
-
7/30/2019 Nokia VP8 Infringement Claim Chart for '211 Patent
26/37
- 26 -
Claims of the 211
Patent
HTC One Mobile Phone
56. Computer program
element for performing
motion compensated
decoding of encoded
video information, said
computer program
element being arranged
to derive prediction
motion coefficients for
blocks within a
macroblock of a video
frame being decoded
from motion coefficients
of at least one prediction
block that is a previously
decoded macroblock orblock within said video
frame, the computer
program element
comprising:
The HTC One (hereafter referred to as the device) contains and uses a computer program
element for performing motion compensated decoding of encoded video information, said
computer program element being arranged to derive prediction motion coefficients forblocks within a macroblock of a video frame being decoded from motion coefficients of at
least one prediction block that is a previously decoded macroblock or block within said
video frame.
Specifically, all products running Android version 2.3 and above are capable of decoding
encoded video information by decoding encoded VP8 videos. See Exhibit 25
(http://developer.android.com/about/versions/android-2.3-highlights.html) (The platform
now offers built-in support for the VP8 open video compression format and the WebM open
container format).
The device runs the Android version 4.1.2 operating system.
(Figure 3).
Exhibit 50, titled VP8 Data Format and Decoding Guide describes the decoder used to
perform motion compensated decoding of encoded VP8 video information.
1. Introduction. . .
This document describes the VP8 compressed video data format, together with a
discussion of the decoding procedure for the format. It is intended to be used in
conjunction with, and as a guide to, the reference decoder source code provided in
Attachment One (Section 20).
(Exhibit 50 at p. 4).
3. Compressed Frame Types
-
7/30/2019 Nokia VP8 Infringement Claim Chart for '211 Patent
27/37
- 27 -
Claims of the 211
Patent
HTC One Mobile Phone
. . .
Interframes (also called prediction frames and, in MPEG terminology, P-frames) are
encoded with reference to prior frames, specifically all prior frames up to and including
the most recent key frame.
(Exhibit 50 at p. 7).
4. Overview of Compressed Data Format
The input to a VP8 decoder is a sequence of compressed frames whose order matches
their order in time.
(Exhibit 50 at p. 8).
The following excerpts from Exhibit 50 illustrate that the decoder in the device is arranged
to derive prediction motion coefficients for blocks within a macroblock of a video frame
being decoded from motion coefficients of at least one prediction block that is a
previously decoded macroblock or block within said video frame.
2. Format Overview. . .
Internally, VP8 decomposes each output frame into an array of macroblocks. A
macroblock is a square array of pixels whose Y dimensions are 16x16 and whose U and
V dimensions are 8x8.. . .
Macroblocks are further decomposed into 4x4 subblocks. Every macroblock has 16 Y
subblocks, 4 U subblocks, and 4 V subblocks.
(Exhibit 50 at p. 6).
5. Overview of the Decoding Process. . .
Inter-prediction is conceptually very simple. While, for reasons of efficiency, there are
several methods of encoding the relationship between the current macroblock and
corresponding sections of the prediction frame, ultimately each of the sixteen Y
subblocks is related to a 4x4 subblock of the prediction frame, whose position in that
frame differs from the current subblock position by a (usually small) displacement.
These two-dimensional displacements are called motion vectors.
(Exhibit 50 at p. 12).
16.2 Inter-Predicted Macroblocks. . .
the purpose of inter-mode decoding is to set a motion vector for each of the sixteen Y
subblocks of the current macroblock.. . .
After the reference frame selector comes the mode (or motion vector reference) applied
to the macroblock as a whole, coded using the following enumeration and tree. . .
-
7/30/2019 Nokia VP8 Infringement Claim Chart for '211 Patent
28/37
- 28 -
Claims of the 211
Patent
HTC One Mobile Phone
(Exhibit 50 at p. 98, 99).
16.3. Mode and Motion Vector Contexts. . .
The algorithm generates a sorted list of distinct motion vectors adjacent to the searchsite. The best_mv is the vector with the highest score. The mv_nearest is the
non-zero vector with the highest score. The mv_near is the non-zero vector with the
next highest score.. . .
In the function vp8_find_near_mvs(), the vectors nearest and near are used
by the corresponding modes.. . .
The first three entries in the return value cnt are (in order) weighted census values for
zero, nearest, and near vectors.. . .
For the first four inter-coding modes, the same motion vector is used for all the Y
subblocks. The first three modes use an implicit motion vector.
(Exhibit 50 at pp. 99, 101, 104-105).
16.4 Split PredictionThe remaining mode ( SPLITMV) causes multiple vectors to be applied to the Y
subblocks. It is immediately followed by a partition specification that determines how
many vectors will be specified and how they will be assigned to the subblocks. . . .
-
7/30/2019 Nokia VP8 Infringement Claim Chart for '211 Patent
29/37
- 29 -
Claims of the 211
Patent
HTC One Mobile Phone
. . .
After the partition come two (for mv_top_bottom or mv_left_right), four (for
mv_quarters), or sixteen (for MV_16) subblock inter-prediction modes.
. . .
. . .
The first two sub-prediction modes simply copy the already-coded motion vectors used
by the blocks above and to the left of the subblock at the upper left corner of the current
subset (i.e., collection of subblocks being predicted). These prediction blocks need not
lie in the current macroblock and, if the current subset lies at the top or left edges of the
frame, need not lie in the frame. In this latter case, their motion vectors are taken to be
zero, as are subblock motion vectors within an intra-predicted macroblock. Also, to
ensure the correctness of prediction within this macroblock, all subblocks lying in an
already-decoded subset of the current macroblock must have their motion vectors set.
ZERO4x4 uses a zero motion vector and predicts the current subset using the
corresponding subset from the prediction frame.
NEW4x4 is exactly like NEWMV except that NEW4x4 is applied only to the current
subset. It is followed by a two-dimensional motion vector offset (described in the next
section) that is added to the best vector returned by the earlier call to find_near_mvs to
form the motion vector in effect for the subset.
(Exhibit 50 at pp. 105, 106, 108).
(a) program means for
defining a certain
The device contains a program means for defining a certain number of available
macroblock segmentations that specify possible ways in which a macroblock can be
-
7/30/2019 Nokia VP8 Infringement Claim Chart for '211 Patent
30/37
- 30 -
Claims of the 211
Patent
HTC One Mobile Phone
number of available
macroblock
segmentations that
specify possible ways in
which a macroblock canbe segmented into
blocks;
segmented into blocks.
2. Format Overview. . .
Internally, VP8 decomposes each output frame into an array of macroblocks. Amacroblock is a square array of pixels whose Y dimensions are 16x16 and whose U and
V dimensions are 8x8.. . .
Macroblocks are further decomposed into 4x4 subblocks. Every macroblock has 16 Y
subblocks, 4 U subblocks, and 4 V subblocks.
(Exhibit 50 at p. 6).
16.4 Split PredictionThe remaining mode ( SPLITMV) causes multiple vectors to be applied to the Y
subblocks. It is immediately followed by a partition specification that determines how
many vectors will be specified and how they will be assigned to the subblocks. The
possible partitions, with indicated subdivisions and coding tree, are as follows.
(Exhibit 50 at p. 105).
(b) program means for
specifying at least one
available prediction
method for each
available macroblock
segmentation, thereby
providing a certain finite
number of available
macroblock
segmentation-prediction-method
pairs,
The device contains a program means for specifying at least one available prediction
method for each available macroblock segmentation, thereby providing a certain finite
number of available macroblock segmentation-prediction-method
pairs, each prediction method defining a method for deriving prediction motion
coefficients for blocks within a macroblock using motion coefficients of at least one
prediction block.
16.2 Inter-Predicted Macroblocks
. . .the purpose of inter-mode decoding is to set a motion vector for each of the sixteen Y
subblocks of the current macroblock.. . .
After the reference frame selector comes the mode (or motion vector reference) applied
to the macroblock as a whole, coded using the following enumeration and tree
-
7/30/2019 Nokia VP8 Infringement Claim Chart for '211 Patent
31/37
- 31 -
Claims of the 211
Patent
HTC One Mobile Phone
(Exhibit 50 at p. 98, 99).
16.3 Mode and Motion Vector Contexts. . .
The algorithm generates a sorted list of distinct motion vectors adjacent to the searchsite. The best_mv is the vector with the highest score. The mv_nearest is the
non-zero vector with the highest score. The mv_near is the non-zero vector with the
next highest score.. . .
For the first four inter-coding modes, the same motion vector is used
for all the Y subblocks.. . .
(Exhibit 50 at pp. 99, 105).
16.4 Split PredictionThe remaining mode ( SPLITMV ) causes multiple vectors to be applied to the Y
subblocks. It is immediately followed by a partition specification that determines how
many vectors will be specified and how they will be assigned to the subblocks. The
possible partitions, with indicated subdivisions and coding tree, are as follows.
. . .
-
7/30/2019 Nokia VP8 Infringement Claim Chart for '211 Patent
32/37
- 32 -
Claims of the 211
Patent
HTC One Mobile Phone
. . .
After the partition come two (for mv_top_bottom or mv_left_right),four (for
mv_quarters), or sixteen (for MV_16) subblock inter-prediction modes.
. . .
. . .
The first two sub-prediction modes simply copy the already-coded motion vectors used
by the blocks above and to the left of the subblock at the upper left corner of the current
subset (i.e.,collection of subblocks being predicted). These prediction blocks need not
lie in the current macroblock and, if the current subset lies at the top or left edges of the
frame, need not lie in the frame. In this latter case, their motion vectors are taken to be
zero, as are subblock motion vectors within an intra-predicted macroblock. Also, to
ensure the correctness of prediction within this macroblock, all subblocks lying in an
already-decoded subset of the current macroblock must have their motion vectors set.
ZERO4x4 uses a zero motion vector and predicts the current subset using the
corresponding subset from the prediction frame.
NEW4x4 is exactly like NEWMV except that NEW4x4 is applied only to the current
subset. It is followed by a two-dimensional motion vector offset (described in the nextsection) that is added to the best vector returned by the earlier call to find_near_mvs to
form the motion vector in effect for the subset.
(Exhibit 50 at pp. 105, 106, 108).
each prediction method
defining a method for
deriving prediction
motion coefficients for
The device contains a program means for specifying at least one available prediction
method for each available macroblock segmentation, thereby providing a certain finite
number of available macroblock segmentation-prediction-method
pairs, each prediction method defining a method for deriving prediction motion
-
7/30/2019 Nokia VP8 Infringement Claim Chart for '211 Patent
33/37
- 33 -
Claims of the 211
Patent
HTC One Mobile Phone
blocks within a
macroblock using motion
coefficients of at least
one prediction block;
coefficients for blocks within a macroblock using motion coefficients of at least one
prediction block.
16.3 Mode and Motion Vector Contexts
. . .The algorithm generates a sorted list of distinct motion vectors adjacent to the search
site. The best_mv is the vector with the highest score. The mv_nearest is the
non-zero vector with the highest score. The mv_near is the non-zero vector with the
next highest score.. . .
In the function vp8_find_near_mvs(), the vectors nearest and near are used
by the corresponding modes.. . .
The first three entries in the return value cnt are (in order) weighted census values for
zero, nearest, and near vectors.. . .
For the first four inter-coding modes, the same motion vector is used for all the Y
subblocks. The first three modes use an implicit motion vector..
(Exhibit 50 at pp. 99, 101, 104-105).
16.4 Split Prediction. . .
. . .
The first two sub-prediction modes simply copy the already-coded motion vectors used
by the blocks above and to the left of the subblock at the upper left corner of the current
subset (i.e.,collection of subblocks being predicted). These prediction blocks need not
lie in the current macroblock and, if the current subset lies at the top or left edges of the
frame, need not lie in the frame. In this latter case, their motion vectors are taken to be
-
7/30/2019 Nokia VP8 Infringement Claim Chart for '211 Patent
34/37
- 34 -
Claims of the 211
Patent
HTC One Mobile Phone
zero, as are subblock motion vectors within an intra-predicted macroblock. Also, to
ensure the correctness of prediction within this macroblock, all subblocks lying in an
already-decoded subset of the current macroblock must have their motion vectors set.
ZERO4x4 uses a zero motion vector and predicts the current subset using thecorresponding subset from the prediction frame.
NEW4x4 is exactly like NEWMV except that NEW4x4 is applied only to the current
subset. It is followed by a two-dimensional motion vector offset (described in the next
section) that is added to the best vector returned by the earlier call to find_near_mvs to
form the motion vector in effect for the subset.
(Exhibit 50 at pp. 105, 106, 108).
(c) program means for
receiving information
indicating at least the
macroblock-segmentation selected for
a macroblock;
The device contains a program means for receiving information indicating at least the
macroblock-segmentation selected for a macroblock.
16.2 Inter-Predicted Macroblocks. . .
After the reference frame selector comes the mode (or motion vector reference) applied
to the macroblock as a whole, coded using the following enumeration and tree. . .
(Exhibit 50 at pp. 98, 99).
16.3 Mode and Motion Vector ContextsThe probability table used to decode the mv_ref, along with three reference motion
vectors used by the selected mode, is calculated via a survey of the already-decoded
motion vectors in (up to) 3 nearby macroblocks.. . .
mvr = (mv_ref) treed_read( d, mv_ref_tree, mv_ref_p);
(Exhibit 50 at pp. 99, 104).
8. Compressed Data Components
At the lowest level, VP8s compressed data is simply a sequence of probabilistically-
encoded bools.. . .
The node probabilities associated to a tree-coded value are stored in an array whose
indices are half the indices of the corresponding tree positions. The length of the
probability array is one less than the size of the alphabet.
-
7/30/2019 Nokia VP8 Infringement Claim Chart for '211 Patent
35/37
- 35 -
Claims of the 211
Patent
HTC One Mobile Phone
Here is C code implementing the foregoing. The advantages of our data structure should
be noted. Aside from the smallness of the structure itself, the tree-directed reading
algorithm is essentially a single line of code.
(Exhibit 50 at pp. 25, 27-28).
16.4 Split PredictionThe remaining mode ( SPLITMV ) causes multiple vectors to be applied to the Y
subblocks. It is immediately followed by a partition specification that determines how
many vectors will be specified and how they will be assigned to the subblocks.
. . .
(Exhibit 50 at p. 105).
(d) program means for
determining the
prediction-method
relating to the
segmentation of the
The device contains a program means for determining the prediction-method relating to
the segmentation of the macroblock with reference to the defined macroblock-
segmentation-prediction-method pairs.
-
7/30/2019 Nokia VP8 Infringement Claim Chart for '211 Patent
36/37
- 36 -
Claims of the 211
Patent
HTC One Mobile Phone
macroblock with
reference to the defined
macroblock-
segmentation-prediction-
method pairs; and
16.2 Inter-Predicted Macroblocks. . .
(Exhibit 50 at p. 99).
16.4. Split PredictionThe remaining mode (SPLITMV) causes multiple vectors to be applied to the Y
subblocks. It is immediately followed by a partition specification that determines how
many vectors will be specified and how they will be assigned to the subblocks. The
possible partitions,
with indicated subdivisions and coding tree, are as follows.. . .
(Exhibit 50 at pp. 105-106).
(e) program means for
producing prediction
motion coefficients
for blocks within said
macroblock using the
determined prediction
method.
The device contains a program means for producing prediction motion coefficients
for blocks within said macroblock using the determined prediction method.
16.3 Mode and Motion Vector Contexts. . .
For the first four inter-coding modes, the same motion vector is used for all the Y
subblocks. The first three modes use an implicit motion vector.
-
7/30/2019 Nokia VP8 Infringement Claim Chart for '211 Patent
37/37
Claims of the 211
Patent
HTC One Mobile Phone
(Exhibit 50 at pp. 104-105).
16.4 Split PredictionThe remaining mode ( SPLITMV ) causes multiple vectors to be applied to the Y
subblocks.. . .
. . .
The first two sub-prediction modes simply copy the already-coded motion vectors used
by the blocks above and to-the-left of the subblock at the upper left corner of the current
subset (i.e., collection of subblocks being predicted).
(Exhibit 50 at pp. 105, 106, 108).