[FFmpeg-devel] Channel mapping integration in af pan
Clément Bœsch
ubitux at gmail.com
Wed Jan 18 14:17:03 CET 2012
On Wed, Jan 18, 2012 at 01:58:12PM +0100, Nicolas George wrote:
> Le nonidi 29 nivôse, an CCXX, Clément Bœsch a écrit :
> > After the first attempt to have a channel mapping filter [1], Nicolas proposed
> > to integrate it in af pan filter instead. So here here is a patch set for that
> > purpose.
>
> Thanks.
>
> > Note: I noticed the union gain (double/int) doesn't work as expected when we
> > try "if (pan->gain.i[x][y])" with small coefficients.
>
> I am not sure what you mean here. Is it that coefficients smaller than 1/256
> are effectively rounded to 0, and therefore considered as such? If so, this
> is the expected behaviour: by working with integers, we trade accuracy for
> speed.
>
@@ -222,6 +262,19 @@ static int config_props(AVFilterLink *link)
}
}
}
+ // gains are pures, init the channel mapping array
+ if (pan->pure_gains) {
+ for (i = 0; i < pan->nb_output_channels; i++) {
+ int ch_id = -1;
+ for (j = 0; j < pan->nb_input_channels; j++) {
+ if (pan->gain.d[i][j]) {
If I replace this with "if (pan->gain.i[i][j]) {", it doesn't work as expected:
since the int are 32 bits and the gains are stored in double (64),
pan->gain.i[0][3] will evaluate the first gain (low 32 bits of the second
double) instead of the 3rd. That's how I understand the issue.
+ ch_id = j;
+ break;
+ }
+ }
+ pan->ch[i] = ch_id;
+ }
+ } else {
// renormalize
for (i = 0; i < pan->nb_output_channels; i++) {
if (!((pan->need_renorm >> i) & 1))
[...]
>
> > Also, a more problematic issue is that this example (taken from the doc):
> >
> > pan=stereo: FL < FL + 0.5*FC + 0.6*BL + 0.6*SL : FR < FR + 0.5*FC + 0.6*BR + 0.6*SR
> >
> > doesn't actually work ('Expected out channel name, got " FL < FL"'). I didn't
> > look closer though.
>
> Probably a place where I forgot to skip spaces. Does it work if you remove
> the space in front of FL?
>
Playing with the spacing doesn't seem to help.
> > BTW, I think quotes should be added in this example.
>
> I am not sure: quotes are for the shell, they are necessary when describing
> complete command lines, but for isolated examples this is less obvious.
>
Yes we may postpone this debate.
[...]
--
Clément B.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 490 bytes
Desc: not available
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20120118/42ed5f89/attachment.asc>
More information about the ffmpeg-devel
mailing list