aboutsummaryrefslogtreecommitdiffhomepage
path: root/player
Commit message (Collapse)AuthorAge
* player: enable "buffering" pausing for DASH streams tooGravatar wm42017-04-01
| | | | | | | | | | This wasn't enabled if no stream cache was used. It can work with only the demuxer cache. In theory this could be always enabled (even for local files), but still try to avoid this, and enable it only if the source is marked as potentially being a "network" stream. The intention is mostly to enable it for the youtube-dl pseudo-DASH support.
* external_files: enable autoloading with URLsGravatar Ricardo Constantino2017-04-01
| | | | Closes #3264
* external_files: actually try to autoload from fallback pathsGravatar Ricardo Constantino2017-04-01
| | | | | | The 'sub' and 'audio' configuration subdirectories are supposed to be fallbacks for sub-paths and audio-file-paths respectively, but they weren't being scanned even if they existed.
* command: add property notifications for hwdec propertiesGravatar wm42017-03-31
| | | | | | | | | | This is a bit approximate, because we rely on the pixel format changing if the hardware decoding changes. This is not always true, as the pixel format for software decoded video and hardware decoded video copied back to CPU RAM could be the same. (Not sure if that is actually the case for any supported cases.) But for now this should fix most of #4289.
* osc: escape ASS and strip newlines on titleGravatar Ricardo Constantino2017-03-27
|
* osc: make title configurable and use property expansion on itGravatar Ricardo Constantino2017-03-27
|
* Revert "osc: make the title toggleable between media-title and filename"Gravatar Ricardo Constantino2017-03-27
| | | | This reverts commit 6573b73462e336da0daca845ba4df02782afc2b6.
* osx: initial Touch Bar supportGravatar Akemi2017-03-26
|
* command: add expand-text command to property-expand a stringGravatar Avi Halachmi (:avih)2017-03-26
|
* osc: make the title toggleable between media-title and filenameGravatar Ricardo Constantino2017-03-26
| | | | Close #4221
* player: make new stream output more consistent with other outputGravatar wm42017-03-26
| | | | It seems we generally skip the space, such as seen on the AO init line.
* player: print additional stream infoGravatar Dan Oscarsson2017-03-26
| | | | | | In print_stream print additional stream info for audio and video track. While it may be incorrect it is mostly correct and good info to have.
* command: add better runtime filter toggling methodGravatar wm42017-03-25
| | | | | | | | | | Basically, see the example in input.rst. This is better than the "old" vf-toggle method, because it doesn't require the user to duplicate the filter string in mpv.conf and input.conf. Some aspects of this changes are untested, so enjoy your alpha testing.
* command: add demux-start-time propertyGravatar Matthias Hunstock2017-03-25
| | | | Add a demux_start_time property, update docs.
* osc: fix PlayResX undefined warning when aspect is 0Gravatar Ricardo Constantino2017-03-24
|
* osc: bottom/topbar: don't clip title verticallyGravatar Ricardo Constantino2017-03-24
|
* osc: bottom/topbar: increase timecodes width a bitGravatar Ricardo Constantino2017-03-24
| | | | | | | Compensates for wider fonts like DejaVu Sans Mono. Further compensate for the minus sign in the right timecode by 10px. Closes #3952
* osc: refactor cache status displayGravatar Ricardo Constantino2017-03-24
| | | | This removes the twitch of the right-aligned cache status.
* osc: refactor osc message scalingGravatar Ricardo Constantino2017-03-24
| | | | | | | | | | Will still hide playlist items with long enough filenames and osd-font-size but not as soon. osc messages should now preserve their scaling with fullscreen toggling and cycling through audio-only files and files with video. Closes #4081, #4083, #4102
* command: add a property to signal whether networking is usedGravatar wm42017-03-24
| | | | | | Requested. The property semantics are a bit muddy due to lack of effort. Anticipated use is different display of cache status, so it should not matter anyway.
* screenshot: change details of --screenshot-format handlingGravatar wm42017-03-18
| | | | | | | | | | | | | | | | This is just a pointless refactor with the only goal of making image_writer_opts.format a number. The pointless part of it is that instead of using some sort of arbitrary ID (in place of a file extension string), we use a AV_CODEC_ID_. There was also some idea of falling back to the libavcodec MJPEG encoder if mpv was not linked against libjpeg, but this fails. libavcodec insist on having AV_PIX_FMT_YUVJ420P, which we pretend does not exist, and which we always map to AV_PIX_FMT_YUV420P (without the J indicating full range), so encoder init fails. This is pretty dumb, but whatever. The not-caring factor is raised by the fact that we don't know that we should convert to full range, because encoders have no proper way to signal this. (Be reminded that AV_PIX_FMT_YUVJ420P is deprecated.)
* screenshot: minor simplificationGravatar wm42017-03-18
| | | | | | | | This also will set image=NULL, if the video frame is marked as hwaccel, and could not be copied to normal RAM. This will probably change the error message (due to screenshot_get() returning NULL, instead of making image conversion fail at a later point), but the behavior is the same anyway.
* player: specifically log audio EOF tooGravatar wm42017-03-14
|
* osc: fix window dragging with showwindowed=noGravatar Akemi2017-02-27
| | | | | | | initialise OSC with a zero mouse area so mp_input_test_dragging returns a proper value. Fixes #1819
* client: call certain external functions outside of client lockGravatar wm42017-02-24
| | | | | | | | | Fixes theoretical lock-order issues found by Coverity. Calling these inside the log is unnecessary anyway, because they have their own locking, and because mpv_detach_destroy() needs to be called by someone who has exclusive access to the mpv_handle (it's basically a destructor function). The lock order issues comes from the fact that they call back into the client API implementation to broadcast events and such.
* lavfi: temporary workaround for FFmpeg av_buffersrc_parameters_set() bugGravatar wm42017-02-22
| | | | | The function ignores AVBufferSrcParameters.channel_layout. Set it manually using the API.
* player: don't block playback stop when seekingGravatar wm42017-02-21
| | | | | | This was added for A-B loops, but it looks like commit a1dec6f5 made this code unnecessary. Remove it, because it has the annoying side-effect of blocking playback stop when seeking past the end.
* player: fix stats-logging of sleep stateGravatar wm42017-02-21
|
* player: remove unnecessary wakeupGravatar wm42017-02-21
| | | | I can't find any actual need for it.
* player: reduce blocking on VO when switching pauseGravatar wm42017-02-21
| | | | | | | | | | | | | | | | | | | When pausing, we sent BOCTRL_PAUSE and VOCTRL_RESTORE_SCREENSAVER. These essentially wait until the video frame has been rendered. This is a problem with the opengl-cb, if GL rendering is done in the same thread as libmpv uses. Unfortunately, it's allowed to use opengl-cb this way. Logically speaking, it's a deadlock situation, which is resolved with a timeout. This can lead to quite ugly effects, like the on-pause frame not being rendered until the timeout has passed. It has been interpreted as video continuing to play. Resolve this by simply not blocking on pause. Make the screensaver controls async, and handle sending VOCTRL_PAUSE in the VO thread. (All this could be avoided by redoing the internal VO API.) Also see #4152.
* command: add a redundant NULL checkGravatar wm42017-02-20
| | | | | | | | | Currently, tracks have always associated streams, so there can't be a NULL dereference on the next line. But all the code is written with the possibility in mind that we might want tracks without streams, so make it consistent. Found by coverity.
* command: fix wrong sizeof() argumentGravatar wm42017-02-20
| | | | | | | Found by coverity. All of these cases happened to work, probably even in 32 bit (when the name pointer allowed it to use only 4 bytes of space).
* lavfi: support hwdec filters for --lavfi-complexGravatar wm42017-02-20
| | | | | | Not so important by itself, but important for when we replace the vf libavfilter wrapper with the common implementation. (Which will hopefully happen, but not too soon.)
* lavfi: use AVBufferSrcParametersGravatar wm42017-02-20
| | | | | It's nice that you don't have to create a parameter string anymore, but the rest sure is complicated as hell.
* lavfi: use mp_image to store the filter pad formatGravatar wm42017-02-20
| | | | | | | | | | Preparation for enabling hw filters. mp_image_params can't have an AVHWFramesContext reference (because it can't hold any allocations, and isn't meant to hold "active" data in the first place. So just use a mp_image. It has all real data removed, because that would essentially leak 1 frame once the decoder or renderer don't need it anymore.
* lavfi: fix minor memory leakGravatar wm42017-02-13
| | | | | | | | | | | The AVFrame in the tmp_frame field was never actually deallocated. Since this AVFrame holds data temporarily only, and is unreferenced immediately after use, there is actually no need to make it per-pad, so simplify it a bit. (There's also no real value in caching this tmp_frame at all, but I guess it makes the control flow slightly simpler.)
* atomic: remove __atomic builtin usageGravatar wm42017-02-13
| | | | | | | | Using these was a temporary solution while some compilers implemented the underlying atomic mechanisms, but not the C11 language parts (or that's what I guess). Not really useful for us anymore. Also, there is the slight risk of having subtly incorrect semantics by using potentially changing compiler internals and such.
* ytdl_hook: support livestream segmented DASH VODsGravatar Ricardo Constantino2017-02-10
| | | | | | | | | | | | Seen with a VOD of a recently ended livestream on Youtube. They seem to use segmented DASH but unlike normal Youtube segmented DASH, the segments don't seem to need the initialization segment. The video actually fails to start to play if the init segment is prepended with a lot of 'Found duplicated MOOV Atom. Skipped it' errors popping up.
* lavfi: cosmetics: more consistent variable namingGravatar wm42017-02-09
|
* lavfi: slightly better disconnected output handlingGravatar wm42017-02-08
| | | | | | | | | | | | | | | | | | | | | | | | If we have a disconnected output, read data only passively (and don't cause input to be written). Otherwise, we're in danger of making libavfilter queue too many frames on other outputs which are connected to the same input, but don't read as quickly. Also don't set pad->output_needed in this specific case, because it would nonsensically make lavfi_process() return true, even if nothing is going on. This commit breaks if there is a simple filter chain with a connected input, but a disconnected output, like --lavfi-complex='[aid1] copy [ao]' and the audio output didn't initialize correctly. This will eventually starve video as the audio packet queue get full (it will print a warning, and then assume video EOF and exit). But whatever. Probably fixes #4118.
* player: add experimental stream recording featureGravatar wm42017-02-07
| | | | | This is basically a WIP, but it can't remain in a branch forever. A warning is print when using it as it's still a bit "shaky".
* ytdl_hook: reenable support for length-less segments in EDLGravatar Ricardo Constantino2017-02-06
| | | | They're unsupported only in MP4 DASH mode.
* ytdl_hook: fix EDL syntaxGravatar wm42017-02-05
| | | | | All entries must be separated by ";" or "\n". The parser just doesn't enforce it if an entry uses quoting.
* ytdl_hook: Add non-dash fallbacks to default formatsGravatar Ricardo Constantino2017-02-04
|
* ytdl_hook, edl: implement pseudo-DASH supportGravatar wm42017-02-04
| | | | | | | | | We use the metadata provided by youtube-dl to sort-of implement fragmented DASH streaming. This is all a bit hacky, but hopefully a makeshift solution until libavformat has proper mechanisms. (Although in danger of being one of those temporary hacks that become permanent.)
* ytdl: support segmented dashGravatar Ricardo Constantino2017-02-04
|
* sub: remove .txt as text subtitle extensionGravatar wm42017-02-03
| | | | | | | | | | | | | | | | If used with fuzzy matching, the player tends to pick up random text files, sometimes with interesting results. The most interesting interaction is when the user uses --log-file=something.txt, and mpv tries to open its own log file. It essentially "freezes" during probing, because every time it reads from it, it will write some more data, which in turn will cause more data to be read - until the 2MB max. probing size is slowly reached. This is not even an obscure corner case, but happened to multiple users. The .txt extension has been considered a subtitle extension ever since the code was added to MPlayer's subreader.c, but I'm not seeing many actual subtitle files with this extension, so just get rid of it.
* player: different way to auto-enable the demuxer cacheGravatar wm42017-02-02
| | | | | | | | | | | | | | | Instead of enabling it only when a stream-cache is enabled, also try to enable it independently from that if the demuxer is marked as is_network. Also add some code to the EDL code, so EDLs containing network streams are automatically cached this way. Extend the OSD info line so that it shows the demuxer cache in this case (more or less). I didn't find where or whether options.rst describes how the demuxer cache is enabled, so no changes there.
* osx: consistent normalisation when searching for external filesGravatar Akemi2017-02-02
| | | | | | | | | | | | | | | | | | | | | | | | several unicode characters can be encoded in two different ways, either in a precomposed (NFC) or decomposed (NFD) representation. everywhere besides on macOS, specifically HFS+, precomposed strings are being used. furthermore on macOS we can get either precomposed or decomposed strings, for example when not HFS+ formatted volumes are used. that can be the case for network mounted devices (SMB, NFS) or optical/removable devices (UDF). this can lead to an inequality of actual equal strings, which can happen when comparing strings from different sources, like the command line or filesystem. this makes it mainly a problem on macOS systems. one case that can potential break is the sub-auto option. to prevent that we convert the search string as well as the string we search in to the same normalised representation, specifically we use the decomposed form which is used anywhere else. this could potentially be a problem on other platforms too, though the potential of occurring is very minor. for those platforms we don't convert anything and just fallback to the input. Fixes #4016
* osc: allow playlist buttons when loopingGravatar Ricardo Constantino2017-02-01
| | | | Closes #4092