diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2010-01-30 23:19:59 +0000 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2010-01-30 23:19:59 +0000 |
commit | 2ef4605373129d0f16b876386cd05963dc6be0fb (patch) | |
tree | ad5955a62b6937a1ecf5e2c18f65fd991a98197f | |
parent | c55806e3a273b643f6e34c9806881fa2c777af0b (diff) | |
download | ffmpeg-2ef4605373129d0f16b876386cd05963dc6be0fb.tar.gz |
Fix seeking by bytes with the mouse and do so by default if the duration is
nonsense.
Originally committed as revision 21563 to svn://svn.ffmpeg.org/ffmpeg/trunk
-rw-r--r-- | ffplay.c | 13 |
1 files changed, 9 insertions, 4 deletions
@@ -971,7 +971,7 @@ static double get_master_clock(VideoState *is) } /* seek in the stream */ -static void stream_seek(VideoState *is, int64_t pos, int64_t rel) +static void stream_seek(VideoState *is, int64_t pos, int64_t rel, int seek_by_bytes) { if (!is->seek_req) { is->seek_pos = pos; @@ -2319,11 +2319,11 @@ static void event_loop(void) else incr *= 180000.0; pos += incr; - stream_seek(cur_stream, pos, incr); + stream_seek(cur_stream, pos, incr, 1); } else { pos = get_master_clock(cur_stream); pos += incr; - stream_seek(cur_stream, (int64_t)(pos * AV_TIME_BASE), (int64_t)(incr * AV_TIME_BASE)); + stream_seek(cur_stream, (int64_t)(pos * AV_TIME_BASE), (int64_t)(incr * AV_TIME_BASE), 0); } } break; @@ -2333,6 +2333,10 @@ static void event_loop(void) break; case SDL_MOUSEBUTTONDOWN: if (cur_stream) { + if(seek_by_bytes || cur_stream->ic->duration<=0){ + uint64_t size= url_fsize(cur_stream->ic->pb); + stream_seek(cur_stream, size*(double)event.button.x/(double)cur_stream->width, 0, 1); + }else{ int64_t ts; int ns, hh, mm, ss; int tns, thh, tmm, tss; @@ -2350,7 +2354,8 @@ static void event_loop(void) ts = frac*cur_stream->ic->duration; if (cur_stream->ic->start_time != AV_NOPTS_VALUE) ts += cur_stream->ic->start_time; - stream_seek(cur_stream, ts, 0); + stream_seek(cur_stream, ts, 0, 0); + } } break; case SDL_VIDEORESIZE: |