Browse Source

asyncts: fix flushing of final samples at EOF

tags/n1.1
Justin Ruggles 12 years ago
parent
commit
f266486b2e
1 changed files with 7 additions and 7 deletions
  1. +7
    -7
      libavfilter/af_asyncts.c

+ 7
- 7
libavfilter/af_asyncts.c View File

@@ -116,6 +116,12 @@ static int config_props(AVFilterLink *link)
return 0; 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) static int request_frame(AVFilterLink *link)
{ {
AVFilterContext *ctx = link->src; AVFilterContext *ctx = link->src;
@@ -128,7 +134,7 @@ static int request_frame(AVFilterLink *link)
ret = ff_request_frame(ctx->inputs[0]); ret = ff_request_frame(ctx->inputs[0]);


/* flush the fifo */ /* 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, AVFilterBufferRef *buf = ff_get_audio_buffer(link, AV_PERM_WRITE,
nb_samples); nb_samples);
if (!buf) if (!buf)
@@ -155,12 +161,6 @@ static int write_to_fifo(ASyncContext *s, AVFilterBufferRef *buf)
return ret; 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) static int filter_frame(AVFilterLink *inlink, AVFilterBufferRef *buf)
{ {
AVFilterContext *ctx = inlink->dst; AVFilterContext *ctx = inlink->dst;


Loading…
Cancel
Save