Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[WIP. DON'T MERGE] Search all intra modes in lookahead #1650

Draft
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

YaLTeR
Copy link
Collaborator

@YaLTeR YaLTeR commented Sep 11, 2019

Instead of just DC, try all of them and use the minimal intra-cost.

AWCY on --speed 2 shows good PSNR improvement.

Since this seems to significantly shift the importance, the segment ID heuristic needs to be updated. This is what I got so far: AWCY on default speed with the updated heuristic, however, as can be seen by the AWCY on default speed of the updated heuristic vs. segment ID RDO it can be considerably improved. I guess I'll try to do this throughout my remaining time.

cc #1643

@coveralls
Copy link
Collaborator

coveralls commented Sep 11, 2019

Coverage Status

Coverage increased (+0.02%) to 71.119% when pulling fe648e4 on YaLTeR:all-intra-modes-importance into 45585ee on xiph:master.

src/api/mod.rs Outdated
let intra_cost = intra_mode_set
.iter()
.map(|&luma_mode| {
let mut plane_after_prediction_region = plane_after_prediction
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The tile and the region seem to stay the same, is there a reason why they are in the iteration instead of out?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Borrowck reasons. I need both mutable and immutable access in this closure, and if there's a mutable borrow outside of the closure I can't get the immutable one inside.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The underlying issue is that get_satd accepts PlaneRegion and PlaneRegionMut is not a PlaneRegion.

src/api/mod.rs Outdated
height: IMPORTANCE_BLOCK_SIZE,
});

get_satd(
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Our intra pruning during RDO actually uses get_sad, not get_satd. I think satd is actually better, but maybe that could be a cause of the PSNR vs PSNR-HVS difference?

@tdaede
Copy link
Collaborator

tdaede commented Sep 26, 2019

Can you try rerunning this on master, which now uses satd for intra pruning?

@ycho
Copy link
Collaborator

ycho commented Sep 27, 2019

Instead of just DC, try all of them and use the minimal intra-cost.

AWCY on --speed 2 shows good PSNR improvement.

Since its impact on enc time is very small but giving significant gain > 2%, we can consider enabling this PR at speed 2 (or <= 2)?

@YaLTeR YaLTeR force-pushed the all-intra-modes-importance branch from 1da81b1 to fe648e4 Compare October 4, 2019 08:50
@YaLTeR
Copy link
Collaborator Author

YaLTeR commented Oct 4, 2019

@ycho ycho added the WorkInProgress Incomplete patchset label Oct 22, 2019
@ycho ycho changed the title Search all intra modes in lookahead [WIP. DON'T MERGE] Search all intra modes in lookahead Oct 22, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
WorkInProgress Incomplete patchset
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants