Age | Commit message (Collapse) | Author |
|
|
|
decoder thread.
Raising nice priority is not limited to root user only on modern unix/linux systems.
So a log message about failure is helpful to everyone.
|
|
Resulting left and right cropping parameters should be multiple of 2.
Left cropping offset calculation to YUY2 frames fixed.
|
|
Intercepted frames should never pass function vdpau_update_frame_format.
--HG--
extra : rebase_source : d1d05b67865eb6cc79225f96159184852f239262
|
|
--HG--
rename : src/libxineadec/gsm610/Makefile.am => contrib/gsm610/Makefile.am
rename : src/libxineadec/nosefart/diff_to_nosefart_cvs.patch => contrib/nosefart/diff_to_nosefart_cvs.patch
rename : src/libxineadec/nosefart/nes6502.c => contrib/nosefart/nes6502.c
rename : src/libxineadec/nosefart/nes6502.h => contrib/nosefart/nes6502.h
rename : src/libxineadec/nosefart/nes_apu.c => contrib/nosefart/nes_apu.c
rename : src/libxineadec/nosefart/nes_apu.h => contrib/nosefart/nes_apu.h
rename : src/libxineadec/nosefart/nsf.c => contrib/nosefart/nsf.c
rename : src/libxineadec/nosefart/nsf.h => contrib/nosefart/nsf.h
rename : src/libxineadec/nosefart/types.h => contrib/nosefart/types.h
rename : src/libxineadec/nosefart/version.h => contrib/nosefart/version.h
rename : doc/faq/faq.sgml => doc/faq/faq.docbook
rename : src/libsputext/demux_sputext.c => src/spu_dec/sputext_demuxer.c
rename : src/libxinevdec/image.c => src/video_dec/image.c
|
|
downwards within post
plugins because this corrupted the receiving frame acceleration data.
This issue occurs typically when a post plugin retrieves a new frame from the video out stage and
then does a _x_post_frame_copy_down from the frame that is delivered from the video decoder.
In this case the two frames are unrelated and acceleration data get messed up.
|
|
xine-libs OSD stack is event driven and some memory blocks are not copied
but responsibility to free the memory moves to different layers of the
OSD stack.
When argb_layer was introduced, this behavior was not taken into account
and as such it is likely that for example osd_free_object() frees the
argb_layer while vdpau_overlay_* functions still access the memory.
Passing responsibility for the argb_layer is not that easy as it seems as
the design goal of the argb_layer was to not duplicate any memory of the
argb_buffer which all other OSD functions usually do.
To solve this issue, argb_layer_t will be turned into a managed data
structure by introducing a ref_count member. ref_count increases as more
layers of the OSD stack hold a reference to that memory block, and it
decreases when they are no longer interested in it. When ref_count reaches
zero the memory block is freed automatically. To deal with ref counting,
set_argb_layer_ptr() has been introduced.
Some functions of the OSD layers had to be modified to deal with reference
tracking. For convinience, osd_free_object() should clear the argb_buffer
pointer so that the buffer may be freed safely after returning.
|
|
Drawing can only be triggered when a backup image exists. Otherwise it's
useless. Therefore, honor it only when a backup frame exists.
--HG--
extra : rebase_source : bffa00a9d9ed4e8994185655d20ba2b3fc9ad818
|
|
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
|
|
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.
--HG--
extra : transplant_source : %AB%B3u%1F%E7%3D%10%0C%3D%40%B2%B0%CB%8E%84%FE%E6%87p%AA
|
|
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.
--HG--
extra : transplant_source : %9Cs%D1%9A%E5Sk%27%18%A6%94%5D%AB%0Dd%CA%7E%7E%BA%FD
|
|
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.
--HG--
extra : transplant_source : %9CNpV%B5%83%83%23%F5%C3%09%E43%E2%DFo.%7E%D9%C7
|
|
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.
|
|
|
|
xine_new()). Fixed a leak.
|
|
written only when switching binaries for different platforms.
|
|
- use -no-undefined flag only for building shared libraries (libxine, plugins)
- plugins LDFLAGS unification
- move -no-undefined into LDFLAGS_NOUNDEFINED
- attributes.m4 fix
|
|
|
|
--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
|
|
|
|
This is optional, and some systems don't support it. POSIX defines the
_POSIX_THREAD_PRIORITY_SCHEDULING to tell that support is present.
|
|
In demux_loop(), a time value is calculated by adding to the fractional
part. In case a second barrier is crossed, the value is not in its
canonical form anymore - the fractional part is larger than 10^9-1.
It should be normalized for portability. While I haven't found a formal
requirement for this in POSIX, NetBSD's libpthread checks for it and
complains.
|
|
|
|
--HG--
rename : include/xine.h.in => include/xine.h
rename : src/xine-engine/video_out.h => include/xine/video_out.h
|
|
|
|
--HG--
rename : doc/hackersguide/internals.sgml => doc/hackersguide/internals.docbook
rename : doc/hackersguide/library.sgml => doc/hackersguide/library.docbook
rename : include/xine.h.in => include/xine.h
rename : src/xine-engine/buffer.h => include/xine/buffer.h
rename : src/demuxers/demux_ogg.c => src/combined/xine_ogg_demuxer.c
|
|
|
|
|
|
|
|
--HG--
rename : src/xine-engine/buffer.h => include/xine/buffer.h
rename : src/libxineadec/xine_lpcm_decoder.c => src/audio_dec/xine_lpcm_decoder.c
|
|
|
|
Based on patches from Roger Scott <ras351@hotmail.com>.
|
|
Rename "wmav3" to "wmapro" in xine-lib's internals to line up xine-lib's
nomenclature with what everyone else calls it and knows it as.
[Tweaked by ds to avoid API change.]
Tell xine-lib that when it finds wmapro, look to ffmpeg.
ffmpeg's wmapro decoder is unique in that it puts out samples that
are floats, not 16-bit ints. These need to be converted.
This requires external ffmpeg.
|
|
|
|
|
|
+ gapless).
|
|
|
|
|
|
|
|
The deadlock was caused by the unprotected use of
stream->demux_action_pending internal variable from play_internal() and from
within the demuxer loop.
Direct access to demux_action_pending is replaced with _x_action_raise() and
_x_action_lower(), which use a mutex for thread safety.
|
|
--HG--
rename : src/combined/decoder_wavpack.c => src/combined/wavpack_decoder.c
rename : src/demuxers/demux_ogg.c => src/combined/xine_ogg_demuxer.c
|
|
|
|
This reduces requirements of plugins etc., hopefully where possible and without
breakage. (Works on Linux.)
|
|
|
|
|
|
|
|
|
|
|