void ff_filter_samples(AVFilterLink *link, AVFilterBufferRef *samplesref)

{

    void (*filter_samples)(AVFilterLink *, AVFilterBufferRef *);

    AVFilterPad *dst = link->dstpad;



    FF_DPRINTF_START(NULL, filter_samples); ff_dlog_link(NULL, link, 1);



    if (!(filter_samples = dst->filter_samples))

        filter_samples = ff_default_filter_samples;



    /* prepare to copy the samples if the buffer has insufficient permissions */

    if ((dst->min_perms & samplesref->perms) != dst->min_perms ||

        dst->rej_perms & samplesref->perms) {

        int  i, planar = av_sample_fmt_is_planar(samplesref->format);

        int planes = !planar ? 1:

                     av_get_channel_layout_nb_channels(samplesref->audio->channel_layout);



        av_log(link->dst, AV_LOG_DEBUG,

               "Copying audio data in avfilter (have perms %x, need %x, reject %x)\n",

               samplesref->perms, link->dstpad->min_perms, link->dstpad->rej_perms);



        link->cur_buf = ff_default_get_audio_buffer(link, dst->min_perms,

                                                    samplesref->audio->nb_samples);

        link->cur_buf->pts                = samplesref->pts;

        link->cur_buf->audio->sample_rate = samplesref->audio->sample_rate;



        /* Copy actual data into new samples buffer */

        for (i = 0; i < planes; i++)

            memcpy(link->cur_buf->extended_data[i], samplesref->extended_data[i], samplesref->linesize[0]);



        avfilter_unref_buffer(samplesref);

    } else

        link->cur_buf = samplesref;



    filter_samples(link, link->cur_buf);

}

void ff_filter_samples(AVFilterLink *link, AVFilterBufferRef *samplesref)

{

    void (*filter_samples)(AVFilterLink *, AVFilterBufferRef *);

    AVFilterPad *dst = link->dstpad;



    FF_DPRINTF_START(NULL, filter_samples); ff_dlog_link(NULL, link, 1);



    if (!(filter_samples = dst->filter_samples))

        filter_samples = ff_default_filter_samples;



    

    if ((dst->min_perms & samplesref->perms) != dst->min_perms ||

        dst->rej_perms & samplesref->perms) {

        int  i, planar = av_sample_fmt_is_planar(samplesref->format);

        int planes = !planar ? 1:

                     av_get_channel_layout_nb_channels(samplesref->audio->channel_layout);



        av_log(link->dst, AV_LOG_DEBUG,

               "Copying audio data in avfilter (have perms %x, need %x, reject %x)\n",

               samplesref->perms, link->dstpad->min_perms, link->dstpad->rej_perms);



        link->cur_buf = ff_default_get_audio_buffer(link, dst->min_perms,

                                                    samplesref->audio->nb_samples);

        link->cur_buf->pts                = samplesref->pts;

        link->cur_buf->audio->sample_rate = samplesref->audio->sample_rate;



        

        for (i = 0; i < planes; i++)

            memcpy(link->cur_buf->extended_data[i], samplesref->extended_data[i], samplesref->linesize[0]);



        avfilter_unref_buffer(samplesref);

    } else

        link->cur_buf = samplesref;



    filter_samples(link, link->cur_buf);

}

        int  i, planar = av_sample_fmt_is_planar(samplesref->format);         int planes = !planar ? 1:                      av_get_channel_layout_nb_channels(samplesref->audio->channel_layout);         for (i = 0; i < planes; i++)             memcpy(link->cur_buf->extended_data[i], samplesref->extended_data[i], samplesref->linesize[0]);
VAR_4voidVAR_4 VAR_4ff_filter_samplesVAR_4(VAR_4AVFilterLinkVAR_4 *VAR_4VAR_0VAR_4, VAR_4AVFilterBufferRefVAR_4 *VAR_4VAR_1VAR_4)

