summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRonald S. Bultje <rbultje@ronald.bitfreak.net>2004-01-25 00:43:16 +0000
committerRonald S. Bultje <rbultje@ronald.bitfreak.net>2004-01-25 00:43:16 +0000
commit2c82da7073399d3e3cd40967458faab8f503dc8c (patch)
tree73bb90abc90de5802aff13caa8bb36998eb1eb32
parent9e67f9a283b2205f5161de52bea738d3d8938e78 (diff)
gst/avi/gstavidemux.c: The index reading was broken. The rest worked fine, but the whole goal of my rewrite was to ma...
Original commit message from CVS: 2004-01-25 Ronald Bultje <rbultje@ronald.bitfreak.net> * gst/avi/gstavidemux.c: (gst_avi_demux_stream_avih), (gst_avi_demux_stream_odml), (gst_avi_demux_stream_index): The index reading was broken. The rest worked fine, but the whole goal of my rewrite was to make avidemux readable, and this was not at all readable. Please use typed variables.
-rw-r--r--ChangeLog8
-rw-r--r--gst/avi/gstavidemux.c51
2 files changed, 33 insertions, 26 deletions
diff --git a/ChangeLog b/ChangeLog
index eb6cbf41..6013e388 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,13 @@
2004-01-25 Ronald Bultje <rbultje@ronald.bitfreak.net>
+ * gst/avi/gstavidemux.c: (gst_avi_demux_stream_avih),
+ (gst_avi_demux_stream_odml), (gst_avi_demux_stream_index):
+ The index reading was broken. The rest worked fine, but the whole
+ goal of my rewrite was to make avidemux readable, and this was
+ not at all readable. Please use typed variables.
+
+2004-01-25 Ronald Bultje <rbultje@ronald.bitfreak.net>
+
* gst-libs/gst/riff/riff-read.c: (gst_riff_read_info):
Additional pad usability check.
* gst/mpeg1videoparse/gstmp1videoparse.c: (gst_mp1videoparse_init),
diff --git a/gst/avi/gstavidemux.c b/gst/avi/gstavidemux.c
index 431e8cbd..79b183ea 100644
--- a/gst/avi/gstavidemux.c
+++ b/gst/avi/gstavidemux.c
@@ -705,8 +705,7 @@ gst_avi_demux_stream_avih (GstAviDemux *avi,
GstRiffRead *riff = GST_RIFF_READ (avi);
guint32 tag;
GstBuffer *buf;
- gst_riff_avih avih;
- guint32 *data;
+ gst_riff_avih avih, *_avih;
if (!gst_riff_read_data (riff, &tag, &buf))
return FALSE;
@@ -723,21 +722,21 @@ gst_avi_demux_stream_avih (GstAviDemux *avi,
return FALSE;
}
- data = (guint32 *) GST_BUFFER_DATA (buf);
- avih.us_frame = GUINT32_FROM_LE (*data); data++;
- avih.max_bps = GUINT32_FROM_LE (*data); data++;
- avih.pad_gran = GUINT32_FROM_LE (*data); data++;
- avih.flags = GUINT32_FROM_LE (*data); data++;
- avih.tot_frames = GUINT32_FROM_LE (*data); data++;
- avih.init_frames = GUINT32_FROM_LE (*data); data++;
- avih.streams = GUINT32_FROM_LE (*data); data++;
- avih.bufsize = GUINT32_FROM_LE (*data); data++;
- avih.width = GUINT32_FROM_LE (*data); data++;
- avih.height = GUINT32_FROM_LE (*data); data++;
- avih.scale = GUINT32_FROM_LE (*data); data++;
- avih.rate = GUINT32_FROM_LE (*data); data++;
- avih.start = GUINT32_FROM_LE (*data); data++;
- avih.length = GUINT32_FROM_LE (*data); data++;
+ _avih = (gst_riff_avih *) GST_BUFFER_DATA (buf);
+ avih.us_frame = GUINT32_FROM_LE (_avih->us_frame);
+ avih.max_bps = GUINT32_FROM_LE (_avih->max_bps);
+ avih.pad_gran = GUINT32_FROM_LE (_avih->pad_gran);
+ avih.flags = GUINT32_FROM_LE (_avih->flags);
+ avih.tot_frames = GUINT32_FROM_LE (_avih->tot_frames);
+ avih.init_frames = GUINT32_FROM_LE (_avih->init_frames);
+ avih.streams = GUINT32_FROM_LE (_avih->streams);
+ avih.bufsize = GUINT32_FROM_LE (_avih->bufsize);
+ avih.width = GUINT32_FROM_LE (_avih->width);
+ avih.height = GUINT32_FROM_LE (_avih->height);
+ avih.scale = GUINT32_FROM_LE (_avih->scale);
+ avih.rate = GUINT32_FROM_LE (_avih->rate);
+ avih.start = GUINT32_FROM_LE (_avih->start);
+ avih.length = GUINT32_FROM_LE (_avih->length);
/* debug stuff */
GST_INFO ("avih tag found:");
@@ -958,7 +957,7 @@ gst_avi_demux_stream_odml (GstAviDemux *avi)
switch (tag) {
case GST_RIFF_TAG_dmlh: {
- gst_riff_dmlh dmlh;
+ gst_riff_dmlh dmlh, *_dmlh;
GstBuffer *buf;
if (!gst_riff_read_data (riff, &tag, &buf))
@@ -969,7 +968,8 @@ gst_avi_demux_stream_odml (GstAviDemux *avi)
gst_buffer_unref (buf);
break;
}
- dmlh.totalframes = GUINT32_FROM_LE (*((guint32 *) GST_BUFFER_DATA (buf)));
+ _dmlh = (gst_riff_dmlh *) GST_BUFFER_DATA (buf);
+ dmlh.totalframes = GUINT32_FROM_LE (_dmlh->totalframes);
GST_INFO ("dmlh tag found:");
GST_INFO (" totalframes: %u", dmlh.totalframes);
@@ -1048,18 +1048,17 @@ gst_avi_demux_stream_index (GstAviDemux *avi)
GST_INFO ("%u index entries", avi->index_size);
for (i = 0; i < avi->index_size; i++) {
- gst_riff_index_entry entry;
+ gst_riff_index_entry entry, *_entry;
avi_stream_context *stream;
gint stream_nr;
gst_avi_index_entry *target;
GstFormat format;
- guint32 *data;
- data = &((guint32 *) GST_BUFFER_DATA (buf))[i * 4];
- entry.id = GUINT32_FROM_LE (data);
- entry.offset = GUINT32_FROM_LE (data + 1);
- entry.flags = GUINT32_FROM_LE (data + 2);
- entry.size = GUINT32_FROM_LE (data + 3);
+ _entry = &((gst_riff_index_entry *) GST_BUFFER_DATA (buf))[i];
+ entry.id = GUINT32_FROM_LE (_entry->id);
+ entry.offset = GUINT32_FROM_LE (_entry->offset);
+ entry.flags = GUINT32_FROM_LE (_entry->flags);
+ entry.size = GUINT32_FROM_LE (_entry->size);
target = &avi->index_entries[i];
stream_nr = CHUNKID_TO_STREAMNR (entry.id);