1
mirror of https://github.com/mpv-player/mpv synced 2024-12-24 07:33:46 +01:00
Commit Graph

542 Commits

Author SHA1 Message Date
Uoti Urpala
e28e4a1b15 Merge svn changes up to r30419 2010-01-25 15:59:53 +02:00
compn
a30dbabd9f clean up netstream docs in TOOLS/README
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30406 b3059339-0415-0410-9bf9-f77b7e298cf2
2010-01-23 15:41:58 +00:00
Uoti Urpala
14bb3416c7 vo_vdpau: Add support for high-quality scaling feature
Part of the code is currently under #ifdef to allow compilation with
older VDPAU library versions; that can be removed later.

Partially based on a patch by Carl Eugen Hoyos.
2009-11-15 18:39:48 +02:00
Uoti Urpala
201bef7ee1 Implement vsync-aware frame timing for VDPAU
Main things added are custom frame dropping for VDPAU to work around
the display FPS limit, frame timing adjustment to avoid jitter when
video frame times keep falling near vsyncs, and use of VDPAU's timing
feature to keep one future frame queued in advance.

NVIDIA's VDPAU implementation refuses to change the displayed frame
more than once per vsync. This set a limit on how much video could be
sped up, and caused problems for nearly all videos on low-FPS video
projectors (playing 24 FPS video on a 24 FPS projector would not work
reliably as MPlayer may need to slightly speed up the video for AV
sync). This commit adds a framedrop mechanism that drops some frames
so that no more than one is sent for display per vsync. The code
tries to select the dropped frames smartly, selecting the best one to
show for each vsync. Because of the timing features needed the drop
functionality currently does not work if the correct-pts option is
disabled.

The code also adjusts frame timing slightly to avoid jitter. If you
for example play 24 FPS video content on a 72 FPS display then
normally a frame would be shown for 3 vsyncs, but if the frame times
happen to fall near vsyncs and change between just before and just
after then there could be frames alternating between 2 and 4
vsyncs. The code changes frame timing by up to one quarter vsync
interval to avoid this.

The above functionality depends on having reliable vsync timing
information available. The display refresh rate is not directly
provided by the VDPAU API. The current code uses information from the
XF86VidMode extension if available; I'm not sure how common cases
where that is inaccurate are. The refresh rate can be specified
manually if necessary.

After the changes in this commit MPlayer now always tries to keep one
frame queued for future display using VDPAU's internal timing
mechanism (however no more than 50 ms to the future). This should make
video playback somewhat more robust against timing inaccuracies caused
by system load.
2009-11-15 12:45:58 +02:00
Uoti Urpala
3f215c9f8e Merge branch 'vdpau' into build
* vdpau: (22 commits)
  VO: Prefer vo_vdpau over vo_xv again
  vo_vdpau: Fix X event handling bugs
  vo_vdpau: Fix memory corruption bug with MP_IMGTYPE_NUMBERED
  core/VO: Allow VO drivers to add/modify frames
  video_out.h: Cosmetics
  VO interface: Remove obsolete draw_frame() from new interface
  vo_vdpau: Support recovering from VDPAU display preemption
  vo_vdpau: Support updating OSD while paused
  vo_vdpau.c: Reindent control() switch statement
  vo_vdpau: Allocate one large surface for EOSD content
  vo_vdpau.c: cosmetics
  vo_vdpau: reindent after GUI code removal
  vo_vpdau: Clean up uninit logic
  vo_vdpau: Make CHECK_ST macro safer
  vo_vdpau: Move all remaining static/global variables to context
  vo_vdpau: Move things to context struct
  vo_vdpau: Make info struct const
  vo_vdpau: Replace global function table with context variable
  vo_vdpau: Move VDPAU interface pointers into one struct
  vo_vdpau: Add template file for VDPAU functions
  ...
