Commit Graph

136 Commits

Author SHA1 Message Date
Uoti Urpala dd1b848d92 cleanup: vf_scale.c, vf.c: replace numbers by flag macro names 2011-11-14 20:24:39 +02:00
wm4 75eab4f72a video, options: implement better YUV->RGB conversion control
Rewrite control of the colorspace and input/output level parameters
used in YUV-RGB conversions, replacing VO-specific suboptions with new
common options and adding configuration support to more cases.

Add new option --colormatrix which selects the colorspace the original
video is assumed to have in YUV->RGB conversions. The default
behavior changes from assuming BT.601 to colorspace autoselection
between BT.601 and BT.709 using a simple heuristic based on video
size. Add new options --colormatrix-input-range and
--colormatrix-output-range which select input YUV and output RGB range.
Disable the previously existing VO-specific colorspace and level
conversion suboptions in vo_gl and vo_vdpau. Remove the
"yuv_colorspace" property and replace it with one named "colormatrix"
and semantics matching the new option. Add new properties matching the
options for level conversion.

Colorspace selection is currently supported by vo_gl, vo_vdpau, vo_xv
and vf_scale, and all can change it at runtime (previously only
vo_vdpau and vo_xv could). vo_vdpau now uses the same conversion
matrix generation as vo_gl instead of libvdpau functionality; the main
functional difference is that the "contrast" equalizer control behaves
somewhat differently (it scales the Y component around 1/2 instead of
around 0, so that contrast 0 makes the image gray rather than black).
vo_xv does not support level conversion. vf_scale supports range
setting for input, but always outputs full-range RGB.

The value of the slave properties is the policy setting used for
conversions. This means they can be set to any value regardless of
whether the current VO supports that value or whether there currently
even is any video. Possibly separate properties could be added to
query the conversion actually used at the moment, if any.

Because the colorspace and level settings are now set with a single
VF/VO control call, the return value of that is no longer used to
signal whether all the settings are actually supported. Instead code
should set all the details it can support, and ignore the rest. The
core will use GET_YUV_COLORSPACE to check which colorspace details
have been set and which not. In other words, the return value for
SET_YUV_COLORSPACE only signals whether any kind of YUV colorspace
conversion handling exists at all, and VOs have to take care to return
the actual state with GET_YUV_COLORSPACE instead.

To be changed in later commits: add missing option documentation.
2011-10-16 21:11:11 +03:00
Uoti Urpala aba8a1838a video/colorspaces: add new 9/10-bit formats from libavcodec
Add new internal 9/10-bit IMGFMT values and mappings to the
corresponding libav* PIX_FMT_* values.

Partially based on a patch from Arne Bochem <arneb.mp@ccan.de>.
2011-06-26 06:27:50 +03:00
Clément Bœsch b68f9fef32 cleanup: shut up more warnings 2011-05-06 18:33:16 +03:00
cboesch fe3c4810e1 cleanup: remove NULL checks before free() all over the code
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32624 b3059339-0415-0410-9bf9-f77b7e298cf2
2010-11-14 13:11:20 +02:00
reimar fd3d5aa9c6 vf_scale: accept all non-hw-accel formats we know a PIX_FMT for
Make scale filter accept all non-hardware-acceleration input formats
we know a PIX_FMT_* for.
It is possible we will not have a conversion for some of these formats,
but since it will just fail differently this approach is better since
it avoids having to expand the explicit list continuously.

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32576 b3059339-0415-0410-9bf9-f77b7e298cf2
2010-11-08 18:03:35 +02: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
Uoti Urpala e1cd86076f Merge svn changes up to r31141 2010-05-07 22:13:35 +03:00
cehoyos 02641f54ee Add support for 12-bit color mode on framebuffer devices.
Patch Janusz Krzysztofik, jkrzyszt A tis icnet pl 


