aboutsummaryrefslogtreecommitdiffhomepage
path: root/player
Commit message (Collapse)AuthorAge
...
* OSC: Reset all styles for idle messageGravatar ChrisK22015-01-16
|
* player: don't fall asleep on audio decoding errorsGravatar wm42015-01-15
| | | | | | This makes it retry later. Fixes #1474.
* player: fix --stop-playback-on-init-failure on audio init failureGravatar wm42015-01-15
| | | | | | | This was forgotten when the option was implemented, and makes this option work as advertised. Fixes #1473 (though the default behavior is probably still stupid).
* osc: fix disabling OSCGravatar wm42015-01-15
| | | | | | | Upon the "DEL" key binding or the "disable-osc" message, the OSC should stay permanently invisible. This was recently broken (not sure by what), because other code accidentally reenables it anyway, which resulted in the OSC appearing again when moving the mouse.
* player: fallback to seek time for percent-pos propertyGravatar wm42015-01-14
| | | | | | | | | | | | | The percent-pos property normally goes by time, except for file formats like .ts or .ogg, where you can't trust the timestamps and duration info to compute the position in the overall files. These use the byte position and size instead. When the file position was unavailable (e.g. due to an ongoing seek), the percent-pos was unknown. Change it to use the time position instead. In most cases, it's actually accurate enough, and the temporary unavailability of the property can be annoying, e.g. on the terminal status line.
* client API: fix log buffer overflow caseGravatar wm42015-01-13
| | | | | | | It just crashed. The prefix and text fields point to static strings in this case. Oops. Fixes the issue mentioned in #838.
* player: fix crash wtih --secondary-sidGravatar wm42015-01-13
| | | | Fises #1463.
* tl_matroska: fix minor memory leak in error caseGravatar wm42015-01-12
| | | | Going the way of least resistance. Fixes #1460.
* player: check sufficient track selection before destroying VOGravatar wm42015-01-12
| | | | | | | | | | | | | | | | mpv needs at least an audio or video track to play something. If the track selection is basically insufficient, the player will immediately skip to the next file (or quit). One slightly annoying thing might be that trying to play a subtitle file will close the VO window, and then go to the next file immediately (so "mpv 1.mkv 2.srt 3.mkv" would flash the video window when 2.srt is skipped). Move the check to before the video window is possibly closed. This is a minor cosmetic issue; one can use --force-window to avoid closing the video window at all. Fixes #1459.
* win32: drop hacks for possibly broken static pthreads-win32 linkingGravatar wm42015-01-11
| | | | | | | | | | | | We now use threads and other pthread API a lot, and not always we use it from threads created with pthread_create() (or the main thread). As I understand, with static linking we would have to use pthread_win32_thread_attach/detach_np() every time we enter or leave a foreign thread. We don't do this, and it's not feasible either, so it's just broken. This still should work with dynamic pthreads-win32. The MinGW pthread implementation should be unaffected from all of this.
* command: fix property naming conventionGravatar wm42015-01-10
| | | | Use "-" instead of "_" as separator.
* command: change properties added in previous commitGravatar wm42015-01-10
| | | | | | | | | | | | | Make their meaning more exact, and don't pretend that there's a reasonable definition for "bits-per-pixel". Also make unset fields unavailable. average_depth still might be inconsistent: for example, 10 bit 4:2:0 is identified as 24 bits, but RGB 4:4:4 as 12 bits. So YUV formats seemingly drop the per-component padding, while RGB formats do not. Internally it's consistent though: 10 bit YUV components are read as 16 bit, and the padding must be 0 (it's basically like an odd fixed- point representation, rather than a bitfield).
* command.c: new subproperties for video-params: bpp and depthGravatar xylosper2015-01-10
| | | | | | | | bpp(bits-per-pixel) and depth(bit-depth for color component) can be calculated from pixelformat technically but it requires massive informations to be implemented in client side. These subproperties are provided for convenience.
* player: enable demuxer thread for external audio filesGravatar wm42015-01-10
| | | | | | | | | | | | | | Enable asynchronous reading for external files. This excludes subtitle files (so it's effectively enabled for audio files only), because most subtitle files are fully read on loading, and running a thread for them would just cause slowdowns and increase resource usage, without having any advantages. In theory, an external file could provide multiple tracks from the same demuxer, but demux_start_thread() is idempotent, so the code can be kept simple. Should help with playing DASH with ytdl_hook.
* player: change stream list terminal outputGravatar wm42015-01-09
| | | | | Move the stream selection marker "(+)" to the beginning, and drop the "[stream]" prefix. Make the edition output line up with it too.
* tl_matroska: check chapter boundsGravatar wm42015-01-09
| | | | | | | I have no idea what this does, but it's without doubt a sufficient fix for the issue at hand. Fixes #1445.
* video: fix timeline with some container formatsGravatar wm42015-01-06
| | | | | | Using edl or --merge-files with .avi files didn't work, because the DTS was not offset. Only the PTS was adjusted, which led to nonsense timestamps.
* command: ignore chapter cycling if there's only 1 chapterGravatar wm42015-01-05
| | | | | | If there's only 1 chapter, the seeking by chapter (using the chapter property) will either jump to the chapter point, or quit playback. This is as designed, but seems like a useless and annoying behavior.
* client API, vo_opengl_cb: properly uninit videoGravatar wm42015-01-04
| | | | | | | | | | | | mpv_opengl_cb_uninit_gl() can be called at any time; but then the decoder must be destroyed due to complications with hardware decoding. This is why kill_video() exists. To make things easier, there is the invariant that while vo_opengl_cb is active, the OpenGL state must exist. But kill_video() didn't actually destroy the VO; only the video decoder. This could trigger an assertion (vo_opengl_cb.c:187). Actually, the video output is always destroyed lazily at a later point if the decoder is destroyed, but not early enough for out purposes.
* video: batch query_format callsGravatar wm42015-01-03
| | | | | | | There are currently 568 pixel formats (actually fewer, but the namespace is this big), and for each format elaborate synchronization was done to call it synchronously on the VO. This is completely unnecessary, and we can do with just a single call.
* ytdl: silence "succeeded" messageGravatar wm42015-01-03
| | | | Pretty useless by now.
* vf_vapoursynth: pass through container FPS valueGravatar wm42015-01-03
| | | | | | | | This is basically a hack; but apparently a needed one, since many vapoursynth filters insist on having a FPS set. We need to apply the FPS override before creating the filters. Also change some terminal output related to the FPS value.
* x11: make display-names property observableGravatar wm42015-01-03
| | | | Reuse MP_EVENT_WIN_STATE for this.
* video: better pipelining with vf_vapoursynthGravatar wm42015-01-03
| | | | | | | | | | Most of this is explained in the code comments. This change should improve performance with vapoursynth, especially if concurrent requests are used. This should change nothing if vf_vapoursynth is not in the filter chain, since non-threaded filters obviously can not asynchronously finish filtering of frames.
* OSC: idlemessage: fix alignmentGravatar ChrisK22015-01-02
|
* OSC: add osc-message script command (wip)Gravatar ChrisK22015-01-02
|
* OSC: display "drop files here" message when idle + forced-windowGravatar ChrisK22015-01-02
| | | | This currently doesn't work properly on OSX due to some bugs.
* player: move terminal input init to a better placeGravatar wm42015-01-02
| | | | | | Mostly of cosmetic nature. Move initialization to the same place where another component (cocoa) will start accessing the input context from a foreign thread.
* player: print config.h contents in verbose modeGravatar wm42015-01-02
| | | | | | | | | It was requested that mpv should print what features etc. have been enabled at compile time. It can print the configure command line, but it obviously doesn't include autodetected features. I tried to think of a nicer way than dumping the config.h as text, but this was still the simplest way.
* command: make the "run" command work on Windows tooGravatar wm42015-01-01
| | | | | | | | | Do so by using mp_subprocess(). Although this uses completely different code on Unix too, you shouldn't notice a difference. A less ncie thing is that this reserves an entire thread while the command is running (which wastes some memory for stack, at least). But this is probably still the simplest way, and the fork() trick is apparently not implementable with posix_subprocess().
* Update copyright yearGravatar wm42015-01-01
|
* client API: add function to create new mpv_handles from existing onesGravatar wm42014-12-31
| | | | | | | This may or may not be useful for client API users. Fold this API extension into the previous API bump. The previous bump was only yesterday, so it's ok.
* vo_opengl_cb: simplify API uninitializationGravatar wm42014-12-31
| | | | | | | | | | | Until now, calling mpv_opengl_cb_uninit_gl() at a "bad moment" could make the whole thing to explode. The API user was asked to avoid such situations by calling it only in "good moments". But this was probably a bit too subtle and could easily be overlooked. Integrate the approach the qml example uses directly into the implementation. If the OpenGL context is to be unitialized, forcefully disable video, and block until this is done.
* vo_opengl_cb: pass context directlyGravatar wm42014-12-31
| | | | | This is simpler than setting the context after VO creation, which requires the code to check for the context on every entrypoint.
* video: pass some VO params as structGravatar wm42014-12-31
| | | | | Not particularly elegant, but better than adding more and more stuff to the relevant function signatures.
* command: make empty vf-metadata not an errorGravatar wm42014-12-30
| | | | | | | | If a filter exists, but has no metadata, just return success. This allows the user to distinguish between no metadata available, and filter not inserted. See #1408.
* options: expand ~ for the include optionGravatar Stefano Pigozzi2014-12-30
| | | | Fixes #1406
* command: add filtered-metadata propertyGravatar wm42014-12-29
| | | | | Goes in hand with the previous commit; the main purpose is to easily show on OSD what is shown on terminal.
* player: filter tags, add --display-tags optionGravatar wm42014-12-29
| | | | | | | | This attempts to increase user-friendliness by excluding useless tags. It should be especially helpful with mp4 files, because the FFmpeg mp4 demuxer adds tons of completely useless information to the metadata. Fixes #1403.
* player: make --shuffle/--merge-files affect runtime loaded playlistsGravatar wm42014-12-29
| | | | | | | Until now, these options took effect only at program start. This could be confusing when e.g. doing "mpv list.m3u --shuffle". Make them always take effect when a playlist is loaded either via a playlist file, or with the "loadlist" command.
* command: stip path from playlist OSD displayGravatar wm42014-12-27
| | | | | | But only if it's not e.g. a http URL. Fixes #1388.
* player: force stereo as default when encodingGravatar wm42014-12-27
| | | | | | I think the new default for this option might be rather bad in encoding mode. For starters, we don't even know what layers an encoder supports at all.
* player: fix random crashes on uninitializationGravatar wm42014-12-27
| | | | | | | | | | | On uninitialization, the player will unselect all subtitles, and then destroy the subtitle decoder. But it didn't correctly remove the subtitle decoder from the OSD state, so it could happen that it would access it after the decoder was destroyed. Could lead to random crashes when switching files often. Fixes #1389.
* player: cosmetics: rename a functionGravatar wm42014-12-27
| | | | | Something which has this many important sideffects shouldn't start have a "get" prefix.
* player: ordered chapters: cosmeticsGravatar wm42014-12-26
| | | | | | Drop some meaningless comments, fix codingstyle, fix some formatting victims of the mp_msg refactoring, replace some memcpys with assignments.
* player: ordered chapters: bullshit reductionGravatar wm42014-12-26
| | | | | Nobody cares about these redundant messages, they make the code even more complicated than it has to be, and also they're annoying.
* player: ordered chapters: filter missing chaptersGravatar wm42014-12-26
| | | | | | | | | | | | Ever since someone (not me) added some Matroska features which nobody ever uses (ordered edition or some bullshit), I haven't had a fucking clue what the fuck is going on in this fucking file. (Still agreed to it, so it's my fault.) mplayer2 handled missing chapters correctly (and I suppose in a somewhat clean/simple manner), but the changed code doesn't. Since I can't even follow this code because it's so arcanely complicated, just add a hack that has the same effect.
* command: overlay_add: more flexible treatment of offset parameterGravatar wm42014-12-26
| | | | | | | | | | | | | | Essentially, don't make it the mmap() argument, and just add it to the memory address. This hides tricky things like alignment reequirements from the user. Strictly speaking, this is not entirely backwards compatible: this adds the regression that you can't access past 2 or 4 GB of a file on 32 bit systems anymore. But I doubt anyone cared about this. In theory, we could be clever, and just align the offset manually and pass that to mmap(). This would also be transparent to the user, but minimally more effort, so this is left as exercise to the reader.
* win32: add mmap() emulationGravatar wm42014-12-26
| | | | | | | | Makes all of overlay_add work on windows/mingw. Since we now don't explicitly check for mmap() anymore (it's always present), this also requires us to make af_export.c compile, but I haven't tested it.
* player: hack against --keep-open misbehaving with broken filesGravatar wm42014-12-24
| | | | | | | | | | | | | | | | If a file (or a demuxer) is broken, seeking close to the end of the file doesn't work, and seek_to_last_frame() will be called over and over again, burning CPU for no reason. Observed with incomplete mp4 files. That this can happen was already mentioned in commit 090f6cfc, but I guess now I'll do something against it. hrseek_lastframe is cleared by reset_playback_state(), so it's only set if seek_to_last_frame() was called, and no other seek happened since then. If finding the last frame succeeds, no EOF will happen (unless the user unpauses, but then it will simply remain at the last frame). If it fails, then it will return immediately, without retrying.