X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Fmpc.h;h=cdf49c1a4e373710339beacc9644e81d1ac4a42e;hb=1f80742f49a9a4e846c9f099387881abc87150b2;hp=d9aa22af4130280729cdf3efa8d0e51aa114daca;hpb=b250f9c66d3ddd84652d158fb979a5f21e3f2c71;p=ffmpeg diff --git a/libavcodec/mpc.h b/libavcodec/mpc.h index d9aa22af413..cdf49c1a4e3 100644 --- a/libavcodec/mpc.h +++ b/libavcodec/mpc.h @@ -2,25 +2,26 @@ * Musepack decoder * Copyright (c) 2006 Konstantin Shishkov * - * This file is part of FFmpeg. + * This file is part of Libav. * - * FFmpeg is free software; you can redistribute it and/or + * Libav is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * - * FFmpeg is distributed in the hope that it will be useful, + * Libav is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software + * License along with Libav; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /** - * @file mpc.h Musepack decoder + * @file + * Musepack decoder * MPEG Audio Layer 1/2 -like codec with frames of 1152 samples * divided into 32 subbands. */ @@ -28,24 +29,19 @@ #ifndef AVCODEC_MPC_H #define AVCODEC_MPC_H -#include "libavutil/random.h" +#include "libavutil/lfg.h" #include "avcodec.h" -#include "bitstream.h" -#include "dsputil.h" - -#if CONFIG_MPEGAUDIO_HP -#define USE_HIGHPRECISION -#endif +#include "bswapdsp.h" +#include "get_bits.h" #include "mpegaudio.h" - -#include "mpcdata.h" +#include "mpegaudiodsp.h" #define BANDS 32 #define SAMPLES_PER_BAND 36 #define MPC_FRAME_SIZE (BANDS * SAMPLES_PER_BAND) /** Subband structure - hold all variables for each subband */ -typedef struct { +typedef struct Band { int msf; ///< mid-stereo flag int res[2]; int scfi[2]; @@ -53,8 +49,9 @@ typedef struct { int Q[2]; }Band; -typedef struct { - DSPContext dsp; +typedef struct MPCContext { + BswapDSPContext bdsp; + MPADSPContext mpadsp; GetBitContext gb; int IS, MSS, gapless; int lastframelen; @@ -66,15 +63,15 @@ typedef struct { int cur_frame, frames; uint8_t *bits; int buf_size; - AVRandomState rnd; + AVLFG rnd; int frames_to_skip; /* for synthesis */ - DECLARE_ALIGNED_16(MPA_INT, synth_buf[MPA_MAX_CHANNELS][512*2]); + DECLARE_ALIGNED(16, MPA_INT, synth_buf)[MPA_MAX_CHANNELS][512*2]; int synth_buf_offset[MPA_MAX_CHANNELS]; - DECLARE_ALIGNED_16(int32_t, sb_samples[MPA_MAX_CHANNELS][36][SBLIMIT]); + DECLARE_ALIGNED(16, int32_t, sb_samples)[MPA_MAX_CHANNELS][36][SBLIMIT]; } MPCContext; -void ff_mpc_init(); -void ff_mpc_dequantize_and_synth(MPCContext *c, int maxband, void *dst); +void ff_mpc_init(void); +void ff_mpc_dequantize_and_synth(MPCContext *c, int maxband, int16_t **out, int channels); #endif /* AVCODEC_MPC_H */