Skip to content
Snippets Groups Projects

Fix weighting for B-frames

Merged Anton Mitrofanov requested to merge BugMaster/x264:fix_bipred_weight into master

According to clause 8.4.3 of the H.264 specification:

  1. The variables w0C and w1C are derived as follows:
  • If DiffPicOrderCnt( pic1, pic0 ) is equal to 0 or one or both of pic1 and pic0 is marked as "used for long-term reference" or ( DistScaleFactor >> 2 ) < -64 or ( DistScaleFactor >> 2 ) > 128, w0C and w1C are derived as:

          w0C = 32                                (8-280)
          w1C = 32                                (8-281)

But we for the case of DiffPicOrderCnt( pic1, pic0 ) is equal to 0 used DistScaleFactor equal to 256 and next formulas:

  • Otherwise, the variables tb, td, tx, and DistScaleFactor are derived from the values of currPicOrField, pic0, and pic1 using Equations 8-201, 8-202, 8-197, and 8-198, respectively, and the weights w0C and w1C are derived as

          w0C = 64 - (DistScaleFactor >> 2)       (8-282)
          w1C = DistScaleFactor >> 2              (8-283)

As a result, we got the values w0C = 0 and w1C = 64 instead of 32 for both.

This bug never occurs with the current reference management logic.

Bug report by Lingjiang Fang.

Merge request reports

Loading
Loading

Activity

Filter activity
  • Approvals
  • Assignees & reviewers
  • Comments (from bots)
  • Comments (from users)
  • Commits & branches
  • Edits
  • Labels
  • Lock status
  • Mentions
  • Merge request status
  • Tracking
  • Loading
  • Loading
  • Loading
Please register or sign in to reply
Loading