2009-09-19 00:28:17 +03:00
Uoti Urpala
e1ecc43152 Merge svn changes up to r29684 2009-09-16 22:28:12 +03:00
diego
2acf75aeed Convert to UTF-8.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29670 b3059339-0415-0410-9bf9-f77b7e298cf2
2009-09-10 18:35:10 +00:00
diego
37677802e5 Fix bashism: Use '$(( ))' syntax instead of '(( ))' for arithmetic expressions.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29669 b3059339-0415-0410-9bf9-f77b7e298cf2
2009-09-10 18:29:34 +00:00
diego
b70a91d505 Avoid bash-specific 'let' syntax in shell scripts.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29653 b3059339-0415-0410-9bf9-f77b7e298cf2
2009-09-07 10:37:16 +00:00
Uoti Urpala
3b3dfc02ac vo_vdpau: Support recovering from VDPAU display preemption
Add code to reinitialize all VDPAU objects if a display preemption
condition occurs. Reinitializing them in the middle of playback will
cause video corruption at least until the next keyframe when using
hardware decoding, but decoding does seem to recover after a keyframe.
2009-09-07 03:12:02 +03:00
Uoti Urpala
d9cea6a98b vo_vdpau: Allocate one large surface for EOSD content
Create a single large bitmap surface for EOSD objects and pack all the
bitmap rectangles inside that. The old code created a separate bitmap
surface for every bitmap and then resized the cached surfaces when
drawing later frames. The number of surfaces could be large (at least
about 2000 for one sample subtitle script) so this was very
inefficient. The old code also used a very simple strategy for pairing
existing surfaces to new bitmaps; it could resize tiny surfaces to
hold large glyphs while using existing large surfaces to hold tiny
glyphs and as a result allocate arbitrarily much more total surface
area than was necessary.

The new code only supports using a single surface, freeing it and
allocating a larger one if necessary. It would be possible to support
multiple surfaces in case of hitting the maximum bitmap surface size,
but I'll wait to see if that is actually needed before implementing
it. NVIDIA seems to support bitmap surface sizes up to 8192x8192, so
it would take either a really pathological subtitle script rendered at
a high resolution or an implementation with lower limits before
multiple surfaces would be necessary.

The packing algorithm should successfully pack the bitmaps into a
surface of size w*h as long as the total area of the bitmaps does not
exceed 16/17 (w-max_bitmap_width)*(h-max_bitmap_height), so there
should be no totally catastrophic failure cases. The 16/17 factor
comes from approximate sorting used in the algorithm. On average
performance should be better than this minimum guaranteed level.
2009-09-05 06:25:47 +03:00
Uoti Urpala
575331d73c Merge branch 'vdpau_old' into vdpau 2009-08-31 22:18:51 +03:00
Uoti Urpala
dc44507f2a vo_vdpau: Add template file for VDPAU functions
Add a template file that contains a single listing of various
information needed about the VDPAU interface functions, and is then
included multiple times to create required declarations and tables.
Previously some of the information needed to be duplicated for each of
those uses.
2009-08-29 20:18:42 +03:00
Uoti Urpala
0eb321bf2c Remove trailing whitespace from most files 2009-07-07 02:34:35 +03:00
diego
6e9cbdc104 whitespace cosmetics: Remove all trailing whitespace.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29305 b3059339-0415-0410-9bf9-f77b7e298cf2
2009-05-13 02:58:57 +00:00
siretart
5e08e6c4b5 commit remaining binary_codecs.sh changes from debian.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29228 b3059339-0415-0410-9bf9-f77b7e298cf2
2009-04-23 21:01:07 +00:00
siretart
0688204a7d check for missing libstdc++
this version of the check assumes that we run on a system with apt-get
installed and configured. We should probably check that this is actually
true. Or more ideally add support for yum for fedora systems.


