summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* audio: change downmix behavior, add --audio-normalize-downmixwm42016-01-207-4/+25
| | | | | | This is probably the 3rd time the user-visible behavior changes. This time, switch back because not normalizing seems to be the more expected behavior from users.
* audio: change --audio-channels default back to stereowm42016-01-203-6/+10
| | | | | | | | Too many problems. Well, actually it's just Linux audio systems which cause problems, and exclusive audio access on other platforms. In any case, it seems you have to do some manual configuration if you want multichannel audio output.
* player: never show "DS: (unavailable)"wm42016-01-201-3/+6
| | | | Kind of annoying.
* Change 3 more files to LGPLwm42016-01-203-21/+21
|
* vaapi: fix compilation on older FFmpeg/Libavwm42016-01-201-1/+1
| | | | | | They don't define FF_PROFILE_VP9_0. Fixes #2737.
* audio: remove initial decoding retry limitationwm42016-01-192-11/+0
| | | | | | | | | | | | | | | Seems useless. This only helped in one case: one audio stream in the sample av_find_best_stream_fails.ts had a AC3 packets which couldn't be decoded, and for which avcodec_decode_audio4() returned 0 forever. In this specific case, playback will now not start, and you have to deselect audio manually. (If someone complains, the old behavior might be restored, but differently.) Also remove the stale "bitrate" field.
* audio: move direct packet reading from decoders to common codewm42016-01-195-29/+27
| | | | Another bit of preparation.
* audio: move dec_audio.pool to ad_spdifwm42016-01-193-3/+3
| | | | That's where its only use is.
* ao_coreaudio_chmap: change license to LGPLwm42016-01-192-14/+14
| | | | | | While the situation is not really clear for the other rewritten coreaudio code, it's very clear for the channel mapping code. It was all written by us. (MPlayer doesn't even have any channel map handling.)
* filter_kernels.h: adjust the licensewm42016-01-191-11/+5
| | | | | | Make it consistent with filter_kernels.c. See #2688.
* Change GPL/LGPL dual-licensed files to LGPLwm42016-01-1933-392/+231
| | | | | | | | | | | Do this to make the license situation less confusing. This change should be of no consequence, since LGPL is compatible with GPL anyway, and making it LGPL-only does not restrict the use with GPL code. Additionally, the wording implies that this is allowed, and that we can just remove the GPL part.
* Relicense some non-MPlayer source files to LGPL 2.1 or laterwm42016-01-1988-629/+613
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This covers source files which were added in mplayer2 and mpv times only, and where all code is covered by LGPL relicensing agreements. There are probably more files to which this applies, but I'm being conservative here. A file named ao_sdl.c exists in MPlayer too, but the mpv one is a complete rewrite, and was added some time after the original ao_sdl.c was removed. The same applies to vo_sdl.c, for which the SDL2 API is radically different in addition (MPlayer supports SDL 1.2 only). common.c contains only code written by me. But common.h is a strange case: although it originally was named mp_common.h and exists in MPlayer too, by now it contains only definitions written by uau and me. The exceptions are the CONTROL_ defines - thus not changing the license of common.h yet. codec_tags.c contained once large tables generated from MPlayer's codecs.conf, but all of these tables were removed. From demux_playlist.c I'm removing a code fragment from someone who was not asked; this probably could be done later (see commit 15dccc37). misc.c is a bit complicated to reason about (it was split off mplayer.c and thus contains random functions out of this file), but actually all functions have been added post-MPlayer. Except get_relative_time(), which was written by uau, but looks similar to 3 different versions of something similar in each of the Unix/win32/OSX timer source files. I'm not sure what that means in regards to copyright, so I've just moved it into another still-GPL source file for now. screenshot.c once had some minor parts of MPlayer's vf_screenshot.c, but they're all gone.
* demux: remove a minor difference between threaded/unthreaded modeswm42016-01-191-2/+2
| | | | This difference was unnecessary.
* demux: fix leaking closed captions packets with unselected sub streamwm42016-01-191-6/+6
| | | | | Calling demux_add_packet() unconditonally frees the packet if the stream is not selected.
* ao_wasapi: use share_mode value instead of raw option opt_exclusiveKevin Mitchell2016-01-181-1/+1
| | | | | | | Previously used opt_exclusive option to decide which volume control code to run. The might not always reflect the actual state, for example if passthrough is used. Admittedly, none of the volume controls will work anyway with passthrough, but this is the right thing to do.
* ao_openal: wipe out global context on init errorKevin Mitchell2016-01-181-0/+1
| | | | | Previously this would break all further attempts to init the driver after one had failed.
* vo_drm: fix CRTC usagerr-2016-01-181-1/+1
|
* vd_lavc: feed A53_CC side data packets into the demuxer for eia_608 decodingAman Gupta2016-01-184-2/+53
|
* lavc_conv: pass real_time=1 option to ffmpeg for eia_608 decoderAman Gupta2016-01-181-1/+7
|
* ass_mp: add mp_ass_flush_old_events()Aman Gupta2016-01-182-0/+15
|
* command: fix NULL pointer deref in "video-codec" propertywm42016-01-181-1/+1
| | | | Fixes #2729.
* demux: disable stream cache if no tracks are selectedwm42016-01-182-1/+12
| | | | | | | | | Slightly helps with timeline stuff, like EDL. There is no need to keep network (or even just disk I/O) busy for all segments at the same time, because 1. the data won't be needed any time soon, and 2. will probably be discarded anyway if the stream is seeked when segment is resumed. Partially fixes #2692.
* demux: remove unused functionwm42016-01-182-15/+0
|
* demux: fix interleaved subtitle reading in unthreaded modewm42016-01-181-16/+17
| | | | | | Meh. Why are there even two code paths. This adds an additional check; the big function is only moved.
* demux: unify codepaths for threaded/unthreaded track switchingwm42016-01-181-10/+8
| | | | Well, not that the unthreaded case is important, or even works properly.
* cache: add mechanism for disabling readaheadwm42016-01-182-1/+17
| | | | Will be used in a following commit.
* demux: remove unused flagwm42016-01-182-4/+1
|
* manpage: adjust --display-fps descriptionwm42016-01-181-3/+7
| | | | | Make it more conservative. In most cases, mpv should be able to determine it correctly on all supported platforms.
* af_lavrresample: fudge some channel layout conversionwm42016-01-181-0/+33
| | | | | | | | | | | | Prevents channels from being dropped, e.g. when going 7.1 -> 7.1(wide) and similar cases. The reasoning here is that channel layouts over HDMI don't work anyway, and not dropping a channel and playing it on a slightly "wrong" (but expected) speaker is preferable to playing silence on these speakers. Do this to remove issues with ao_coreaudio. Frankly I'm not sure whether our mapping (between CA and mpv/FFmpeg speakers) is correct, but on the other hand due to the reasons stated above it's not all that meaningful.
* sub: fix memory leakswm42016-01-182-3/+8
| | | | | | | | | demux_lavf.c leaked the complete subtitle data if it was put through iconv. lavc_conv.c leaked AVCodecContext.subtitle_header (set by libavcodec), which is fixed by using avcodec_free_context(). It also leaked the subtitle that was decoded last.
* 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
| | | <