{

    VAR_4voidVAR_4 (*VAR_4VAR_2VAR_4)(VAR_4AVFilterLinkVAR_4 *, VAR_4AVFilterBufferRefVAR_4 *);

    VAR_4AVFilterPadVAR_4 *VAR_4dstVAR_4 = VAR_4VAR_0VAR_4->VAR_4dstpadVAR_4;



    VAR_4FF_DPRINTF_STARTVAR_4(VAR_4NULLVAR_4, VAR_4VAR_2VAR_4); VAR_4ff_dlog_linkVAR_4(VAR_4NULLVAR_4, VAR_4VAR_0VAR_4, VAR_41VAR_4);



    VAR_4ifVAR_4 (!(VAR_4VAR_2VAR_4 = VAR_4dstVAR_4->VAR_4VAR_2VAR_4))

        VAR_4VAR_2VAR_4 = VAR_4ff_default_filter_samplesVAR_4;



    

    VAR_4ifVAR_4 ((VAR_4dstVAR_4->VAR_4min_permsVAR_4 & VAR_4VAR_1VAR_4->VAR_4permsVAR_4) != VAR_4dstVAR_4->VAR_4min_permsVAR_4 ||

        VAR_4dstVAR_4->VAR_4rej_permsVAR_4 & VAR_4VAR_1VAR_4->VAR_4permsVAR_4) {

        VAR_4intVAR_4  VAR_4iVAR_4, VAR_4planarVAR_4 = VAR_4av_sample_fmt_is_planarVAR_4(VAR_4VAR_1VAR_4->VAR_4formatVAR_4);

        VAR_4intVAR_4 VAR_4planesVAR_4 = !VAR_4planarVAR_4 ? VAR_41VAR_4:

                     VAR_4av_get_channel_layout_nb_channelsVAR_4(VAR_4VAR_1VAR_4->VAR_4audioVAR_4->VAR_4channel_layoutVAR_4);



        VAR_4av_logVAR_4(VAR_4VAR_0VAR_4->VAR_4dstVAR_4, VAR_4AV_LOG_DEBUGVAR_4,

               "VAR_4CopyingVAR_4 VAR_4audioVAR_4 VAR_4dataVAR_4 VAR_4inVAR_4 VAR_4avfilterVAR_4 (VAR_4haveVAR_4 VAR_4permsVAR_4 %VAR_4xVAR_4, VAR_4needVAR_4 %VAR_4xVAR_4, VAR_4rejectVAR_4 %VAR_4xVAR_4)\VAR_4nVAR_4",

               VAR_4VAR_1VAR_4->VAR_4permsVAR_4, VAR_4VAR_0VAR_4->VAR_4dstpadVAR_4->VAR_4min_permsVAR_4, VAR_4VAR_0VAR_4->VAR_4dstpadVAR_4->VAR_4rej_permsVAR_4);



        VAR_4VAR_0VAR_4->VAR_4cur_bufVAR_4 = VAR_4ff_default_get_audio_bufferVAR_4(VAR_4VAR_0VAR_4, VAR_4dstVAR_4->VAR_4min_permsVAR_4,

                                                    VAR_4VAR_1VAR_4->VAR_4audioVAR_4->VAR_4nb_samplesVAR_4);

        VAR_4VAR_0VAR_4->VAR_4cur_bufVAR_4->VAR_4ptsVAR_4                = VAR_4VAR_1VAR_4->VAR_4ptsVAR_4;

        VAR_4VAR_0VAR_4->VAR_4cur_bufVAR_4->VAR_4audioVAR_4->VAR_4sample_rateVAR_4 = VAR_4VAR_1VAR_4->VAR_4audioVAR_4->VAR_4sample_rateVAR_4;



        

        VAR_4forVAR_4 (VAR_4iVAR_4 = VAR_40VAR_4; VAR_4iVAR_4 < VAR_4planesVAR_4; VAR_4iVAR_4++)

            VAR_4memcpyVAR_4(VAR_4VAR_0VAR_4->VAR_4cur_bufVAR_4->VAR_4extended_dataVAR_4[VAR_4iVAR_4], VAR_4VAR_1VAR_4->VAR_4extended_dataVAR_4[VAR_4iVAR_4], VAR_4VAR_1VAR_4->VAR_4linesizeVAR_4[VAR_40VAR_4]);



        VAR_4avfilter_unref_bufferVAR_4(VAR_4VAR_1VAR_4);

    } VAR_4elseVAR_4

        VAR_4VAR_0VAR_4->VAR_4cur_bufVAR_4 = VAR_4VAR_1VAR_4;



    VAR_4VAR_2VAR_4(VAR_4VAR_0VAR_4, VAR_4VAR_0VAR_4->VAR_4cur_bufVAR_4);

}

