-
Notifications
You must be signed in to change notification settings - Fork 259
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] encoder: allow 1 CDEF bits for key frames #1788
base: master
Are you sure you want to change the base?
Conversation
The loop in rdo_loop_decision iterates until both cdef or lrf have stopped changing. Are you sure cdef isn't changing as well? |
Limit cycles should be impossible (it won't pick something new unless cost
goes down), so the bug is in that decision. I'll look now.
Monty
…On Mon, Oct 21, 2019 at 12:57 PM Kyle Siefring ***@***.***> wrote:
The loop in rdo_loop_decision checks if both cdef or lrf has changed. Are
you sure cdef isn't changing as well?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#1788?email_source=notifications&email_token=ACWMHEH5EP7KUQWG6PZAVCDQPXNO5A5CNFSM4JC7CVAKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEB3BBBQ#issuecomment-544608390>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/ACWMHEAS62YHEKVZGFUHPZLQPXNO5ANCNFSM4JC7CVAA>
.
|
No, |
OK, I see what's happening. The logic behind my 'cost always goes down' invariant is incorrect. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
r+
The bug being caused in loop rdo is unrelated and I will fix it separately-- this change is simply triggering it.
Yeah that's what I gathered, unfortunately I can't run AWCY for this PR until that bug gets fixed (speaking of which, should I open a proper issue?) |
_ Okay, I haven't seen this. |
src/encoder.rs
Outdated
@@ -855,6 +855,9 @@ impl<T: Pixel> FrameInvariants<T> { | |||
} | |||
|
|||
pub fn set_quantizers(&mut self, qps: &QuantizerParameters) { | |||
if self.frame_type == FrameType::KEY { | |||
self.cdef_bits = 1; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
So, don't need more bits even for smaller QPs?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@ycho as this is a work in progress, I'm planning on refining further once I can get some AWCY runs working (see above), this is just to get a baseline idea first.
PR #1800 fixes your test case. |
f1913ff
to
1dce0c3
Compare
Confirmed! |
@tmatth is this ready to land? |
No still a WIP. |
Why? Still weird?! |
This exposes a weird issue, where
rdo_loop_decision
gets stuck in an infinite loop where it's alternating between two loop restoration filters:@xiphmont any ideas?
To reproduce (with this branch):