Age | Commit message (Collapse) | Author |
|
Hopefully, I've applied all of the $(LTLIBINTL) changes correctly...
|
|
|
|
Some plugins may have been missed due to them not being built here.
|
|
|
|
|
|
I discovered some problems with the framebuffer output driver. The first
problem I had was a segfault when trying to play a 480x360 clip on a 640x480
display. I traced it to the yuv420_rgb16() color conversion function, which
was overrunning the input buffer (the "y" part of the image). The reason
was that it was being called downstack from fb_frame_proc_slice(), multiple
times for each 16-pixel high horizontal slice of the image. When it got to
the last slice, only 8 pixels were left to the bottom but it still tried to
process a 16-pixel high slice.
Nosing around a bit, I compared the configuration of the color converter as
used by the fb driver to the xshm driver and found some oddities:
1) The color converter was configured with a "source height" of 16 pixels no
matter what the size of the image, and a "dest height" based on what was
referred to within video_out_fb.c as a "stripe" -- essentially an input
slice scaled up or down as required by the output size.
2) Apparently to prevent the above from causing problems, the position in
the output buffer was managed by special code -- see the "stripe_incr"
variable.
3) The xshm driver calls yuv2rgb_next_slice() with a NULL argument at the
beginning of each frame to allow the color converter to reset its tracking
of the slice-by-slice progress through the image; the fb driver does not.
I'm not sure exactly why it was done that way, but my best guess would be
that whoever coded it didn't know about the need to call
yuv2rgb_next_slice() with a NULL argument, and the rest was built up to get
it to mostly work without that.
The attached patch changes the behaviour to match that of the xshm driver,
and also removes the reset_dest_pointers() function, replacing its single
invocation with one to fb_frame_field(), which is identical after removing
the "stripe" management.
It fixed my crash. Can anyone see if I've misunderstood what was going on?
If not, it should probably be applied to the official version.
|
|
|
|
|
|
The three attached patches (against 1.1.6) each increase the amount of
debug logging in their respective components. We've found the extra
logging useful when trying to track down faults.
I've split this into three patches to make it easier to apply only some
of our changes.
--
Comments welcome,
Simon Farnsworth
|
|
Xv drivers are permitted to return a bigger image than we asked for, to
work around hardware constraints. If this happens, 1.1.6's video_out_xv
cannot deinterlace properly. Fix this by deinterlacing based on the
width of the Xv image; the Xv driver will discard the extra horizontal data.
Without this patch, you get a barber-pole effect if the input video is
interlaced *and* the Xv driver chooses to round up the width of the
requested image.
--
Simon Farnsworth
|
|
|
|
Hi,
With the last patch posted deinterlace.c became obsolete.
deinterlace.h was only used in video_out_xvmc.c for the defines. I
removed the deinterlacer stuff from xvmc in my patch, because there is
only onefield which is hardware accelerated. However it has very bad
quality compared to other deinterlacers or even compared to
non-interlaced video and it's a very cheap one to run in software for
those who absolutely want to use it.
Christoph
|
|
Hi,
As the deinterlacers in video_out_[xcb]xv.c are implemented purely in
software there's no need to have them there. Instead use the post
deinterlacer plugin.
Both plugins tested with kaffeine and no regression found.
Christoph
|
|
|
|
--HG--
rename : src/video_out/libdha/.hgignore => contrib/libdha/.hgignore
rename : src/video_out/libdha/AsmMacros.h => contrib/libdha/AsmMacros.h
rename : src/video_out/libdha/Makefile.am => contrib/libdha/Makefile.am
rename : src/video_out/libdha/README => contrib/libdha/README
rename : src/video_out/libdha/bin/Makefile.am => contrib/libdha/bin/Makefile.am
rename : src/video_out/libdha/bin/README => contrib/libdha/bin/README
rename : src/video_out/libdha/bin/mapdev.copyright => contrib/libdha/bin/mapdev.copyright
rename : src/video_out/libdha/bin/mapdev.vxd => contrib/libdha/bin/mapdev.vxd
rename : src/video_out/libdha/cpu_flush.c => contrib/libdha/cpu_flush.c
rename : src/video_out/libdha/irq.c => contrib/libdha/irq.c
rename : src/video_out/libdha/kernelhelper/Makefile.am => contrib/libdha/kernelhelper/Makefile.am
rename : src/video_out/libdha/kernelhelper/README => contrib/libdha/kernelhelper/README
rename : src/video_out/libdha/kernelhelper/dhahelper.c => contrib/libdha/kernelhelper/dhahelper.c
rename : src/video_out/libdha/kernelhelper/dhahelper.h => contrib/libdha/kernelhelper/dhahelper.h
rename : src/video_out/libdha/kernelhelper/test.c => contrib/libdha/kernelhelper/test.c
rename : src/video_out/libdha/libdha.c => contrib/libdha/libdha.c
rename : src/video_out/libdha/libdha.h => contrib/libdha/libdha.h
rename : src/video_out/libdha/mmi.c => contrib/libdha/mmi.c
rename : src/video_out/libdha/mtrr.c => contrib/libdha/mtrr.c
rename : src/video_out/libdha/oth/Makefile.am => contrib/libdha/oth/Makefile.am
rename : src/video_out/libdha/oth/pci.db => contrib/libdha/oth/pci.db
rename : src/video_out/libdha/pci.c => contrib/libdha/pci.c
rename : src/video_out/libdha/pci_db2c.awk => contrib/libdha/pci_db2c.awk
rename : src/video_out/libdha/ports.c => contrib/libdha/ports.c
rename : src/video_out/libdha/sysdep/AsmMacros_alpha.h => contrib/libdha/sysdep/AsmMacros_alpha.h
rename : src/video_out/libdha/sysdep/AsmMacros_arm32.h => contrib/libdha/sysdep/AsmMacros_arm32.h
rename : src/video_out/libdha/sysdep/AsmMacros_generic.h => contrib/libdha/sysdep/AsmMacros_generic.h
rename : src/video_out/libdha/sysdep/AsmMacros_ia64.h => contrib/libdha/sysdep/AsmMacros_ia64.h
rename : src/video_out/libdha/sysdep/AsmMacros_powerpc.h => contrib/libdha/sysdep/AsmMacros_powerpc.h
rename : src/video_out/libdha/sysdep/AsmMacros_sparc.h => contrib/libdha/sysdep/AsmMacros_sparc.h
rename : src/video_out/libdha/sysdep/AsmMacros_x86.h => contrib/libdha/sysdep/AsmMacros_x86.h
rename : src/video_out/libdha/sysdep/Makefile.am => contrib/libdha/sysdep/Makefile.am
rename : src/video_out/libdha/sysdep/libdha_os2.c => contrib/libdha/sysdep/libdha_os2.c
rename : src/video_out/libdha/sysdep/libdha_win32.c => contrib/libdha/sysdep/libdha_win32.c
rename : src/video_out/libdha/sysdep/pci_386bsd.c => contrib/libdha/sysdep/pci_386bsd.c
rename : src/video_out/libdha/sysdep/pci_alpha.c => contrib/libdha/sysdep/pci_alpha.c
rename : src/video_out/libdha/sysdep/pci_arm32.c => contrib/libdha/sysdep/pci_arm32.c
rename : src/video_out/libdha/sysdep/pci_bsdi.c => contrib/libdha/sysdep/pci_bsdi.c
rename : src/video_out/libdha/sysdep/pci_freebsd.c => contrib/libdha/sysdep/pci_freebsd.c
rename : src/video_out/libdha/sysdep/pci_generic_cpu.c => contrib/libdha/sysdep/pci_generic_cpu.c
rename : src/video_out/libdha/sysdep/pci_generic_os.c => contrib/libdha/sysdep/pci_generic_os.c
rename : src/video_out/libdha/sysdep/pci_ia64.c => contrib/libdha/sysdep/pci_ia64.c
rename : src/video_out/libdha/sysdep/pci_isc.c => contrib/libdha/sysdep/pci_isc.c
rename : src/video_out/libdha/sysdep/pci_linux.c => contrib/libdha/sysdep/pci_linux.c
rename : src/video_out/libdha/sysdep/pci_lynx.c => contrib/libdha/sysdep/pci_lynx.c
rename : src/video_out/libdha/sysdep/pci_mach386.c => contrib/libdha/sysdep/pci_mach386.c
rename : src/video_out/libdha/sysdep/pci_netbsd.c => contrib/libdha/sysdep/pci_netbsd.c
rename : src/video_out/libdha/sysdep/pci_openbsd.c => contrib/libdha/sysdep/pci_openbsd.c
rename : src/video_out/libdha/sysdep/pci_os2.c => contrib/libdha/sysdep/pci_os2.c
rename : src/video_out/libdha/sysdep/pci_powerpc.c => contrib/libdha/sysdep/pci_powerpc.c
rename : src/video_out/libdha/sysdep/pci_sco.c => contrib/libdha/sysdep/pci_sco.c
rename : src/video_out/libdha/sysdep/pci_sparc.c => contrib/libdha/sysdep/pci_sparc.c
rename : src/video_out/libdha/sysdep/pci_svr4.c => contrib/libdha/sysdep/pci_svr4.c
rename : src/video_out/libdha/sysdep/pci_win32.c => contrib/libdha/sysdep/pci_win32.c
rename : src/video_out/libdha/sysdep/pci_x86.c => contrib/libdha/sysdep/pci_x86.c
rename : src/video_out/libdha/test.c => contrib/libdha/test.c
rename : src/video_out/vidix/Makefile.am => contrib/vidix/Makefile.am
rename : src/video_out/vidix/README => contrib/vidix/README
rename : src/video_out/vidix/drivers/Makefile.am => contrib/vidix/drivers/Makefile.am
rename : src/video_out/vidix/drivers/cyberblade_regs.h => contrib/vidix/drivers/cyberblade_regs.h
rename : src/video_out/vidix/drivers/cyberblade_vid.c => contrib/vidix/drivers/cyberblade_vid.c
rename : src/video_out/vidix/drivers/genfb_vid.c => contrib/vidix/drivers/genfb_vid.c
rename : src/video_out/vidix/drivers/glint_regs.h => contrib/vidix/drivers/glint_regs.h
rename : src/video_out/vidix/drivers/mach64.h => contrib/vidix/drivers/mach64.h
rename : src/video_out/vidix/drivers/mach64_vid.c => contrib/vidix/drivers/mach64_vid.c
rename : src/video_out/vidix/drivers/mga_vid.c => contrib/vidix/drivers/mga_vid.c
rename : src/video_out/vidix/drivers/nvidia_vid.c => contrib/vidix/drivers/nvidia_vid.c
rename : src/video_out/vidix/drivers/pm2_vid.c => contrib/vidix/drivers/pm2_vid.c
rename : src/video_out/vidix/drivers/pm3_regs.h => contrib/vidix/drivers/pm3_regs.h
rename : src/video_out/vidix/drivers/pm3_vid.c => contrib/vidix/drivers/pm3_vid.c
rename : src/video_out/vidix/drivers/radeon.h => contrib/vidix/drivers/radeon.h
rename : src/video_out/vidix/drivers/radeon_vid.c => contrib/vidix/drivers/radeon_vid.c
rename : src/video_out/vidix/drivers/savage_regs.h => contrib/vidix/drivers/savage_regs.h
rename : src/video_out/vidix/drivers/savage_vid.c => contrib/vidix/drivers/savage_vid.c
rename : src/video_out/vidix/drivers/sis_bridge.c => contrib/vidix/drivers/sis_bridge.c
rename : src/video_out/vidix/drivers/sis_defs.h => contrib/vidix/drivers/sis_defs.h
rename : src/video_out/vidix/drivers/sis_regs.h => contrib/vidix/drivers/sis_regs.h
rename : src/video_out/vidix/drivers/sis_vid.c => contrib/vidix/drivers/sis_vid.c
rename : src/video_out/vidix/drivers/unichrome_regs.h => contrib/vidix/drivers/unichrome_regs.h
rename : src/video_out/vidix/drivers/unichrome_vid.c => contrib/vidix/drivers/unichrome_vid.c
rename : src/video_out/vidix/fourcc.h => contrib/vidix/fourcc.h
rename : src/video_out/vidix/vidix.h => contrib/vidix/vidix.h
rename : src/video_out/vidix/vidix.txt => contrib/vidix/vidix.txt
rename : src/video_out/vidix/vidixlib.c => contrib/vidix/vidixlib.c
rename : src/video_out/vidix/vidixlib.h => contrib/vidix/vidixlib.h
|
|
|
|
|
|
|
|
-- Move x11.m4 back into configure.ac, because AC_PATH_XTRA was behaving oddly
inside a macro. That code is now cleaned up enough so that it's not too
painful having it there.
-- Move opengl.m4 inline into video_out.m4
-- Fix x11 checks to work on Darwin, including XShm checks, Xv checks, OpenGL,
and GLU checks.
|
|
-- Make a pass at cleaning up contrib/ Makefile.am files
-- Rename many AM_CONDITIONALS for consistency and give them better names to
better indicate what they mean
-- Remove some dead input plugin tests
-- Clean up AM_PATH_DVDNAV
|
|
|
|
|
|
|
|
|
|
-- Removed m4/optimizations.m4, and along with it, AC_OPTIMIZATIONS.
-- Stripped down, cleaned up, and merged the former together with other compiler
characteristic checks.
-- Do not set any optimization flags into CFLAGS. Update all Makefile.am's with
proper AM_CFLAGS, AM_CPPFLAGS, AM_LDFLAGS, etc. to set up optimization flags,
usually from DEFAULT_OCFLAGS.
-- Start cleaning up CFLAGS/CPPFLAGS stuff in Makefile.am's all over the place.
-- Correct a number of places where CFLAGS itself was being mangled in
Makefile to on-the-fly adjust optimizations to work around compiler bugs.
This stuff is now done correctly.
-- The run of automake from autogen.sh is now clean of warnings.
-- Cleaned out some (now) dead macros from m4/_xine.m4
-- Mac OS X intel builds out-of-the-box now -- dropped optimization on
post/deinterlace/plugins/kdetv-greedyh to O1_CFLAGS.
-- OBJCFLAGS is now getting set correctly everywhere that it needs to be
-- Various other miscellaneous cleanups all over
|
|
Untranslated messages use LOG_MODULE in the string literal, whereas translated
messages use %s.
|
|
the Framebuffer output only with fbxine.
|
|
outputs to not encode the video out name on it, to simplify i18n.
|
|
|
|
|
|
elements by the size of the single element.
|
|
|
|
memcpy structures.
When array of constant pointers are used for register enum configurations,
this creates more warnings because of pointer mismatches; I'd consider
casting them, but not yet.
In the memcpy_method array, mark the parts that are constant at build time
as const so to try reducing the overhead.
|
|
|
|
|
|
One can assume that a still frame is to show when there are no more
frames left to display.
The changed code uses _x_query_buffer_usage() to retrieve the number
of frames waiting to be displayed to integrate this information into
the decision.
|
|
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.
|
|
|
|
|
|
|
|
This fixes linkage problems for people who want this but don't want X.
|
|
|
|
Two of the modified files are headers, but each contains definitions as well as
declarations and is only ever used once.
|
|
|
|
correct location.
|
|
rewritten, and various fixes and changes have been made to the supporting code.
It's still not perfect, but it at least works now.
|
|
automake-related files.
|