changeset 30443:f60a1db3aee4

Estimate pts of additional frame generated by tfields also if correct-pts is not set, even if it is not very relevant currently. Based on patch by John Lindgren [john lindgren tds net]
author reimar
date Mon, 01 Feb 2010 22:22:32 +0000
parents 8d7a061d427b
children cfdb2299d77b
files libmpcodecs/vf_tfields.c
diffstat 1 files changed, 9 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/libmpcodecs/vf_tfields.c	Mon Feb 01 22:14:17 2010 +0000
+++ b/libmpcodecs/vf_tfields.c	Mon Feb 01 22:22:32 2010 +0000
@@ -336,6 +336,12 @@
 	return continue_buffered_image(vf);
 }
 
+static double calc_pts(double base_pts, int field)
+{
+    // FIXME this assumes 25 fps / 50 fields per second
+    return base_pts + 0.02 * field;
+}
+
 static int continue_buffered_image(struct vf_instance_s *vf)
 {
 	int i=vf->priv->buffered_i;
@@ -349,7 +355,6 @@
 
 	if (i == 0)
 		vf_queue_frame(vf, continue_buffered_image);
-	pts += i * .02;  // XXX not right
 
 	if (!(mpi->flags & MP_IMGFLAG_PLANAR)) bpp = mpi->bpp/8;
 	if (vf->priv->parity < 0) {
@@ -387,7 +392,7 @@
 				dmpi->stride[1] = 2*mpi->stride[1];
 				dmpi->stride[2] = 2*mpi->stride[2];
 			}
-			ret |= vf_next_put_image(vf, dmpi, pts);
+			ret |= vf_next_put_image(vf, dmpi, calc_pts(pts, i));
 			if (correct_pts)
 				break;
 			else
@@ -417,7 +422,7 @@
 				deint(dmpi->planes[2], dmpi->stride[2], mpi->planes[2], mpi->stride[2],
 					mpi->chroma_width, mpi->chroma_height, (i^!tff));
 			}
-			ret |= vf_next_put_image(vf, dmpi, pts);
+			ret |= vf_next_put_image(vf, dmpi, calc_pts(pts, i));
 			if (correct_pts)
 				break;
 			else
@@ -443,7 +448,7 @@
 					mpi->chroma_width, mpi->chroma_height/2,
 					dmpi->stride[2], mpi->stride[2]*2, (i^!tff));
 			}
-			ret |= vf_next_put_image(vf, dmpi, pts);
+			ret |= vf_next_put_image(vf, dmpi, calc_pts(pts, i));
 			if (correct_pts)
 				break;
 			else