Commit Graph

89 Commits

Author SHA1 Message Date
reimar 61fe3dcd6c cache: don't modify argument when stream control fails
When handling STREAM_CTRL calls for the cached stream, do not modify
the return parameter if the underlying stream returns an error for the
operation.

Avoids issues with some places that don't check the return
value of stream_control.

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@33802 b3059339-0415-0410-9bf9-f77b7e298cf2

Remove condition that is now always true.

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@33803 b3059339-0415-0410-9bf9-f77b7e298cf2
2011-07-06 13:01:08 +03:00
reimar cfe1af72af cache: allow STREAM_CTRL_GET_CURRENT_TIME with cache
Change code to allow STREAM_CTRL_GET_CURRENT_TIME with cache enabled.
Due to that time being from what is currently read into the cache it
is unfortunately somewhat inaccurate and unsmooth, however for streams
that do have stream timestamps it is till a lot better than going by
the demuxer alone.
In particular it fixes bug #1081, when starting a DVD with -chapter
following seeks would be relative to the start of the DVD instead
of the current position.

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@33605 b3059339-0415-0410-9bf9-f77b7e298cf2
2011-07-06 13:01:07 +03:00
reimar 9f6ba7a63d cosmetics: cache2.c: Fix comment
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@33600 b3059339-0415-0410-9bf9-f77b7e298cf2
2011-07-06 13:01:07 +03:00
reimar 9149ec5d89 cache2.c: Avoid warnings about discarding volatile
In practice this should not really make a difference, but
the code is not significantly worse and it is more correct.

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@33435 b3059339-0415-0410-9bf9-f77b7e298cf2

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@33447 b3059339-0415-0410-9bf9-f77b7e298cf2
2011-06-29 09:21:50 +03:00
reimar a37b71dc32 cache: call stream read with at least sector size space
Ensure we always pass a buffer of at least sector size to the read
function. This is never an issue with streams that have actual
sectors, as the reads will always return a multiple of sector size and
the cache is always used in blocks of sector size. However the rtp
protocol misuses this so it can just assume it always has a
sufficiently large buffer available and thus fails without this extra
hack.

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@33120 b3059339-0415-0410-9bf9-f77b7e298cf2
2011-05-01 16:29:57 +03:00
reimar ba3dab4639 terminal output: show cache fill changes in "PAUSED" message
Convert cache_fill_status into a function so we always get the latest
state, not whatever it was after the last read.

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32818 b3059339-0415-0410-9bf9-f77b7e298cf2

Update PAUSED status line with cache fill status if it changed.

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32819 b3059339-0415-0410-9bf9-f77b7e298cf2
2011-02-15 18:35:34 +02:00
reimar 35ceaf8918 cache: suggest increasing cache size in the "not filling!" message
Change "cache not filling" warning to include a hint to increase the
cache size.

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32815 b3059339-0415-0410-9bf9-f77b7e298cf2
2011-01-31 16:03:10 +02:00
reimar 0792847d4a cache: read up to 64 KiB at once from stream_file
Make the file protocol read up to 64 KiB at once when the cache is used,
assuming that files will generally be readable with high bandwidth.
This should improve performance when playing e.g. from high-latency
network shares.

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32616 b3059339-0415-0410-9bf9-f77b7e298cf2
2010-11-14 12:24:11 +02:00
reimar f94717cdc4 cache, stream: avoid extra memcpy when using cache
Add a stream_read_internal() function that reads directly into a given
buffer instead of the stream's internal one. Use this to read directly
into cache memory, avoiding a memcpy(). This requires also adding a
stream_seek_internal() as the normal seek function reads into the
stream's buffer.

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32559 b3059339-0415-0410-9bf9-f77b7e298cf2
2010-11-07 21:46:22 +02:00
reimar c6fb4e2aa2 cosmetics: cache2.c: Remove some irrelevant commented-out code
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32555 b3059339-0415-0410-9bf9-f77b7e298cf2
2010-11-07 21:45:41 +02:00
Uoti Urpala 3cb3bbbddc Add a simple capture feature (-capture)
If a specified key is pressed during playback, the current stream is
captured to a file, similar to what -dumpstream achieves.

original patch by Pásztor Szilárd, don tricon hu

