summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Schmidt <thaytan@noraisin.net>2012-06-17 20:25:42 +1000
committerJan Schmidt <thaytan@noraisin.net>2012-06-20 01:57:20 +1000
commit96883b5fc575b2114c1fb4f240f0e687081c3d80 (patch)
tree4fa1dd513fd82a5131adfd6c52d01ecbb9d07143
parent6451b091f56d08375ce6bb8b3a21040b6dfd7f39 (diff)
downloadgstreamer-plugins-base-96883b5fc575b2114c1fb4f240f0e687081c3d80.tar.gz
theoradec: Clear the base class packetized flag.
The data has to be passed through the parser to get the correct SYNC_POINT flag set on each packet, for reverse playback to work.
-rw-r--r--ext/theora/gsttheoradec.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/ext/theora/gsttheoradec.c b/ext/theora/gsttheoradec.c
index c0d96b3f6..122f5ead4 100644
--- a/ext/theora/gsttheoradec.c
+++ b/ext/theora/gsttheoradec.c
@@ -208,6 +208,7 @@ gst_theora_dec_init (GstTheoraDec * dec, GstTheoraDecClass * g_class)
/* input is packetized,
* but is not marked that way so data gets parsed and keyframes marked */
+ gst_video_decoder_set_packetized (GST_VIDEO_DECODER (dec), FALSE);
}
static void
@@ -275,8 +276,10 @@ theora_dec_parse (GstVideoDecoder * decoder,
data = gst_adapter_peek (adapter, 1);
/* check for keyframe; must not be header packet */
- if (!(data[0] & 0x80) && (data[0] & 0x40) == 0)
+ if (!(data[0] & 0x80) && (data[0] & 0x40) == 0) {
+ GST_DEBUG_OBJECT (decoder, "Found keyframe, frame %p", frame);
GST_VIDEO_CODEC_FRAME_SET_SYNC_POINT (frame);
+ }
/* and pass along all */
gst_video_decoder_add_to_frame (decoder, av);
@@ -656,8 +659,6 @@ theora_handle_data_packet (GstTheoraDec * dec, ogg_packet * packet,
goto wrong_dimensions;
result = theora_handle_image (dec, buf, frame);
- if (result != GST_FLOW_OK)
- return result;
return result;