ext/theora/theoradec.c: Don't look inside 0-length packets (which indicate duplicated...
authorMichael Smith <msmith@xiph.org>
Mon, 21 May 2007 15:24:21 +0000 (15:24 +0000)
committerMichael Smith <msmith@xiph.org>
Mon, 21 May 2007 15:24:21 +0000 (15:24 +0000)
Original commit message from CVS:
* ext/theora/theoradec.c: (theora_handle_data_packet):
Don't look inside 0-length packets (which indicate duplicated
frames)

ChangeLog
ext/theora/theoradec.c

index a71d22b..6afc74a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2007-05-21  Michael Smith <msmith@fluendo.com>
+
+       * ext/theora/theoradec.c: (theora_handle_data_packet):
+         Don't look inside 0-length packets (which indicate duplicated
+         frames)
+
 2007-05-21  Wim Taymans  <wim@fluendo.com>
 
        * ext/cdparanoia/gstcdparanoiasrc.c:
index 1e346a5..84b2f57 100644 (file)
@@ -1029,8 +1029,8 @@ theora_handle_data_packet (GstTheoraDec * dec, ogg_packet * packet,
     goto not_initialized;
 
   /* the second most significant bit of the first data byte is cleared 
-   * for keyframes */
-  keyframe = (packet->packet[0] & 0x40) == 0;
+   * for keyframes. We can only check it if it's not a zero-length packet. */
+  keyframe = packet->bytes && ((packet->packet[0] & 0x40) == 0);
   if (G_UNLIKELY (keyframe)) {
     GST_DEBUG_OBJECT (dec, "we have a keyframe");
     dec->need_keyframe = FALSE;