Age | Commit message (Collapse) | Author |
|
There are some situations where bob deinterlacing doesn't make much
sense, as the effect doesn't work for example for slow motion. And
in fast motion mode, the sleep between displaying the two fields
lowers the reachable fast motion frame rate. Another annoying effect
is the reduction in vertical resolution for still images.
The changed code tries to detect such issues and disables bob
deinterlacing for such frames. The detection of still images is
still to come.
|
|
Bob deinterlacing is implemented as showing the top field, sleeping
for half the frame duration and showing the bottom field. Most
drivers tend to synchronize displaying a field on the VBI and thus
displaying a field may take up to half the frame duration in certain
cases.
According to the original code, the sleep took always half the
frame duration and therefore the second field could get displayed
too late. As a result, the driver was syncing to VBI most often,
so that things got even worse.
The changed code now calculates the sleep time in a way that the
second field gets displayed half the frame duration after the
first field. Moreover, it monitors how much time was spent to
display the first field and when this time exceeds 75 % of the
field time (= half the frame time), it skips displaying the second
field, as usually this is an indicator that the driver has no
more frame buffers left. So displaying the second field would just
make things go worse.
|
|
The current implementation keeps references to VO_NUM_RECENT_FRAMES
frames (for deinterlacing), but doesn't make any use of them.
As many XXMC capable devices only supply 8 frames at all, keeping
fewer frames referenced makes more available for decoding and thus
avoids frame drops by keeping the number of frames which are ready
for display more often above frame_drop_limit.
|
|
The current code misses the ability to switch back to an
unaccelerated context, e. g. when previously MPEG2 material
was displayed which is then followed by H.264 material. As
the latter is not handled as XINE_IMGFMT_XXMC there was no
way to leave the accelerated context and therefore the images
did not appear on screen.
|
|
|
|
|
|
Altivec code.
|
|
Two of the modified files are headers, but each contains definitions as well as
declarations and is only ever used once.
|
|
|
|
to be video_overlay.
|
|
|
|
|
|
get along that well.
|
|
|
|
|
|
|
|
libdir for plugins installation.
With this change, it avoids running an egrep command for every directory
at uninstall time; the for has way less impact as the list can just be
empty.
|
|
|
|
This reduces the number of objects that are allowed to contain
TEXT section relocations (skipping for instance libxine and the
vidix drivers).
This is still suboptimal because only those plugins that actually
contains text relocation should be allowed to contain them (that
is what is done with IMPURE_TEXT_LDFLAGS for Solaris and Darwin).
|
|
correct location.
|
|
Together with this, define a xinepost_LTLIBRARIES class that is used
to install the post-plugins in the correct directory.
Also add the rule to remove them.
|
|
|
|
|
|
Checked snd_pcm_delay return code, and don't trust negative values.
|
|
rescanned now.
|
|
|
|
|
|
|
|
Use xineplug_LTLIBRARIES.
--HG--
rename : src/libsputext/xine_decoder.c => src/libsputext/xine_sputext_decoder.c
|
|
Use xineplug_LTLIBRARIES.
--HG--
rename : src/libspudvb/xine_decoder.c => src/libspudvb/xine_spudvb_decoder.c
|
|
Use xineplug_LTLIBRARIES.
--HG--
rename : src/libspudec/xine_decoder.c => src/libspudec/xine_spu_decoder.c
|
|
Use xineplug_LTLIBRARIES.
--HG--
rename : src/libspucmml/xine_decoder.c => src/libspucmml/xine_cmml_decoder.c
|
|
Use xineplug_LTLIBRARIES.
--HG--
rename : src/libspucc/xine_decoder.c => src/libspucc/xine_cc_decoder.c
|
|
Use xineplug_LTLIBRARIES.
--HG--
rename : src/libmusepack/xine_decoder.c => src/libmusepack/xine_musepack_decoder.c
|
|
Use xineplug_LTLIBRARIES.
--HG--
rename : src/libmpeg2new/xine_decoder.c => src/libmpeg2new/xine_mpeg2new_decoder.c
|
|
Use xineplug_LTLIBRARIES.
--HG--
rename : src/libmpeg2/xine_decoder.c => src/libmpeg2/xine_mpeg2_decoder.c
|
|
--HG--
rename : src/libreal/audio_decoder.c => src/libreal/xine_real_audio_decoder.c
rename : src/libreal/xine_decoder.c => src/libreal/xine_real_video_decoder.c
|
|
--HG--
rename : src/libspeex/xine_decoder.c => src/libxineadec/xine_speex_decoder.c
|
|
--HG--
rename : src/libtheora/xine_decoder.c => src/libxinevdec/xine_theora_decoder.c
|
|
--HG--
rename : src/libvorbis/xine_decoder.c => src/libxineadec/xine_vorbis_decoder.c
|
|
Use xineplug_LTLIBRARIES.
--HG--
rename : src/libmad/xine_decoder.c => src/libmad/xine_mad_decoder.c
|
|
--HG--
rename : src/liblpcm/xine_decoder.c => src/libxineadec/xine_lpcm_decoder.c
|
|
|
|
Use xineplug_LTLIBRARIES.
--HG--
rename : src/libfaad/xine_decoder.c => src/libfaad/xine_faad_decoder.c
|
|
Use xineplug_LTLIBRARIES.
--HG--
rename : src/libdts/xine_decoder.c => src/libdts/xine_dts_decoder.c
|
|
Use xineplug_LTLIBRARIES.
--HG--
rename : src/liba52/xine_decoder.c => src/liba52/xine_a52_decoder.c
|
|
source files.
This way when you get a backtrace, video_decoder.c is never the FFmpeg one.
--HG--
rename : src/libffmpeg/audio_decoder.c => src/libffmpeg/ff_audio_decoder.c
rename : src/libffmpeg/dvaudio_decoder.c => src/libffmpeg/ff_dvaudio_decoder.c
rename : src/libffmpeg/mpeg_parser.c => src/libffmpeg/ff_mpeg_parser.c
rename : src/libffmpeg/mpeg_parser.h => src/libffmpeg/ff_mpeg_parser.h
rename : src/libffmpeg/video_decoder.c => src/libffmpeg/ff_video_decoder.c
rename : src/libffmpeg/xine_decoder.c => src/libffmpeg/ffmpeg_decoder.c
rename : src/libffmpeg/xine_decoder.h => src/libffmpeg/ffmpeg_decoder.h
rename : src/libffmpeg/xine_encoder.c => src/libffmpeg/ffmpeg_encoder.c
|
|
--HG--
rename : src/libflac/decoder_flac.c => src/combined/decoder_flac.c
rename : src/libflac/demux_flac.c => src/combined/demux_flac.c
rename : src/libflac/demux_flac.h => src/combined/demux_flac.h
|
|
|
|
As we remove the .la files from libtool, the default uninstall targets
will not work for the plugins, so we have to remove them by hand.
When all the plugins will be migrated to xineplug_LTLIBRARIES, we can
remove the egrep call and that part of the code.
|