aboutsummaryrefslogtreecommitdiffhomepage
path: root/libmpcodecs
Commit message (Collapse)AuthorAge
* audio: untypedef af_data and rename it to mp_audioGravatar Stefano Pigozzi2012-11-02
| | | | this is to have something specular to mp_image
* Merge branch 'osd_changes' into masterGravatar wm42012-11-01
|\ | | | | | | | | Conflicts: DOCS/man/en/options.rst
* | ad_spdif: don't print uninitialized value in debug messageGravatar wm42012-11-01
| |
* | vf: fix NULL pointer issueGravatar wm42012-11-01
| | | | | | | | | | | | "mpi" was accessed right after the if block, that checked that mpi is not NULL. Either the check is uneeded, or the access to "mpi" always crashes. Just move the access inside the checked block.
* | vd: minor simplificationGravatar wm42012-11-01
| |
| * screenshot: remove hack for passing anamorphic image sizeGravatar wm42012-11-01
| | | | | | | | | | | | | | | | | | | | With anamorphic video (display with non-1:1 PAR, e.g. DVD), the display size was passed using the mp_image fields w/h, which was blatantly incorrect. w/h are the normal image dimensions, while width/height are the "uncropped" storage size (used internally by vf.c). Add a display_w/h, and use that for the display size. Make all VOs that can do screenshots use it.
| * screenshot: let VOs pass colorspace information via mp_imageGravatar wm42012-11-01
| | | | | | | | | | | | | | | | | | This removes the hack that screenshot_save() got the colorspace information from the decoder. Instead, require the VOs to set the colorspace information on the mp_images used to pass around the screenshot data. This is more correct, as the image may have been converted/modified in the video filter chain, although there's nothing yet in the video filter chain which does this correctly.
| * screenshot, draw_bmp: use colorspace passed with mp_imageGravatar wm42012-11-01
| | | | | | | | | | Remove the explicit struct mp_csp_details parameters from all related functions, and use mp_image.colorspace/levels instead.
* | cleanup: remove some things related to old video decodersGravatar wm42012-10-30
| |
* | demux_lavf: add a hack to work around other hacksGravatar wm42012-10-30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | mplayer (and all forks) use a single FourCC field to map codecs. This is what sh_video->format and sh_audio->format is used for. Basically it's a key into the codecs.conf table to find out what decoder to use. (There's only one video codec and one major audio codec left - both libavcodec. But we still have to deal with mapping coming from non-libavformat demuxers.) It seems this causes some video codecs to fail, such as WV1F in AVI [1]. demux_lavf generally throws away the codec_tag from libavformat if the codec is MPEG-in-AVI. There are probably other cases like this. Add a hack to enforce passing the correct codec tag when only ffmpeg demuxers and decoders involved. Note: the sample [1] needs to be flipped. With --demuxer=avi, this is done correctly, because unlike demux_lavf, the demuxer uses the FourCC directly for the sh_video->format tag, and finds the correct codecs.conf entry (which contains the flip flag). We could just add a "whitelist" of codec tags which can be passed through to sh_video->format, but I don't want to do that just for such an obscure format as the sample at hand. Note 2: when demux_lavf is used, the AVCodecContext could be passed directly to vd_ffmpeg/ad_ffmpeg. The code to convert to/from the internal mplayer stream headers is probably still needed, as there are non-ffmpeg demuxers and audio decoders. [1] http://samples.mplayerhq.hu/V-codecs/WV1F/AVI/title2.avi
* | libmpcodecs: fix coverity issuesGravatar reimar2012-10-30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fix check for empty log file (n contains a start offset of 15). git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@35269 b3059339-0415-0410-9bf9-f77b7e298cf2 Author: reimar Add missing (). git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@35270 b3059339-0415-0410-9bf9-f77b7e298cf2 Author: reimar Conflicts: libmpcodecs/vf_down3dright.c Add comment to silence coverity (and it generally doesn't hurt to make intentional fallthrough cases explicit). git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@35271 b3059339-0415-0410-9bf9-f77b7e298cf2 Author: reimar Make uninit function handle vf->priv being NULL. This happens in the case where memory allocation for it fails. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@35272 b3059339-0415-0410-9bf9-f77b7e298cf2 Author: reimar Remove useless variable. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@35273 b3059339-0415-0410-9bf9-f77b7e298cf2 Author: reimar Conflicts: libmpcodecs/vf_softpulldown.c
* | vf_screenshot: fix handling of out-of-order slice rendered framesGravatar reimar2012-10-30
| | | | | | | | | | | | Fix handling of out-of-order slice rendered frames. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@35208 b3059339-0415-0410-9bf9-f77b7e298cf2
* | vf_delogo, vf_unsharp: clear mpi->priv for consistencyGravatar reimar2012-10-30
| | | | | | | | | | | | For consistency clear mpi->priv after it was used. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@35203 b3059339-0415-0410-9bf9-f77b7e298cf2
* | vf_delogo: fix using with numbered mpiGravatar reimar2012-10-30
| | | | | | | | | | | | | | | | Fix delogo filter with numbered mpi. Should fix bug #2087. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@35202 b3059339-0415-0410-9bf9-f77b7e298cf2
* | mp_image: update description of MP_IMGFLAG_READABLEGravatar reimar2012-10-30
| | | | | | | | | | | | Update description of MP_IMGFLAG_READABLE. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@35150 b3059339-0415-0410-9bf9-f77b7e298cf2
* | vf: fix usage count for passthrough-only filtersGravatar reimar2012-10-30
| | | | | | | | | | | | | | | | | | Fix usage count for passthrough-only filters. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@35135 b3059339-0415-0410-9bf9-f77b7e298cf2 Conflicts: libmpcodecs/vf.c
* | vd_ffmpeg: detect broken mpi usage countGravatar reimar2012-10-30
| | | | | | | | | | | | Detect broken mpi usage count also in decoder. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@35134 b3059339-0415-0410-9bf9-f77b7e298cf2
* | vf_stereo3d: add another anaglyph color variantGravatar reimar2012-10-30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Make compiler give the ana_coeff array automatically the right size. Makes adding more colour schemes easier. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@35078 b3059339-0415-0410-9bf9-f77b7e298cf2 Author: reimar Convert comments into designated initializers. That is a simple way to ensure they always correspond to what the compiler actually does. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@35079 b3059339-0415-0410-9bf9-f77b7e298cf2 Author: reimar Add another anaglyph color variant. Patch by Bob [mpbob ezpi net]. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@35080 b3059339-0415-0410-9bf9-f77b7e298cf2 Author: reimar
* | vf_expand: remove outdated code causing crashesGravatar reimar2012-10-30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Remove outdated code that instead of preventing now causes crashes. The problem it was trying to catch (next filter not supporting slices) was fixed already in r10141 (by implementing a fallback version of vf_next_draw_slice). This should fix Debian Bug#683907. Example command-line: mencoder big_buck_bunny_480p_stereo.avi -o a.mpg -vf crop=346:240:2:24 -oac copy -ovc lavc git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@35061 b3059339-0415-0410-9bf9-f77b7e298cf2 Author: reimar Conflicts: libmpcodecs/vf_expand.c
| * mp_image: add fields to pass colorspace down the filter chainGravatar wm42012-10-28
| | | | | | | | | | | | Note that this also adds a RGB colorspace for general symmetry. The frontend (colormatrix property and options) and mp_get_yuv2rgb_coeffs() don't support this.
| * mp_image: use uint8_t instead of unsigned char for plane pointersGravatar wm42012-10-28
| | | | | | | | Purely cosmetic.
| * Merge branch 'master' into osd_changesGravatar wm42012-10-24
| |\ | |/ |/| | | | | Conflicts: libvo/vo_xv.c
| * core: disable vf_sub auto-insertionGravatar wm42012-10-24
| | | | | | | | | | | | | | Since most VOs support rendering subs directly, this doesn't change much. Changes include: vo_null is faster, vo_image doesn't add subtitles by default (while vo_lavc does), vo_caca doesn't render subs (but you couldn't read them anyway).
| * VF: rename vf_ass to vf_subGravatar wm42012-10-24
| | | | | | | | | | | | | | | | | | | | | | | | This reflects the fact that this filter now renders all types of subtitles, not just ASS subtitles. Always compile this filter, not just on CONFIG_ASS. Note that --no-ass still disables auto-inserting this filter. It's the only way to disable auto-insertion, so keep it even though it's not really ASS specific anymore. --no-ass also disables using libass for rendering text subs directly.
| * draw_bmp: fix for yuy2 formatGravatar wm42012-10-24
| | | | | | | | | | | | | | mp_get_chroma_shift() modifies its argument even if it fails, so we have to restore that. mp_image didn't set chroma shifts for yuy2.
| * core: do not try to redraw OSD if VO doesn't support OSDGravatar wm42012-10-24
| | | | | | | | | | | | | | | | | | | | | | | | This fixes awkward framestepping when seeking with -vo null while paused (caused because seeking by default draws an OSD bar, and mplayer trying to redraw the OSD in that case; this logic is actually needed with vo_xv). It would have been simpler to just check vo->driver->draw_osd (and leave that callback to NULL for VOs which don't support OSD), but for now try to retain the capability to let VOs decide based on the image format whether to support OSD or not.
| * VO, sub: refactorGravatar wm42012-10-24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Remove VFCTRL_DRAW_OSD, VFCAP_EOSD_FILTER, VFCAP_EOSD_RGBA, VFCAP_EOSD, VOCTRL_DRAW_EOSD, VOCTRL_GET_EOSD_RES, VOCTRL_QUERY_EOSD_FORMAT. Remove draw_osd_with_eosd(), which rendered the OSD by calling VOCTRL_DRAW_EOSD. Change VOs to call osd_draw() directly, which takes a callback as argument. (This basically works like the old OSD API, except multiple OSD bitmap formats are supported and caching is possible.) Remove all mentions of "eosd". It's simply "osd" now. Make OSD size per-OSD-object, as they can be different when using vf_sub. Include display_par/video_par in resolution change detection. Fix the issue with margin borders in vo_corevideo.
| * draw_bmp: don't try to call swscale if image format not supportedGravatar wm42012-10-24
| | | | | | | | If that happens, we silently fail.
| * sub, vf_ass: allow rendering RGBA subs, replace old vf_ass renderingGravatar wm42012-10-24
| | | | | | | | | | | | | | | | | | | | Do this by replacing all the old vf_ass drawing code by draw_bmp.c. Change sub.c to always use osd_draw() for the other OSD drawing routines, and simplify the code a bit. spudec.c subtitles (i.e. DVD subs) are now considered subtitles, and are rendered by vf_ass, if that filter is inserted.
| * sub: fix text subtitle aspect ratio with vo_xv and vo_lavc, refactorGravatar wm42012-10-24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This fixes that vo_xv didn't display text subtitles correctly when using anamorphic video. It didn't pass the aspect information to the subtitle renderer. Also, try to render OSD correctly with respect to aspect ratio settings: on vo_xv, the OSD is rendered into the video, and needs to be "stretched" too when playing anamorphic video. When the -monitorpixelaspect option is used, even with VOs such as vo_opengl the OSD has to be rendered with that aspect ratio. As preparation for future commits, replace the weird vsfilter_scale value with a somewhat more sensible video_par member. Also, struct mp_eosd_res is a better place for the aspect ratio parameters, as OSD needs this too. Use osd_draw_on_image() directly in vo_lavc, which fixes aspect ratio issues as well.
| * mp_image: hack to fix alignment for certain image formatsGravatar wm42012-10-24
| | | | | | | | | | | | | | | | This is to get rid of swscale alignment warnings with the new OSD code. Only image formats used by it are fixed. Solving this generally would require some more effort. (Possibly by using libav's allocation functions plus lots of testing.)
| * sub: add helper to draw sub-bitmaps into an imageGravatar Rudolf Polzer2012-10-24
| | | | | | | | | | Merged by wm4 from commits 93978f17b76d..13211ef5fc20. Changed copyright header in draw_bmp.c to "mpv", and removed the one in draw_bmp.h.
| * mp_image: fix copy_mpi() with 16 bit formats, add helper macrosGravatar Rudolf Polzer2012-10-24
| | | | | | | | | | | | | | Merged by wm4. copy_mpi() assumed that planar YUV formats always used 1 byte per component, which is not true for 9/10/16 bit YUV formats.
| * libmpcodecs: move vf_scale.c swscale helper functions to sws_utils.cGravatar Rudolf Polzer2012-10-24
| | | | | | | | | | Extracted/rebased by wm4 from commits 93978f17b76d..13211ef5fc20. Actual mp_image_swscale is added in a later commit.
* | cleanup: remove vd_internal.hGravatar wm42012-10-23
| | | | | | | | This was stupid crap for old vd_* files, and vd_ffmpeg doesn't need it.
* | VF: remove IMGFMT_MPEGPESGravatar wm42012-10-22
| | | | | | | | | | | | | | | | | | This wasn't used anymore. Remove the reference to IMGFMT_MJPEG in vf_dlopen as well. Thus format is used as FourCC in the TV code (i.e. it's on the demuxer level, just like raw formats), and never appears in the video filter chain. For starters, vd_ffmpeg can never produce this format.
* | vd: remove references to vf_palette and vf_lavcGravatar wm42012-10-22
| | | | | | | | | | | | Both of these video filters have been deleted. There wasn't any use-case left where these were needed. Videos with paletted pixel formats still work.
* | vd_ffmpeg, vf: fix crashes with some game formatsGravatar reimar2012-10-22
| | | | | | | | | | | | | | | | | | | | | | Fixes for palette allocation handling. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@34304 b3059339-0415-0410-9bf9-f77b7e298cf2 This caused a crash with http://samples.ffmpeg.org/cdxl/fruit.cdxl if direct rendering was used. (Which is rarely these days.) With small changes: avoid av_freep() use, as this function is not sane.
* | mp_image: add IMGFMT_BGR0/PIX_FMT_BGR0Gravatar wm42012-10-21
| | | | | | | | Needed by ffv1.
| * Merge branch 'master' into osd_changesGravatar wm42012-10-16
| |\ | |/ |/| | | | | | | | | | | | | | | | | | | | | | | Conflicts: Makefile command.c libvo/gl_common.c libvo/vo_corevideo.m libvo/vo_opengl.c libvo/vo_opengl_old.c libvo/vo_opengl_shaders.glsl sub/ass_mp.c sub/osd_libass.c sub/sd_ass.c
| * sub: cosmetics: move things aroundGravatar wm42012-10-16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Move sub-bitmap definitions from dec_sub.h to sub.h. While it's a bit odd that OSD data structures are in a file named sub.h, it's definitely way too strange to have them in a file about subtitle decoding. (Maybe sub.h/.c and the sub/ directory should be split out and renamed "osd" at a later point.) Remove including ass_mp.h (and the libass headers) where possible. Remove typedefs for mp_eosd_res and sub_bitmaps structs. Store a mp_eosd_res struct in osd_state instead of just w/h. Note that sbtitles might be rendered using different sizes/margins when filters are involved (the subtitle renderer is not supposed to use the OSD res directly, and the "dim" member removed in the previous commit is something different).
| * sub: always go through sub.c for OSD renderingGravatar wm42012-10-16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Before this commit, vf_vo.c and vf_ass.c were manually calling the subtitle decoder to retrieve images to render. In particular, this circumvented the sub-bitmap conversion & caching layer in sub.c. Change this so that subtitle decoding isn't special anymore, and draws all subtitles with the normal OSD drawing API. This is also a step towards removing the need for vf_ass auto-insertion. In fact, if auto-insertion would be disabled now, VOs with "old" OSD rendering could still render ASS subtitles in monochrome, because there is still ASS -> old-OSD bitmap conversion in the sub.c mechanism. The code is written with the assumption that the subtitle rendering filter (vf_ass) can render all subtitle formats. Since vf_ass knows the ASS format only, rendering image subs (i.e. RGBA subs) with it simply fails. This means that with vo_xv (vf_ass auto-inserted), image subs wouldn't be rendered. Use a dumb hack to disable rendering subs with a filter, if we detect that the subs are not in ASS format. (Trying to render the subs first would probably result in purging the conversion cache on every frame.)
| * sub: remove logic for disabling hinting on scaled EOSDGravatar wm42012-10-16
| | | | | | | | | | | | | | | | | | | | | | This was an extremely obscure setting, as it was used only with vo_gl if its scaled-osd suboption was used. If you really want this, you can set the desired ass-hinting value directly, and there will be literally no loss in functionality. Note that this didn't actually test whether the EOSD was scaled. Basically, it only checked whether vo_gl had the scaled-osd suboption set.
| * sub: create sub_bitmap array even when using libassGravatar wm42012-10-16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | One sub_bitmaps struct could contain either a libass ASS_Image list, or a mplayer native list of sub-bitmaps. This caused code duplication in vo_vdpau.c and bitmap_packer.c. Avoid this by creating such a sub_bitmap array even with libass. This basically copies the list and recreates it in mplayer's native format. It gets rid of the code duplication, and will make implementing extended subtitle and OSD rendering in other VOs easier. Also do some cosmetic changes and other preparations for the following commits.
* | ad_ffmpeg: add support for planar sample formatsGravatar Stefano Pigozzi2012-10-14
| | | | | | | | | | | | | | | | | | | | FFmpeg and Libav are starting to return a growing number of planar samples when decoding formats that save data like that. In this first implementation planar formats are immediately converted to packed formats. Fututre developments should move to use libavresample. Original work by Nicolas George on mplayer(1).
* | Remove useless video filtersGravatar wm42012-10-03
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Most of these have very limited actual use, or are even entirely useless. They only serve to bloat the codebase and to make life harder. Drowning users in tons of barely useful filters isn't exactly helpful either. Some of these filters were redundant or marked as obsolete. The dlopen and lua (to be added soon) video filters provide ways to add custom filters. Detailed listing for each filter with reasons (with contributions from divVerent and lachs0r): 1bpp: Replaced by "scale". 2xsai: Pixel art scaling algorithm, useless with lossy video. blackframe: Not very useful. Apparently one use is combining it with scripts, that pass the bmovl: Weirdly complex and insane (using FIFO commands), questionable use. cropdetect: Only sort-of useful when used with scripts, and then it will be very fragile. It's probably better to use the dlopen rectangle filter, or to implement the common use-case in a better way. decimate: Not needed/useful with modern video codecs, is an encoding-only filter. denoise3d: "hqdn3d" is better. detc: Some of the worse deteleciners. dint: Useless, actually crashes. (On an assert in vf.c that is disabled by default in mplayer-svn.) dvbscale: Not even practical, and the same effect can be achieved through other means. eq: Worse/older version of eq2. field: Limited use, available as dlopen filter. fil: Quoting the manpage: This filter is very similar to the il filter but much faster, the main disadvantage is that it does not always work. Especially if combined with other filters it may produce randomly messed up images, so be happy if it works but do not complain if it does not for your combination of filters. filmdint: Kind of redundant with pullup, and slightly worse. fixpts: Never useful. (Most if not all filters have been fixed for PTS.) framestep: Questionable use. For things like creating thumbnails, ffmpeg or --sstep should be used. geq: Limited use, will be redundant with the "lua" filter. halfpack: Useless, probably redundant with "scale". harddup: Useless. hue: Most VOs support this. il: Useless. ivtc: Another of the worse deteleciners. kerndeint: A bad deinterlacer. lavc: For DVB output devices. We removed that support. lavcdeint: A bad deinterlacer, was already deprecated. Still available as --vf=pp=fd. mcdeint: A broken deinterlacer that uses lavc internals. ow: Very slow, barely any quality benefit over "hqdn3d". palette: Done by "scale". perspective: Files with incorrect perspective are extremely rare. About the only real-world use for this is keystone correction, which is usually done in hardware by the projector or by graphics drivers/compositors. pp7: Another useless postprocessing filter with bad and complicated code. Use libpostprocess with "pp" instead. qp: Useless. remove-logo: Redundant with delogo, which is better and more practical. rgbtest: Useless. sab, smartblur, boxblur: Blur filters, redundant to "unsharp". softskip: Does nothing. spp, fspp, uspp: Useless postprocessing filters. "spp" needs ffmpeg internals. "fspp" is the optimized version of the "spp" filter (???), while "uspp" is the slow version (????). Use libpostprocess with "pp" instead. telecine: Evil and useless. Available as dlopen filter for testing purposes. test: Useless. tfields: Useless, probably. tile: Questionable use. Available as dlopen filter. tinterlace: Evil and useless. yuvcsp: Probably useless. yvu9: Redundant with "scale". Also remove the following left-over files: vd_null.c, vqf.h
* | vf_lavc: fix compilation with latest libavGravatar Anton Khirnov2012-09-29
|/ | | | | | | | | | Remove a pointless and broken check for avctx->codec->encode. 1) The check does not test for anything useful. 2) AVCodecContext.encode is a private field and is not supposed to be accessed from outside of lavc. 2a) AVCodecContext.encode does not exist anymore in latest libavcodec, so this block fails to build.
* vf_scale: do the upscale detection AFTER calculating dimensionsGravatar Rudolf Polzer2012-09-24
| | | | | | Otherwise it heavily violates the manpage's description, and describing what it did before in the documentation is something too complicated to describe in the English language.
* vf_rectangle: remove as it is very dirty and we have a replacement nowGravatar Rudolf Polzer2012-09-18
|
* vf_dlopen: improve performance for 1-frame-for-1-frame filtersGravatar Rudolf Polzer2012-09-18
| | | | | | This is done by requesting a buffer from the next filter in the chain, instead of always allocating our own. This allows the next filter to e.g. ensure its own preferred memory layout.