153a5a1b3Sopenharmony_ci/* 253a5a1b3Sopenharmony_ci * copyright (c) 2001 Fabrice Bellard 353a5a1b3Sopenharmony_ci * 453a5a1b3Sopenharmony_ci * This file is part of FFmpeg. 553a5a1b3Sopenharmony_ci * 653a5a1b3Sopenharmony_ci * FFmpeg is free software; you can redistribute it and/or 753a5a1b3Sopenharmony_ci * modify it under the terms of the GNU Lesser General Public 853a5a1b3Sopenharmony_ci * License as published by the Free Software Foundation; either 953a5a1b3Sopenharmony_ci * version 2.1 of the License, or (at your option) any later version. 1053a5a1b3Sopenharmony_ci * 1153a5a1b3Sopenharmony_ci * FFmpeg is distributed in the hope that it will be useful, 1253a5a1b3Sopenharmony_ci * but WITHOUT ANY WARRANTY; without even the implied warranty of 1353a5a1b3Sopenharmony_ci * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1453a5a1b3Sopenharmony_ci * Lesser General Public License for more details. 1553a5a1b3Sopenharmony_ci * 1653a5a1b3Sopenharmony_ci * You should have received a copy of the GNU Lesser General Public 1753a5a1b3Sopenharmony_ci * License along with FFmpeg; if not, see <http://www.gnu.org/licenses/>. 1853a5a1b3Sopenharmony_ci */ 1953a5a1b3Sopenharmony_ci 2053a5a1b3Sopenharmony_ci#ifndef AVCODEC_H 2153a5a1b3Sopenharmony_ci#define AVCODEC_H 2253a5a1b3Sopenharmony_ci 2353a5a1b3Sopenharmony_ci/* Just a heavily bastardized version of the original file from 2453a5a1b3Sopenharmony_ci * ffmpeg, just enough to get resample2.c to compile without 2553a5a1b3Sopenharmony_ci * modification -- Lennart */ 2653a5a1b3Sopenharmony_ci 2753a5a1b3Sopenharmony_ci#if !defined(PACKAGE) && defined(HAVE_CONFIG_H) 2853a5a1b3Sopenharmony_ci#include <config.h> 2953a5a1b3Sopenharmony_ci#endif 3053a5a1b3Sopenharmony_ci 3153a5a1b3Sopenharmony_ci#include <sys/types.h> 3253a5a1b3Sopenharmony_ci#include <inttypes.h> 3353a5a1b3Sopenharmony_ci#include <math.h> 3453a5a1b3Sopenharmony_ci#include <string.h> 3553a5a1b3Sopenharmony_ci#include <stdlib.h> 3653a5a1b3Sopenharmony_ci#include <assert.h> 3753a5a1b3Sopenharmony_ci 3853a5a1b3Sopenharmony_ci#define av_mallocz(l) calloc(1, (l)) 3953a5a1b3Sopenharmony_ci#define av_malloc(l) malloc(l) 4053a5a1b3Sopenharmony_ci#define av_realloc(p,l) realloc((p),(l)) 4153a5a1b3Sopenharmony_ci#define av_free(p) free(p) 4253a5a1b3Sopenharmony_ci 4353a5a1b3Sopenharmony_cistatic inline void av_freep(void *k) { 4453a5a1b3Sopenharmony_ci void **p = k; 4553a5a1b3Sopenharmony_ci 4653a5a1b3Sopenharmony_ci if (p) { 4753a5a1b3Sopenharmony_ci free(*p); 4853a5a1b3Sopenharmony_ci *p = NULL; 4953a5a1b3Sopenharmony_ci } 5053a5a1b3Sopenharmony_ci} 5153a5a1b3Sopenharmony_ci 5253a5a1b3Sopenharmony_cistatic inline int av_clip(int a, int amin, int amax) 5353a5a1b3Sopenharmony_ci{ 5453a5a1b3Sopenharmony_ci if (a < amin) return amin; 5553a5a1b3Sopenharmony_ci else if (a > amax) return amax; 5653a5a1b3Sopenharmony_ci else return a; 5753a5a1b3Sopenharmony_ci} 5853a5a1b3Sopenharmony_ci 5953a5a1b3Sopenharmony_ci#define av_log(a,b,c) 6053a5a1b3Sopenharmony_ci 6153a5a1b3Sopenharmony_ci#define FFABS(a) ((a) >= 0 ? (a) : (-(a))) 6253a5a1b3Sopenharmony_ci#define FFSIGN(a) ((a) > 0 ? 1 : -1) 6353a5a1b3Sopenharmony_ci 6453a5a1b3Sopenharmony_ci#define FFMAX(a,b) ((a) > (b) ? (a) : (b)) 6553a5a1b3Sopenharmony_ci#define FFMIN(a,b) ((a) > (b) ? (b) : (a)) 6653a5a1b3Sopenharmony_ci 6753a5a1b3Sopenharmony_cistruct AVResampleContext; 6853a5a1b3Sopenharmony_cistruct AVResampleContext *av_resample_init(int out_rate, int in_rate, int filter_length, int log2_phase_count, int linear, double cutoff); 6953a5a1b3Sopenharmony_ciint av_resample(struct AVResampleContext *c, short *dst, short *src, int *consumed, int src_size, int dst_size, int update_ctx); 7053a5a1b3Sopenharmony_civoid av_resample_compensate(struct AVResampleContext *c, int sample_delta, int compensation_distance); 7153a5a1b3Sopenharmony_civoid av_resample_close(struct AVResampleContext *c); 7253a5a1b3Sopenharmony_civoid av_build_filter(int16_t *filter, double factor, int tap_count, int phase_count, int scale, int type); 7353a5a1b3Sopenharmony_ci 7453a5a1b3Sopenharmony_ci/* 7553a5a1b3Sopenharmony_ci * crude lrintf for non-C99 systems. 7653a5a1b3Sopenharmony_ci */ 7753a5a1b3Sopenharmony_ci#ifndef HAVE_LRINTF 7853a5a1b3Sopenharmony_ci#define lrintf(x) ((long int)(x)) 7953a5a1b3Sopenharmony_ci#endif 8053a5a1b3Sopenharmony_ci 8153a5a1b3Sopenharmony_ci#endif /* AVCODEC_H */ 82