1
0
mirror of https://github.com/mpv-player/mpv synced 2025-01-01 20:32:13 +00:00
Commit Graph

34607 Commits

Author SHA1 Message Date
Stefano Pigozzi
60755108a6 input: enqueue commands to the end of the queue
`mp_input_queue_cmd` erroneusly added commands to the head of the queue
resulting in LIFO behaviour instead of the intended FIFO.
2013-01-16 22:16:28 +01:00
Stefano Pigozzi
1bbcb15d8e osxbundle: add header padding to the binary
This avoids install_name_tool to run out of header space when changing the
paths to the dylibs.
2013-01-16 22:16:28 +01:00
wm4
07d14bd323 Silence two compiler warnings
Both should be harmless.
2013-01-16 02:03:21 +01:00
wm4
efcd479e7e vo_opengl_old: add missing include statement
<ctype.h> is needed at least for isalnum(). Most time this worked,
because some ffmpeg or Libav versions recursively include this header
from libavutil/common.h. Fix it so it always works.
2013-01-15 21:16:10 +01:00
Rudolf Polzer
32d2e958a8 vo_sdl: I think the XVidmode hack is no longer needed
I can no longer reproduce the XVidmode related hang.
2013-01-15 12:11:59 +01:00
Rudolf Polzer
708fb47bcb vo_sdl: request "desktop" fullscreen mode if -vm is not used
This is a lot cleaner than our current workaround that first queries the
desktop resolution.
2013-01-15 11:38:04 +01:00
Stefano Pigozzi
645923f634 vo_corevideo: make compile with recent changes
Width and height were removed from mp_image. Use w and h instead.
2013-01-15 01:00:07 +01:00
wm4
a3824d508e video: print filter chain in verbose mode
Somewhat useful to see where filters are auto-inserted and which formats
they take.
2013-01-14 19:19:23 +01:00
wm4
8f5ef883c1 img_format: do not mark hwaccel formats as planar yuv formats 2013-01-14 18:37:17 +01:00
wm4
f0a08a9fdf gl_common: move things used by vo_opengl_old.c only to vo_opengl_old.c
Having this in gl_common is confusing.
2013-01-13 23:30:13 +01:00
wm4
4056765643 vd_lavc: remove -lavdopts vstats suboption
This printed per-frame statistics into a file, like bitrate or frame
type. Not very useful and accesses obscure AVCodecContext fields
(danger of deprecation/breakage), so get rid of it.
2013-01-13 23:30:12 +01:00
wm4
8e172afc8f vd_lavc: remove lowres decoding
This was a "broken misfeature" according to Libav developers. It wasn't
implemented for modern codecs (like h264), and has been removed from
Libav a while ago (the AVCodecContext field has been marked as
deprecated and its value is ignored). FFmpeg still supports it, but
isn't much useful due to aforementioned reasons.

Remove the code to enable it.
2013-01-13 23:29:30 +01:00
Rudolf Polzer
aaa27ead86 vo_x11: use two buffers like Xv 2013-01-13 22:36:42 +01:00
Rudolf Polzer
4044754d24 vo_x11, vo_xv: XShmCompletion event support
This fixes OSD flicker with vo_xv at high frame rates.
2013-01-13 22:36:42 +01:00
wm4
c15cc15415 sub: add experimental --force-rgba-osd-rendering switch 2013-01-13 20:04:16 +01:00
wm4
6b91ba0192 draw_bmp: use multiple bounding boxes
Seems to make it about up to 20% faster in some cases.
Slightly slower in some others.
2013-01-13 20:04:16 +01:00
wm4
5cbdf8f61e img_convert: use multiple bounding boxes for ASS->RGBA
Should be more efficient in situations both subtitles and toptitles are
shown, because no blending has to be performed for the video between
them.
2013-01-13 20:04:16 +01:00
wm4
03730e73dc img_convert: add sub_bitmap bounding box functions
mp_sub_bitmaps_bb is just sub_bitmaps_bb renamed/moved.
2013-01-13 20:04:16 +01:00
wm4
23f731839a mp_common: add some rectangle utility functions 2013-01-13 20:04:14 +01:00
wm4
fb23c3a8ee draw_bmp: don't copy Y plane on up/down-sampling
Image areas with subtitles are upsampled to 4:4:4 in order to render
the subtitles (makes blending easier). Try not to copy the Y plane on
upsampling. The libswscale API requires this, but this commit works it
around by scaling the chroma planes separately as AV_PIX_FMT_GRAY8. The
Y plane is not touched at all. This is done for 420p8 only, which is the
most commonly needed case. For other formats, the old way is used.

