diff options
author | Sebastian Dröge <slomo@circular-chaos.org> | 2008-08-02 18:15:49 +0000 |
---|---|---|
committer | Sebastian Dröge <slomo@circular-chaos.org> | 2008-08-02 18:15:49 +0000 |
commit | 8cbe2b99124680955be1c51f2e770dfa915b099c (patch) | |
tree | a14780584843c3e5551efd5f90afb430f7ea002f | |
parent | 0783e91c546b08485f6ade2818d0628ab83357ca (diff) | |
download | gst-plugins-bad-8cbe2b99124680955be1c51f2e770dfa915b099c.tar.gz gst-plugins-bad-8cbe2b99124680955be1c51f2e770dfa915b099c.tar.bz2 gst-plugins-bad-8cbe2b99124680955be1c51f2e770dfa915b099c.zip |
gst/deinterlace2/gstdeinterlace2.c: Respect the latency of the deinterlacing algorithm for the timestamps of every bu...
Original commit message from CVS:
* gst/deinterlace2/gstdeinterlace2.c: (gst_deinterlace2_chain):
Respect the latency of the deinterlacing algorithm for the timestamps
of every buffer.
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | gst/deinterlace2/gstdeinterlace2.c | 24 |
2 files changed, 22 insertions, 8 deletions
@@ -1,5 +1,11 @@ 2008-08-02 Sebastian Dröge <sebastian.droege@collabora.co.uk> + * gst/deinterlace2/gstdeinterlace2.c: (gst_deinterlace2_chain): + Respect the latency of the deinterlacing algorithm for the timestamps + of every buffer. + +2008-08-02 Sebastian Dröge <sebastian.droege@collabora.co.uk> + * gst/deinterlace2/tvtime/greedyh.asm: * gst/deinterlace2/tvtime/tomsmocomp/SearchLoopBottom.inc: Add the MMX registers to the clobbered registers only if __MMX__ is diff --git a/gst/deinterlace2/gstdeinterlace2.c b/gst/deinterlace2/gstdeinterlace2.c index 8f3525e1..26e9cd8f 100644 --- a/gst/deinterlace2/gstdeinterlace2.c +++ b/gst/deinterlace2/gstdeinterlace2.c @@ -592,9 +592,14 @@ gst_deinterlace2_chain (GstPad * pad, GstBuffer * buf) /* do magic calculus */ gst_deinterlace_method_deinterlace_frame (self->method, self); - buf = gst_deinterlace2_pop_history (self); + g_assert (self->history_count - 1 - + gst_deinterlace_method_get_latency (self->method) >= 0); + buf = + self->field_history[self->history_count - 1 - + gst_deinterlace_method_get_latency (self->method)].buf; timestamp = GST_BUFFER_TIMESTAMP (buf); - gst_buffer_unref (buf); + + gst_buffer_unref (gst_deinterlace2_pop_history (self)); GST_BUFFER_TIMESTAMP (self->out_buf) = timestamp; if (self->fields == GST_DEINTERLACE2_ALL) @@ -611,8 +616,7 @@ gst_deinterlace2_chain (GstPad * pad, GstBuffer * buf) else if (self->field_history[cur_field_idx].flags == PICTURE_INTERLACED_TOP && self->fields == GST_DEINTERLACE2_BF) { GST_DEBUG ("Removing unused top field"); - buf = gst_deinterlace2_pop_history (self); - gst_buffer_unref (buf); + gst_buffer_unref (gst_deinterlace2_pop_history (self)); } cur_field_idx = self->history_count - fields_required; @@ -635,9 +639,14 @@ gst_deinterlace2_chain (GstPad * pad, GstBuffer * buf) /* do magic calculus */ gst_deinterlace_method_deinterlace_frame (self->method, self); - buf = gst_deinterlace2_pop_history (self); + g_assert (self->history_count - 1 - + gst_deinterlace_method_get_latency (self->method) >= 0); + buf = + self->field_history[self->history_count - 1 - + gst_deinterlace_method_get_latency (self->method)].buf; timestamp = GST_BUFFER_TIMESTAMP (buf); - gst_buffer_unref (buf); + + gst_buffer_unref (gst_deinterlace2_pop_history (self)); GST_BUFFER_TIMESTAMP (self->out_buf) = timestamp; if (self->fields == GST_DEINTERLACE2_ALL) @@ -655,8 +664,7 @@ gst_deinterlace2_chain (GstPad * pad, GstBuffer * buf) else if (self->field_history[cur_field_idx].flags == PICTURE_INTERLACED_BOTTOM && self->fields == GST_DEINTERLACE2_TF) { GST_DEBUG ("Removing unused bottom field"); - buf = gst_deinterlace2_pop_history (self); - gst_buffer_unref (buf); + gst_buffer_unref (gst_deinterlace2_pop_history (self)); } } |