Rewrite reference frame costing in the RD loop.
I now see I didn't write a very long description, so let's do it here then. We took a pretty big quality hit (0.1-0.2%) from my recent fix of the inversion of arguments to vp8_cost_bit() in the RD reference frame costing. I looked into it and basically the costing prevented us from switching reference frames. This is of course silly, since each frame codes its own prob_intra_coded, so using last frame cost indications as a limiting factor can never be right. Here, I've rewritten that code to estimate costings based partially on statistics from progress on current frame encoding. Overall, this gives us a ~0.2%-0.3% improvement over what we had previously before my argument-inversion-fix, and thus about ~0.4% over current git (on derf-set), and a little more (0.5-1.0%) on HD/STD-HD/YT. Change-Id: I79ebd4ccec4d6edbf0e152d9590d103ba2747775
Showing
- vp8/common/pred_common.c 3 additions, 3 deletionsvp8/common/pred_common.c
- vp8/encoder/bitstream.c 10 additions, 50 deletionsvp8/encoder/bitstream.c
- vp8/encoder/encodeframe.c 39 additions, 0 deletionsvp8/encoder/encodeframe.c
- vp8/encoder/mbgraph.c 1 addition, 0 deletionsvp8/encoder/mbgraph.c
- vp8/encoder/onyx_int.h 2 additions, 0 deletionsvp8/encoder/onyx_int.h
- vp8/encoder/rdopt.c 123 additions, 24 deletionsvp8/encoder/rdopt.c
Loading
Please register or sign in to comment