summaryrefslogtreecommitdiffstats
path: root/libmpcodecs/dec_video.c
Commit message (Collapse)AuthorAgeFilesLines
* core, vo: modify OSD redraw architecture, support EOSDUoti Urpala2011-12-061-8/+0
| | | | | | | | | | | | | | | | Previously the core sent VFCTRL_REDRAW_OSD to change OSD contents over the current frame. Change this to VFCTRL_REDRAW_FRAME followed by normal EOSD and OSD drawing calls, then vo_flip_page(). The new version supports changing EOSD contents for libass-rendered subtitles and simplifies the redraw support code needed per VO. vo_xv doesn't support EOSD changes because it relies on vf_ass to render EOSD contents earlier in the filter chain. vo_xv logic is additionally simplified because the previous commit removed the need to track the status of current and next images separately (now each frame is guaranteed to become "visible" soon after we receive it as "next", with no VO code running in the interval between).
* commands, vd_ffmpeg: fix switch_ratio slave commandUoti Urpala2011-11-141-0/+7
| | | | | | | | | The implementation of the switch_ratio command was hacky and called mpcodecs_config_vo() to reconfigure the filter/VO chain from under an existing decoder. This call no longer worked properly with vd_ffmpeg after that started using mpcodec_config_vo2(). Add new video decoder control command VDCTRL_RESET_ASPECT and use this to tell vd_ffmpeg to reinitialize the output chain properly.
* audio/video: delete buggy "dynamic plugin" codeUoti Urpala2011-10-201-44/+0
| | | | | | | | | | | | Codec selection for audio and video decoding had a "dynamic plugin" feature that tried to load a shared library for any codec that had not been enabled at compilation (disabled by default, but could be enabled with --enable-dynamic-plugins configure switch; for unknown reasons some distro packages have enabled it). The implementation was buggy and could cause normal codec selection fallback to fail if the feature was enabled. I'm not aware of any real uses of such dynamic plugins and the feature seems questionable anyway (there are no ABI guarantees that would make it safe to use). Remove the buggy feature.
* video, options: implement better YUV->RGB conversion controlwm42011-10-161-0/+46
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* core, demux, vd_ffmpeg: pass side data from demux_lavf to vd_ffmpegUoti Urpala2011-08-201-2/+3
| | | | | | | | | | | | Pass the libavformat packet side_data field from demux_lavf to vd_ffmpeg. Libavcodec/libavformat use this field for palette data, and passing it is required for the playback of some paletted video codecs. The implementation works by giving vd_ffmpeg a copy of the struct demux_packet used to store the video packet (from which it can access the avpacket field). The definition of struct demux_packet is moved to new file demux_packet.h so that vd_ffmpeg.c can use it without including all of demuxer.h.
* cleanup: shut up more warningsClément Bœsch2011-05-061-2/+2
|
* cosmetics: remove unused code, small formatting tweaksUoti Urpala2010-12-201-1/+1
|
* Delete things related to old translation systemUoti Urpala2010-03-101-1/+0
| | | | | Remove the help/ subdirectory, configure code to create toplevel help_mp.h, and all the '#include "help_mp.h"' lines from .c files.
* Merge svn changes up to r30463Uoti Urpala2010-03-091-0/+18
|\ | | | | | | | | | | 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.
| * Add missing license headers to all files in the libmpcodecs directory.diego2010-01-301-0/+17
| | | | | | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30463 b3059339-0415-0410-9bf9-f77b7e298cf2
| * Move the resync-related code into more consistent places instead of having itreimar2010-01-241-0/+4
| | | | | | | | | | | | | | scattered all over the place with half of it forgotten in some places. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30420 b3059339-0415-0410-9bf9-f77b7e298cf2
* | core: Add support for decoder reordering of pts valuesUoti Urpala2009-11-211-3/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add a mode where libavcodec's reordered_opaque feature is used to associate container packet timestamps with decoded frames. This should improve behavior at least for MPEG files with interlaced h264; the previous code does not cope well with the libavformat demuxer producing two field packets with separate timestamps but the libavcodec h264 decoder only producing a single output frame for those two packets (so half the timestamps have no associated output frame). The current libavformat mpeg demuxer seems to finally work with interlaced h264 files and produce valid timestamps which are useful with a mode like this. By default MPlayer now selects between this new mode and the old one automatically based on the number of timestamp problems they cause; by default the new mode is used if both seem to work. The new option -pts-association-mode can be used to force a particular mode. If correct-pts mode is disabled this has no effect on timing. Also remove the "EXPERIMENTAL" marker from the manpage description of -correct-pts.
* | Translation system changes part 2: replace macros by stringsAmar Takhar2009-07-071-12/+12
| | | | | | | | | | Replace all MSGTR_ macros in the source by the corresponding English string.
* | Translation system changes part 1: wrap translated stringsAmar Takhar2009-07-071-13/+13
| | | | | | | | | | Replace mp_msg() calls which have a translated string as the format argument with mp_tmsg and add _() around all other translated strings.
* | Merge svn changes up to r29277Uoti Urpala2009-05-081-1/+0
|\|
| * Remove reference to outdated documentation file.diego2009-04-201-1/+0
| | | | | | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29209 b3059339-0415-0410-9bf9-f77b7e298cf2
* | Merge svn changes up to r29134Uoti Urpala2009-04-021-3/+0
|\|
| * Remove unnecessary malloc.h #includes and related #ifdeffery.diego2009-04-021-3/+0
| | | | | | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29126 b3059339-0415-0410-9bf9-f77b7e298cf2
| * Swap order of VFCTRL_DRAW_EOSD and VFCTRL_DRAW_OSD so that the EOSD is drawnreimar2009-03-061-1/+4
| | | | | | | | | | | | | | | | below the OSD and document possible issues when this is changed. Patch by Uoti (though originally intended for a different issue) with extra comment by me. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28841 b3059339-0415-0410-9bf9-f77b7e298cf2
* | Merge svn changes up to r28641Uoti Urpala2009-02-181-1/+1
|\| | | | | | | | | | | | | | | Convert vo_x11_border (used in vo_gl/gl2 though the vo_gl_border macro) to use a wrapper macro in old-style VOs which do not provide a VO object argument. Before this function had an explicit global_vo argument in vo_gl/gl2. New vo_vdpau uses it too so use the same mechanism as most other functions.
| * Convert HAVE_MALLOC_H into a 0/1 definition, fixes the warning:diego2009-02-171-1/+1
| | | | | | | | | | | | | | mem.c:32:5: warning: "HAVE_MALLOC_H" is not defined git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28629 b3059339-0415-0410-9bf9-f77b7e298cf2
* | Merge svn changes up to r28341Uoti Urpala2009-01-191-1/+1
|\| | | | | | | | | | | Conflicts: configure libmpcodecs/native/rtjpegn.c
| * Lots and lots of #ifdef ARCH_... -> #if ARCH_...reimar2009-01-161-1/+1
| | | | | | | | | | | | | | | | 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
* | OSD: Ensure that OSD content is drawn in filter-added framesUoti Urpala2009-01-151-8/+1
| | | | | | | | | | | | Move the OSD drawing calls from filter_video() to higher-level code to ensure that VOs will draw the OSD also in filter-added frames, which are displayed without a separate call to filter_video().
* | Update OSD while pausedUoti Urpala2008-12-091-0/+9
| | | | | | | | | | | | | | | | | | | | | | | | When OSD contents change while paused, try to change the OSD drawn in the currently visible frame. If such OSD updates are not supported then advance by one frame and draw the OSD normally. Add some support for OSD redrawing to vo xv. The new xv code makes a copy of the original frame contents before drawing the OSD if MPlayer is already paused when the frame is drawn. If such a copy of the current frame exists then the frame contents can be restored and a different OSD drawn on top of the same frame.
* | Work around vo gl/libass subtitle timing problemUoti Urpala2008-12-091-1/+1
| | | | | | | | | | | | | | | | | | | | vo gl generates bitmaps for EOSD content (libass subtitles) when DRAW_EOSD is called but actual drawing of both EOSD and OSD is done in draw_osd(). Since draw_osd() was called first it drew the EOSD content from the previous frame, so the subtitles were always one frame late. As a simple workaround update EOSD content first, then normal OSD. This makes vo gl work correctly and should have no effect on anything else.
* | Merge svn changes up to 27824Uoti Urpala2008-10-251-2/+2
|\| | | | | | | | | | | | | | | | | | | Conflicts: cfg-common-opts.h libmpcodecs/dec_video.c libmpcodecs/vd.c libvo/x11_common.h mplayer.c stream/cache2.c
| * Replace all occurrences of '__volatile__' and '__volatile' by plain 'volatile'.diego2008-10-161-2/+2
| | | | | | | | | | | | | | | | 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
| * Change all occurrences of asm and __asm to __asm__, same as was done for FFmpeg.diego2008-10-161-2/+2
| | | | | | | | | | | | | | 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
* | Merge svn changes up to r27441Uoti Urpala2008-08-081-3/+3
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: cfg-common-opts.h command.c configure input/input.c libmpcodecs/dec_video.c libmpcodecs/vd.c libmpdemux/stheader.h libvo/sub.c libvo/video_out.c libvo/vo_xv.c libvo/vosub_vidix.c libvo/x11_common.c libvo/x11_common.h mp_core.h mplayer.c stream/stream.h
| * Give a CONFIG_ prefix to preprocessor directives that lacked one anddiego2008-08-071-3/+3
| | | | | | | | | | | | | | change arbitrary prefixes to CONFIG_. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@27429 b3059339-0415-0410-9bf9-f77b7e298cf2
* | Merge svn changes up to r27374Uoti Urpala2008-07-301-1/+1
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: cfg-common-opts.h cfg-mplayer.h command.c configure libmpcodecs/dec_video.c libmpcodecs/vd.c libmpcodecs/vf_vo.c libmpdemux/demuxer.h libmpdemux/stheader.h mp_core.h mplayer.c stream/stream_radio.c
| * Start unifying names of internal preprocessor directives.diego2008-07-301-1/+1
| | | | | | | | | | | | | | | | Replace all USE_ prefixes by CONFIG_ prefixes to indicate options which are configurable. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@27373 b3059339-0415-0410-9bf9-f77b7e298cf2
* | Create a context struct for OSD stateUoti Urpala2008-06-241-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit creates the struct and passes it to some functions that needs to access OSD state but does not yet move much data from globals to it. vf_expand accesses the OSD state for rendering purposes outside of the normal OSD draw time. The way this currently works is suboptimal, but I did not attempt to clean it up now. To keep things working the same way vf_expand needs to know the address of the state object to be able to access the data even in the functions that should normally not need it. For that purpose this commit adds a VFCTRL to tell vf_expand the address of the object.
* | Merge svn changes up to r26979Uoti Urpala2008-06-041-3/+3
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Most of the conflicts are trivial. Conflicts: Makefile cfg-mplayer.h input/input.c libmenu/vf_menu.c libmpcodecs/dec_video.c libmpcodecs/vf_expand.c libmpcodecs/vf_vo.c libmpdemux/demux_mkv.c libmpdemux/demuxer.c libmpdemux/demuxer.h libvo/vo_directfb2.c libvo/vo_gl.c libvo/vo_winvidix.c libvo/vo_xv.c libvo/vo_xvidix.c libvo/vo_xvmc.c libvo/x11_common.c mplayer.c osdep/timer-linux.c stream/cache2.c
| * cosmetics: Remove pointless parentheses from return calls.diego2008-05-161-3/+3
| | | | | | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@26786 b3059339-0415-0410-9bf9-f77b7e298cf2
* | Make video decoder description structs constUoti Urpala2008-04-251-7/+7
| | | | | | | | | | | | This makes the per-decoder struct vd_functions and its ->info struct constants. Same for the mpcodecs_vd_drivers[] table of pointers to those structs.
* | Store video decoder functions in struct sh_video fieldUoti Urpala2008-04-251-24/+28
| | | | | | | | | | | | Remove the global variable mpvdec and move the video decoder pointer to struct sh_video field vd_driver. Audio already had a similar ad_driver field from before.
* | dec_video.c: A couple of cosmetic changesUoti Urpala2008-04-251-12/+7
| |
* | Reformat dec_video.cUoti Urpala2008-04-251-255/+293
| | | | | | | | | | | | "indent -kr -l79 -nut dec_video.c --ignore-newlines dec_video.c", fix some "unknown_typedef * arg" in parameter lists by hand to "unrecognized_typedef *arg".
* | Move correct_pts to options structUoti Urpala2008-04-231-2/+4
|/
* typo fix: inited --> initializeddiego2008-02-141-11/+11
| | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@25994 b3059339-0415-0410-9bf9-f77b7e298cf2
* Replace the persistent CODECS_FLAG_SELECTED by a local "stringset" withreimar2008-01-121-8/+11
| | | | | | | | | an almost-trivial implementation. This allows making the builtin codec structs const, and it also makes clearer that this "selected" status is not used outside the init functions. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@25689 b3059339-0415-0410-9bf9-f77b7e298cf2
* Make init_video function in dec_video static, it is not used outside that file.reimar2007-12-111-1/+1
| | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@25354 b3059339-0415-0410-9bf9-f77b7e298cf2
* get/set video colors string is constantreimar2007-12-021-2/+2
| | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@25252 b3059339-0415-0410-9bf9-f77b7e298cf2
* Clean up the way get_path is handled: Compile get_path.c to an object to linkdiego2007-08-281-2/+0
| | | | | | | | against instead of directly #including the C file and replace the many extern declarations by a proper header file. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@24262 b3059339-0415-0410-9bf9-f77b7e298cf2
* Remove redundant variable declaration.diego2007-08-251-2/+0
| | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@24163 b3059339-0415-0410-9bf9-f77b7e298cf2
* Add explicit location for headers from the libmpdemux/ directory.diego2007-03-151-3/+3
| | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@22619 b3059339-0415-0410-9bf9-f77b7e298cf2
* Add explicit location for headers from the stream/ directory.diego2007-03-151-1/+1
| | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@22617 b3059339-0415-0410-9bf9-f77b7e298cf2
*