VAR_4voidVAR_4 VAR_4ff_filter_samplesVAR_4(VAR_4AVFilterLinkVAR_4 *VAR_4VAR_0VAR_4, VAR_4AVFilterBufferRefVAR_4 *VAR_4VAR_1VAR_4)
{ VAR_4voidVAR_4 (*VAR_4VAR_2VAR_4)(VAR_4AVFilterLinkVAR_4 *, VAR_4AVFilterBufferRefVAR_4 *); VAR_4AVFilterPadVAR_4 *VAR_4dstVAR_4 = VAR_4VAR_0VAR_4->VAR_4dstpadVAR_4; VAR_4FF_DPRINTF_STARTVAR_4(VAR_4NULLVAR_4, VAR_4VAR_2VAR_4); VAR_4ff_dlog_linkVAR_4(VAR_4NULLVAR_4, VAR_4VAR_0VAR_4, VAR_41VAR_4); VAR_4ifVAR_4 (!(VAR_4VAR_2VAR_4 = VAR_4dstVAR_4->VAR_4VAR_2VAR_4))
VAR_4VAR_2VAR_4 = VAR_4ff_default_filter_samplesVAR_4; VAR_4ifVAR_4 ((VAR_4dstVAR_4->VAR_4min_permsVAR_4 & VAR_4VAR_1VAR_4->VAR_4permsVAR_4) != VAR_4dstVAR_4->VAR_4min_permsVAR_4 ||
VAR_4dstVAR_4->VAR_4rej_permsVAR_4 & VAR_4VAR_1VAR_4->VAR_4permsVAR_4) { VAR_4intVAR_4  VAR_4iVAR_4, VAR_4planarVAR_4 = VAR_4av_sample_fmt_is_planarVAR_4(VAR_4VAR_1VAR_4->VAR_4formatVAR_4); VAR_4intVAR_4 VAR_4planesVAR_4 = !VAR_4planarVAR_4 ? VAR_41VAR_4:
VAR_4av_get_channel_layout_nb_channelsVAR_4(VAR_4VAR_1VAR_4->VAR_4audioVAR_4->VAR_4channel_layoutVAR_4); VAR_4av_logVAR_4(VAR_4VAR_0VAR_4->VAR_4dstVAR_4, VAR_4AV_LOG_DEBUGVAR_4,
"VAR_4CopyingVAR_4 VAR_4audioVAR_4 VAR_4dataVAR_4 VAR_4inVAR_4 VAR_4avfilterVAR_4 (VAR_4haveVAR_4 VAR_4permsVAR_4 %VAR_4xVAR_4, VAR_4needVAR_4 %VAR_4xVAR_4, VAR_4rejectVAR_4 %VAR_4xVAR_4)\VAR_4nVAR_4",
VAR_4VAR_1VAR_4->VAR_4permsVAR_4, VAR_4VAR_0VAR_4->VAR_4dstpadVAR_4->VAR_4min_permsVAR_4, VAR_4VAR_0VAR_4->VAR_4dstpadVAR_4->VAR_4rej_permsVAR_4); VAR_4VAR_0VAR_4->VAR_4cur_bufVAR_4 = VAR_4ff_default_get_audio_bufferVAR_4(VAR_4VAR_0VAR_4, VAR_4dstVAR_4->VAR_4min_permsVAR_4,
VAR_4VAR_1VAR_4->VAR_4audioVAR_4->VAR_4nb_samplesVAR_4); VAR_4VAR_0VAR_4->VAR_4cur_bufVAR_4->VAR_4ptsVAR_4                = VAR_4VAR_1VAR_4->VAR_4ptsVAR_4; VAR_4VAR_0VAR_4->VAR_4cur_bufVAR_4->VAR_4audioVAR_4->VAR_4sample_rateVAR_4 = VAR_4VAR_1VAR_4->VAR_4audioVAR_4->VAR_4sample_rateVAR_4; VAR_4forVAR_4 (VAR_4iVAR_4 = VAR_40VAR_4; VAR_4iVAR_4 < VAR_4planesVAR_4; VAR_4iVAR_4++) VAR_4memcpyVAR_4(VAR_4VAR_0VAR_4->VAR_4cur_bufVAR_4->VAR_4extended_dataVAR_4[VAR_4iVAR_4], VAR_4VAR_1VAR_4->VAR_4extended_dataVAR_4[VAR_4iVAR_4], VAR_4VAR_1VAR_4->VAR_4linesizeVAR_4[VAR_40VAR_4]); VAR_4avfilter_unref_bufferVAR_4(VAR_4VAR_1VAR_4); } VAR_4elseVAR_4 VAR_4VAR_0VAR_4->VAR_4cur_bufVAR_4 = VAR_4VAR_1VAR_4; VAR_4VAR_2VAR_4(VAR_4VAR_0VAR_4, VAR_4VAR_0VAR_4->VAR_4cur_bufVAR_4); }