History

avfilter/vf_ssim: Fix x86 assembly code for SSIM calculation

This commit fixes bug #10495 The code had several bugs related to post-loop compensation code: - test assembly instruction performs bitwise AND operation and generate flags used by jz branch instruction. Wrong test condition leads to incorrect branching - Incorrect compensation code for some branches

Evgeny Pavlov committed 3 years ago

Commit cb1479f1 parent f0b1cab1 file · +11 −14Browse files

Showing the changes to libavfilter (1 of 1 file). Show all

Unified · Split

libavfilter/x86/vf_ssim.asm+11−14
@@ -228,25 +228,22 @@ cglobal ssim_end_line, 3, 3, 7, sum0, sum1, w · 227 unmodified lines
228228
229229 ; subpd the ones we added too much
230230 test wd, wd
231− jz .end
231+ jz .end
232232 add wd, 4
233− test wd, 3
234− jz .skip3
235− test wd, 2
236− jz .skip2
237− test wd, 1
238− jz .skip1
239−.skip3:
233+ cmp wd, 1
234+ jz .skip3
235+ cmp wd, 2
236+ jz .skip2
237+.skip1: ; 3 valid => skip 1 invalid
240238 psrldq m5, 8
241239 subpd m6, m5
242− jmp .end
243−.skip2:
244− psrldq m5, 8
240+ jmp .end
241+.skip2: ; 2 valid => skip 2 invalid
245242 subpd m6, m5
243+ jmp .end
244+.skip3: ; 1 valid => skip 3 invalid
245+ psrldq m3, 8
246246 subpd m0, m3
247− jmp .end
248−.skip1:
249− psrldq m3, 16
250247 subpd m6, m5
251248
252249 .end:

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t