From 1c35794efd7d025457e527b61f7c23fe375c2f5a Mon Sep 17 00:00:00 2001 From: wm4 Date: Thu, 6 Jun 2013 20:39:58 +0200 Subject: stream: remove stream_reset() This function was called in various places. Most time, it was used before a seek. In other cases, the purpose was apparently resetting the EOF flag. As far as I can see, this makes no sense anymore. At least the stream_reset() calls paired with stream_seek() are completely pointless. A seek will either seek inside the buffer (and reset the EOF flag), or do an actual seek and reset all state. --- demux/aviheader.c | 3 --- demux/demux_asf.c | 1 - demux/demux_avi.c | 1 - demux/demux_lavf.c | 1 - demux/demux_ts.c | 5 ----- stream/stream.c | 14 +++----------- stream/stream.h | 1 - sub/subreader.c | 2 -- 8 files changed, 3 insertions(+), 25 deletions(-) diff --git a/demux/aviheader.c b/demux/aviheader.c index 2226be25d4..c1b9c59692 100644 --- a/demux/aviheader.c +++ b/demux/aviheader.c @@ -479,7 +479,6 @@ if (priv->isodml && (index_mode==-1 || index_mode==0 || index_mode==1)) { // read the standard indices for (cx = &priv->suidx[0], i=0; isuidx_size; cx++, i++) { - stream_reset(demuxer->stream); for (j=0; jnEntriesInUse; j++) { int ret1, ret2; memset(&cx->stdidx[j], 0, 32); @@ -543,7 +542,6 @@ if (priv->isodml && (index_mode==-1 || index_mode==0 || index_mode==1)) { { uint32_t id; uint32_t db = 0; - stream_reset (demuxer->stream); // find out the video stream id. I have seen files with 01db. for (idx = &((AVIINDEXENTRY *)priv->idx)[0], i=0; iidx_size; i++, idx++){ @@ -590,7 +588,6 @@ freeout: if(index_mode>=2 || (priv->idx_size==0 && index_mode==1)){ int idx_pos = 0; // build index for file: - stream_reset(demuxer->stream); stream_seek(demuxer->stream,demuxer->movi_start); priv->idx_size=0; diff --git a/demux/demux_asf.c b/demux/demux_asf.c index 0b8da6930f..f800e09dc3 100644 --- a/demux/demux_asf.c +++ b/demux/demux_asf.c @@ -628,7 +628,6 @@ static demuxer_t* demux_open_asf(demuxer_t* demuxer) init_priv(asf); if (!read_asf_header(demuxer,asf)) return NULL; - stream_reset(demuxer->stream); stream_seek(demuxer->stream,demuxer->movi_start); // demuxer->idx_pos=0; // demuxer->endpos=avi_header.movi_end; diff --git a/demux/demux_avi.c b/demux/demux_avi.c index daf542bfac..a07f022cde 100644 --- a/demux/demux_avi.c +++ b/demux/demux_avi.c @@ -456,7 +456,6 @@ static demuxer_t* demux_open_avi(demuxer_t* demuxer){ demuxer->video->id=-1; // autodetect } - stream_reset(demuxer->stream); stream_seek(demuxer->stream,demuxer->movi_start); if(priv->idx_size>1){ // decide index format: diff --git a/demux/demux_lavf.c b/demux/demux_lavf.c index efe8edd43c..53f583570f 100644 --- a/demux/demux_lavf.c +++ b/demux/demux_lavf.c @@ -143,7 +143,6 @@ static int64_t mp_seek(void *opaque, int64_t pos, int whence) return -1; current_pos = stream_tell(stream); if (stream_seek(stream, pos) == 0) { - stream_reset(stream); stream_seek(stream, current_pos); return -1; } diff --git a/demux/demux_ts.c b/demux/demux_ts.c index 8b2a2d84ba..a16891907d 100644 --- a/demux/demux_ts.c +++ b/demux/demux_ts.c @@ -470,7 +470,6 @@ static int ts_check_file(demuxer_t * demuxer) if(_read < buf_size-1) { mp_msg(MSGT_DEMUX, MSGL_V, "COULDN'T READ ENOUGH DATA, EXITING TS_CHECK\n"); - stream_reset(demuxer->stream); return 0; } @@ -992,9 +991,6 @@ static demuxer_t *demux_open_ts(demuxer_t * demuxer) demuxer->type= DEMUXER_TYPE_MPEG_TS; demuxer->ts_resets_possible = true; - - stream_reset(demuxer->stream); - packet_size = ts_check_file(demuxer); if(!packet_size) return NULL; @@ -1079,7 +1075,6 @@ static demuxer_t *demux_open_ts(demuxer_t * demuxer) start_pos - priv->ts.packet_size; demuxer->movi_start = start_pos; demuxer->reference_clock = MP_NOPTS_VALUE; - stream_reset(demuxer->stream); stream_seek(demuxer->stream, start_pos); //IF IT'S FROM A PIPE IT WILL FAIL, BUT WHO CARES? diff --git a/stream/stream.c b/stream/stream.c index d77ecfae6e..d27b3f5f3f 100644 --- a/stream/stream.c +++ b/stream/stream.c @@ -304,7 +304,8 @@ static int stream_reconnect(stream_t *s) return 0; s->eof = 1; - stream_reset(s); + s->pos = 0; + s->buf_pos = s->buf_len = 0; // Some streams (internal http.c) don't support STREAM_CTRL_RECONNECT, // but do it when trying to seek. @@ -523,6 +524,7 @@ static int stream_seek_unbuffered(stream_t *s, int64_t newpos) } } } + s->eof = 0; // EOF reset when seek succeeds. return -1; } @@ -561,7 +563,6 @@ static int stream_seek_long(stream_t *s, int64_t pos) break; // EOF } - s->eof = 0; // EOF reset when seek succeeds. while (stream_fill_buffer(s) > 0) { if (pos <= s->buf_len) { s->buf_pos = pos; // byte position in sector @@ -623,15 +624,6 @@ int stream_skip(stream_t *s, int64_t len) return 1; } -void stream_reset(stream_t *s) -{ - if (s->eof) { - s->pos = 0; - s->buf_pos = s->buf_len = 0; - s->eof = 0; - } -} - int stream_control(stream_t *s, int cmd, void *arg) { if (!s->control) diff --git a/stream/stream.h b/stream/stream.h index 73cfd6e87d..db58a2fba0 100644 --- a/stream/stream.h +++ b/stream/stream.h @@ -307,7 +307,6 @@ struct MPOpts; */ struct bstr stream_read_complete(struct stream *s, void *talloc_ctx, int max_size, int padding_bytes); -void stream_reset(stream_t *s); int stream_control(stream_t *s, int cmd, void *arg); void stream_update_size(stream_t *s); void free_stream(stream_t *s); diff --git a/sub/subreader.c b/sub/subreader.c index 8c5a259196..f3821ba5ab 100644 --- a/sub/subreader.c +++ b/sub/subreader.c @@ -1212,7 +1212,6 @@ static const char* guess_cp(stream_t *st, const char *preferred_language, const detected_sub_cp = guess_buffer_cp(buffer, buflen, preferred_language, fallback); free(buffer); - stream_reset(st); stream_seek(st,0); return detected_sub_cp; @@ -1255,7 +1254,6 @@ sub_data* sub_read_file(char *filename, float fps, struct MPOpts *opts) int sub_format = SUB_INVALID; for (utf16 = 0; sub_format == SUB_INVALID && utf16 < 3; utf16++) { sub_format=sub_autodetect (fd, &uses_time, utf16); - stream_reset(fd); stream_seek(fd,0); } utf16--; -- cgit v1.2.3