Age | Commit message (Collapse) | Author |
|
guarded_vdp_output_surface_destroy() calls XLockDisplay() and
XUnlockDisplay() always and not depending on define LOCKDISPLAY.
This may cause a deadlock among threads using VDPAU API due to
different resource allocation orders when guarding is not used
(i. e. #undef LOCKDISPLAY is enabled).
--HG--
extra : rebase_source : abafc9604d8cfb6efe07f665361c4e01e60adc37
|
|
This function is similar to _x_query_buffer_usage() but retrieves also
the total and available (= free) number of buffers besides the number
of buffers ready for processing. For example if one wants to create a
buffering algorithm based on the number of frames ready, it's not that
easy to determine the maximum number of ready frames possible. In case
one configures engine.buffers.video_num_frames:50 it may happen, that
only 30 frames can actually be provided by the video out driver. Next
a video codec like H.264 may hold several frames in its display picture
buffer so that you may end up with only 13 ready frames at maximum. At
the same time, the number of available (= free) frames will be 0 (or
almost zero in case of vo). So it may be even easier to base the buffer
algorithm on the number of free buffers.
The reported numbers may also reveal that too few input buffers have
been provided to compensate a large a/v offset at input stage.
--HG--
extra : rebase_source : 255cb186891fbab5199a99031cf1b1e93ac19923
|
|
According to ITU-T Rec. H.264 (03/2005), Table D-1, there is no such
indicated display of picture. As a result, succeeding enum constants
were mapped to the wrong values.
|
|
The image allocated in decoder_init can immediately be freed after getting
access to accel_data. Accessing the accel pointer afterwards is safe for non
frame related functions although the frame has been freed as freed frames are
not deallocated but put into a free frame queue.
|
|
Currently a parsed picture was only decoded when the parser came across a
NAL unit which started a new picture (aka access unit). An end of sequence
NAL unit must be handled like the access unit delimiter NAL unit, as both
terminate the current access unit.
Handling the end of sequence NAL unit in this way fixes displaying of still
images which end in an end of seqeunce NAL unit. Otherwise they were not
decoded at all (in case of a still frame) or the second field was missing
(in case of a still image which had been coded as a pair of fields).
|
|
|
|
Video out flushes the decoder when it runs out of images for displaying,
because the decoder hasn't delivered new frames for quite a while. But
flushing the decoder causes decoding errors for images after the flush.
It is likely that the flush is still required for the issues it was
introduced (DVD still images), but they may have been resolved differently
meanwhile (e. g. by supporting sequence end code). So for now a
configureable option has been introduced which keeps the current behaviour
by default.
|
|
Flushing the decoder at a pts wrap causes decoding errors for images after
the pts wrap. It is likely that the flush is still required for the issues
it was introduced (DVD still images), but they may have been resolved
differently meanwhile (e. g. by supporting sequence end code). So for now
a configureable option has been introduced which keeps the current behaviour
by default.
|
|
H.264 decoders store a couple of frames in their display picture buffer.
Calling flush before discontinuity my yield images with pts beyond pts
boundery and therefore cause clock errors.
Calling discontinuity before flush resets all pts to 0 before yielding
the images.
|
|
Transfer of seq_pts to img->pts takes now place at picture header of next
image in decoding order. So far, seq_pts was set to cur_pts at sequence
header and picture header. Hence, img->pts was incorrectly set to pts of
next image in decoding order.
Setting seq_pts only in picture header after call of picture_ready() keeps
the correct pts in seq_pts until it has been transfered to img->pts.
Furthermore, cur_pts of second field must be ignored as we put both fields
into the same image so the image is due at pts of first field.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
During channel changes, the audio stream ends and a new stream begins. This
in turn can lead to 'pa_stream_get_index' ending up in an assertion. Because
of that, a check if there is a stream is a good idea.
|
|
|
|
If xine volume is changed from outside the xine frontend, e.g. gnome sound
preferences. xine-lib generates a XINE_EVENT_AUDIO_LEVEL event that
fontends (like xine-ui) can use to update the volume level.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Source: informational messages generated by lintian.
|
|
|
|
|
|
|
|
Debian build deps are adjusted accordingly.
|
|
--HG--
extra : rebase_source : e6fae061a84a475065cd5e8869d02c4d9c5084c7
|
|
The DVDNAV autoconf test is broken due to a missing header. DVDNAV's
dvdnav.h header due to the inclusion of dvdread/ifo_types.h requires
stdint.h be included before dvdnav.h.
|
|
|
|
|
|
|
|
|
|
|
|
--HG--
extra : rebase_source : 986f546343c08d288d44c3a9ea3a6d4309ace204
|
|
The referenced last_vcl_nal exists only when decoding starts at an IDR frame.
Starting anywhere else may lead to a NULL pointer access.
|
|
|
|
--HG--
rename : po/libxine1.pot => po/libxine2.pot
rename : src/libmad/xine_mad_decoder.c => src/audio_dec/xine_mad_decoder.c
rename : src/libspucmml/xine_cmml_decoder.c => src/spu_dec/cmml_decoder.c
|
|
--HG--
extra : rebase_source : cfee1d5353fa3cacf4df8712fde15cd94e2ee3d4
|
|
The current implementation chooses 4:3 when aspect is within
+/- 0.0075 % of 4:3. Otherwise 16:9 is chosen. But there are
some H.264 channels with almost 4:3 aspect and choosing 16:9
for them is worse. So the new implementation chooses the best
match.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
The xine libmad adaptor seemed not to forward the pts to the metronome: It
buffers the MPEG audio packets until a threshold is reached (MAD_MIN_SIZE:
2889 bytes) and then has libmad decode the packets which is send to audio
out. The pts of the last audio packet is forwarded on to metronome which can
then sync video with audio.
For the channel4 channels MPEG audio packets have a size of 576 bytes which
means it takes five packets to fill the buffer enough for processing. In the
stream every fifth audio packet contains a pts.
The result of this is: If after a seek, the last audio packet is the one
with the pts, video and audio are in sync. If the pts is in any of the four
previous ones no pts will reach metronome and video and audio will never be
synced before a new seek and even then there's a one in five chance that
video and audio are not synced.
Other channels did not show this behaviour because e.g. BBC One has an audio
packet size of about 750 bytes and send a pts every fifth packet as well.
This means that not every pts from the stream gets through to metronome but
some do. This also means that syncing after a seek is probably not as quick
as it could be but it will sync.
My workaround to this problem is to start decoding not only when a the
buffer has reached a threshold but also when a pts != 0 arrives. This does
mean however that the buffer isn't always filled to the theshold and
decoding might not perform as well as it could.
--HG--
extra : transplant_source : %EC%90%EB%AA%8A%C7%BD%A4%B7%EE%F5%E9%E8SY%89S%9D0s
|