Seems to make ASS rendering faster about 15% in the setup I tested.
2013-01-13 20:04:14 +01:00
wm4
7d15bd1488 draw_bmp: do not reallocate upsample temp image on each frame
Doesn't seem to help too much...
2013-01-13 20:04:14 +01:00
wm4
5c049bf577 draw_bmp: refactor 2013-01-13 20:04:14 +01:00
wm4
c652e3f6b1 draw_bmp: always allocate cache
Allocate it even if it's needed. The actually done work is almost the
same, except that the code is a bit simpler. May need more memory at
once for RGB subs that use more than one part, which is rare.
2013-01-13 20:04:14 +01:00
wm4
9f27ebbe63 vo_direct3d: remove 2ch hack for 10 bit playback
This was an awkward hack that attempted to avoid the use of 16 bit
textures, while still allowing rendering 10-16 bit YUV formats. The
idea was that even if the hardware doesn't support 16 bit textures,
an A8L8 textures could be used to convert 10 bit (etc.) to 8 bit in
the shader, instead of doing this on the CPU.

This was an experiment, disabled by default, and was (probably) rarely
used. I've never heard of this being used successfully. Remove it.
2013-01-13 20:04:14 +01:00
wm4
dd89c542e3 vo_sdl: avoid copying just for taking screenshots
Use reference counting instead.
2013-01-13 20:04:14 +01:00
wm4
bd6470ec6a vd_lavc: prefer AVFrame over AVCodecContext fields
This is more correct. Not all frame specific fields are in AVFrame,
such as colorspace and color_range, and these are still queried
through the decoder context.
2013-01-13 20:04:13 +01:00
wm4
1800761a65 mp_image: remove mp_image.bpp
This field contained the "average" bit depth per pixel. It serves no
purpose anymore. Remove it.

Only vo_opengl_old still uses this in order to allocate a buffer that is
shared between all planes.
2013-01-13 20:04:13 +01:00
wm4
61e59cd92c imgfmt: add more ffmpeg pixel formats
Most of these probably don't have much actual use, but at least allow
images of these formats to be handed to swscale, should any decoder
output them.
2013-01-13 20:04:13 +01:00
wm4
4950513ffe img_format: change meaning of MP_IMGFLAG_PLANAR
This used to mean that there is more than one plane. This is not very
useful: IMGFMT_Y8 was not considered planar, but it's just a Y plane,
and could be treated the same as actual planar formats. On the other
hand, IMGFMT_NV12 is partially packed, and usually requires special
handling, but was considered planar.

Change its meaning. Now the flag is set if the format has a separate
plane for each component. IMGFMT_Y8 is now planar, IMGFMT_NV12 is not.
As an odd special case, IMGFMT_MONO (1 bit per pixel) is like a planar
RGB format with a single plane.
2013-01-13 20:04:13 +01:00
wm4
4b8122faa7 vf_sub: allow more formats, simplify code
In theory, vf_sub could take any format supported by swscale. But to be
sure that it's reasonably fast, only 420P was allowed. However, other
similar 8 bit planar formats will be just as fast and there's no reason
to exclude them. Even for completely different formats there doesn't
seem to be any significant advantage to force vf_sub to convert to a
simpler/more common format.
2013-01-13 20:04:13 +01:00
wm4
c3788543f5 vf_expand: support more image formats
This did random things with some image formats, including 10 bit
formats. Fixes the mp_image_clear() function too.

This still has some caveats:
- doesn't clear alpha to opaque (too hard with packed RGB, and is rarely
  needed)
- sets luma to 0 for mpeg-range YUV, instead of the lowest possible
  value (e.g. 16 for 8 bit)
