| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
| |
This file should have been fixed when merging it from svn. Broke
compilation with OS X-specific VOs enabled.
|
|
|
|
|
|
|
| |
Define a way to show the property on the OSD and use step_property_osd
instead of step_property. Also change the mp_property_deinterlace()
function to use m_property_flag_ro() to make it print
'enabled/disabled' instead of 'yes/no'.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The function set_property_command() handles commands that require only
changing a property and then possibly displaying the new value on the
OSD somehow. Split it into two parts: one that executes commands by
doing property manipulation according to a table, and one that
displays the value of a given property on the OSD in a manner listed
for that property in another table. The goal is to allow using the
OSD-display code and information in generic commands that take the
property name as an argument.
Splitting the table in two was not strictly necessary - I could have
kept it as a single table with possibly dummy field values for entries
that only make sense for one part of the split function or the other.
However I think splitting it is cleaner and more readable.
|
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
* 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
...
|
| |
| |
| |
| |
| | |
vo_vdpau should now be fixed enough that it's a clearly better choice
than vo_xv.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
check_events() first checked for a RESIZE event and called resize() if
needed, and then queued a frame to be reshown if in pause state and
the event was either RESIZE or EXPOSE. The most obvious problems with
the code were:
- resize() already called flip_page() internally, so the code in
check_events could lead to _two_ frames being queued.
- The call in resize() didn't depend on pause status, so the
behavior was inconsistent.
- The code in check_events() actually queued the wrong output
surface. It showed the same surface as flip_page() would show
_next_, while it should have shown the previously shown one. This
typically led to the screen contents changing to a previous
state, as the new surface had not been initialized and had
contents from a previous use.
Fix the double update. Make resize() also only immediately update the
video if paused (this also affects changing to/from fullscreen) and
otherwise leave the old window contents be until the next frame. Queue
the right frame in check_events(). Also make resize() a bit more
careful to only show contents if they were successfully updated
(though a case where we're paused without content to show shouldn't
normally happen).
|
| |
| |
| |
| |
| |
| |
| |
| | |
The way vo_vdpau kept references to vf mpi objects was unsafe; with
fixed-vo enabled the vf object could be destroyed and a new one
created, but vo_vdpau would still keep the now stale references and
modify memory through them to adjust usage counts. Send a VOCTRL_RESET
from vf_vo uninit() to allow vo_vdpau to erase such references.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Add interfaces to allow VO drivers to add or remove frames from the
video stream and to alter timestamps. Currently this functionality
only works with in correct-pts mode. Use the new functionality in
vo_vdpau to properly support frame-adding deinterlace modes.
Frames added by the VDPAU deinterlacing code are now properly timed.
Before every second frame was always shown immediately (probably next
monitor refresh) after the previous one, even if you were watching
things in slow motion, and framestepping didn't stop at them at all.
When seeking the deinterlace algorithm is no longer fed a mix of
frames from old and new positions.
As a side effect of the changes a problem with resize events was also
fixed. Resizing calls video_to_output_surface() to render the frame at
the new resolution, but before this function also changed the list of
history frames, so resizing could give an image different from the
original one, and also corrupt next frames due to them seeing the
wrong history. Now the function has no such side effects. There are
more resize-related problems though that will be fixed in a later
commit.
The deint_mpi[] list of reserved frames is increased from 2 to 3
entries for reasons related to the above. Having 2 entries is enough
when you initially get a new frame in draw_image() because then you'll
have those two entries plus the new one for a total of 3 (the code
relied on the oldest mpi implicitly staying reserved for the duration
of the call even after usage count was decreased). However if you want
to be able to reproduce the rendering outside draw_image(), relying on
the explicitly reserved list only, then it needs to store 3 entries.
|
| |
| |
| |
| |
| | |
Reindent structs that used 8-space indent, change type of is_new to
bool, remove unnecessary <stdarg.h> include.
|
| | |
|
| |
| |
| |
| |
| |
| |
| | |
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.
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
| |\ |
|
| | | |
|
| | | |
|
| | | |
|
| | |
| | |
| | |
| | | |
Also contains a couple of changes in destroy_vdpau_objects.
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | | |
Replace a bunch of vdp_* function pointer variables with one struct.
A variable that was before named "vdp_xyz" is now the struct field
"vdp.xyz".
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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.
|
| | | |
|
| | |
| | |
| | |
| | | |
font_load.h was previously included through gui/interface.h
|
| | |
| | |
| | |
| | |
| | | |
When this newest type of buffers was added, needed code to free
objects of this type when closing the filter had been omitted.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
When the attachment-reading code was changed to use
demuxer_add_attachment it should have been changed to free its
internally-allocated objects too, since demuxer_add_attachment creates
copies of everything and leaves ownership of original objects to
caller.
|
|\ \ \ |
|
| | | |
| | | |
| | | |
| | | | |
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29684 b3059339-0415-0410-9bf9-f77b7e298cf2
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This should really be done via the NXCOMPAT PE flag, but looks like
binutils will not get support for it any time soon and not having this
security feature enabled is just ridiculous.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29683 b3059339-0415-0410-9bf9-f77b7e298cf2
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
fixes kegavideo binary codec
patch by Roberto Togni
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29682 b3059339-0415-0410-9bf9-f77b7e298cf2
|
| | | |
| | | |
| | | |
| | | | |
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29681 b3059339-0415-0410-9bf9-f77b7e298cf2
|
| | | |
| | | |
| | | |
| | | | |
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29680 b3059339-0415-0410-9bf9-f77b7e298cf2
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
remove incorrect out colorspace
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29679 b3059339-0415-0410-9bf9-f77b7e298cf2
|
| | | |
| | | |
| | | |
| | | | |
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29678 b3059339-0415-0410-9bf9-f77b7e298cf2
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
ds->demuxer.
This makes it also work again with -audiofile without having to add more hacks to
demux_demuxers.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29677 b3059339-0415-0410-9bf9-f77b7e298cf2
|
| | | |
| | | |
| | | |
| | | | |
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29676 b3059339-0415-0410-9bf9-f77b7e298cf2
|
| | | |
| | | |
| | | |
| | | | |
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29675 b3059339-0415-0410-9bf9-f77b7e298cf2
|
| | | |
| | | |
| | | |
| | | | |
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29674 b3059339-0415-0410-9bf9-f77b7e298cf2
|
| | | |
| | | |
| | | |
| | | | |
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29673 b3059339-0415-0410-9bf9-f77b7e298cf2
|
| | | |
| | | |
| | | |
| | | | |
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29672 b3059339-0415-0410-9bf9-f77b7e298cf2
|
| | | |
| | | |
| | | |
| | | | |
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29671 b3059339-0415-0410-9bf9-f77b7e298cf2
|
| | | |
| | | |
| | | |
| | | | |
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29670 b3059339-0415-0410-9bf9-f77b7e298cf2
|
| | | |
| | | |
| | | |
| | | | |
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29669 b3059339-0415-0410-9bf9-f77b7e298cf2
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | |