X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;ds=sidebyside;f=libavcodec%2Fresample.c;h=8e666894ac3311b43fae0c7edca2676347525596;hb=20d33ee8b1d2cf5ba4b4d4a81db0ff7b4a125dd3;hp=122b725d39b1c28becbccdc5a8c69193aa5c5675;hpb=6d69a653d8c60c05a2afc540237660fa8db90e71;p=ffmpeg diff --git a/libavcodec/resample.c b/libavcodec/resample.c index 122b725d39b..8e666894ac3 100644 --- a/libavcodec/resample.c +++ b/libavcodec/resample.c @@ -2,31 +2,32 @@ * samplerate conversion for both audio and video * Copyright (c) 2000 Fabrice Bellard * - * 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 libavcodec/resample.c + * @file * samplerate conversion for both audio and video */ #include "avcodec.h" #include "audioconvert.h" -#include "opt.h" +#include "libavutil/opt.h" +#include "libavutil/samplefmt.h" struct AVResampleContext; @@ -36,7 +37,7 @@ static const char *context_to_name(void *ptr) } static const AVOption options[] = {{NULL}}; -static const AVClass audioresample_context_class = { "ReSampleContext", context_to_name, options }; +static const AVClass audioresample_context_class = { "ReSampleContext", context_to_name, options, LIBAVUTIL_VERSION_INT }; struct ReSampleContext { struct AVResampleContext *resample_context; @@ -46,7 +47,7 @@ struct ReSampleContext { /* channel convert */ int input_channels, output_channels, filter_channels; AVAudioConvert *convert_ctx[2]; - enum SampleFormat sample_fmt[2]; ///< input and output sample format + enum AVSampleFormat sample_fmt[2]; ///< input and output sample format unsigned sample_size[2]; ///< size of one sample in sample_fmt short *buffer[2]; ///< buffers used for conversion to S16 unsigned buffer_size[2]; ///< sizes of allocated buffers @@ -143,8 +144,8 @@ static void ac3_5p1_mux(short *output, short *input1, short *input2, int n) ReSampleContext *av_audio_resample_init(int output_channels, int input_channels, int output_rate, int input_rate, - enum SampleFormat sample_fmt_out, - enum SampleFormat sample_fmt_in, + enum AVSampleFormat sample_fmt_out, + enum AVSampleFormat sample_fmt_in, int filter_length, int log2_phase_count, int linear, double cutoff) { @@ -174,26 +175,26 @@ ReSampleContext *av_audio_resample_init(int output_channels, int input_channels, s->sample_fmt [0] = sample_fmt_in; s->sample_fmt [1] = sample_fmt_out; - s->sample_size[0] = av_get_bits_per_sample_format(s->sample_fmt[0])>>3; - s->sample_size[1] = av_get_bits_per_sample_format(s->sample_fmt[1])>>3; + s->sample_size[0] = av_get_bits_per_sample_fmt(s->sample_fmt[0])>>3; + s->sample_size[1] = av_get_bits_per_sample_fmt(s->sample_fmt[1])>>3; - if (s->sample_fmt[0] != SAMPLE_FMT_S16) { - if (!(s->convert_ctx[0] = av_audio_convert_alloc(SAMPLE_FMT_S16, 1, + if (s->sample_fmt[0] != AV_SAMPLE_FMT_S16) { + if (!(s->convert_ctx[0] = av_audio_convert_alloc(AV_SAMPLE_FMT_S16, 1, s->sample_fmt[0], 1, NULL, 0))) { av_log(s, AV_LOG_ERROR, "Cannot convert %s sample format to s16 sample format\n", - avcodec_get_sample_fmt_name(s->sample_fmt[0])); + av_get_sample_fmt_name(s->sample_fmt[0])); av_free(s); return NULL; } } - if (s->sample_fmt[1] != SAMPLE_FMT_S16) { + if (s->sample_fmt[1] != AV_SAMPLE_FMT_S16) { if (!(s->convert_ctx[1] = av_audio_convert_alloc(s->sample_fmt[1], 1, - SAMPLE_FMT_S16, 1, NULL, 0))) { + AV_SAMPLE_FMT_S16, 1, NULL, 0))) { av_log(s, AV_LOG_ERROR, "Cannot convert s16 sample format to %s sample format\n", - avcodec_get_sample_fmt_name(s->sample_fmt[1])); + av_get_sample_fmt_name(s->sample_fmt[1])); av_audio_convert_free(s->convert_ctx[0]); av_free(s); return NULL; @@ -212,18 +213,18 @@ ReSampleContext *av_audio_resample_init(int output_channels, int input_channels, s->resample_context= av_resample_init(output_rate, input_rate, filter_length, log2_phase_count, linear, cutoff); - *(AVClass**)s->resample_context = &audioresample_context_class; + *(const AVClass**)s->resample_context = &audioresample_context_class; return s; } -#if LIBAVCODEC_VERSION_MAJOR < 53 +#if FF_API_AUDIO_OLD ReSampleContext *audio_resample_init(int output_channels, int input_channels, int output_rate, int input_rate) { return av_audio_resample_init(output_channels, input_channels, output_rate, input_rate, - SAMPLE_FMT_S16, SAMPLE_FMT_S16, + AV_SAMPLE_FMT_S16, AV_SAMPLE_FMT_S16, TAPS, 10, 0, 0.8); } #endif @@ -245,7 +246,7 @@ int audio_resample(ReSampleContext *s, short *output, short *input, int nb_sampl return nb_samples; } - if (s->sample_fmt[0] != SAMPLE_FMT_S16) { + if (s->sample_fmt[0] != AV_SAMPLE_FMT_S16) { int istride[1] = { s->sample_size[0] }; int ostride[1] = { 2 }; const void *ibuf[1] = { input }; @@ -257,7 +258,7 @@ int audio_resample(ReSampleContext *s, short *output, short *input, int nb_sampl s->buffer_size[0] = input_size; s->buffer[0] = av_malloc(s->buffer_size[0]); if (!s->buffer[0]) { - av_log(s, AV_LOG_ERROR, "Could not allocate buffer\n"); + av_log(s->resample_context, AV_LOG_ERROR, "Could not allocate buffer\n"); return 0; } } @@ -266,7 +267,7 @@ int audio_resample(ReSampleContext *s, short *output, short *input, int nb_sampl if (av_audio_convert(s->convert_ctx[0], obuf, ostride, ibuf, istride, nb_samples*s->input_channels) < 0) { - av_log(s, AV_LOG_ERROR, "Audio sample format conversion failed\n"); + av_log(s->resample_context, AV_LOG_ERROR, "Audio sample format conversion failed\n"); return 0; } @@ -275,7 +276,7 @@ int audio_resample(ReSampleContext *s, short *output, short *input, int nb_sampl lenout= 4*nb_samples * s->ratio + 16; - if (s->sample_fmt[1] != SAMPLE_FMT_S16) { + if (s->sample_fmt[1] != AV_SAMPLE_FMT_S16) { output_bak = output; if (!s->buffer_size[1] || s->buffer_size[1] < lenout) { @@ -283,7 +284,7 @@ int audio_resample(ReSampleContext *s, short *output, short *input, int nb_sampl s->buffer_size[1] = lenout; s->buffer[1] = av_malloc(s->buffer_size[1]); if (!s->buffer[1]) { - av_log(s, AV_LOG_ERROR, "Could not allocate buffer\n"); + av_log(s->resample_context, AV_LOG_ERROR, "Could not allocate buffer\n"); return 0; } } @@ -340,7 +341,7 @@ int audio_resample(ReSampleContext *s, short *output, short *input, int nb_sampl ac3_5p1_mux(output, buftmp3[0], buftmp3[1], nb_samples1); } - if (s->sample_fmt[1] != SAMPLE_FMT_S16) { + if (s->sample_fmt[1] != AV_SAMPLE_FMT_S16) { int istride[1] = { 2 }; int ostride[1] = { s->sample_size[1] }; const void *ibuf[1] = { output }; @@ -348,7 +349,7 @@ int audio_resample(ReSampleContext *s, short *output, short *input, int nb_sampl if (av_audio_convert(s->convert_ctx[1], obuf, ostride, ibuf, istride, nb_samples1*s->output_channels) < 0) { - av_log(s, AV_LOG_ERROR, "Audio sample format convertion failed\n"); + av_log(s->resample_context, AV_LOG_ERROR, "Audio sample format convertion failed\n"); return 0; } }