diff options
author | Nicolas George <nicolas.george@normalesup.org> | 2012-02-15 19:41:41 +0100 |
---|---|---|
committer | Nicolas George <nicolas.george@normalesup.org> | 2012-02-15 20:04:05 +0100 |
commit | bd5080b1b00032c656c6e5893755a92cb0221a2d (patch) | |
tree | b364d2b56f7f3f09f29c1edfc2c576f3dbba5a87 | |
parent | cba4e2cbbcb8abb45fff1e0255934bb577ab799f (diff) | |
download | ffmpeg-bd5080b1b00032c656c6e5893755a92cb0221a2d.tar.gz |
af_pan: comment a tricky piece of code.
-rw-r--r-- | libavfilter/af_pan.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/libavfilter/af_pan.c b/libavfilter/af_pan.c index 9f293a61eb..119111d68c 100644 --- a/libavfilter/af_pan.c +++ b/libavfilter/af_pan.c @@ -64,14 +64,17 @@ static int parse_channel_name(char **arg, int *rchannel, int *rnamed) int len, i, channel_id = 0; int64_t layout, layout0; + /* try to parse a channel name, e.g. "FL" */ if (sscanf(*arg, " %7[A-Z] %n", buf, &len)) { layout0 = layout = av_get_channel_layout(buf); + /* channel_id <- first set bit in layout */ for (i = 32; i > 0; i >>= 1) { if (layout >= (int64_t)1 << i) { channel_id += i; layout >>= i; } } + /* reject layouts that are not a single channel */ if (channel_id >= MAX_CHANNELS || layout0 != (int64_t)1 << channel_id) return AVERROR(EINVAL); *rchannel = channel_id; @@ -79,6 +82,7 @@ static int parse_channel_name(char **arg, int *rchannel, int *rnamed) *arg += len; return 0; } + /* try to parse a channel number, e.g. "c2" */ if (sscanf(*arg, " c%d %n", &channel_id, &len) && channel_id >= 0 && channel_id < MAX_CHANNELS) { *rchannel = channel_id; |