00001 /* 00002 * ADX ADPCM codecs 00003 * Copyright (c) 2001,2003 BERO 00004 * 00005 * This file is part of FFmpeg. 00006 * 00007 * FFmpeg is free software; you can redistribute it and/or 00008 * modify it under the terms of the GNU Lesser General Public 00009 * License as published by the Free Software Foundation; either 00010 * version 2.1 of the License, or (at your option) any later version. 00011 * 00012 * FFmpeg is distributed in the hope that it will be useful, 00013 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00015 * Lesser General Public License for more details. 00016 * 00017 * You should have received a copy of the GNU Lesser General Public 00018 * License along with FFmpeg; if not, write to the Free Software 00019 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 00020 */ 00021 00031 #ifndef AVCODEC_ADX_H 00032 #define AVCODEC_ADX_H 00033 00034 #include <stdint.h> 00035 00036 #include "avcodec.h" 00037 00038 typedef struct { 00039 int s1,s2; 00040 } ADXChannelState; 00041 00042 typedef struct { 00043 AVFrame frame; 00044 int channels; 00045 ADXChannelState prev[2]; 00046 int header_parsed; 00047 int eof; 00048 int cutoff; 00049 int coeff[2]; 00050 } ADXContext; 00051 00052 #define COEFF_BITS 12 00053 00054 #define BLOCK_SIZE 18 00055 #define BLOCK_SAMPLES 32 00056 00065 void ff_adx_calculate_coeffs(int cutoff, int sample_rate, int bits, int *coeff); 00066 00078 int avpriv_adx_decode_header(AVCodecContext *avctx, const uint8_t *buf, 00079 int bufsize, int *header_size, int *coeff); 00080 00081 #endif /* AVCODEC_ADX_H */