Age | Commit message (Collapse) | Author |
|
|
|
Emitting vzeroupper is necessary to avoid avx<->sse transition penalties (when
using avx-256 instructions).
This didn't really matter much in the past, since other code wasn't using avx,
hence there was just a penalty once afterwards when sse code was executed.
However, there's code in ffmpeg which mixes avx-128 and sse a lot, and each
time this happens there's a huge penalty. This causes in particular
ff_deblock_v_luma_8_avx to slow down by a factor of 50 or so which makes the
whole decoding about twice as slow (might be dependent on the h264 stream or
maybe ffmpeg version too, since ffmpeg will also emit vzeroupper when using
avx-256 hence not doing it here might not always be an issue, but in the case
I was seeing nothing else used avx-256).
|
|
Looks like I missed that one earlier.
|
|
Tell me if you have an easier fix for that.
|
|
This addresses an old fixme, and an occasional pthread mutex issue.
|
|
script execution time: 55"
|
|
|
|
Why?
I use FLV a lot for editing. It is simple, and it is playable while writing.
However, seeking was often terribly slow or non working. Reordered video
(most h.264) also yielded some nasty unpredictable a/v lag, making music
videos not much fun.
And there are quite a few FLV files out there that do not follow all the
standards. The flash browser plugin plays them normally, but xine liked to
show strange malfunctions such as video collapsed to a horizontal line, or
even crashed.
How?
This is the first file I ever edited in xine-lib. I started years ago, and
I did not keep track of all the intermediate states.
So please apoplogize me pushing all in one go. It wont happen again.
Promised.
What?
* Overrun-safe iterative metainfo parser that tolerates at least most of
the trash left by various "injector tools".
* Skip obviously truncated tags.
* Try to find the reliable settings in contradiction.
* Send pts not dts for reordered (b-framed) video.
* Large file support >= 2Gb on 32bit systems.
* Fast time-based seek routine for files with working, damaged and no
keyframe index.
* Major optimizations. Less reads, and a lot less seeks.
* More codecs.
|
|
xine_play() may be called from a thread that has the display device locked
(eg an X window event handler). If it is waiting for a frame we better wake
it up _before_ we start displaying, or the first 10 seconds of video are lost.
|
|
|
|
I really am a fan of yours :-)
|
|
Tested by provoking a Kaffeine segfault.
|
|
avcodec.h says this should be preferred for both mpeg1 and 2.
|
|
libavcodec 54. 86.100 wmv2 and mpeg4 decoders ignore this flag
(probably inside some dsp routine), provoking segfault.
Turning off direct rendering is a quick but nasty workaround.
If vo plugin can crop, we may drop that emulation without
performance penalty, and sometimes even speed up a little.
|
|
Prevent vo loop from calculating undefined aspect ratio
from _padded_ image size, leading to black bars and
unnecessary scaling.
|
|
* Observe channel configuration immediately after av_decode_audio* ().
Do not try to access nonexistant channels after a 5.1 -> 2.0 switch
for example.
* Add NULL plane pointer paranoia.
* Assume generic channel layout when no detailled one provided.
Needed for wma2.
* Follow user speaker arrangement changes on the fly.
* Defer opening audio out until we have something to play.
* Do not reopen audio out with identical settings. This and the
previous item should help avoiding waiting on some drivers.
* Hard wire output to int16_t. Some of the code did assume that,
and we are converting to that anyway.
* Do not read sample format from bits_per_coded_sample. Decoders
neither alter that field, nor do they force its value to their
output.
* Rename some vars for better readability.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Original patch for xine-lib 1.1 from Kevin Kofler <Kevin@tigcc.ticalc.org>.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
alignment requirements are not met.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
The FFmpeg plugin must reopen the audio device when changing the config settings, and this isn't a quick operation with some hardware - the device can sometimes remain unable to be opened for several seconds after being closed. The FAAD plugin doesn't have this problem, and so make it the preferred decoder for AAC.
|
|
Audio out was opened with bogus settings (1Hz != 0) which failed. This prevented
a retry after first audio frame came in and corrected the settings (48k/6
channels). Once ao _is_ open successfully, everything works same as before,
including further stream conf changes.
|
|
playback of AAC 5.1 audio.
|
|
|
|
|
|
|
|
|
|
|