git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29227 b3059339-0415-0410-9bf9-f77b7e298cf2
2009-04-23 20:59:46 +00:00
siretart
fc7d8af3b4 more cosmetics
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29226 b3059339-0415-0410-9bf9-f77b7e298cf2
2009-04-23 20:56:59 +00:00
diego
72451328bc whitespace cosmetics
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29225 b3059339-0415-0410-9bf9-f77b7e298cf2
2009-04-23 18:54:22 +00:00
siretart
e3f02a93cc Part 3 of syncing binary_codecs.sh with Debian
This patch contains no functional changes again, only whitespace fixes
that has been misse from Part 1 have been included.


git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29223 b3059339-0415-0410-9bf9-f77b7e298cf2
2009-04-23 08:46:05 +00:00
siretart
23f4613d63 Part 2 of syncing binary_codecs.sh with Debian
This patch contains the OKed parts of Diego's review from 23. Apr 2009


git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29222 b3059339-0415-0410-9bf9-f77b7e298cf2
2009-04-23 08:37:20 +00:00
siretart
329513035e Part 1 of syncing binary_codecs.sh with Debian
This patch contains no functional changes, only whitespace fixes from
Debian.


git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29220 b3059339-0415-0410-9bf9-f77b7e298cf2
2009-04-22 20:46:33 +00:00
diego
e530d4b467 Replace duplicated code by a macro.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28938 b3059339-0415-0410-9bf9-f77b7e298cf2
2009-03-12 11:55:26 +00:00
diego
143a63fd9e Fix and restructure fastmemcpybench. It is now one binary that runs all
available memcpy variants and prints benchmark results about them.


git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28929 b3059339-0415-0410-9bf9-f77b7e298cf2
2009-03-10 10:05:09 +00:00
reimar
591ce556b7 Make fastmemcpybench almost working - only thing missing is a way to
override HAVE_MMX etc. from config.h.


git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28906 b3059339-0415-0410-9bf9-f77b7e298cf2
2009-03-09 12:59:14 +00:00
diego
807b942713 comment/output cosmetics
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28904 b3059339-0415-0410-9bf9-f77b7e298cf2
2009-03-09 11:32:43 +00:00
diego
a0bce02b7c whitespace cosmetics:
- Remove all tabs and trailing whitespace.
- Indent with 4 spaces.
- K&R-ify and prettyprint some parts.


git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28903 b3059339-0415-0410-9bf9-f77b7e298cf2
2009-03-09 11:28:31 +00:00
michael
1f61255588 Add test for C memcpy()
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28894 b3059339-0415-0410-9bf9-f77b7e298cf2
2009-03-08 15:56:20 +00:00
michael
1a493bf6a8 Resurrect script needed for easy use of fastmemcpybench.c.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28893 b3059339-0415-0410-9bf9-f77b7e298cf2
2009-03-08 15:43:52 +00:00
michael
b638947171 Revert
r3082 | michael | 2001-11-23 13:00:40 +0100 (Fri, 23 Nov 2001) | 2 lines
	missaligned arrays, as nick requested
Reason: idiotic idea


git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28890 b3059339-0415-0410-9bf9-f77b7e298cf2
2009-03-08 15:20:14 +00:00
diego
6d7d713ac9 Remove now unnecessary linking hacks.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28781 b3059339-0415-0410-9bf9-f77b7e298cf2
2009-03-01 15:51:43 +00:00
diego
b598021ed9 HAVE_WINSOCK2_H is now a 0/1 definition.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28443 b3059339-0415-0410-9bf9-f77b7e298cf2
2009-02-01 15:15:07 +00:00
diego
824abb5a65 Add missing 'void' keyword to parameterless function declarations.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28267 b3059339-0415-0410-9bf9-f77b7e298cf2
2009-01-05 14:48:03 +00:00
diego
21f5949d4a Relicense to GPLv2 or later with the author's permission.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28230 b3059339-0415-0410-9bf9-f77b7e298cf2
2009-01-02 11:46:34 +00:00
diego
15fd1a1636 Fix reference to wrong DLL filename in header comment.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28229 b3059339-0415-0410-9bf9-f77b7e298cf2
2009-01-02 11:45:39 +00:00
diego
c2913af38f Fix confused references to DLL filenames.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28228 b3059339-0415-0410-9bf9-f77b7e298cf2
2009-01-01 23:16:36 +00:00
diego
26b29f4f2d Replace all occurrences of '__volatile__' and '__volatile' by plain 'volatile'.
We were using an inconsistent mix of the three variants and 'volatile' should
be the most correct and portable variant.


