Age | Commit message (Collapse) | Author |
|
xine_play () gets suspended after start or seek until first frame gets
displayed. This often wont work on slow machines when first frame gets
dropped because its too old. Consequently, UI freezes for full 10 seconds.
Let's wake up xine_play when this happens as well.
OK, this is a luxury convenience fix ;-)
|
|
Audio decoder loop creates a sorted map of available audio channels on the
fly. If neither user nor dvdnav intervene, it will pass the first (= lowest
index) audio channel to decoders.
Now imagine a TV recording with 2 audio channels:
audio.0: eac3 5.1 (fra)
audio.1: eac3 stereo (qaa)
By chance, first audio frame to be demuxed is for channel #1.
Track map will be
[0]: eac3, channel 1
Audio loop opens ffmpeg audio decoder / stereo out. Fine.
Then, first frame for channel #0 comes in.
[0]: eac3, channel 0
[1]: eac3, channel 1
Both are same codec, so audio loop just switches to channel 0 without
further notice. Audio decoder then runs into a mem leak, or worse, crashes
audio out who still thinks we're only stereo.
Whenever we insert something at track map index 0, and its going to be
auto-selected later, reset current codec type. This forces a clean
decoder/output switch.
|
|
|
|
|
|
Certain ffmpeg audio decoders use 32 bit float samples internally (wma,
eac3, ...). They are then exported to the calling application as 16 bit
integer.
That conversion is done by faster sse2 code if your processor supports it.
However, sse2 instructions require data buffers to be 16 byte aligned, or
hit a segfault otherwise.
Plain malloc() / realloc() ensures only 8 byte alignment, giving a 50%
chance of a crash.
FFmpeg internally uses aligned buffers a lot. It seems to be a good idea to
do likewise for input buffers as well, even if current version does not
strictly need it yet.
Libavutil/av_realloc() has a bug that can break the alignment when enlarging
an existing buffer. Thus I included a fixed version of it within
ff_audio_decoder.c.
|
|
|
|
|
|
|
|
avcodec_thread_init() was deprecated in lavc 52.112.0 (2011-02-09)
|
|
This is a small mistake, but I'm fairly sure the index should be "j" and not
"i".
|
|
|
|
|
|
Demuxer does not send PCM header.
Decoder can't handle raw PCM stream without configuration.
|
|
all descriptors
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Check used (NULL) target pointer instead of length and would be always false
|
|
|
|
_x_set_file_close_on_exec() and _x_set_socket_close_on_exec() prototypes were missing.
We need the prototypes because of visibility attributes.
|
|
Now all used decoders work without header/preview buffers.
|
|
|
|
|
|
pids.
|
|
negative value (that results writing out of buffer when buffering payload). Check buffer size before checking substream header bytes.
|
|
skips pes header
|
|
parsing pts.
|
|
6 is not enough ; anything less than 9 is invalid (header length byte at [8] can't be used if it is outside of buffer). Moved check to beginning of parse_pes_header() to avoid reading outside of buffer.
|
|
stream_id >= 0xbc)
|
|
|
|
|
|
|
|
|
|
4 lowest bits are 0 --> Handle as 24-bit BluRay PCM.
|
|
bit BE, not in DVD format.
|
|
|
|
|
|
|
|
hide/show. Hide overlay when there are no objects to display.
|
|
point, not at end of display set
|
|
|
|
--HG--
rename : src/libxineadec/xine_lpcm_decoder.c => src/audio_dec/xine_lpcm_decoder.c
|
|
This is a backport of the 1.2 code that was commited to utilize the new API
provided by FFmpeg for awhile now but this is especially important because
the old API has been eliminated all together from said copies of FFmpeg.
|
|
Relatively recent copies of FFmpeg before the major API clean up have both
the old SHA1 API and the new SHA (1/2) API so the recently added autoconf
check will reject perfectly valid copies of FFmpeg. Also tweak the
input_cdda code to make sure to use the new API and not include the compat
macros if both the old and new API are around.
|
|
|
|
|
|
|