Commit bc24058b authored by Stefan Westerfeld's avatar Stefan Westerfeld

avfilter/asubprocess: check that output wav file is as long as expected

Signed-off-by: Stefan Westerfeld's avatarStefan Westerfeld <stefan@space.twc.de>
parent 00457130
......@@ -581,7 +581,7 @@ static int write_samples(AVFilterContext *ctx, ASubProcessContext *s, int32_t *d
static int write_frame(AVFilterContext *ctx, ASubProcessContext *s, AVFilterLink *inlink, AVFrame *in)
{
AVFrame *out;
int ret = 0;
int ret;
s->nb_input_samples += in->nb_samples;
ret = write_samples(ctx, s, (int32_t *)in->data[0], in->nb_samples * inlink->ch_layout.nb_channels);
......@@ -674,19 +674,20 @@ static int activate(AVFilterContext *ctx)
if (!s->eof && ff_inlink_acknowledge_status(inlink, &status, &s->last_pts))
s->eof |= status == AVERROR_EOF;
if (s->eof && !sp_done(s->sp)) {
if (s->eof) {
while (!sp_done(s->sp)) {
ret = sp_write(ctx, 0, 0);
if (ret != 0)
return ret;
}
}
if (s->eof) {
if (s->state != STATE_IN_DATA_CHUNK) {
av_log(ctx, AV_LOG_ERROR, "Subprocess output wav is incomplete (no data chunk found)\n");
return AVERROR_INVALIDDATA;
}
if (s->nb_input_samples != s->nb_output_samples) {
av_log(ctx, AV_LOG_ERROR, "Subprocess output wav is incomplete (%lu input samples, %lu output samples)\n", s->nb_input_samples, s->nb_output_samples);
return AVERROR_INVALIDDATA;
}
ff_outlink_set_status(outlink, AVERROR_EOF, s->last_pts);
return 0;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment