History

lavfi/split: handle closed outputs.

Return AVERROR_EOF if all outputs are closed.

Nicolas George committed 14 years ago

Commit a9cfe651 parent 8b61aba1 file · +12 −4Browse files

Showing the changes to libavfilter/split.c (1 of 1 file). Show all

Unified · Split

libavfilter/split.c+12−4
@@ -71,10 +71,14 @@ static void split_uninit(AVFilterContext *ctx) · 70 unmodified lines
7171 static int start_frame(AVFilterLink *inlink, AVFilterBufferRef *picref)
7272 {
7373 AVFilterContext *ctx = inlink->dst;
74− int i, ret = 0;
74+ int i, ret = AVERROR_EOF;
7575
7676 for (i = 0; i < ctx->nb_outputs; i++) {
77− AVFilterBufferRef *buf_out = avfilter_ref_buffer(picref, ~AV_PERM_WRITE);
77+ AVFilterBufferRef *buf_out;
78+
79+ if (ctx->outputs[i]->closed)
80+ continue;
81+ buf_out = avfilter_ref_buffer(picref, ~AV_PERM_WRITE);
7882 if (!buf_out)
7983 return AVERROR(ENOMEM);
8084
@@ -88,9 +92,11 @@ static int start_frame(AVFilterLink *inlink, AVFilterBufferRef *picref) · 7 unmodified lines
8892 static int draw_slice(AVFilterLink *inlink, int y, int h, int slice_dir)
8993 {
9094 AVFilterContext *ctx = inlink->dst;
91− int i, ret = 0;
95+ int i, ret = AVERROR_EOF;
9296
9397 for (i = 0; i < ctx->nb_outputs; i++) {
98+ if (ctx->outputs[i]->closed)
99+ continue;
94100 ret = ff_draw_slice(ctx->outputs[i], y, h, slice_dir);
95101 if (ret < 0)
96102 break;
@@ -101,9 +107,11 @@ static int draw_slice(AVFilterLink *inlink, int y, int h, int slice_dir) · 4 unmodified lines
101107 static int end_frame(AVFilterLink *inlink)
102108 {
103109 AVFilterContext *ctx = inlink->dst;
104− int i, ret = 0;
110+ int i, ret = AVERROR_EOF;
105111
106112 for (i = 0; i < ctx->nb_outputs; i++) {
113+ if (ctx->outputs[i]->closed)
114+ continue;
107115 ret = ff_end_frame(ctx->outputs[i]);
108116 if (ret < 0)
109117 break;

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t