summaryrefslogtreecommitdiff
path: root/src/xine-engine/post.c
AgeCommit message (Collapse)Author
2013-09-13Copyright year update by hg log infoTorsten Jager
script execution time: 55"
2012-09-07Fix a segfault which may occur when stopping playback with deinterlacing.Darren Salt
2011-03-29Continuous video frame grabbing feature.Andreas Auras
In opposite to the 'xine_get_current_frame' based snapshot function this grabbing feature allow continuous grabbing of last or next displayed video frame. Grabbed video frames are returned in simple three byte RGB format. Depending on the capabilities of the used video output driver video image data is taken as close as possible at the end of the video processing chain. Thus a returned video image could contain the blended OSD data, is deinterlaced, cropped and scaled and video properties like hue, sat could be applied. With this patch such a decent grabbing feature is implemented for vdpau video out driver. If a video output driver does not have a decent grabbing implementation then there is a generic fallback feature that grabs the video frame as they are taken from the video display queue (like the xine_get_current_frame' function). In this case color correct conversation to a RGB image incorporating source cropping and scaling to the requested grab size is also supported. A more detailed description can be found in file "xine.h".
2011-03-20Merge from 1.1.Darren Salt
2011-03-02Do not copy pointer to acceleration data of a frame when propagating changes ↵Andreas Auras
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.
2009-11-30Trim trailing space & reduce space+tab.Darren Salt
2009-11-30Trim trailing space & reduce space+tab.Darren Salt
2008-07-17Merge from 1.1.Darren Salt
--HG-- rename : src/xine-engine/buffer.h => include/xine/buffer.h rename : src/demuxers/demux_nsf.c => src/combined/nsf_demuxer.c rename : src/demuxers/demux_ogg.c => src/combined/xine_ogg_demuxer.c rename : src/libspucmml/xine_cmml_decoder.c => src/spu_dec/cmml_decoder.c rename : src/libspudec/xine_spu_decoder.c => src/spu_dec/spu_decoder.c rename : src/libspudvb/xine_spudvb_decoder.c => src/spu_dec/spudvb_decoder.c rename : src/libsputext/xine_sputext_decoder.c => src/spu_dec/sputext_decoder.c rename : src/libsputext/demux_sputext.c => src/spu_dec/sputext_demuxer.c
2008-07-06Fix a stupid bug in post-plugin initialisation.Darren Salt
2008-07-04Use calloc to allocate the lists of audio and video ports.Diego 'Flameeyes' Pettenò
--HG-- extra : transplant_source : T6%E7%60%7F%D4%60%C8l4%9AX%97%86hrR%AD%13%C0
2008-05-23Merge from 1.1. VDR needs to be updated.Diego 'Flameeyes' Pettenò
--HG-- rename : src/liba52/parse.c => contrib/a52dec/parse.c rename : include/xine.h.in => include/xine.h rename : src/xine-engine/alphablend.h => include/xine/alphablend.h rename : src/xine-utils/attributes.h => include/xine/attributes.h rename : src/xine-engine/buffer.h => include/xine/buffer.h rename : src/input/input_plugin.h => include/xine/input_plugin.h rename : src/xine-utils/xineutils.h => include/xine/xineutils.h rename : src/libxineadec/fooaudio.c => src/audio_dec/fooaudio.c rename : src/libxineadec/gsm610.c => src/audio_dec/gsm610.c rename : src/liba52/xine_a52_decoder.c => src/audio_dec/xine_a52_decoder.c rename : src/libdts/xine_dts_decoder.c => src/audio_dec/xine_dts_decoder.c rename : src/libfaad/xine_faad_decoder.c => src/audio_dec/xine_faad_decoder.c rename : src/libxineadec/xine_lpcm_decoder.c => src/audio_dec/xine_lpcm_decoder.c rename : src/libmad/xine_mad_decoder.c => src/audio_dec/xine_mad_decoder.c rename : src/libmusepack/xine_musepack_decoder.c => src/audio_dec/xine_musepack_decoder.c rename : src/combined/decoder_flac.c => src/combined/flac_decoder.c rename : src/combined/demux_flac.c => src/combined/flac_demuxer.c rename : src/libxineadec/nsf.c => src/combined/nsf_decoder.c rename : src/demuxers/demux_nsf.c => src/combined/nsf_demuxer.c rename : src/combined/combined_wavpack.h => src/combined/wavpack_combined.h rename : src/combined/decoder_wavpack.c => src/combined/wavpack_decoder.c rename : src/combined/demux_wavpack.c => src/combined/wavpack_demuxer.c rename : src/demuxers/demux_ogg.c => src/combined/xine_ogg_demuxer.c rename : src/libxineadec/xine_speex_decoder.c => src/combined/xine_speex_decoder.c rename : src/libxinevdec/xine_theora_decoder.c => src/combined/xine_theora_decoder.c rename : src/libxineadec/xine_vorbis_decoder.c => src/combined/xine_vorbis_decoder.c rename : src/libspucc/cc_decoder.c => src/spu_dec/cc_decoder.c rename : src/libspucmml/xine_cmml_decoder.c => src/spu_dec/cmml_decoder.c rename : src/libspudec/xine_spu_decoder.c => src/spu_dec/spu_decoder.c rename : src/libspudec/spu.c => src/spu_dec/spudec.c rename : src/libspudvb/xine_spudvb_decoder.c => src/spu_dec/spudvb_decoder.c rename : src/libsputext/xine_sputext_decoder.c => src/spu_dec/sputext_decoder.c rename : src/libsputext/demux_sputext.c => src/spu_dec/sputext_demuxer.c rename : src/libspucc/xine_cc_decoder.c => src/spu_dec/xine_cc_decoder.c rename : src/libxinevdec/bitplane.c => src/video_dec/bitplane.c rename : src/libxinevdec/foovideo.c => src/video_dec/foovideo.c rename : src/libxinevdec/gdkpixbuf.c => src/video_dec/gdkpixbuf.c rename : src/libxinevdec/image.c => src/video_dec/image.c rename : src/libmpeg2/xine_mpeg2_decoder.c => src/video_dec/libmpeg2/xine_mpeg2_decoder.c rename : src/libxinevdec/rgb.c => src/video_dec/rgb.c rename : src/libxinevdec/yuv.c => src/video_dec/yuv.c
2008-05-07xine_xmalloc() deprecation: replace its use with static and non-zero size.Diego 'Flameeyes' Pettenò
The xine_xmalloc() function is going to be deprecated, as its behaviour is rarely needed as such, and it's thus misused. With this, almost all uses of xine_xmalloc() with static size (for instance the value returned by sizeof()) or with a size that is guaranteed not to be zero (like strlen()+1) are replaced with calls to either calloc(1, ...) or malloc(). malloc() is used whenever the allocated memory is going to be immediately overwritten, while calloc() is used in every other case, as it sets the whole memory area to zero. --HG-- extra : transplant_source : %8F%98%EC%02%1E%83%F0s%06X%83C%205Y%80%B12%CC%E1
2007-12-23Don't create extra variables now that node is transparent to xine's build.Diego 'Flameeyes' Pettenò
2007-12-19Update all the code to the new headers layout.Diego 'Flameeyes' Pettenò
2007-11-10Merge from 1.1.Darren Salt
--HG-- rename : src/libxineadec/nsf.c => src/combined/nsf_decoder.c rename : src/demuxers/demux_nsf.c => src/combined/nsf_demuxer.c rename : src/combined/combined_wavpack.c => src/combined/wavpack_combined.c rename : src/combined/combined_wavpack.h => src/combined/wavpack_combined.h rename : src/combined/decoder_wavpack.c => src/combined/wavpack_decoder.c rename : src/combined/demux_wavpack.c => src/combined/wavpack_demuxer.c rename : src/demuxers/demux_ogg.c => src/combined/xine_ogg_demuxer.c rename : src/libxineadec/xine_speex_decoder.c => src/combined/xine_speex_decoder.c rename : src/libxinevdec/xine_theora_decoder.c => src/combined/xine_theora_decoder.c rename : src/libxineadec/xine_vorbis_decoder.c => src/combined/xine_vorbis_decoder.c rename : src/liba52/xine_a52_decoder.c => src/libxineadec/xine_a52_decoder.c rename : src/libdts/xine_dts_decoder.c => src/libxineadec/xine_dts_decoder.c rename : src/libfaad/xine_faad_decoder.c => src/libxineadec/xine_faad_decoder.c rename : src/libmad/xine_mad_decoder.c => src/libxineadec/xine_mad_decoder.c rename : src/libmusepack/xine_musepack_decoder.c => src/libxineadec/xine_musepack_decoder.c
2007-11-10Delete most of the CVS $Id$/$Log$ lines.Darren Salt
--HG-- extra : transplant_source : %E0%D0%C5%8B%BEU%DD%24%5D7%1F%ADV%AD%EB%23%CBU%80%EB
2007-11-09Merge FSF address changes from 1.1 branch.Diego 'Flameeyes' Pettenò
--HG-- rename : src/combined/decoder_flac.c => src/combined/flac_decoder.c rename : src/combined/demux_flac.c => src/combined/flac_demuxer.c rename : src/libxineadec/nsf.c => src/combined/nsf_decoder.c rename : src/demuxers/demux_nsf.c => src/combined/nsf_demuxer.c rename : src/combined/combined_wavpack.c => src/combined/wavpack_combined.c rename : src/combined/combined_wavpack.h => src/combined/wavpack_combined.h rename : src/combined/decoder_wavpack.c => src/combined/wavpack_decoder.c rename : src/combined/demux_wavpack.c => src/combined/wavpack_demuxer.c rename : src/demuxers/demux_ogg.c => src/combined/xine_ogg_demuxer.c rename : src/libxineadec/xine_speex_decoder.c => src/combined/xine_speex_decoder.c rename : src/libxinevdec/xine_theora_decoder.c => src/combined/xine_theora_decoder.c rename : src/libxineadec/xine_vorbis_decoder.c => src/combined/xine_vorbis_decoder.c rename : src/liba52/xine_a52_decoder.c => src/libxineadec/xine_a52_decoder.c rename : src/libdts/xine_dts_decoder.c => src/libxineadec/xine_dts_decoder.c rename : src/libfaad/xine_faad_decoder.c => src/libxineadec/xine_faad_decoder.c rename : src/libmusepack/xine_musepack_decoder.c => src/libxineadec/xine_musepack_decoder.c
2007-11-09Update FSF address on non-contributed code and COPYING files.Diego 'Flameeyes' Pettenò
For contributed code, leave whatever the version we last synced for is using to make simpler future syncs.
2007-08-16Merge open()/glibc (debug #define) workaround from 1.1; fix up for 1.2 changes.Darren Salt
This does not touch code in contrib.
2007-08-15Workaround for recent glibc & -D_FORTIFY_SOURCE=2 (defines open() as a macro).Darren Salt
According to bug 1773769, this breaks foo->open(). The fix (as used in Ville Skyttä's patch, which doesn't cover all cases) is to replace this with (foo->open)(). This patch was generated using sed -i -re 's/(([[:alnum:]_]+(->|\.))+open) ?\(/(\1) (/' `grep '[>.]open \?(' include -rIl` One change (in a comment) is not committed.
2007-07-27make use of the new callback function in _x_post_intercept_video_frame()Reinhard Nißl
--HG-- extra : transplant_source : %E9%9C%09%7EQ%19%B6%D8%BCJ587%C5i%AF%D5R%F4%DE
2007-08-02Merge from 1.1.Darren Salt
2007-07-26copy stream in _x_post_frame_copy_up() and add refcountingReinhard Nißl
Without copying stream up, _x_post_restore_video_frame() will reset the native frame's stream to the value at _x_post_intercept_video_frame(), which is typically NULL. This behaviour differs from normal frame processing, i. e. without postprocessing. Copying the stream up reveals that stream refcounting was missing in several postprocessing functions, which is hereby added. --HG-- extra : transplant_source : I%F1%0B%86%B5%5E%5D%10_6%BC%B6%BCPZ%11%04y%83/
2007-04-15Make sleeps in video out loops interruptable for immediate OSDReinhard Nißl
redrawing. The video out loop sleeps up to 20 ms (and the paused loop 20 ms) which means that pending OSD events are delayed too from beeing processed. When an OSD is used for example to scroll through a list of VDR recordings, this delay may slow down scrolling unnecessarily. Especially when the OSD manager is able to render the OSD content indepently from drawing a frame to screen, this change will allow the fastest OSD update possible.
2007-04-13Provide ability to lock port rewiring.Reinhard Nißl
The idea is to allow only a "single" frontend to rewire ports at a certain point in time. Regarding a stream, frontend_lock is used for example to allow only a single frontend to change the speed. Unfortunately, frontend_lock cannot be used as the rewire functions are not stream related. Therefore a new port_rewiring_lock was introduced and used at appropriate locations. When an arbitrary thread now holds the frontend_lock and the port_rewiring_lock, it is safe that acquiring a port ticket in functions like xine_get_current_frame() will never block the thread.
2006-01-27Adapt the engine to the new list code.Thibaut Mattern
CVS patchset: 7848 CVS date: 2006/01/27 07:46:09
2005-07-17Copy frame ratio as wellJames Stembridge
CVS patchset: 7652 CVS date: 2005/07/17 20:22:24
2005-06-17** BUGFIX **Darren Salt
Copy frame crop values when copying frame information. (Reinhard Nissl) CVS patchset: 7629 CVS date: 2005/06/17 22:36:43
2005-05-07*BUGFIX*František Dvořák
gcc4 patches from Dams Nadé (livna.org) and Keenan Pepper. CVS patchset: 7527 CVS date: 2005/05/07 09:11:37
2004-10-17copy_up should not copy the stream, this info travels from decoders to output,Michael Roitzsch
not the other way; fixes underflows in the stream's refcounter, which made xine-ui crash on post plugins CVS patchset: 7043 CVS date: 2004/10/17 19:14:30
2004-09-28xxmc patch by Thomas Hellstrom (with some changes)Miguel Freitas
there is still some work to do, please report any breakages. note: new xxmc driver tested with both nvidia and via libraries. CVS patchset: 7007 CVS date: 2004/09/28 18:49:38
2004-05-29separate the two semantics of querying a port's status with a NULL stream;Michael Roitzsch
before, NULL could mean two things: no stream at all or a stream that does not want to be addressed; now the latter is represented by the new XINE_ANON_STREAM resulting changes: * the status() functions now behave differently for NULL and XINE_ANON_STREAM (as the commentary always implied, but this was not the case, so post plugin rewiring went wrong, because it relies on the status() function) * the NULL_STREAM defines in audio_out and video_out are obsolete * update the function comments in the headers * update the post plugin rewire functions to use the status() functions to check, if the old port was opened and handle the new one accordingly; this makes open_count obsolete * change all post plugins accordingly (mostly using XINE_ANON_STREAM instead of NULL) additional change: * the status() function of audio port now returns the bits/rate/mode values of the input and not the output; this is more likely to be what a post plugin wants * the reimplementation of status() in the upmix plugin is obsolete CVS patchset: 6603 CVS date: 2004/05/29 14:45:25
2004-05-18track number of times the port has being opened.Miguel Freitas
rewiring a closed port won't cause the new destination to be opened. CVS patchset: 6564 CVS date: 2004/05/18 03:16:12
2004-05-18bits, rate and mode were not set when audio post plugin was first createdMiguel Freitas
(intercepting the audio_out port). calling xine_post_wire_audio_port( post output, audio_out ) would close the audio_out and then reopen it with rate=0, bits=0, mode=0. (see post_audio_rewire() in post.c) CVS patchset: 6563 CVS date: 2004/05/18 02:01:39
2004-04-17swap usage of "up" and "down" to the more common meaning:Michael Roitzsch
"down" is the usual datapath from decoder to output, "up" is the opposite way -> this means swapping two function names -> this means increasing the post plugin iface version external plugin developers: just swap usage of _x_post_frame_copy_up() and _x_post_frame_copy_down() functions CVS patchset: 6412 CVS date: 2004/04/17 19:54:31
2004-02-12big commit of the new ticket system to protect the rewiring and moreMichael Roitzsch
(as discussed on xine-devel, slightly improved to block acquires from different threads between atomic revoke and issue) * xine_ticket_t is declared in xine_internal.h and implemented in xine.c * the ticket is acquired for (hopefully) all port operations (no modifications to decoders needed, decoder loop does this) * the ticket is revoked on pausing and on rewiring * OSD does not store the port pointer any more (which was very dangerous, since the pointer can change on rewire) CVS patchset: 6137 CVS date: 2004/02/12 18:19:00
2004-01-07the new, refined post plugin architectureMichael Roitzsch
* post plugins are now much safer (fewer races/inconsistencies) and easier to write * all post plugins are ported to the new architecture (and should work) * ports can now be opened and closed with a NULL stream CVS patchset: 6007 CVS date: 2004/01/07 19:52:42
2003-12-09update copyright year (and we have to do it again in 3 weeks... ;-) )Daniel Caujolle-Bert
CVS patchset: 5879 CVS date: 2003/12/09 00:02:28
2003-12-07i guess img->lock must not restore the frame pointersMiguel Freitas
CVS patchset: 5858 CVS date: 2003/12/07 15:09:51
2003-11-11rename internal API function (_x_<function>).Daniel Caujolle-Bert
CVS patchset: 5721 CVS date: 2003/11/11 18:44:50
2003-10-23cleanup in video_out.hMichael Roitzsch
* some obsolete VO_CAP_* constants removed * VO_ZOOM_* constants replaced by their XINE_VO_ZOOM_* equivalents from xine.h * moved some bits around * proc_frame() needs only one parameter: the frame * renamed copy_called to proc_called * changed logic in video_out.c to call proc_* functions a bit (call proc_frame() first, then call proc_slice() if proc_frame() has not set proc_called, this allows video out plugins to have both hooks called) CVS patchset: 5576 CVS date: 2003/10/23 15:17:06
2003-10-22Replace copy member in vo_frame_t with proc_frame and proc_slice. Increase ↵Robin KAY
video_out API version to 18. CVS patchset: 5574 CVS date: 2003/10/22 20:38:09
2003-10-06- add XvMC supportMiguel Freitas
- bump vo and post interface versions obs: video_out_xvmc.c needs some more work, see todo. CVS patchset: 5459 CVS date: 2003/10/06 21:52:42
2003-08-15- rename to overlay managerMichael Roitzsch
- add helper functions to intercept overlay manager calls within post plugins CVS patchset: 5290 CVS date: 2003/08/15 14:38:04
2003-08-04support for arbitrary aspect ratiosMiguel Freitas
patch by Philip Jgenstedt CVS patchset: 5243 CVS date: 2003/08/04 03:47:09
2003-05-31update video out api to allow better frame management (explicit locking)Miguel Freitas
img->displayed is obsolete now, drivers should use img->free. CVS patchset: 4994 CVS date: 2003/05/31 18:33:28
2003-02-06first pass on cleaning up ao/vo properties and flush stuffMiguel Freitas
CVS patchset: 4110 CVS date: 2003/02/06 00:09:19
2003-01-11get img_duration from video_outMiguel Freitas
CVS patchset: 3871 CVS date: 2003/01/11 12:51:17
2003-01-10add width/height to vo_statusMiguel Freitas
CVS patchset: 3853 CVS date: 2003/01/10 13:12:20
2003-01-02returning void looks bad, agreed (although this is valid C)Michael Roitzsch
but removing the entire call is even worse CVS patchset: 3752 CVS date: 2003/01/02 12:05:19