Nokia VP8 Infringement Claim Chart for '211 Patent

Embed Size (px)

Citation preview

  • 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).