diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2012-12-14 13:51:16 +0100 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2012-12-14 13:51:20 +0100 |
commit | 593f5c0f3c559a558efcb10a955cbac499e1fdbb (patch) | |
tree | 82ce1769739747df73b922d4bf4ffb903060db5c /libavfilter/af_asyncts.c | |
parent | 5c78a8129c4bac2ae0c12d90672799325bc01e96 (diff) | |
parent | 8083332c2de9ee189f96844ff4c2d9be1844116f (diff) |
Merge commit '8083332c2de9ee189f96844ff4c2d9be1844116f'
* commit '8083332c2de9ee189f96844ff4c2d9be1844116f':
asyncts: use clipped delta value when setting resample compensation
asyncts: fix flushing of final samples at EOF
vp6: properly fail on unsupported feature
Merged-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavfilter/af_asyncts.c')
-rw-r--r-- | libavfilter/af_asyncts.c | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/libavfilter/af_asyncts.c b/libavfilter/af_asyncts.c index b5d0aea973..785c9c4acd 100644 --- a/libavfilter/af_asyncts.c +++ b/libavfilter/af_asyncts.c @@ -110,6 +110,12 @@ static int config_props(AVFilterLink *link) return 0; } +/* get amount of data currently buffered, in samples */ +static int64_t get_delay(ASyncContext *s) +{ + return avresample_available(s->avr) + avresample_get_delay(s->avr); +} + static int request_frame(AVFilterLink *link) { AVFilterContext *ctx = link->src; @@ -122,7 +128,7 @@ static int request_frame(AVFilterLink *link) ret = ff_request_frame(ctx->inputs[0]); /* flush the fifo */ - if (ret == AVERROR_EOF && (nb_samples = avresample_get_delay(s->avr))) { + if (ret == AVERROR_EOF && (nb_samples = get_delay(s))) { AVFilterBufferRef *buf = ff_get_audio_buffer(link, AV_PERM_WRITE, nb_samples); if (!buf) @@ -149,12 +155,6 @@ static int write_to_fifo(ASyncContext *s, AVFilterBufferRef *buf) return ret; } -/* get amount of data currently buffered, in samples */ -static int64_t get_delay(ASyncContext *s) -{ - return avresample_available(s->avr) + avresample_get_delay(s->avr); -} - static int filter_frame(AVFilterLink *inlink, AVFilterBufferRef *buf) { AVFilterContext *ctx = inlink->dst; @@ -191,7 +191,7 @@ static int filter_frame(AVFilterLink *inlink, AVFilterBufferRef *buf) if (s->resample) { int comp = av_clip(delta, -s->max_comp, s->max_comp); av_log(ctx, AV_LOG_VERBOSE, "Compensating %d samples per second.\n", comp); - avresample_set_compensation(s->avr, delta, inlink->sample_rate); + avresample_set_compensation(s->avr, comp, inlink->sample_rate); } delta = 0; } |