diff options
author | nicodvb <nicodvb@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2005-11-21 22:53:14 +0000 |
---|---|---|
committer | nicodvb <nicodvb@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2005-11-21 22:53:14 +0000 |
commit | 7a8f8317fd501364b3c76156189c2100d338097f (patch) | |
tree | cb87cf317d3646b72ff50a0cb45d1a89142fd430 /libmpdemux/muxer_mpeg.c | |
parent | 76b842a3c1afc5385ac9dc060be99fae43121eaa (diff) | |
download | mpv-7a8f8317fd501364b3c76156189c2100d338097f.tar.bz2 mpv-7a8f8317fd501364b3c76156189c2100d338097f.tar.xz |
buffering in the muxer layer; patch by Corey Hickey (bugfood-ml ad fatooh punctum org) plus small fixes by me
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@17024 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpdemux/muxer_mpeg.c')
-rw-r--r-- | libmpdemux/muxer_mpeg.c | 12 |
1 files changed, 4 insertions, 8 deletions
diff --git a/libmpdemux/muxer_mpeg.c b/libmpdemux/muxer_mpeg.c index edd9b75ee6..4086a1d9c7 100644 --- a/libmpdemux/muxer_mpeg.c +++ b/libmpdemux/muxer_mpeg.c @@ -1991,7 +1991,6 @@ static size_t parse_mpeg12_video(muxer_stream_t *s, muxer_priv_t *priv, muxer_he if(s->buffer[3]) { // Sequence or GOP -- scan for Picture - s->gop_start = s->h.dwLength; while (ptr < len-5 && (s->buffer[ptr] != 0 || s->buffer[ptr+1] != 0 || s->buffer[ptr+2] != 1 || s->buffer[ptr+3] != 0)) ptr++; @@ -2454,10 +2453,8 @@ static void mpegfile_write_chunk(muxer_stream_t *s,size_t len,unsigned int flags priv->vbytes += len; sz <<= 1; - s->h.dwLength++; - s->size += len; - s->timer = (double)s->h.dwLength*s->h.dwScale/s->h.dwRate; } else { // MUXER_TYPE_AUDIO + double fake_timer; spriv->type = 0; stream_format = s->wf->wFormatTag; @@ -2522,9 +2519,7 @@ static void mpegfile_write_chunk(muxer_stream_t *s,size_t len,unsigned int flags } } - parse_audio(s, 0, &nf, &(s->timer)); - s->h.dwLength += nf; - s->size += len; + parse_audio(s, 0, &nf, &fake_timer); sz = max(len, 2 * priv->packet_size); } @@ -2557,12 +2552,13 @@ static void mpegfile_write_chunk(muxer_stream_t *s,size_t len,unsigned int flags static void mpegfile_write_index(muxer_t *muxer) { int i, nf; + double fake_timer; muxer_priv_t *priv = (muxer_priv_t *) muxer->priv; for(i = 0; i < muxer->avih.dwStreams; i++) { if(muxer->streams[i]->type == MUXER_TYPE_AUDIO) - parse_audio(muxer->streams[i], 1, &nf, &(muxer->streams[i]->timer)); + parse_audio(muxer->streams[i], 1, &nf, &fake_timer); } while(flush_buffers(muxer, 0) > 0); flush_buffers(muxer, 1); |