asfpacket: fix 0.11 ported payload extraction
authorMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
Fri, 13 Jan 2012 14:55:15 +0000 (15:55 +0100)
committerMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
Fri, 13 Jan 2012 14:59:01 +0000 (15:59 +0100)
... to cater for not necessarily offset == size - cur_pos,
as size may have been adjusted due to padding.

Fixes #667567.

gst/asfdemux/asfpacket.c
gst/asfdemux/asfpacket.h

index 0baaceb..072a40e 100644 (file)
@@ -77,7 +77,8 @@ asf_packet_create_payload_buffer (AsfPacket * packet, const guint8 ** p_data,
 
   g_assert (payload_len <= *p_size);
 
-  off = (guint) (gst_buffer_get_size (packet->buf) - *p_size);
+  off = (guint) (*p_data - packet->bdata);
+  g_assert (off < gst_buffer_get_size (packet->buf));
 
   *p_data += payload_len;
   *p_size -= payload_len;
@@ -484,6 +485,8 @@ gst_asf_demux_parse_packet (GstASFDemux * demux, GstBuffer * buf)
     goto short_packet;
 
   packet.buf = buf;
+  /* evidently transient */
+  packet.bdata = data;
 
   ec_flags = GST_READ_UINT8 (data);
 
index cc1622d..dd8bd86 100644 (file)
@@ -46,6 +46,7 @@ typedef struct {
 
 typedef struct {
   GstBuffer    *buf;
+  const guint8 *bdata;
   guint         length;            /* packet length (unused)               */
   guint         padding;           /* length of padding at end of packet   */
   guint         sequence;          /* sequence (unused)                    */