aboutsummaryrefslogtreecommitdiffhomepage
Commit message (Collapse)AuthorAge
* player: warn if PTS association mode switchesGravatar wm42013-11-25
| | | | | | | | | | | | | | | | | This normally shouldn't happen. It does happen with VfW-muxed mkv files, and would normally happen with avi files (except that we force the correct association mode using an explicit hack for avi). This is usually prepended by warnings like: Decreasing video pts: 0.125000 < 0.167000 and after the switch, there should be no warnings anymore. Background: avi likes to use DTS for timestamps instead of PTS. Basically, there are no proper timestamps in the file, only frame numbers. And Matroska is insane and stores the made-up DTS instead of a proper PTS. This will be handled properly later.
* build: don't abort if our OSS implementation isn't from 4FrontGravatar Stefano Pigozzi2013-11-25
| | | | | | Original commit was implemented differently by @bugmen0t. The problem here was that the waf API was called directly, instead of using our own check_cc (which defaults, among other things, to non mandatory checks).
* build: run oss_audio.c check with oss cflags as wellGravatar Stefano Pigozzi2013-11-25
|
* build: unbreak __get_osslibdir__()Gravatar bugmen0t2013-11-25
| | | | | | | - without Utils.* always returns empty string - subprocess doesn't need extra quoting for sh -c - "source" is a bash'ism, not in POSIX sh - most shell commands embed newline at the end
* build: only check 4Front OSS after passing its CFLAGSGravatar bugmen0t2013-11-25
|
* input: discard precise scrolling commands with no valueGravatar Stefano Pigozzi2013-11-25
| | | | | | | | | | | Apparently Cocoa precise scrolling generates a lot of spurious events with a delta that is equal to 0.0. Make sure that they are discarded and not added to the input queue. Even though this only known to happen with Cocoa, I implemented this at core level since it makes sense in general. Fixes: #310
* build: fix construction of args to pkg-configGravatar Natanael Copa2013-11-25
| | | | | | This makes it work with pkgconf (https://github.com/pkgconf/pkgconf) Signed-off-by: Natanael Copa <ncopa@alpinelinux.org>
* build: work around bug in waf's bundle installationGravatar Stefano Pigozzi2013-11-25
| | | | | | waf wrongly installs resources to BundleRoot/Resources instead of BundleRoot/Contents/Resources. Will post a patch to them later. Either way, this must worked around until the next waf patch release.
* build: add install_files call after the mpv target was definedGravatar Stefano Pigozzi2013-11-24
| | | | | This makes it work on cold compiles when there is no `build/` directory and one does ./waf configure && ./waf install (i.e.: no ./waf build).
* bootstrap.py: check version if waf already existsGravatar eng2013-11-24
|
* build: also install mpv CLI binary when building OS X bundleGravatar Stefano Pigozzi2013-11-24
|
* gitignore: add generated files by old build systemGravatar Stefano Pigozzi2013-11-24
|
* bootstrap.py: skip download if waf already existsGravatar wm42013-11-24
| | | | | | | | | | | It seems like a good idea not to generate any additional network traffic and wait times if we don't have to. Also print the URL it's downloading from. Note that if we require a newer waf release, there will be a problem. Running ./bootstrap.py won't get the newest waf version anymore in case the old version is in the source dir. Not sure how to handle this.
* build: make waf append pkgconfig flags as-is [2]Gravatar Stefano Pigozzi2013-11-24
| | | | fixup commit... removes a redundant `return`
* build: make waf append pkgconfig flags as-isGravatar Stefano Pigozzi2013-11-24
| | | | | | | waf apparently only appends a pkgconfig flag if it doesn't already exist in the lib storage. Since our configure often checks for multiple libraries in one call we want to keep the flags as is. This is especially important to always keep stuff like -lm in the right place.
* travis: remove --disable-doc from libav/ffmpeg configureGravatar Stefano Pigozzi2013-11-24
|
* player: close demuxer before streamGravatar wm42013-11-24
| | | | | Demuxer might access stream even when closing. For now, this is not a real problem (because it didn't actually happen), but it's cleaner.
* osd: remove mp_osd_res.video_par fieldGravatar wm42013-11-24
| | | | | | This is not needed anymore, because we decided that the PAR of the decoded video matters, and not the PAR of the filtered video that arrives at the VO.
* Rename sub.c/.h to osd.c/.hGravatar wm42013-11-24
| | | | | This was way too misleading. osd.c merely calls the subtitle renderers, instead of actually dealing with subtitles.
* vd_lavc: improve a commentGravatar wm42013-11-24
|
* build: store dependencies as listsGravatar Stefano Pigozzi2013-11-24
| | | | | | | | | | | | | In Python sets are unordered, so iterating them after converting to a list always leads to different results. The code iterated on them to collect all the flags to pass to the compiler, and since the order of the flags changed, waf would rebuild all of the C files. Seems like in Python 2 this worked as expected by pure chance. This commit stores the sets as lists, and converts them to sets when the set operations are needed. Fixes #363
* build: cache compiler defines on the configure context directlyGravatar Stefano Pigozzi2013-11-24
|
* travis: disable e-mail notificationsGravatar Stefano Pigozzi2013-11-23
|
* vd_lavc: when falling back to software, revert filter error statusGravatar wm42013-11-23
| | | | | | | | | | | | | | | | | | | When mpv is started with some video filters set (--vf is used), and hardware decoding is requested, and hardware decoding would be possible, but is prevented due to video filters that accept software formats only, the fallback didn't work properly sometimes. This fallback works rather violently: it tries to initialize the filter chain, and if it fails it throws away the frame decoded using the hardware, and retries with software. The case that didn't work was when decoding the current packet didn't immediately lead to a new frame. Then the filter chain wouldn't be reinitialized, and the playloop would stop playback as soon as it encounters the error flag. Fix this by resetting the filter error flag (back to "uninitialized"), which is a rather violent, but somewhat working solution. The fallback in general should perhaps be cleaned up later.
* Reduce stheader.h includes, move stream types to mp_common.hGravatar wm42013-11-23
|
* Attempt to fix build on older libavcodec versionsGravatar wm42013-11-23
|
* audio: respect --end/--length with spdif passthroughGravatar wm42013-11-23
| | | | | | | | | | | | | | | | | | | | | | In theory, we can't really do this, because we don't know when a spdif frame ends. Spdif transports compressed audio through audio setups that were originally designed for PCM only (which includes the audio filter chain, the AO API, most audio output APIs, etc.), and to reach this goal, spdif pretends to be PCM. Compressed data frames are padded with zeros, until a certain data rate is reached, which corresponds to a pseudo-PCM format with 2 bytes per sample and 2 channels at 48000 Hz. Of course an actual spdif frame is significantly larger than a frame of the PCM format it pretends to be, so cutting audio data on frame boundaries (as according to the pseudo-PCM format) merely yields an incomplete and broken frame, not audio that plays for the desired duration. However, sending an incomplete frame might still be much better than the current behavior, which simply ignores --end/--length (but still lets the video end at the exact end time). Should this result in trouble with real spdif receivers, this commit probably has to be reverted.
* video: don't overwrite demuxer FPS valueGravatar wm42013-11-23
| | | | | | | | | | | | | | | | If the --fps option was given (MPOpts->force_fps), the demuxer FPS value was overwritten with the forced value. This was fine, since the demuxer value wasn't needed anymore. But with the recent changes not to write to the demuxer stream headers, we don't want to do this anymore. So maintain the (forced/updated) FPS value in dec_video->fps. The removed code in loadfile.c is probably redundant, and an artifact from past refactorings. Note that sub.c will now always use the demuxer FPS value, instead of the user override value. I think this is fine, because it used the demuxer's video size values too. (And it's rare that these values are used at all.)
* video: move handling of container vs. stream AR out of vd_lavc.cGravatar wm42013-11-23
| | | | | | | Now the actual decoder doesn't need to care about this anymore, and it's handled in generic code instead. This simplifies vd_lavc.c, and in particular we don't need to detect format changes in the old way anymore.
* ao_rsound: fix option typesGravatar wm42013-11-23
| | | | | | These are option values, and the option code expects char*. Not actually tested.
* dec_video: make vf_input and hwdec_info statically allocatedGravatar wm42013-11-23
| | | | | | | | | | | The only reason why these structs were dynamically allocated was to avoid recursive includes in stheader.h, which is (or was) a very central file included by almost all other files. (If a struct is referenced via a pointer type only, it can be forward referenced, and the definition of the struct is not needed.) Now that they're out of stheader.h, this difference doesn't matter anymore, and the code can be simplified. Also sneak in some sanity checks.
* dec_video: remove "initialized" fieldGravatar wm42013-11-23
| | | | It's redundant.
* demux: remove gsh field from sh_audio/sh_video/sh_subGravatar wm42013-11-23
| | | | | | | | | This used to be needed to access the generic stream header from the specific headers, which in turn was needed because the decoders had access only to the specific headers. This is not the case anymore, so this can finally be removed again. Also move the "format" field from the specific headers to sh_stream.
* player: rearrange how subtitle context and stream headers are usedGravatar wm42013-11-23
| | | | | | | | | | | | Use sh_stream over sh_sub. Use dec_sub (and mpctx->d_sub) instead of the stream header. This aligns the subtitle code with the recent audio and video refactoring. sh_sub still has the decoder context, though. This is because we want to avoid reinit when switching segments with ordered chapters. (Reinit is fast, except for creating the ASS_Renderer, which in turn triggers fontconfig.) Not sure how much this matters, though, because the initial segment switch will lazily initialize the decoder anyway.
* video: move decoder context from sh_video into new structGravatar wm42013-11-23
| | | | | | | | | | This is similar to the sh_audio commit. This is mostly cosmetic in nature, except that it also adds automatical freeing of the decoder driver's state struct (which was in sh_video->context, now in dec_video->priv). Also remove all the stheader.h fields that are not needed anymore.
* options: print lavfi filter list with --vf=lavfi=helpGravatar wm42013-11-23
|
* options: don't prefix sub-options with "--" in help outputGravatar wm42013-11-23
| | | | | Commit 0cb9227a added this to the option list help output, but it looks strange with sub-options.
* options: implement --pphelp differentlyGravatar wm42013-11-23
| | | | Make it work via --vf=pp:help instead.
* video: remove vf_pp auto-insertionGravatar wm42013-11-23
| | | | | | | | | | This drops the --pp option, which was probably broken for a while. The option automatically inserted the "pp" filter. The value passed to it was ignored (which is probably broken, it always selected maximal quality). Inserting this filter can be done simply with --vf=pp, so this is not needed anymore.
* options: provide a way for --vf to print custom helpGravatar wm42013-11-23
| | | | Useful in rather special situations. See following commits.
* video: merge vd.c into dec_video.cGravatar wm42013-11-23
| | | | | I don't feel like the separation ever made sense, and it was hard to tell which file a function you were looking for was in.
* video: move struct mp_hwdec_info into its own header fileGravatar wm42013-11-23
| | | | | | | | This means most code accessing this struct must now include hwdec.h instead of dec_video.h. I just put it into dec_video.h at first because I thought a separate file would be a waste, but it's more proper to do it this way, as there are too many files which include dec_video.h only to get the mp_hwdec_info definition.
* audio: remove ad_driver.preinitGravatar wm42013-11-23
| | | | | This never had any real use. Get rid of dec_audio.initialized too, as it's redundant.
* player: remove printing of barely correct slave mode stream infoGravatar wm42013-11-23
| | | | | | | | | | | | | | This was printed before something was decoded, and thus was not really correct. Also, this code is hilariously broken: /* Assume FOURCC if all bytes >= 0x20 (' ') */ if (sh_audio->format >= 0x20202020) mp_msg(MSGT_IDENTIFY, MSGL_INFO, "ID_AUDIO_FORMAT=%.4s\n", (char *)&sh_audio->format); Time to kill it. This information can be accessed through properties instead.
* audio: don't write decoded audio format to sh_audioGravatar wm42013-11-23
| | | | | | | | sh_audio is supposed to contain file headers, not whatever was decoded. Fix this, and write the decoded format to separate fields in the decoder context, the dec_audio.decoded field. (Note that this field is really only needed to communicate the audio format from decoder driver to the generic code, so no other code accesses it.)
* audio: move decoder context from sh_audio into new structGravatar wm42013-11-23
| | | | | | | | | Move all state that basically changes during decoding or is needed in order to manage decoding itself into a new struct (dec_audio). sh_audio (defined in stheader.h) is supposed to be the audio stream header. This should reflect the file headers for the stream. Putting the decoder context there is strange design, to say the least.
* build: remove unused mng fragmentGravatar Stefano Pigozzi2013-11-23
|
* build: also run the test binary during the lua checksGravatar Stefano Pigozzi2013-11-23
|
* build: fix lua check to actually test for libquviGravatar Stefano Pigozzi2013-11-23
|
* build: fix missing prototypes in lua check fragmentGravatar Stefano Pigozzi2013-11-23
|