aboutsummaryrefslogtreecommitdiffhomepage
Commit message (Collapse)AuthorAge
...
| * commands: remove pointless NULL checksGravatar wm42012-10-12
| | | | | | | | | | | | Most property implementations checked whether the "arg" parameter was NULL. This is entirely pointless, because NULL is actually never pased. It was inconsistently done, too. Remove the checks.
| * commands: handle property stepping in a generic wayGravatar wm42012-10-12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Instead of forcing each property implementation implement its own logic for M_PROPERTY_STEP_UP/M_PROPERTY_STEP_DOWN, handle it in the generic property code. Rename the M_PROPERTY_STEP_UP command to M_PROPERTY_SWITCH (the other property command, M_PROPERTY_STEP_DOWN, isn't needed anymore: stepping downwards is done by passing a negative argument). Always use double as argument type; it makes the code easier, and covers all property types. Move the code which does the actual type-specific value stepping to m_option.c (the idea is that m_option handles types). Some properties still have custom handlers implemented with M_PROPERTY_SWITCH. They can't be mapped to the generic mechanism, because their value range is dynamic or entirely unknown. For some properties, the default step stride is changed to 1. This is no issue, because the default bindings in input.conf all use an explicit stride in the affected cases.
| * options: remove CONF_TYPE_POSITIONGravatar wm42012-10-12
| | | | | | | | | | | | | | | | | | This was the option parser for the off_t C type. These days, off_t is always int64_t, so replace all its uses by int64_t and CONF_TYPE_INT64. Fix the --sstep option. It used CONF_TYPE_INT with an off_t variable, which will result in invalid memory accesses. Make it use type double instead, which seems to make more sense for this option.
| * commands: rename "osdlevel" option and property, make it a choiceGravatar wm42012-10-12
| | | | | | | | | | | | | | | | | | Rename both the option and property to "osd-level", which fits a bit better with the general naming scheme. Make it a choice instead of an integer range. I failed to come up with good names for the various levels, so leave them as-is. Remove the useless property handler for the "loop" property too.
| * commands: replace --hardframedrop, change framedropping propertyGravatar wm42012-10-12
| | | | | | | | | | | | | | | | | | | | Replace --hardframedrop with --framedrop=hard. Rename the framedrop property from "framedropping" to "framedrop" for the sake of making command line options have the same name as their corresponding property. Change the property to accept choice values instead of numeric values. Remove unused/forgotten auto_quality variable.
| * commands: remove third parameter for "switch"Gravatar wm42012-10-12
| | | | | | | | | | This could change the direction (i.e. invoke STEP_PROPERTY_DOWN), but you can just pass a negative value as second argument instead.
| * commands: rename osd_show_[property_]text and osd_show_progressionGravatar wm42012-10-12
| | | | | | | | | | | | | | | | | | | | | | | | osd_show_[property_]text => show_text osd_show_progression => show_progress show_text, osd_show_property_text and osd_show_text both map to the code for the previous osd_show_property_text. The only special thing about osd_show_text is that you don't need to escape "$". Also, unfortunately osd_show_property_text requires escaping things twice, one time for the command parser, and the other time for the property formatting code, while osd_show_text needed only one level of escaping.
| * commands: remove speed_set/speed_incr commandsGravatar wm42012-10-12
| | | | | | | | Redundant with set/switch commands.
| * commands: rename properties, update input.confGravatar wm42012-10-12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Use "-" instead of "_" in property names. The intent is that property names and options names should be the same (if they refer to the same thing), and options use "-" as word separator. Rename some other properties too, e.g. "switch_audio" -> "audio". Add a way to translate the old property names to the new ones, similar to the input command legacy bridge. Update input.conf. Use the new property names, and don't use legacy commands.
| * commands: remove unimplemented "use_master" commandGravatar wm42012-10-12
| | | | | | | | The implementation for this command was removed in 2002.
| * commands: change input commands to make OSD usage explicitGravatar wm42012-10-12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Most input commands had their own policy whether to display an OSD message for user feedback or not. Some commands had two variants, one that showed an OSD message and one that didn't (e.g. step_property_osd and step_property). Change it such that all commands show a message on the OSD. Add a "no-osd" modifier that disables OSD for that command. Rename the "step_property" and "step_property_osd" command to "switch", and rename "set_property" and "set_property_osd" to "set". Note that commands which haven't used OSD before still don't use OSD. That will possibly be fixed later. (E.g. "screenshot" could display an OSD message instead of just printing a message on the terminal.) The chapter and edition properties still produce OSD messages even with "no-osd", because they don't map so well to the property_osd_display[] mechanism.
| * commands: minor cleanup for property_osd_display arrayGravatar wm42012-10-12
| | | | | | | | | | | | Make the definition more compact and less confusing by omitting rarely used fields. Avoid having to initialize osd_id with -1 in every entry by making 0 an unused OSD ID instead.
| * commands: simplify legacy command-to-property bridgeGravatar wm42012-10-12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There are many input commands which are redundant to properties. They were parsed like normal commands, but set_property_command() in command.c handled them automatically using the property mechanism. This still required having the command specifications around, and the code in command.c was quite messy. Replace this with a text based replacement mechanism. Some corner cases are not handled: commands of form "seek_chapter 3 1" are supposed to set the "chapter" property to 3. This use is probably rare, and doesn't show up in the default input.conf. The reason compatibility is kept is because breaking input.conf is quite annoying, so a minimal effort is made to avoid this. Currently we print an annoying warning every time a legacy command is used, though. Also add a compatibility entry for "pt_step", which was removed some time ago. Variations in whitespace are not handled, but it's good enough to deal with old input.conf entries.
| * commands: remove legacy slave mode get commandsGravatar wm42012-10-12
| | | | | | | | | | | | | | | | These have been replaced by properties. Also remove some other slave- mode specific get commands that can be replaced by property uses. The get_metadata() function didn't actually contain anything useful, and just replicated code from other parts of mplayer.
* | encoding_example_profiles: add the better AAC encodersGravatar Rudolf Polzer2012-10-12
| | | | | | | | | | ffmpeg also does libvo_aacenc (libfaac level) and libfdk_aac (supposedly great).
* | gl_common: allow compilation on Mac OS 10.6Gravatar Stefano Pigozzi2012-10-07
| | | | | | | | | | Define just enough constants to allow compilation on OS X Snow Leopard. mpv's OpenGL autodetection features should make the rest.
* | build: fix ao_dsound config checksGravatar wm42012-10-05
| | | | | | | | | | | | | | | | | | | | | | | | ao_dsound.c depended on the same configure check as vo_directx.c, which was removed in commit 0e2c48a3ce19. This accidentally disabled inclusion of ao_dsound. Fix it by adding a new check. Also, move it below ao_portaudio on the auto-select list, as ao_dsound is considered deprecated. Unrelated to that, move ao_lavc below ao_null to prevent it from being auto-selected.
* | vo_opengl: don't try to map an empty bufferGravatar wm42012-10-03
| | | | | | | | | | | | | | | | The change detection signalled a full re-upload on initialization, but no texture reallocation. Binding the uninitialized buffer caused an OpenGL error. Fixes error messages on start with "opengl-hq".
* | vo_opengl: change default FBO formatGravatar wm42012-10-03
| | | | | | | | | | | | | | | | | | GL_RGB16 doesn't seem to work universally (e.g. Intel). Use GL_RGB by default, and use GL_RGB16 for "opengl-hq" only. This may require users of Intel GPUs to manually experiment with the fbo-format suboption when using "opengl-hq", as GL_RGB16 doesn't seem to work there in some cases (black screen).
* | vo_opengl: use PBOs by default with opengl-hqGravatar wm42012-10-03
| | | | | | | | | | | | | | | | | | | | It's not really known whether PBO use causes problems of any kind (most likely not). They should slightly increase performance. Use them by default with "opengl-hq". Even though PBOs don't have anything to do with rendering quality, "opengl-hq" provides a test bed for features that should be enabled by default, but aren't out of fear for regressions.
* | vo_opengl: use low quality default settings, add opengl-hq aliasGravatar wm42012-10-03
| | | | | | | | | | | | | | | | Change the default settings for vo_opengl to highest performance and compatibility, but lowest quality. Use bilinear as default scaler. Add "opengl-hq" as alias for high quality settings. This alias uses exactly the same settings as vo_opengl did before this commit.
* | VO: add mechanism to replace old VO names, use it with "gl" and "gl3"Gravatar wm42012-10-03
| | | | | | | | | | Rather than duplicating the VO driver structs to add aliases, replace them textually when searching for the VO on initialization.
* | bstr: add bstr_equals/bstr_equals0 utility functionGravatar wm42012-10-03
| |
* | vo_opengl: always check GL errors in first 5 framesGravatar wm42012-10-03
| | | | | | | | | | | | | | | | | | | | | | | | Normally, we don't want to call glGetError() all the time, because this supposedly causes slowdowns. (I could not measure any on Linux with nVidia binary drivers; maybe it's due to the fact that we have only a few, expensive calls per frame.) However, having to ask users to add the "debug" suboption when trying to diagnose problems is very annoying. Since most errors happen during initialization only, enabling it for the first 5 frames only is an interesting compromise.
* | VO: actually rename VOs gl -> opengl-old, gl3 -> openglGravatar wm42012-10-03
| | | | | | | | | | | | | | | | | | | | | | | | | | This renames vo_gl3 to vo_opengl, and makes it the default. The old vo_gl is still available under "opengl-old". We keep "gl3" as alias to "opengl" for short-term compatibility. For OSX/Cocoa, the autoprobe order changes (prefer the "opengl" over "opengl-old"). Remove "gl_nosw". This was a compatibility alias for "opengl-old", and there's no point in keeping it.
* | VO: rename file: vo_gl3_shaders.glsl -> vo_opengl_shaders.glslGravatar wm42012-10-03
| |
* | VO: rename file: vo_gl3.c -> vo_opengl.cGravatar wm42012-10-03
| |
* | VO: rename file: vo_gl.c -> vo_opengl_old.cGravatar wm42012-10-03
| |
* | gl_common: require GLX 1.3 for vo_gl, remove old pre-1.3 codeGravatar wm42012-10-03
| | | | | | | | | | | | Now both GL3 (for vo_gl3) and legacy context context creation (for vo_gl) use the same code to create the X window. Only actual GL context creation is different.
* | vo_gl3: make it work on OpenGL 2.1Gravatar wm42012-10-03
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Now vo_gl3 should work with standard OpenGL 2.1, as long as the GL_ARB_texture_rg extension is available. Optional features, which require features that are always in OpenGL 3.0, but are available as extensions only in OpenGL 2.1, are automatically disabled. The force-gl2 suboption, which was an unreliable hack to run vo_gl3 in an OpenGL 2.1 context, is removed. Significant changes are done to the extension loader to make it easier to identify optional OpenGL features. Context creation is a bit changed to simplify the code and to handle the fallback better if OpenGL 3 context creation fails, and creating an OpenGL legacy context is attempted. Based on the initial work by Rudolf Polzer <divverent@xonotic.org>, which included making the shader GLSL 1.20 compatible, and more.
* | mplayer: fix crash when muted and audio codec failsGravatar wm42012-10-03
| | | | | | | | | | | | | | | | | | | | | | | | | | | | When audio codec initialization fails, reinit_audio_chain() will call uninit_player() to close the AO. mpctx->ao is set, but mpctx->mixer.ao is still NULL. uninit_player() assumes both variables are always the same, and calls mixer_uninit(), even though mpctx->mixer.ao is NULL. That function tries to access the ao without NULL check if mute was enabled. Fix this in mplayer.c by not relying on the assumption that mpctx->ao == mpctx->mixer.ao. Also, add a check for NULL to mixer.c (function muxer_uninit()). One of the checks is redundant and only one of them is needed, but we add both for general robustness.
* | 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
* | Fix string.format compatibility with Python 2.6Gravatar Kovensky2012-10-01
| |
* | encode: remove dependency on current ffmpegGravatar Rudolf Polzer2012-10-01
| | | | | | | | | | | | | | | | | | | | | | | | | | Apparently, libav doesn't have the change for the new way to create a libavformat context merged yet. So, we can't use that... Rather, this commit fixes format specific avoptions another way. On the downside, invalid format options are now detected very late, and any attempt to set an option value to +something or -something will append to the previously set option value (this logic can no longer be specific to options of bitflag type, as finding out the option type is what we simply cannot do with this interface).
* | .gitignore: ignore .exe filesGravatar Kovensky2012-09-30
| |
* | windows support: set -mwin32 when building on CygwinGravatar Kovensky2012-09-30
| | | | | | | | | | This makes cygwin define _WIN32 / WIN32, which it doesn't otherwise define.
* | windows support: include io.h when building on CygwinGravatar Kovensky2012-09-30
| |
* | windows support: define WINVER to 0x0500Gravatar Kovensky2012-09-30
| | | | | | | | This means that we require Windows 2000 or later.
* | 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.
* | build: use "python" instead of "python3" as interpreter nameGravatar wm42012-09-29
| | | | | | | | | | This works regardless whether "python" starts a Python 2 or Python 3 interpreter.
* | build: make Python scripts compatible with Python 2.xGravatar wm42012-09-29
| | | | | | | | | | They were originally written for Python 3.x. Changing them to work on Python 2.x as well is trivial. Tested with Python 2.7.3 and 3.2.3.
* | encode: add options --ovfirst and --oafirstGravatar Rudolf Polzer2012-09-29
| | | | | | | | | | | | This allows to define which stream is to be used as first output stream. This is useful because dvdauthor refuses VOB files where the audio stream is the first stream.
* | encode: update to current ffmpeg APIGravatar Rudolf Polzer2012-09-29
| | | | | | | | This gets rid of some quite ugly code.
* | encode: fix -ocopyts with certain DVD imagesGravatar Rudolf Polzer2012-09-29
| | | | | | | | | | | | When timestamps jump by more than 30 seconds, assume an unexpected discontinuity. Fixes encoding aborts (i.e. no more frames written) at DVD cell switches.
* | TOOLS: fix first frame pts for dlopen/telecine.soGravatar Rudolf Polzer2012-09-28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When the first frame of a telecine pattern did not generate an output frame (because it is a 0 or a 1), this could lead to the first two output frames getting equal pts values. When the first frame of a telecine pattern generates exactly one output frame (i.e. when the telecine pattern starts with 2 or 3), then the output was correct before this comment, and still is unchanged. When the first frame of a telecine pattern generates more than one output frame (i.e. when it starts with 4 to 9), then output pts are still broken. This is not really solvable without knowing the frame duration, or delaying output by one frame.
* | encoding examples: refuse upscaling when the target is an iPhoneGravatar Rudolf Polzer2012-09-24
| | | | | | | | | | | | This is ok, because the iPhone can handle any resolution. So there is no need to waste space on upscaling the iPhone can do at playback time as well.
* | 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.
* | mp_msg: make MSGL_STATUS use the same color as MSGL_INFOGravatar wm42012-09-23
| | | | | | | | The green status line is annoying.
* | demuxer: fix crash with demux_rawvideoGravatar wm42012-09-23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | rawvideo is a rather primitive demuxer that doesn't implement track switching. The problem was that during track switching the demuxer implementations normally set the stream IDs in order to do the switch, and since rawvideo obviously didn't do that, so the current stream in ds->sh / demuxer->video->sh was set to NULL. (The frontend always assumes track switching is successful, which is a reasonable assumption - failing due to missing video codecs etc. is in separate codepaths.) Later, demux_rawvideo_fill_buffer() in demux_rawvideo.c tried to dereference the NULL stream and crashed. Other trivial single-stream demuxers worked fine, because they didn't try to access ds->sh.
* | options: handle alias options differentlyGravatar wm42012-09-23
| | | | | | | | | | | | | | | | | | | | | | When setting an alias option, its value is not saved in the file-local options case. The ensure_backup function in m_config.c exits if it encounters an aliased option, because it should not be saved additionally to the original option. However, the original option is likely never saved in this case. Change it so that ensure_backup always accesses the original option. The original option is the one that first appears in the option list.