id	summary	reporter	owner	description	type	status	priority	component	version	resolution	keywords	cc	blockedby	blocking	reproduced	analyzed
375	earwax audio filter generates wrong pts and af_sox filter can not be applied.	chinshou		"Sorry, I do not know is it appropriate to report bug for audio filter branch at https://github.com/mnzaki/FFmpeg/commits/audio-filters-20110726 . 

I just try the audio filter branch for a while and noticed that when i set -af earwax , the generated audio data pts always 0.
I added the  avfilter_copy_buffer_ref_props(outref, insamples); call to copy original pts to new samplesref and it seems to fix the problem.
{{{
static void filter_samples(AVFilterLink *inlink, AVFilterBufferRef *insamples)
{
    int16_t *taps, *endin, *in, *out;
    AVFilterBufferRef *outref =
        avfilter_get_audio_buffer(inlink, AV_PERM_WRITE,
                                  inlink->format,
                                  insamples->audio->nb_samples,
                                  inlink->channel_layout,
                                  0);
+   avfilter_copy_buffer_ref_props(outref, insamples);//<<--copy pts

    taps  = ((EarwaxContext*)inlink->dst->priv)->taps;
    out   = (int16_t*)outref->data[0];
    in    = (int16_t*)insamples->data[0];
    ...

second, I guess we should add packing negotiate code to af_sox filter's query_formats , 
static int query_formats(AVFilterContext *ctx)
{
    AVFilterFormats *formats = NULL;
    avfilter_add_format(&formats, AV_SAMPLE_FMT_S32);
    avfilter_set_common_sample_formats(ctx, formats);
    avfilter_set_common_channel_layouts(ctx, avfilter_all_channel_layouts());
+    avfilter_set_common_packing_formats(ctx, avfilter_all_packing_formats());// << ---- packing negotiation

    return 0;
}

otherwise avfilter_graph_config call will fail at 
static int query_formats(AVFilterGraph *graph, AVClass *log_ctx)
{
 ...
            else if (link->type == AVMEDIA_TYPE_AUDIO) {
                if (!link->in_chlayouts || !link->out_chlayouts ||
                    !link->in_packing   || !link->out_packing)
                    return AVERROR(EINVAL); <<------fail at here

                if (!avfilter_merge_formats(link->in_formats,
                                            link->out_formats)    ||
                    !avfilter_merge_formats(link->in_chlayouts,
                                            link->out_chlayouts)  ||
                    !avfilter_merge_formats(link->in_packing,
                                            link->out_packing))
...}
}}}
best regards
chinshou
"	defect	closed	normal	avfilter	git-master	fixed	earwax				0	0
