mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-11-26 19:01:44 +02:00
In yadif filter, copy video props to output picture.
Fix issue #2269. Interpolate pts for the second frame when using field output mode. Originally committed as revision 25798 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
6b133d7e9c
commit
902d49eef7
@ -175,8 +175,17 @@ static void return_frame(AVFilterContext *ctx, int is_second)
|
|||||||
|
|
||||||
filter(ctx, yadif->out, tff ^ !is_second, tff);
|
filter(ctx, yadif->out, tff ^ !is_second, tff);
|
||||||
|
|
||||||
if (is_second)
|
if (is_second) {
|
||||||
|
if (yadif->next->pts != AV_NOPTS_VALUE &&
|
||||||
|
yadif->cur->pts != AV_NOPTS_VALUE) {
|
||||||
|
yadif->out->pts =
|
||||||
|
(yadif->next->pts&yadif->cur->pts) +
|
||||||
|
((yadif->next->pts^yadif->cur->pts)>>1);
|
||||||
|
} else {
|
||||||
|
yadif->out->pts = AV_NOPTS_VALUE;
|
||||||
|
}
|
||||||
avfilter_start_frame(ctx->outputs[0], yadif->out);
|
avfilter_start_frame(ctx->outputs[0], yadif->out);
|
||||||
|
}
|
||||||
avfilter_draw_slice(ctx->outputs[0], 0, link->h, 1);
|
avfilter_draw_slice(ctx->outputs[0], 0, link->h, 1);
|
||||||
avfilter_end_frame(ctx->outputs[0]);
|
avfilter_end_frame(ctx->outputs[0]);
|
||||||
|
|
||||||
@ -206,7 +215,8 @@ static void start_frame(AVFilterLink *link, AVFilterBufferRef *picref)
|
|||||||
yadif->out = avfilter_get_video_buffer(ctx->outputs[0], AV_PERM_WRITE | AV_PERM_PRESERVE |
|
yadif->out = avfilter_get_video_buffer(ctx->outputs[0], AV_PERM_WRITE | AV_PERM_PRESERVE |
|
||||||
AV_PERM_REUSE, link->w, link->h);
|
AV_PERM_REUSE, link->w, link->h);
|
||||||
|
|
||||||
yadif->out->pts = yadif->cur->pts;
|
avfilter_copy_buffer_ref_props(yadif->out, yadif->cur);
|
||||||
|
yadif->out->video->interlaced = 0;
|
||||||
avfilter_start_frame(ctx->outputs[0], yadif->out);
|
avfilter_start_frame(ctx->outputs[0], yadif->out);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user