Taken from the following svn commits, but with several fixes and
modifications (one obvious user-visible difference is that the default
key binding is 'C', not 'c'):

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32524 b3059339-0415-0410-9bf9-f77b7e298cf2

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32529 b3059339-0415-0410-9bf9-f77b7e298cf2

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32530 b3059339-0415-0410-9bf9-f77b7e298cf2
2010-11-02 07:48:31 +02:00
diego 01d8326435 cache: Remove unused cache_stats function
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32121 b3059339-0415-0410-9bf9-f77b7e298cf2
2010-11-02 04:16:45 +02:00
reimar 837b6d245d cache: add sanity-check for sector size
Add sanity-check for sector size to avoid strange crashes if it is
too large.

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31914 b3059339-0415-0410-9bf9-f77b7e298cf2
2010-11-02 04:15:34 +02:00
reimar 848610a002 cache: Don't mess up current position if time-based seek fails
Avoid STREAM_CTRL_SEEK_TO_TIME messing up the current position for stream
types which do not support it.
Fixes seeking in local flv files.

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31907 b3059339-0415-0410-9bf9-f77b7e298cf2
2010-11-02 04:15:01 +02:00
reimar 5544c07aab cache: Use sigaction() instead of signal()
Signal() has an unavoidable race-condition on "broken by
backwards-compatibility" systems like Solaris. (Upon receiving a
signal, the handler is reset to SIG_DFL, thus a second signal will
kill the process. The problem could also be reduced by re-installing
the handler inside the handler, but there's still a race-condition and
the risk of the handler being called inside the handler).

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31738 b3059339-0415-0410-9bf9-f77b7e298cf2
2010-11-02 04:14:44 +02:00
reimar 93891d0880 cache: Respect -cache-seek-min also for on-disk files
Should reduce issues with mp4/mov (playing those may involve a lot of
seeking inside the file).

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31371 b3059339-0415-0410-9bf9-f77b7e298cf2
2010-11-02 04:07:42 +02:00
Uoti Urpala 0e0d88ede9 Merge svn changes up to r31256 2010-05-30 16:39:41 +03:00
Uoti Urpala 688c66a5d5 Merge svn changes up to r31244 2010-05-30 16:29:14 +03:00
Uoti Urpala 8ce2c41ca5 Merge svn changes up to r31226 2010-05-30 16:25:04 +03:00
Uoti Urpala 2f1a518d45 Merge svn changes up to r31211
The merged cache2.c changes are known to have problems. Will merge
further fixes to them before merging this to the master branch.
2010-05-30 16:14:55 +03:00
Uoti Urpala 1888e57af7 cosmetics: "struct vf_instance* vf" -> "struct vf_instance *vf"
Change 'struct vf_instance' pointer arguments to more standard style
as in the subject. Also some other minor formatting fixes.

Patch by Diego Biurrun.
2010-05-29 17:20:44 +03:00
reimar a564c5a6cc Fix typo in message.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31256 b3059339-0415-0410-9bf9-f77b7e298cf2
2010-05-28 20:59:53 +00:00
reimar 27d41fa5b3 100l, stream_check_for_interrupt argument is not in usec,
so we would end up sleeping for 10s instead of 10ms.


git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31254 b3059339-0415-0410-9bf9-f77b7e298cf2
2010-05-28 18:47:03 +00:00
reimar 6f7c1ea409 Improve handling of cache process/thread hanging/being killed.
In particular allow a single STRG+C to quit MPlayer.


git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31251 b3059339-0415-0410-9bf9-f77b7e298cf2
2010-05-28 17:26:31 +00:00
reimar 4448190ef0 Fix cache process accidentally being killed by SIGUSR1.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31250 b3059339-0415-0410-9bf9-f77b7e298cf2
2010-05-28 16:57:16 +00:00
diego ae85fe1d2f Fix a bunch of typos in the stream cache code.
patch by Giorgio Vazzana, mywing81 gmail com


git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31242 b3059339-0415-0410-9bf9-f77b7e298cf2
2010-05-27 22:18:10 +00:00
reimar c36de0867f Retry reading even if we hit eof before.
This allows playing growing files even with a large cache.


git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31226 b3059339-0415-0410-9bf9-f77b7e298cf2
2010-05-26 18:23:43 +00:00
reimar 328306708f Re-enable wakeup-on-signal for cache process.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31224 b3059339-0415-0410-9bf9-f77b7e298cf2
2010-05-26 17:56:11 +00:00
reimar d304c1d56c Disable waking the cache process up via a signal, it
currently causes read errors due to not handling EINTR.


