aboutsummaryrefslogtreecommitdiffhomepage
Commit message (Collapse)AuthorAge
* stream_dvdnav: print more debugging infoGravatar wm42014-04-17
|
* stream_dvd: fix seeking regressionGravatar wm42014-04-17
| | | | | | | | | | | | This was accidentally completely destroyed with commit 24f1878e. I didn't notice it when testing, because forward seeking still worked mostly. The issue was that dvd_seek_to_time() actually called stream_seek(), which was supposed to call the byte-level seek function dvd_seek(). So we have to restore this function, and replace all generic stream calls with stream_dvd.c internal ones. This also affects stream->pos (now a random number as far as stream_dvd.c is concerned) and stream_skip().
* ao: remove redundant get_delay checkGravatar wm42014-04-17
| | | | It did nothing; the real check is in push.c.
* wayland: unset input regions for osdGravatar Alexander Preisinger2014-04-16
| | | | | Set a zero sized input region for the osd surfaces in order to avoid getting input for the subsurfaces which might dissapear any time.
* wayland/shm: Use subsurfaces for OSDGravatar Alexander Preisinger2014-04-16
|
* af_lavcac3enc: detach on any passthrough format, not just ac3Gravatar wm42014-04-16
|
* input: deal with playback thread wakeup on windowsGravatar wm42014-04-15
| | | | | | | | | | | | | The recent change of waking up the playback thread using a wakeup pipe doesn't work on windows, because windows is horrible. So use a condition variable instead to wake up the thread. To make things worse, jackaudio is also horrible and "disallows" the use of mutexes, so all we can do is implementing a half-solution that is not race condition free. It would probably better to give up on this lock-free crap in the pull- API audio path. Mostly untested.
* player: remove audio waitingGravatar wm42014-04-15
| | | | | | | | The audio subsystem now wakes up the playback thread explicitly, and we don't need this anymore. It still could cause dropouts and such if there are bugs in the recently introduced audio changes, so this is a thing to watch out for.
* audio: wake up the core when audio buffer is running low (2)Gravatar wm42014-04-15
| | | | | | | | | | | | | | Same change as in e2184fcb, but this time for pull based AOs. This is slightly controversial, because it will make a fast syscall from e.g. ao_jack. And according to JackAudio developers, syscalls are evil and will destroy realtime operation. But I don't think this is an issue at all. Still avoid locking a mutex. I'm not sure what jackaudio does in the worst case - but if they set the jackaudio thread (and only this thread) to realtime, we might run into deadlock situations due to priority inversion and such. I'm not quite sure whether this can happen, but I'll readily follow the cargo cult if it makes hack happy.
* ao_pulse: use ao_need_data()Gravatar wm42014-04-15
| | | | | | | | | I'm not quite sure why ao_pulse needs this. It was broken when a thread to fill audio buffers was added to AO - the pulseaudio callback was waking up the playback thread, not the audio thread. But nobody noticed, so it can't be very important. In any case, this change makes it wake up the audio thread instead (which in turn wakes up the playback thread if needed).
* audio: wake up the core when audio buffer is running lowGravatar wm42014-04-15
| | | | | | | | | | | | | | | | | And also add a function ao_need_data(), which AO drivers can call if their audio buffer runs low. This change intends to make it easier for the playback thread: instead of making the playback thread calculate a timeout at which the audio buffer should be refilled, make the push.c audio thread wakeup the core instead. ao_need_data() is going to be used by ao_pulse, and we need to workaround a stupid situation with pulseaudio causing a deadlock because its callback still holds the internal pulseaudio lock. For AOs that don't call ao_need_data(), the deadline is calculated by the buffer fill status and latency, as before.
* video: remove use of deprecated AVFrame fields on LibavGravatar wm42014-04-15
| | | | | | qscale export has been completely removed from Libav 10, and FFmpeg has an alternative API, so this code does nothing and only causes deprecation warnings on Libav.
* README: mention minimum FFmpeg/Libav versionsGravatar wm42014-04-15
|
* client API: remove mpv_event_pause_reasonGravatar wm42014-04-14
| | | | | | | | | And slightly adjust the semantics of MPV_EVENT_PAUSE/MPV_EVENT_UNPAUSE. The real pause state can now be queried with the "core-idle" property, the user pause state with the "pause" property, whether the player is paused due to cache with "paused-for-cache", and the keep open event can be guessed with the "eof-reached" property.
* command: add property to indicate when pausing due to --keep-openGravatar wm42014-04-14
| | | | | | | This property is set to "yes" if playback was paused due to --keep-open. The change notification might not always be perfect; maybe that should be improved.
* command: add a property to indicate core pause stateGravatar wm42014-04-14
| | | | | | | | | Currently this is (probably) equivalent to "paused-for-cache", but the latter is a bit special, while this new property is a bit more general. One case where they might actually be different is dvdnav menus, but I haven't checked. Also add property change notifications for these two properties.
* vf_vapoursynth: handle destruction more gracefullyGravatar wm42014-04-14
| | | | | | | | | | | | | | We were relying on vsscript_freeScript() to take care of proper termination. But it doesn't do that: it doesn't wait for the filters to finish and exit at all. Instead, it just destroys all objects, which causes the worker threads to crash sometimes. Also, we're supposed to wait for the frame callback to finish before freeing the associated node. Handle this by explicitly waiting as far as we can. Probably fixes crashes on seeking, although VapourSynth itself might also need some work to make this case completely stable.
* options: don't allow --no-foo=yesGravatar wm42014-04-14
| | | | | | | | | It's a bit strange to allow this, so get rid of it. This probably breaks a bunch of user config files. The client API still allows setting them with MPV_FORMAT_FLAG with a value of 1 (i.e. true), but I guess this is tolerable.
* video: change image format names, prefer mostly FFmpeg namesGravatar wm42014-04-14
| | | | | | | | | | | | | | | The most user visible change is that "420p" is now displayed as "yuv420p". This is what FFmpeg uses (almost), and is also less confusing since "420p" is often confused with "420 pixels vertical resolution". In general, we return the FFmpeg pixel format name. We still use our own old mechanism to keep a list of exceptions to provide compatibility for a while. Also, never return NULL for image format names. If the format is unset (0/IMGFMT_NONE), return "none". If the format has no name (probably never happens, FFmpeg seems to guarantee that a name is set), return "unknown".
* New option --no-ometadata to opt out of including metadata when encoding.Gravatar Rudolf Polzer2014-04-14
| | | | | | | This re-allows the previous behaviour of being able to reencode with metadata removed, which is useful when encoding "inconsistently" tagged data for a device/player that shows file names when tags are not present.
* vf_vapoursynth: wipe vapoursynth state completely on reloadingGravatar wm42014-04-14
| | | | | | | | Before this commit, the filter attempted to keep the vsscript state (p->se) even when the script was reloaded. Change it to destroy the script state too on reloading. Now no workaround for LoadPlugin is necessary, and this also fixes a weird theoretical race condition when destroying and recreating the mpv source filter.
* command: vf-metadata: minor fixup of return statusGravatar Kevin Mitchell2014-04-14
| | | | Signed-off-by: wm4 <wm4@nowhere>
* Remove radio://Gravatar wm42014-04-13
| | | | | It was disabled by default, works only for analogue radio, and I bet nobody uses it.
* Kill all tabsGravatar wm42014-04-13
| | | | | | | | | | | I hate tabs. This replaces all tabs in all source files with spaces. The only exception is old-makefile. The replacement was made by running the GNU coreutils "expand" command on every file. Since the replacement was automatic, it's possible that some formatting was destroyed (but perhaps only if it was assuming that the end of a tab does not correspond to aligning the end to multiples of 8 spaces).
* af_volume: fix clang -Wsometimes-uninitializedGravatar Kevin Mitchell2014-04-13
|
* af_lavfi: fix graph parse deprecation warningGravatar Kevin Mitchell2014-04-13
|
* TOOLS: vf-metadata: lua cropdetect example scriptGravatar Kevin Mitchell2014-04-13
| | | | Signed-off-by: wm4 <wm4@nowhere>
* command: add vf-metadata propertyGravatar Kevin Mitchell2014-04-13
| | | | | | | This is a read-only property that uses VFCTRL_GET_METADATA to retrieve mp_tags metadata from a filter specified by label Signed-off-by: wm4 <wm4@nowhere>
* vf_lavfi: copy AVFrame metadata into vf_lavfi privGravatar Kevin Mitchell2014-04-13
| | | | | | | | store it as mp_tas and add VFCTRL_GET_METADATA to access it from elsewhere Signed-off-by: wm4 <wm4@nowhere> old-configure test by wm4.
* vf_lavfi: fix ffmpeg deprecation warning for avfilter_graph_parseGravatar Kevin Mitchell2014-04-13
| | | | use avfilter_graph_parse_ptr for ffmpeg
* vf: auto-label video filters if no label is specifiedGravatar Kevin Mitchell2014-04-13
| | | | Signed-off-by: wm4 <wm4@nowhere>
* vf: add vf_control_by_label to send vfctrl to specific filterGravatar Kevin Mitchell2014-04-13
|
* talloc README: more human readible api referenceGravatar Kevin Mitchell2014-04-13
|
* mp_tags: move generic mp_tags stuff into its own .c/.h files in common/Gravatar Kevin Mitchell2014-04-13
| | | | | | rename add_metadata to the more genera/descriptive mp_tags_copy_items_from_av_dictionary Signed-off-by: wm4 <wm4@nowhere>
* player: remove ASX, SMIL and NSC playlist parsersGravatar wm42014-04-13
| | | | | | | | | | | | | | | | | | | These playlist parsers are all what's left from the old mplayer playlist parsing code. All of it is old code that does little error checking; the type of C string parsing code that gives you nightmare. Some playlist parsers have been rewritten and are located in demux_playlist.c. The removed formats were not reimplemented. ASX and SMIL use XML, and since we don't want to depend on a full blown XML parser, this is not so easy. Possibly these formats could be supported by writing a very primitive XML-like lexer, which would lead to success with most real world files, but I haven't attempted that. As for NSC, I couldn't find any URL that worked with MPlayer, and in general this formats seems to be more than dead. Move playlist_parse_file() to playlist.c. It's pretty small now, and basically just opens a stream and a demuxer. No use keeping playlist_parser.c just for this.
* wayland: don't schedule resize if going fullscreenGravatar Ricardo Vieira2014-04-13
| | | | mpv was resizing to the same size before it went to fullscreen, we don't need to schedule a resize because the compositor will send a configure event with the new dimensions and thats when we should do it.
* player: hack to fix --msgmodule --term-osd-barGravatar wm42014-04-13
| | | | | | | | | Basically a cheap hack to fix that the --msgmodule prefix will cause an unwanted linebreak by making the line too long. Suggested by Hamuko in github issue #710. Fixes #710.
* command: add paused-for-cache, total-avsync-change, drop-frame-count propertiesGravatar David Weber2014-04-13
| | | | | | | | | This is needed if you want to reimplement the status line in lua I could only test drop-frame-count because I didn't find an easy way to trigger paused-for-cache and total-avsync-change Signed-off-by: wm4 <wm4@nowhere>
* vf_vapoursynth: print an error if VapourSynth returns an unknown formatGravatar wm42014-04-13
| | | | | Apparently there is no real format negotiation, so this can actually happen.
* vf_vapoursynth: error out early if the file sub-option is not setGravatar wm42014-04-13
| | | | Instead of crashing by possibly passing a NULL pointer to VapourSynth.
* manpage: vf_vapoursynth: document what happens on seekingGravatar wm42014-04-13
| | | | Unfortunately, reloading on seeking causes real problems.
* manpage: lua: separate "advanced" functions into a separate sectionGravatar wm42014-04-12
| | | | This will be less confusing.
* lua: make it easier to integrate with foreign event loopsGravatar wm42014-04-12
| | | | We provide some "official" utility functions for this.
* lua: wrap mpv_get_wakeup_pipe()Gravatar wm42014-04-12
| | | | Pretty much experimental for issue #661.
* client API: add mpv_get_wakeup_pipe convenience functionGravatar wm42014-04-12
| | | | Should make integreating with some event loops easier. Untested.
* video: add VapourSynth filter bridgeGravatar wm42014-04-12
| | | | | | | | | | | | Mainly meant to apply simple VapourSynth filters to video at runtime. This has various restrictions, which are listed in the manpage. Additionally, this actually copies video frames when converting frame references from mpv to VapourSynth, and a second time when going from VapourSynth to mpv. This is inefficient and could probably be easily improved. But for now, this is simpler, and in fact I'm not sure if we even can references VapourSynth frames after the core has been destroyed.
* options: don't sort sub-option help outputGravatar wm42014-04-12
| | | | | | Commit 2c2c1203 sorted the output of --list-options, but the same code ias also used for listing sub-options, such as --vo=scale:help. For sub- options, the order actually matters.
* terminal: pretty print modules for --msgmoduleGravatar Evan Purkhiser2014-04-12
|
* manpage: fix --vf=scale optionsGravatar James Ross-Gowan2014-04-11
|
* options: sort --list-optionsGravatar wm42014-04-11
| | | | | | | | | | | | Until now, --list-options printed options in random order. There literally wasn't any logic in its order, they just appeared as they were declared. So just sort them. Note that we can't sort them in advance, because for certain things internal to m_config, the order actually matters. Also we're using strcasecmp(), which is bad (locale dependent), but this is output intended for human consumption, so it's not a problem.