1/* 2 * Copyright (c) Stefano Sabatini | stefasab at gmail.com 3 * Copyright (c) S.N. Hemanth Meenakshisundaram | smeenaks at ucsd.edu 4 * 5 * This file is part of FFmpeg. 6 * 7 * FFmpeg is free software; you can redistribute it and/or 8 * modify it under the terms of the GNU Lesser General Public 9 * License as published by the Free Software Foundation; either 10 * version 2.1 of the License, or (at your option) any later version. 11 * 12 * FFmpeg is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 * Lesser General Public License for more details. 16 * 17 * You should have received a copy of the GNU Lesser General Public 18 * License along with FFmpeg; if not, write to the Free Software 19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 20 */ 21 22#ifndef AVFILTER_AUDIO_H 23#define AVFILTER_AUDIO_H 24 25#include "avfilter.h" 26#include "internal.h" 27 28static const enum AVSampleFormat ff_packed_sample_fmts_array[] = { 29 AV_SAMPLE_FMT_U8, 30 AV_SAMPLE_FMT_S16, 31 AV_SAMPLE_FMT_S32, 32 AV_SAMPLE_FMT_FLT, 33 AV_SAMPLE_FMT_DBL, 34 AV_SAMPLE_FMT_NONE 35}; 36 37static const enum AVSampleFormat ff_planar_sample_fmts_array[] = { 38 AV_SAMPLE_FMT_U8P, 39 AV_SAMPLE_FMT_S16P, 40 AV_SAMPLE_FMT_S32P, 41 AV_SAMPLE_FMT_FLTP, 42 AV_SAMPLE_FMT_DBLP, 43 AV_SAMPLE_FMT_NONE 44}; 45 46/** default handler for get_audio_buffer() for audio inputs */ 47AVFrame *ff_default_get_audio_buffer(AVFilterLink *link, int nb_samples); 48 49/** get_audio_buffer() handler for filters which simply pass audio along */ 50AVFrame *ff_null_get_audio_buffer(AVFilterLink *link, int nb_samples); 51 52/** 53 * Request an audio samples buffer with a specific set of permissions. 54 * 55 * @param link the output link to the filter from which the buffer will 56 * be requested 57 * @param nb_samples the number of samples per channel 58 * @return A reference to the samples. This must be unreferenced with 59 * avfilter_unref_buffer when you are finished with it. 60 */ 61AVFrame *ff_get_audio_buffer(AVFilterLink *link, int nb_samples); 62 63/** 64 * Send a buffer of audio samples to the next filter. 65 * 66 * @param link the output link over which the audio samples are being sent 67 * @param samplesref a reference to the buffer of audio samples being sent. The 68 * receiving filter will free this reference when it no longer 69 * needs it or pass it on to the next filter. 70 * 71 * @return >= 0 on success, a negative AVERROR on error. The receiving filter 72 * is responsible for unreferencing samplesref in case of error. 73 */ 74int ff_filter_samples(AVFilterLink *link, AVFilterBufferRef *samplesref); 75 76/** 77 * Send a buffer of audio samples to the next link, without checking 78 * min_samples. 79 */ 80int ff_filter_samples_framed(AVFilterLink *link, 81 AVFilterBufferRef *samplesref); 82 83#endif /* AVFILTER_AUDIO_H */ 84