git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31139 b3059339-0415-0410-9bf9-f77b7e298cf2
2010-05-06 10:18:25 +00:00
diego 935147dd64 Mark vf_size_preset_fields m_option_t array as const.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31001 b3059339-0415-0410-9bf9-f77b7e298cf2
2010-04-04 16:15:08 +00:00
Uoti Urpala 5099b1458d Merge svn changes up to r30683 2010-03-10 00:52:17 +02:00
Uoti Urpala b0986b3760 Merge svn changes up to r30463
Note that r30455 is wrong, that commit does not in fact change the
default behavior as claimed in the commit message. It only breaks
"-af-adv force=0", which was already pretty much useless though.
2010-03-09 18:59:15 +02:00
diego b2172f784d Mark a bunch of video filter structures as const.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30704 b3059339-0415-0410-9bf9-f77b7e298cf2
2010-02-22 14:03:46 +00:00
diego 36a14ac50c Declare externally used variables from vd.c as extern in vd.h.
This saves declaring them as extern all over the place.


git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30695 b3059339-0415-0410-9bf9-f77b7e298cf2
2010-02-22 09:51:44 +00:00
diego e0bc115b4d cosmetics: Rename struct vf_instance_s --> vf_instance.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30684 b3059339-0415-0410-9bf9-f77b7e298cf2
2010-02-21 15:48:03 +00:00
diego 28cf6ea2be Rename open() vf initialization function to vf_open().
This avoids clashes with fcntl.h under certain circumstances.


git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30680 b3059339-0415-0410-9bf9-f77b7e298cf2
2010-02-21 13:40:49 +00:00
diego 23db422c3d Add missing license headers to all files in the libmpcodecs directory.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30463 b3059339-0415-0410-9bf9-f77b7e298cf2
2010-01-30 16:57:40 +00:00
Uoti Urpala e28e4a1b15 Merge svn changes up to r30419 2010-01-25 15:59:53 +02:00
reimar cbcae4856c Make the scale filter prefer yuv conversions that do not need chroma scaling.
Also always try keeping input and output format the same first.


git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30409 b3059339-0415-0410-9bf9-f77b7e298cf2
2010-01-23 19:00:09 +00:00
reimar 86f1430a59 Remove the query_format_cache, it is extra complexity that makes improvements
difficult while the speed advantage in normal use cases is not measurable.


git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30408 b3059339-0415-0410-9bf9-f77b7e298cf2
2010-01-23 18:37:47 +00:00
reimar f1714582b2 Simplify loop condition
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30407 b3059339-0415-0410-9bf9-f77b7e298cf2
2010-01-23 18:28:47 +00:00
Uoti Urpala 17eb7f2c4b Merge svn changes up to r30195 2010-01-08 02:06:42 +02:00
Uoti Urpala 231b33a02f Merge svn changes up to r30165 2010-01-08 01:05:30 +02:00
reimar ef395a2f08 Replace deprecated sws_scale_ordered usages by sws_scale (which does the same).
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30192 b3059339-0415-0410-9bf9-f77b7e298cf2
2010-01-03 17:12:12 +00:00
reimar 0eb6b9aa95 One more fix for -vf scale with alpha.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30159 b3059339-0415-0410-9bf9-f77b7e298cf2
2010-01-01 01:25:35 +00:00
reimar c0cae7b327 Also pass alpha plane to swscale, avoids crashes when converting between
YUV with alpha and some other format supporting alpha.


git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30158 b3059339-0415-0410-9bf9-f77b7e298cf2
2010-01-01 01:06:34 +00:00
reimar 8afc25d710 Add support for YUV format with alpha and fix the codecs.conf entry for vp6a
to use it.
Fixes playback of samples in http://samples.mplayerhq.hu/FLV/flash_with_alpha/


git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30157 b3059339-0415-0410-9bf9-f77b7e298cf2
2009-12-31 23:45:07 +00:00
reimar 0ff930da82 Try to put the list of output formats for vf_scale in a more sensible
order.
While the 16-bit yuv formats should not be preferred over the 8-bit ones,
it seems reasonable to probe them directly after the equivalent 8-bit formats.


