lavfi/ebur128: advance pointer to samples

Correct the advancement of a pointer to skip over LFE samples as
intended in the loudness computation.

This suggested patch is 3 of 3 for Ticket #2144 "libavfilter ebur128
loudness inaccuracy, irregular time interval, LFE interference".
This suggested patch supersedes the contribution of January 15, 2013
in the thread “[PATCH] lavfi: EBU R.128 irreg time, ch weights, skip
LFE” which combined multiple fixes in one batch.
This commit is contained in:
sedacca@comcast.net 2013-01-18 05:14:01 +00:00 committed by Clément Bœsch
parent de21e6736e
commit b64de24fd7

View File

@ -478,6 +478,8 @@ static int filter_frame(AVFilterLink *inlink, AVFilterBufferRef *insamples)
for (ch = 0; ch < nb_channels; ch++) { for (ch = 0; ch < nb_channels; ch++) {
double bin; double bin;
ebur128->x[ch * 3] = *samples++; // set X[i]
if (!ebur128->ch_weighting[ch]) if (!ebur128->ch_weighting[ch])
continue; continue;
@ -491,8 +493,6 @@ static int filter_frame(AVFilterLink *inlink, AVFilterBufferRef *insamples)
- dst[1]*name##_A1 - dst[2]*name##_A2; \ - dst[1]*name##_A1 - dst[2]*name##_A2; \
} while (0) } while (0)
ebur128->x[ch * 3] = *samples++; // set X[i]
// TODO: merge both filters in one? // TODO: merge both filters in one?
FILTER(y, x, PRE); // apply pre-filter FILTER(y, x, PRE); // apply pre-filter
ebur128->x[ch * 3 + 2] = ebur128->x[ch * 3 + 1]; ebur128->x[ch * 3 + 2] = ebur128->x[ch * 3 + 1];