summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Release 0.15.0v0.15.0Martin Herkt2016-01-182-1/+79
|
* Merge branch 'master' into release/currentMartin Herkt2016-01-18231-7395/+4478
|\
| * image_writer: fix writing flipped images as jpgwm42016-01-171-1/+1
| | | | | | | | | | | | next_scanline is usually an unsigned int. Fixes #2635 (again).
| * player: refactor: eliminate MPContext.d_videowm42016-01-179-100/+109
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Eventually we want the VO be driven by a A->V filter, so a decoder doesn't even have to exist. Some features definitely require a decoder though (like reporting the decoder in use, hardware decoding, etc.), so for each thing which accessed d_video, it has to be redecided if and how it can access decoder state. At least the "framedrop" property slightly changes semantics: you can now always set this property, even if no video is active. Some untested changes in this commit, but our bio-based distributed test suite has to take care of this.
| * player: refactor: eliminate MPContext.d_subwm42016-01-175-62/+74
| | | | | | | | The same is going to happen to d_video and d_audio later.
| * command: modify OSD message when forcing original video aspect ratiowm42016-01-161-0/+7
| | | | | | | | | | | | | | Not bothering with anything advanced, so we just show "(original)" if the video-aspect property/option is reset. Fixes #2722.
| * video: refactor: disentangle decoding/filtering some morewm42016-01-166-109/+180
| | | | | | | | | | | | | | | | | | | | | | This moves some code related to decoding from video.c to dec_video.c, and also removes some accesses to dec_video.c from the filtering code. dec_video.ch is starting to make sense, and simply returns video frames from a demuxer stream. The API exposed is also somewhat intended to be easily changeable to move decoding to a separate thread, if we ever want this (due to libavcodec already being threaded, I don't see much of a reason, but it might still be helpful).
| * osd: make osd-width/height properties watchablewm42016-01-152-3/+8
| |
| * global: add client API pointer to library handlewm42016-01-154-0/+10
| | | | | | | | | | | | | | Makes the next commit simpler. It's probably a bad idea to add more fields to the global state, but on the other hand the client API state is pretty much per-instance anyway. It also will help with things like the proposed libmpv custom stream API.
| * video: refactor: slightly disentangle video filteringwm42016-01-151-43/+32
| |
| * cocoa: get fps only from dislaylinkStefano Pigozzi2016-01-141-8/+9
| | | | | | | | | | In my tests, CGDisplayModeGetRefreshRate returns 24.0 even though the nominal one is set to 24000/1001. This is obviously not good for video.
| * cocoa: add an observer for screenmode changeStefano Pigozzi2016-01-141-0/+26
| |
| * manpage: update win32 config pathwm42016-01-141-1/+1
| | | | | | | | | | | | Well, this probably depends on the exact Windows version. Fixes #2611.
| * video: fix interactively changing aspect ratiowm42016-01-143-1/+7
| | | | | | | | | | | | | | | | | | The aspect ratio calculations are cached (mainly so that aspect ratio related messages are not logged on every frame). The cache is not clared anymore when video filters are reconfigured, but changing the video-aspect-ratio property relied on it. Make it explicit. Fixes #2714.
| * man: options: Clarify expected behaviour with --dvbin-full-transponder.Oliver Freyermuth2016-01-141-4/+7
| | | | | | | | | | | | | | Since the streams are chosen from the full TS by the player frontend, one should not expect that the program which is shown matches the chosen channel which was used for tuning to the frequency. Also, reformulate slightly to simplify reading.
| * player: prefer "service_name" as media title.Oliver Freyermuth2016-01-141-0/+3
| | | | | | | | | | If it is defined, which it rarely is (e.g. mpegts streams) this is the preferred title information.
| * options: add "service_name" as display tag.Oliver Freyermuth2016-01-141-1/+1
| | | | | | | | | | | | This is labeled as "name of the service in broadcasting (channel name)" and exported as a generic tag by avformat-demuxers, notably lavf when handling mpegts-streams from DVB.
| * demux_lavf: update metadata with information from AV_PROGRAM on switch.Oliver Freyermuth2016-01-141-0/+6
| | | | | | | | | | | | Need to trigger demux_changed() manually since metadata of tracks and streams is not changed, but demuxer-metadata is still changed on program switch.
| * man: options: hint to cycling of program property.Oliver Freyermuth2016-01-141-0/+2
| | | | | | | | | | Very helpful to switch between the different programs on a transponder in full-transponder-mode for DVB.
| * man: input: document new DVB bindings and properties.Oliver Freyermuth2016-01-142-1/+13
| | | | | | | | | | There is now H and K for DVB-channel switching, and the properties dvb-channel (W) and dvb-channel-name (RW).
| * player: implement SWITCH for dvb-channel-name property, add binding.Oliver Freyermuth2016-01-142-0/+12
| | | | | | | | | | | | | | | | The binding is similar to the tv-binding, just with capital letters. Switching the dvb-channel-name property compared to dvb-channel means the channel-name is shown on-screen when switching instead of "dvb-channel (error)" otherwise, and switching anyways happens without changing the card.
| * player: remove unused last_dvb_step member.Oliver Freyermuth2016-01-142-4/+0
| | | | | | | | | | | | Channel switching is treated inside the global DVB state by now. Anyways the last switching direction is not really useful and of no interest inside the player.
| * player, stream_dvb: implement dvb-channel-name property.Oliver Freyermuth2016-01-144-1/+59
| | | | | | | | | | | | | | | | | | On read, it returns the name of the current DVB program, on write, it triggers a channel-switch to the program if it is found in the channel list of the currently active card. Compared to the dvb-channel property which already exists and is a pair of integers (card + channel number) this has the limitation of not switching the card, but is probably of much more common use.
| * stream_dvb: global protection mutex and usage bit for global_dvb_state.Oliver Freyermuth2016-01-142-1/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | The mutex is used in dvbin_open and dvbin_close only since these are the only entry / exit points to the stream. When opening, it is first checked (mutexed) whether the state already exists and is in use, then a STREAM_ERROR is returned, since there may be only one stream_dvb active at a time. State-creation itself is also protected by mutex. In dvbin_close, the usage-bit is set to false (mutexed) in case of channel switch. In case of stream-teardown, the state is destructed (also protected by mutex).
| * stream_dvb: implement GET_METADATA and return program name.Oliver Freyermuth2016-01-141-2/+13
| | | | | | | | Now title will be the current channel name also after channel switch.
| * stream_dvb: persist state-information across channel-switches.Oliver Freyermuth2016-01-142-35/+71
| | | | | | | | | | | | | | | | | | The state-structure is kept in a static pointer and reused on recreation of the stream. To not leak the state and the FDs within upon mpv shutdown, the state-structure is still destructed gracefully in dvbin_close(), unless a channel switch has been initiated directly before. This fixes channel-switching for DVB which was broken since a609877.
| * dvb: rename dvb_config_t to dvb_state_t, keep config and state there.Oliver Freyermuth2016-01-143-117/+128
| | | | | | | | | | | | | | | | | | The state-struct now contains everything which can be kept after initial initialization. This includes the channel-lists, configuration, device-fds and also information like current channel and current card. The dvb_priv_t is kept containing the mp-options, a pointer to the state and to the logger. After this restructuring, the state-struct contains all information which can be persisted across channel switching.
| * video: decouple filtering/decoding slightly morewm42016-01-146-101/+119
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Lots of noise to remove the vfilter/vo fields from dec_video. From now on, video filtering and output will still be done together, summarized under struct vo_chain. There is the question where exactly the vf_chain should go in such a decoupled architecture. The end goal is being able to place a "complex" filter between video decoders and output (which will culminate in natural integration of A->V filters for natural integration of libavfilter audio visualizations). The vf_chain is still useful for "final" processing, such as format conversions and deinterlacing. Also, there's only 1 VO and 1 --vf option. So having 1 vf_chain for a VO seems ideal, since otherwise there would be no natural way to handle all these existing options and mechanisms. There is still some work required to truly decouple decoding.
| * player: remove stale declarationwm42016-01-141-1/+0
| |
| * video: refactor: shuffle code aroundwm42016-01-144-76/+75
| | | | | | | | | | | | struct dec_video should have nothing to do with video filters or outputs, and this huge chunk of code was somehow stuck directly in dec_video.c.
| * video: refactor: handle video format fixups closer to decoderwm42016-01-147-92/+83
| | | | | | | | | | | | | | | | | | | | Instead of handling this on filter chain reinit, do it directly after the decoder. This makes the code less entangled. In particular, this gets rid of the really weird "override params" concept in the video filter code. The last_format/fixed_formats have some redundance with decoder_output, but unfortunately the latter has a slightly different use.
| * manpage: mention that image subtitles can not be repositioned etc.wm42016-01-121-0/+8
| | | | | | | | Fixes #2707. (Not entirely following the suggestions there.)
| * stream: stream_read_complete() reads from current pos, not 0wm42016-01-121-1/+1
| | | | | | | | (Well, I hope no caller really relied on this anyway.)
| * demux_lavf: fix charset conversion with UTF-16 subtitleswm42016-01-121-5/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | UTF-16 subtitles are special in that they are usually read by libavformat directly, even though they are not in UTF-8. This is explicitly handled convert_charset() and skips conversion to UTF-8. There was a bug due to not resetting the file position: if conversion happens, the actual stream is replaced with a memory stream containing the converted data, but if conversion is skipped, the original stream with the wrong file position is kept. Fix by always opening a memory stream. (We _could_ seek back, but there is a slight possibility of additional failure due to unseekable streams.) Also, don't enter conversion if the subtitle is detected as UTF-8 either. Fixes #2700.
| * player: simplify backsteppingwm42016-01-124-117/+38
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Basically reimplement it. The old implementation was quite stupid, and was probably done this way because video filtering and output used to be way less decoupled. Now we can reimplement it in a very simple way: when backstepping, seek to current time, but keep the last frame that was supposed to be discarded when reaching the target time. When the seek finishes, prepend the saved frame to the video frame queue. A disadvantage is that the new implementation fails to skip over timeline boundaries (ordered chapters etc.), but this never worked properly anyway. It's possible that this will be fixed some time in the future.
| * player: handle hrseek framedrop correctlywm42016-01-122-2/+2
| | | | | | | | | | This was non-sense and checked the option instead of the actual flag. Possibly could lead to incorrect hr-seeks.
| * demux: merge sh_video/sh_audio/sh_subwm42016-01-1224-247/+232
| | | | | | | | | | | | | | | | | | | | This is mainly a refactor. I'm hoping it will make some things easier in the future due to cleanly separating codec metadata and stream metadata. Also, declare that the "codec" field can not be NULL anymore. demux.c will set it to "" if it's NULL when added. This gets rid of a corner case everything had to handle, but which rarely happened.
| * TOOLS/stats-conv: slightly better colorwm42016-01-121-3/+9
| | | | | | | | | | | | | | | | pyqtgraph's intColor() is less than ideal, especially on white background. Can't see anything. Unfortunately the rendering of the legend can't be fixed, because pyqtgraph is terrible and hardcodes its rendering, including colors.
| * build: fix mpv.conf installationwm42016-01-111-1/+1
| |
| * build: add option to customize config files system pathStefano Pigozzi2016-01-112-1/+3
| | | | | | | | | | | | | | Some packagers need to install default config files to some path but automatically load system configuration files from another path. See #2704
| * mpv_talloc.h: rename from talloc.hDmitrij D. Czarkoff2016-01-1184-83/+83
| | | | | | | | This change helps avoiding conflict with talloc.h from libtalloc.
| * sub: read subtitles until their timestamps are past videowm42016-01-111-1/+1
| | | | | | | | | | Change >= to >, because if the timestamps are equal, further subtitle packets with the same timestamps could be required (e.g. ASS).
| * player: eliminate demux_get_next_pts()wm42016-01-116-37/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This slightly changes behavior when seeking with external audio/subtitle tracks if transport streams and mpeg files are played, as well as behavior when seeking with such external tracks. get_main_demux_pts() is evil because it always blocks on the demuxer (if there isn't already a packet queued). Thus it could lock up the player, which is a shame because all other possible causes have been removed. The reduced "precision" when seeking in the ts/mpeg cases (where SEEK_FACTOR is used, resulting in byte seeks instead of timestamp seeks) might lead to issues. We should probably drop this heuristic. (It was introduced because there is no other way to seek in files with PTS resets with libavformat, but its value is still questionable.)
| * cache: remove useless return valuewm42016-01-111-5/+2
| | | | | | | | It was unused, and also returned the wrong value in some cases.
| * vaapi: replace VA_STR_FOURCCwm42016-01-114-7/+4
| |
| * ao_coreaudio: replace fourcc_repr()wm42016-01-113-35/+7
| | | | | | | | Replace with the more general mp_tag_str().
| * etc: rename "example.conf" to "mpv.conf"Dmitrij D. Czarkoff2016-01-111-0/+0
| |
| * dxva2: log more debug infoswm42016-01-111-11/+41
| | | | | | | | | | Dump the complete list of decoders and image formats. If it's a decoder we know, add a stringified name.
| * ao_wasapi: move out some utility functionswm42016-01-115-76/+128
| | | | | | | | | | | | Note that hresult_to_str() (coming from wasapi_explain_err()) is mostly wasapi-specific, but since HRESULT error codes are unique, it can be extended for any other use.
| * common: add mp_tag_str() utility functionwm42016-01-112-0/+20
| |
| * waf: add "lua51" ("51obsd") to list of possible lua namesDmitrij D. Czarkoff2016-01-111-0/+1
| |
| * ytdl: Include Referer header as wellYen Chi Hsuan2016-01-101-3/+6
| | | | | | | | | | Some videos require correct Referer header for downloading, or 403 Forbidden is thrown.
| * TOOLS: remove old build systemwm42016-01-102-1500/+0
| | | | | | | | I'll still use it privately, but nobody else should.
| * player: detect audio PTS jumps, make video PTS heuristic less aggressivewm42016-01-094-14/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is another attempt at making files with sparse video frames work better. The problem is that you generally can't know whether a jump in video timestamps is just a (very) long video frame, or a timestamp reset. Due to the existence of files with sparse video frames (new frame only every few seconds or longer), every heuristic will be arbitrary (in general, at least). But we can use the fact that i