2013-01-13 20:04:13 +01:00
wm4
e16fab8822 vf_rotate: support more image formats 2013-01-13 20:04:13 +01:00
wm4
54dffdbbe6 vf_softpulldown: reject unsupported image formats, fix code duplication
Not really tested.
2013-01-13 20:04:13 +01:00
wm4
a26d602024 vf_yadif: Y8 is not supported
Crashes.
2013-01-13 20:04:13 +01:00
wm4
8d6a66892e vf_swapuv: support more image formats 2013-01-13 20:04:13 +01:00
wm4
d88baf0754 vf_pullup: remove check for MP_IMGFLAG_PLANAR
It supports 420p only, so the check is useless.
2013-01-13 20:04:12 +01:00
wm4
c70cb26a1e vf_phase: reject unsupported image formats
Also don't use MP_IMGFLAG_PLANAR.
2013-01-13 20:04:12 +01:00
wm4
92a1b6fa21 vf_mirror: rewrite
Properly handle odd image sizes. Probably makes it work with more image
formats.
2013-01-13 20:04:12 +01:00
wm4
e0d028e89b vf_gradfun: does not work with NV pixel formats 2013-01-13 20:04:12 +01:00
wm4
036d38580a vf_flip: make it work with more image formats 2013-01-13 20:04:12 +01:00
wm4
ba2e20414a vf_divtc: reduce code duplication 2013-01-13 20:04:12 +01:00
wm4
f282d0b290 vf_crop: make it work with more image formats 2013-01-13 20:04:12 +01:00
wm4
926c6631ff vf: add vf_rescale_dsize()
Needed because mplayer* basically tracks DAR, which makes it harder for
filters which want to keep the SAR.

The contents of this function are duplicated in a few filters, and will
be used instead of custom code as the filters are updated later.
2013-01-13 20:04:12 +01:00
wm4
717d904bbc mp_image: add mp_image_crop()
Actually stolen from draw_bmp.c.
2013-01-13 20:04:12 +01:00
wm4
ded932dbd4 vo_image: render subs
This makes it behave like vo_lavc.

Unfortunately, the code for setting up the OSD dimensions (mp_osd_res)
is copied from vo_lavc, but it doesn't look like something that should
be factored out.
2013-01-13 20:04:12 +01:00
wm4
5e8b3e74ec vo_xv: fix OSD redrawing flicker
redraw_frame() copied the image into the currently visible buffer. This
resulted in flicker when doing heavy OSD redrawing (like changing the
subtitle size to something absurdly large).

Use the same logic as draw_image instead.
2013-01-13 20:04:12 +01:00
wm4
3d6d549dac vo_xv, vo_x11: simplify OSD redrawing
In order to support OSD redrawing for vo_xv and vo_x11, draw_bmp.c
included an awkward "backup" mechanism to copy and restore image
regions that have been changed by OSD/subtitles.

Replace this by a much simpler mechanism: keep a reference to the
original image, and use that to restore the Xv/X framebuffers.

In the worst case, this may increase cache pressure and memory usage,
even if no OSD or subtitles are rendered. In practice, it seems to be
always faster.
2013-01-13 20:04:12 +01:00
wm4
1c65428d6f sub: do not copy the target image if there is no OSD/subs
It's not easy to tell whether the OSD/subs are empty, or if something is
drawn. In general you have to use osd_draw() with a custom callback. If
nothing is visible, the callback is never invoked. (The actual reason
why this is so "hard" is the implementation of osd_libass.c, which
doesn't allow separating rendering and drawing of OSD elements, because
all OSD elements share the same ASS_Renderer.)

To simplify avoiding copies, make osd_draw_on_image() instead of the
caller use mp_image_make_writeable(). Introduce osd_draw_on_image_p(),
which works like osd_draw_on_image(), but gets the new image allocation
from an image pool. This is supposed to be an optimization, because it
reduces the frequency of large allocations/deallocations for image data.

The result of this is that the frequency of copies needed in conjunction
with vf_sub, screenshots, and vo_lavc (encoding) should be reduced.
vf_sub now always does true pass-through if no subs are shown.

Drop the pts check from vf_sub. This didn't make much sense.
2013-01-13 20:04:12 +01:00
wm4
233cc15be9 vo_lavc: use reference counting
Helps avoiding additional copies.
2013-01-13 20:04:11 +01:00
wm4
5830d639b8 video: remove img_format compat hacks
Remove the strange things the old mp_image_setfmt() code did to the
image format parameters. This includes setting chroma shift to 31 for
gray (Y8) formats and more.

Y8 + vo_opengl_old didn't actually work for unknown reasons (regression
in this branch). Fix this. The difference is that Y8 is now interpreted
as gray RGB (LUMINANCE texture) instead of involving YUV (and levels)
conversion.

Get rid of distinguishing RGB and BGR. There wasn't really any good
reason for this.

Remove mp_get_chroma_shift() and IMGFMT_IS_YUVP16*(). mp_imgfmt_desc
gives the same information and more.
2013-01-13 20:04:11 +01:00