git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@27791 b3059339-0415-0410-9bf9-f77b7e298cf2
2008-10-16 20:17:56 +00:00
diego
6b52a2e974 Change all occurrences of asm and __asm to __asm__, same as was done for FFmpeg.
Neither variant is valid C99 syntax, but __asm__ is the most portable variant.


git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@27788 b3059339-0415-0410-9bf9-f77b7e298cf2
2008-10-16 18:59:27 +00:00
diego
17f509905c Rename stream/netstream.h to stream/stream_netstream.h; netstream.h to make it
clearer that netstream.h belongs to stream_netstream.c.


git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@27779 b3059339-0415-0410-9bf9-f77b7e298cf2
2008-10-16 17:01:40 +00:00
diego
78066d185e Remove MinGW cruft.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@27695 b3059339-0415-0410-9bf9-f77b7e298cf2
2008-10-03 23:44:40 +00:00
diego
a2ad015203 cosmetics: prettyprinting
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@27668 b3059339-0415-0410-9bf9-f77b7e298cf2
2008-09-28 10:14:45 +00:00
diego
4ca1fa0a08 Upgrade license of LGPL 2 or later files to LGPL 2.1 or later.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@27614 b3059339-0415-0410-9bf9-f77b7e298cf2
2008-09-15 05:40:29 +00:00
diego
583ba8dcb7 Remove encode2mpeglight, it is only an outdated stripped-down version of the
tool maintained externally at http://encode2mpeg.sf.net/.


git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@27537 b3059339-0415-0410-9bf9-f77b7e298cf2
2008-09-07 12:58:23 +00:00
diego
5e5c1feb69 license header cosmetics
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@27536 b3059339-0415-0410-9bf9-f77b7e298cf2
2008-09-06 18:39:12 +00:00
diego
f2b8ab9994 Fix incorrect FSF address in license header.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@27535 b3059339-0415-0410-9bf9-f77b7e298cf2
2008-09-06 18:21:18 +00:00
diego
3af860b877 Rename HAVE_WINSOCK preprocessor condition to HAVE_WINSOCK_H.
This is what it is called in FFmpeg and more consistent with other
names for similar conditionals. This fixes a potential compilation
failure on MinGW, as described in Bugzilla #1262.


git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@27493 b3059339-0415-0410-9bf9-f77b7e298cf2
2008-08-29 20:05:08 +00:00
diego
e588ab056d Change a bunch of video-output-specific preprocessor directives from a HAVE_
prefix to a CONFIG_ prefix.


git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@27397 b3059339-0415-0410-9bf9-f77b7e298cf2
2008-08-02 17:38:11 +00:00
diego
9c355fec91 Rename binary-codecs.sh to binary_codecs.sh as it is called in Debian.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@27384 b3059339-0415-0410-9bf9-f77b7e298cf2
2008-07-31 22:40:22 +00:00
diego
8b9c830dc3 Revert previous broken rename of binary-codecs.sh that had random changes.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@27383 b3059339-0415-0410-9bf9-f77b7e298cf2
2008-07-31 22:38:34 +00:00
diego
26a047a816 Rename binary-codecs.sh once more to binary_codecs.sh as it is called in Debian.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@27382 b3059339-0415-0410-9bf9-f77b7e298cf2
2008-07-31 09:49:16 +00:00