From d32b71d52e9a45c141d2bd132189db68613ab0fb Mon Sep 17 00:00:00 2001 From: wm4 Date: Fri, 8 May 2015 19:31:54 +0200 Subject: audio: add chmap utility function --- audio/chmap.c | 9 +++++++++ audio/chmap.h | 1 + 2 files changed, 10 insertions(+) diff --git a/audio/chmap.c b/audio/chmap.c index 269f23ee4d..b48a42325f 100644 --- a/audio/chmap.c +++ b/audio/chmap.c @@ -395,6 +395,7 @@ void mp_chmap_get_reorder(int src[MP_NUM_CHANNELS], const struct mp_chmap *from, assert(src[n] < 0 || (to->speaker[n] == from->speaker[src[n]])); } +// Return channels that are only in a. // Performs the difference between a and b, and store it in diff. If b has // channels that do not appear in a, those will not appear in the difference. // To get to those the argument ordering in the function call has to be @@ -408,6 +409,14 @@ void mp_chmap_diff(const struct mp_chmap *a, const struct mp_chmap *b, mp_chmap_from_lavc(diff, (a_mask ^ b_mask) & a_mask); } +// Return the number of channels only in a. +int mp_chmap_diffn(const struct mp_chmap *a, const struct mp_chmap *b) +{ + struct mp_chmap diff; + mp_chmap_diff(a, b, &diff); + return diff.num; +} + // Checks whether a contains all the speakers in b bool mp_chmap_contains(const struct mp_chmap *a, const struct mp_chmap *b) { diff --git a/audio/chmap.h b/audio/chmap.h index d4cdc3ea85..fb3c118bf2 100644 --- a/audio/chmap.h +++ b/audio/chmap.h @@ -125,6 +125,7 @@ void mp_chmap_get_reorder(int src[MP_NUM_CHANNELS], const struct mp_chmap *from, void mp_chmap_diff(const struct mp_chmap *a, const struct mp_chmap *b, struct mp_chmap *diff); +int mp_chmap_diffn(const struct mp_chmap *a, const struct mp_chmap *b); bool mp_chmap_contains(const struct mp_chmap *a, const struct mp_chmap *b); -- cgit v1.2.3