git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31223 b3059339-0415-0410-9bf9-f77b7e298cf2
2010-05-26 17:27:38 +00:00
reimar 8e84b9288c Slightly reduce number of #ifs
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31204 b3059339-0415-0410-9bf9-f77b7e298cf2
2010-05-23 22:26:10 +00:00
reimar bc2adc2e48 Use an extra define to simplify ifdefs
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31203 b3059339-0415-0410-9bf9-f77b7e298cf2
2010-05-23 22:09:40 +00:00
reimar 991b9b9e6d Try reducing the #ifdef mess for the different cache variants.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31202 b3059339-0415-0410-9bf9-f77b7e298cf2
2010-05-23 22:04:01 +00:00
reimar 939df8d5a8 Extract the cache main loop into a separate function.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31201 b3059339-0415-0410-9bf9-f77b7e298cf2
2010-05-23 21:58:50 +00:00
reimar 2ced41082c Optimize cache behaviour for the many-consecutive-seeks case.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31199 b3059339-0415-0410-9bf9-f77b7e298cf2
2010-05-23 21:53:48 +00:00
reimar cc7a2d3287 Add code to wake up cache process when e.g. a seek is needed.
Dramatically reduces seeking times with lavf ogg demuxer.
Needs a spearate implementation for the thread-based cache implementation.


git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31198 b3059339-0415-0410-9bf9-f77b7e298cf2
2010-05-23 19:49:28 +00:00
Uoti Urpala 00323c06e2 Delete things related to old translation system
Remove the help/ subdirectory, configure code to create toplevel
help_mp.h, and all the '#include "help_mp.h"' lines from .c files.
2010-03-10 03:47:14 +02:00
Uoti Urpala bc1d0ca37d Merge svn changes up to r30798 2010-03-10 02:35:02 +02:00
Uoti Urpala 12d3caebc7 Merge svn changes up to r30475 2010-03-09 19:18:43 +02:00
Uoti Urpala 5234c72e28 Restore collapsed whitespace in output messages
For some reason commit e306174952, which
replaced translation macro names with the corresponding English
strings, also collapsed multiple consecutive space characters into
one. Change most of these back. In a couple of cases the amount of
whitespace is important for alignment, and for the rest it at least
keeps the strings closer to the existing translations.
2010-03-07 21:34:54 +02:00
reimar 827df51f1d Threaded cache fixes: do not free the stream_t struct twice on windows
and make sure the cache thread quits also for streams without a control
function (e.g. http).


git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30773 b3059339-0415-0410-9bf9-f77b7e298cf2
2010-02-27 21:02:44 +00:00
reimar 50fed7d1f9 Restructure #ifs to be clearer, also ensures that we return from the thread
proc instead of calling exit() on __MINGW32__.


git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30754 b3059339-0415-0410-9bf9-f77b7e298cf2
2010-02-27 06:17:14 +00:00
reimar bdf546c7c6 Remove declarations of functions now already declared in stream.h
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30733 b3059339-0415-0410-9bf9-f77b7e298cf2
2010-02-25 22:19:32 +00:00
diego 2c8f5fa622 stream: Mark functions not used outside of their files as static.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30599 b3059339-0415-0410-9bf9-f77b7e298cf2
2010-02-16 16:32:38 +00:00
diego 59e26907b6 Add license header to all files missing it in the stream subdirectory.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30468 b3059339-0415-0410-9bf9-f77b7e298cf2
2010-01-30 22:26:47 +00:00
Uoti Urpala e28e4a1b15 Merge svn changes up to r30419 2010-01-25 15:59:53 +02:00
reimar 570f1f5dec Always call cache_uninit to immediately free everything cache-related if we
fail to enable the cache.


git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30404 b3059339-0415-0410-9bf9-f77b7e298cf2
2010-01-23 12:27:13 +00:00
reimar 4e28b4bc9e Change code to allow playing a stream even if enabling the cache failed
while still handling it when the user aborts the cache fill.


git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30402 b3059339-0415-0410-9bf9-f77b7e298cf2
2010-01-23 12:13:28 +00:00
reimar 0e86058912 Make cache_init static, it is not used outside this file
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30401 b3059339-0415-0410-9bf9-f77b7e298cf2
2010-01-23 11:51:13 +00:00
reimar 567a8d69a4 Add an exit() to silence a gcc warning and ensure forked code will never
leave the cache-loop function.


git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30397 b3059339-0415-0410-9bf9-f77b7e298cf2
2010-01-23 11:03:10 +00:00
reimar a2d8222f3d 100l, shouldn't write to memory after freeing it.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30396 b3059339-0415-0410-9bf9-f77b7e298cf2
2010-01-23 11:00:13 +00:00