git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30155 b3059339-0415-0410-9bf9-f77b7e298cf2
2009-12-31 23:25:21 +00:00
reimar a326622304 Add support for 16-bit per component YUV formats.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30152 b3059339-0415-0410-9bf9-f77b7e298cf2
2009-12-31 22:53:25 +00:00
reimar 22c0b2ed57 Support 440P in scale filter.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30142 b3059339-0415-0410-9bf9-f77b7e298cf2
2009-12-30 12:06:09 +00:00
Uoti Urpala 5995bc175a Merge svn changes up to r29962 2009-11-23 01:56:21 +02:00
reimar 4198e9d45b Remove unreachable parsing code: for filters that use the option parser,
the args argument to open will always be NULL and vf->priv will always be
!= NULL.


git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29945 b3059339-0415-0410-9bf9-f77b7e298cf2
2009-11-21 19:50:33 +00:00
reimar 6fa77ca503 Allow vf_scale to output to RGB48, though still prefer the 24 and 32 bit formats.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29943 b3059339-0415-0410-9bf9-f77b7e298cf2
2009-11-21 18:58:03 +00:00
Uoti Urpala 95da34aa07 Merge svn changes up to r29532 2009-08-18 02:29:37 +03:00
cehoyos b92666b582 Add IMGFMT_RGB48LE and IMGFMT_RGB48BE.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29486 b3059339-0415-0410-9bf9-f77b7e298cf2
2009-08-11 17:51:11 +00:00
Uoti Urpala 4a36b51ea6 Merge svn changes up to r29455 2009-07-29 01:32:03 +03:00
diego e5751ced4f Replace WORDS_BIGENDIAN by HAVE_BIGENDIAN in all internal code.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29443 b3059339-0415-0410-9bf9-f77b7e298cf2
2009-07-26 19:53:00 +00: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
Uoti Urpala cf9edda1d3 Merge svn changes up to r29117 2009-04-01 02:43:47 +03:00
reimar 49e2373fe7 Consistently use MP_MAX_PLANES as size for plane pointer/stride arrays in libmpcodecs.
This might avoid some issues since sws_scale in some cases assumes these
have at least 4 valid entries.


git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29103 b3059339-0415-0410-9bf9-f77b7e298cf2
2009-03-29 14:46:59 +00:00
Uoti Urpala 79e1aa7cc7 Merge svn changes up to r28341
Conflicts:
	configure
	libmpcodecs/native/rtjpegn.c
2009-01-19 00:04:43 +02:00
gpoirier 0f224d32dc revert #ifdef WORDS_BIGENDIAN => #if WORDS_BIGENDIAN changes from r28331
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28334 b3059339-0415-0410-9bf9-f77b7e298cf2
2009-01-16 13:19:29 +00:00
gpoirier 5538dcf03b fix compilation on non x86 machines (PPC here)
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28331 b3059339-0415-0410-9bf9-f77b7e298cf2
2009-01-16 10:07:14 +00:00
reimar 93d598c7b2 Lots and lots of #ifdef ARCH_... -> #if ARCH_...
and #ifdef HAVE_MMX etc -> #if HAVE_MMX.
There might be still more that need to be fixed.


git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28325 b3059339-0415-0410-9bf9-f77b7e298cf2
2009-01-16 09:21:21 +00:00
Uoti Urpala 0301309425 Merge svn changes up to 27824
Conflicts:
	cfg-common-opts.h
	libmpcodecs/dec_video.c
	libmpcodecs/vd.c
	libvo/x11_common.h
	mplayer.c
	stream/cache2.c
2008-10-25 05:12:34 +03: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
Uoti Urpala a41db36b22 Merge svn changes up to r26783
Conflicts:

	Makefile
	common.mak
	configure
	libmpcodecs/vd_ffmpeg.c
	libmpdemux/demux_mkv.c
	libvo/vo_xv.c
	mplayer.c
2008-05-15 21:19:35 +03:00
michael 5f5225d0b8 Factorize "int i".
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@26735 b3059339-0415-0410-9bf9-f77b7e298cf2
2008-05-11 12:37:04 +00:00
Uoti Urpala 06a35804f3 Merge svn changes up to r26587
Conflicts:

	Makefile
	configure
	osdep/timer-darwin.c
2008-04-29 05:03:57 +03:00