changeset 29770:db80b9d20406

demuxer.c: Add initialization missing from previous commit Reimar's previous commit ("Unbreak the demuxer-specific code in video.c with e.g.") added the new field "non_interleaved" in demux_stream structs, but this field was not initialized anywhere. Under suitable circumstances this could cause a "Too many video/audio packets in the buffer" error and failing playback. Fix the problem by cleaning up the code that creates new instances of the struct. Now fields will be initialized to 0 by default.
author uau
date Mon, 02 Nov 2009 01:40:09 +0000
parents 3fd86d75ee46
children 1ff71e340e28
files libmpdemux/demuxer.c
diffstat 1 files changed, 5 insertions(+), 21 deletions(-) [+]
line wrap: on
line diff
--- a/libmpdemux/demuxer.c	Mon Nov 02 00:11:30 2009 +0000
+++ b/libmpdemux/demuxer.c	Mon Nov 02 01:40:09 2009 +0000
@@ -187,27 +187,11 @@
 demux_stream_t *new_demuxer_stream(struct demuxer_st *demuxer, int id)
 {
     demux_stream_t *ds = malloc(sizeof(demux_stream_t));
-    ds->buffer_pos = ds->buffer_size = 0;
-    ds->buffer = NULL;
-    ds->pts = 0;
-    ds->pts_bytes = 0;
-    ds->eof = 0;
-    ds->pos = 0;
-    ds->dpos = 0;
-    ds->pack_no = 0;
-
-    ds->packs = 0;
-    ds->bytes = 0;
-    ds->first = ds->last = ds->current = NULL;
-    ds->id = id;
-    ds->demuxer = demuxer;
-
-    ds->asf_seq = -1;
-    ds->asf_packet = NULL;
-
-    ds->ss_mul = ds->ss_div = 0;
-
-    ds->sh = NULL;
+    *ds = (demux_stream_t){
+        .id = id,
+        .demuxer = demuxer,
+        .asf_seq = -1,
+    };
     return ds;
 }