mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2025-01-01 12:22:09 +00:00
yadif: Improve pts calculation for is_second.
Tested-by: Robert Nagy <ronag89@gmail.com> Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
7a3d2258a6
commit
e90dfa6881
@ -218,9 +218,20 @@ static void return_frame(AVFilterContext *ctx, int is_second)
|
|||||||
if (is_second) {
|
if (is_second) {
|
||||||
if (yadif->next->pts != AV_NOPTS_VALUE &&
|
if (yadif->next->pts != AV_NOPTS_VALUE &&
|
||||||
yadif->cur->pts != AV_NOPTS_VALUE) {
|
yadif->cur->pts != AV_NOPTS_VALUE) {
|
||||||
yadif->out->pts =
|
uint64_t next_pts = yadif->next->pts;
|
||||||
(yadif->next->pts&yadif->cur->pts) +
|
uint64_t cur_pts = yadif->cur->pts;
|
||||||
((yadif->next->pts^yadif->cur->pts)>>1);
|
uint64_t prev_pts = yadif->prev->pts;
|
||||||
|
|
||||||
|
uint64_t ft = FFMIN3( cur_pts-prev_pts,
|
||||||
|
next_pts-cur_pts,
|
||||||
|
(next_pts-prev_pts)/2);
|
||||||
|
|
||||||
|
if(next_pts - cur_pts < 2*ft)
|
||||||
|
yadif->out->pts =
|
||||||
|
(next_pts&cur_pts) +
|
||||||
|
((next_pts^cur_pts)>>1);
|
||||||
|
else
|
||||||
|
yadif->out->pts = cur_pts + ft/2;
|
||||||
} else {
|
} else {
|
||||||
yadif->out->pts = AV_NOPTS_VALUE;
|
yadif->out->pts = AV_NOPTS_VALUE;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user