On 4/27/2016 2:21 PM, foo86 wrote: > Also add actual speaker pair definitions. > --- > libavcodec/dca.h | 28 ++++++++++++++++++++++++++++ > libavcodec/dca_exss.c | 9 ++------- > 2 files changed, 30 insertions(+), 7 deletions(-) > > diff --git a/libavcodec/dca.h b/libavcodec/dca.h > index ccb02af..1b90d40 100644 > --- a/libavcodec/dca.h > +++ b/libavcodec/dca.h > @@ -28,6 +28,7 @@ > > #include <stdint.h> > > +#include "libavutil/common.h" > #include "libavutil/internal.h" > #include "libavutil/intreadwrite.h" > > @@ -90,6 +91,33 @@ enum DCASpeakerMask { > #define DCA_HAS_STEREO(mask) \ > ((mask & DCA_SPEAKER_LAYOUT_STEREO) == DCA_SPEAKER_LAYOUT_STEREO) > > +enum DCASpeakerPair { > + DCA_SPEAKER_PAIR_C = 0x0001, > + DCA_SPEAKER_PAIR_LR = 0x0002, > + DCA_SPEAKER_PAIR_LsRs = 0x0004, > + DCA_SPEAKER_PAIR_LFE1 = 0x0008, > + DCA_SPEAKER_PAIR_Cs = 0x0010, > + DCA_SPEAKER_PAIR_LhRh = 0x0020, > + DCA_SPEAKER_PAIR_LsrRsr = 0x0040, > + DCA_SPEAKER_PAIR_Ch = 0x0080, > + DCA_SPEAKER_PAIR_Oh = 0x0100, > + DCA_SPEAKER_PAIR_LcRc = 0x0200, > + DCA_SPEAKER_PAIR_LwRw = 0x0400, > + DCA_SPEAKER_PAIR_LssRss = 0x0800, > + DCA_SPEAKER_PAIR_LFE2 = 0x1000, > + DCA_SPEAKER_PAIR_LhsRhs = 0x2000, > + DCA_SPEAKER_PAIR_Chr = 0x4000, > + DCA_SPEAKER_PAIR_LhrRhr = 0x8000 > +}; > + > +/** > + * Return number of individual channels in DCASpeakerPair mask > + */ > +static inline int avpriv_dca_count_chs_for_mask(unsigned int mask)
This is an inline function in a header, so no need for an avpriv_ prefix. Use ff_ instead, but technically not even that is needed. You can safely use dca_count_chs_for_mask() or similar. > +{ > + return av_popcount((mask & 0xffff) | ((mask & 0xae66) << 16)); > +} > + > enum DCARepresentationType { > DCA_REPR_TYPE_LtRt = 2, > DCA_REPR_TYPE_LhRh = 3 > diff --git a/libavcodec/dca_exss.c b/libavcodec/dca_exss.c > index 4579f23..d59d0dd 100644 > --- a/libavcodec/dca_exss.c > +++ b/libavcodec/dca_exss.c > @@ -21,11 +21,6 @@ > #include "dcadec.h" > #include "dcadata.h" > > -static int count_chs_for_mask(int mask) > -{ > - return av_popcount(mask) + av_popcount(mask & 0xae66); > -} > - > static void parse_xll_parameters(DCAExssParser *s, DCAExssAsset *asset) > { > // Size of XLL data in extension substream > @@ -141,7 +136,7 @@ static int parse_descriptor(DCAExssParser *s, > DCAExssAsset *asset) > > // Standard loudspeaker layout mask > for (i = 0; i < spkr_remap_nsets; i++) > - nspeakers[i] = count_chs_for_mask(get_bits(&s->gb, > spkr_mask_nbits)); > + nspeakers[i] = > avpriv_dca_count_chs_for_mask(get_bits(&s->gb, spkr_mask_nbits)); > > for (i = 0; i < spkr_remap_nsets; i++) { > // Number of channels to be decoded for speaker remapping > @@ -470,7 +465,7 @@ int ff_dca_exss_parse(DCAExssParser *s, uint8_t *data, > int size) > > // Speaker layout mask for mixer output channels > for (i = 0; i < s->nmixoutconfigs; i++) > - s->nmixoutchs[i] = count_chs_for_mask(get_bits(&s->gb, > spkr_mask_nbits)); > + s->nmixoutchs[i] = > avpriv_dca_count_chs_for_mask(get_bits(&s->gb, spkr_mask_nbits)); > } > } else { > s->npresents = 1; > _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel