summaryrefslogtreecommitdiff
path: root/src/xine-engine/xine.c
AgeCommit message (Collapse)Author
2014-03-10Silence compiler warnings on register_enum () arg #4.Torsten Jager
Making them all "const char * const *" did work too (even with Kaffeine build/run), but that would be an API change.
2013-11-23Copyright year update by hg log info #3.Torsten Jager
2013-11-06 Add _x_mrl_remove_auth(): return a copy of mrl without authentication ↵Petri Hintukainen
credentials
2013-10-31Added INPUT_CAP_NO_CACHEPetri Hintukainen
(Do not use input_cache plugin)
2013-09-13Copyright year update by hg log infoTorsten Jager
script execution time: 55"
2012-01-18Merge from 1.1.Darren Salt
--HG-- rename : include/xine.h.in => include/xine.h rename : src/xine-engine/xine_internal.h => include/xine/xine_internal.h rename : src/combined/ffmpeg/ffmpeg_encoder.c => src/dxr3/ffmpeg_encoder.c
2012-01-18Hack to avoid xine-list-* causing catalog.cache to be written.Darren Salt
2012-01-11Fixed using uninitialized value (return random size)Petri Hintukainen
2011-09-26Merge from 1.1. (Needs some testing.)Darren Salt
--HG-- rename : src/xine-engine/buffer.h => include/xine/buffer.h
2011-10-10Fixed asprintf usagePetri Hintukainen
2011-09-10Ensure that the stream reference inside each event queue is counted,Chris Rankin
and that each stream object is removed from its parent xine object's list before it starts destroying itself.
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-27Fix race condition when accessing last_frame via get_last_frame()Reinhard Nißl
_x_get_current_frame_data() called get_last_frame() and locked the returned frame afterwards. At the same time, video_out_loop() unlocked last_frame to assign a different img afterwards. So in case the image got unlocked before it gets locked again, the image resides already on the free image queue. So when the image gets unlocked, it will be put a second time to the queue and hence cause a loop in the list the queue is based on. Getting an image from the queue will then run endlessly. To fix this issue, a new mutex is introduced which protects write access to last_frame and read accesses via get_last_frame() from other threads. Next, the semantic of get_last_frame() had to be changed to return a locked image already. Finally, functions calling get_last_frame() had to be adapted to its new behavior (there was only a single function in xine-lib which had to be adapted: _x_get_current_frame_data()).
2011-03-20Merge from 1.1.Darren Salt
--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
2011-01-22Provide _x_query_buffers() to allow analyzing buffer usage by pluginsReinhard Nißl
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
2010-11-30Various small memory leaks in xine engine.František Dvořák
2010-10-30Proper place for log mutex initialization (logging can start after ↵František Dvořák
xine_new()). Fixed a leak.
2010-02-27libxdg-basedir requires $HOME to be set, so make sure that it's set.Darren Salt
2010-02-04Fix a ticket-related memory leak.Darren Salt
2009-11-30Trim trailing space & reduce space+tab.Darren Salt
2009-09-14Protected access to stream->demux_action_pendingIan Rae
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.
2010-02-06Merge from 1.1.Darren Salt
--HG-- rename : src/combined/decoder_wavpack.c => src/combined/wavpack_decoder.c rename : src/demuxers/demux_ogg.c => src/combined/xine_ogg_demuxer.c
2010-01-06Update to libxdg-basedir 1.0.2; adapt accordingly, and default to external.Darren Salt
2009-11-30Trim trailing space & reduce space+tab.Darren Salt
2009-02-17Merge from 1.1.Darren Salt
--HG-- rename : doc/faq/faq.sgml => doc/faq/faq.docbook rename : doc/hackersguide/intro.sgml => doc/hackersguide/intro.docbook
2009-02-16Protect audio loop so it cannot write to a paused device (fixMiguel Freitas
pause/resume freeze with pulseaudio).
2009-02-10Merge from 1.1.Darren Salt
--HG-- rename : doc/faq/faq.sgml => doc/faq/faq.docbook rename : src/xine-engine/buffer.h => include/xine/buffer.h rename : src/xine-engine/xine_internal.h => include/xine/xine_internal.h
2009-02-09Fix race conditions in gapless_switch (ref. kde bug #180339)Miguel Freitas
2009-01-04Remove empty xine_get_video_frame() which has been removed from the API.Reinhard Nißl
2008-12-30Implement frame grabbing for accelerated frame formats.Reinhard Nißl
Currently, frame grabbing aborts when requested for accelerated image formats. By using a vo_driver provided frame procedure to retrieve image data, frame grabbing can be implemented for accelerated frames too. In case a vo_driver doesn't provide this functionality, _x_get_current_frame_data() no longer aborts when it is asked to provide image data. It will drop an error message as before and return a "green" YV12 image.
2008-06-20Merge from 1.1.Darren Salt
--HG-- rename : src/input/input_plugin.h => include/xine/input_plugin.h
2008-06-20Ask the input plugin which demuxer to use.Darren Salt
This overrides the normal content/extension detection, but can be overridden by the user. This is an input plugin API extension; ABI is unchanged. The version is not bumped (we can't bump it due to 1.2).
2008-06-11Merge from 1.1.Darren Salt
--HG-- rename : src/xine-engine/xine_internal.h => include/xine/xine_internal.h
2008-06-11Provide a useful implementation of xine_register_log_cb().Darren Salt
2008-05-29Merge from 1.1.Darren Salt
--HG-- rename : src/xine-utils/array.h => include/xine/array.h rename : src/xine-utils/attributes.h => include/xine/attributes.h rename : src/xine-engine/audio_out.h => include/xine/audio_out.h rename : src/xine-engine/broadcaster.h => include/xine/broadcaster.h rename : src/xine-engine/buffer.h => include/xine/buffer.h rename : src/xine-engine/configfile.h => include/xine/configfile.h rename : src/xine-utils/list.h => include/xine/list.h rename : src/xine-engine/metronom.h => include/xine/metronom.h rename : src/xine-engine/osd.h => include/xine/osd.h rename : src/xine-utils/pool.h => include/xine/pool.h rename : src/xine-engine/refcounter.h => include/xine/refcounter.h rename : src/xine-utils/ring_buffer.h => include/xine/ring_buffer.h rename : src/xine-engine/scratch.h => include/xine/scratch.h rename : src/xine-utils/sorted_array.h => include/xine/sorted_array.h rename : src/xine-engine/video_out.h => include/xine/video_out.h rename : src/xine-engine/video_overlay.h => include/xine/video_overlay.h rename : src/xine-engine/xine_internal.h => include/xine/xine_internal.h rename : src/xine-utils/xineutils.h => include/xine/xineutils.h rename : src/libspucc/cc_decoder.c => src/spu_dec/cc_decoder.c
2008-05-23Mark initialisation functions with malloc attribute.Diego 'Flameeyes' Pettenò
All the initialisation functions returning a new object instance that was allocated through malloc() or calloc() can get the malloc attribute so that the compiler can optimise their call.
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-12Provide xine_get_current_frame_data which passes more data via a structure.Reinhard Nißl
The new structure xine_current_frame_data_t additionally contains cropping and interlacing information, which both are required for proper conversion of the image. The existing functions have been adopted to use the code of the new function. The changeset should be ABI compatible.
2008-05-11Extend xine_get_current_frame to provide cropping and interlacing information.Reinhard Nißl
Cropping information is necessary for frame formats like 1920x1080 which are coded as 1920x1088, i. e. 8 lines are cropped away at the bottom. The information whether a frame is interlaced is necessary for proper upscaling of 4:2:0 frame formats as it must be done per field when the frame is interlaced. Otherwise choma and luma won't match. Make input_vdr.c compile again due to changed xine_get_current_frame.
2008-05-09Use size_t rather than int to store the return value of strlen().Diego 'Flameeyes' Pettenò
2008-05-09Remove a new bunch of xine_malloc() calls.Diego 'Flameeyes' Pettenò
Also don't reset memory after it's allocated if we do that with calloc.
2008-05-07Use asprintf() rather than malloc() + sprintf().Diego 'Flameeyes' Pettenò
Using asprintf() instead of malloc() + sprintf() reduces the lines of code in xine-lib (moving the allocation to the C library or asprintf replacement), makes it safer to access the string and can also improve performance whenever the value returned by a function was used as parameter, as before it had to run the function twice in almost every case (once for strlen(), once for sprintf()).
2008-05-07Merge file removal.Diego 'Flameeyes' Pettenò
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
2008-05-07Mark internal functions and data structures static.Diego 'Flameeyes' Pettenò
Functions and data structures that are not exported and are only ever used in the same unit they are defined should be marked static to improve compiler's ability to optimise them. This applies to xine_dispose_internal() function for xine-lib, the extended_to_int() function in the AIFF demuxer, the bandwidths array in QuickTime demuxer, the wc_pal_lookup table in the WC3 movie demuxer, and the rm_header and pnm_data_header arrays in pnm input plugin.
2008-05-05Make open_internal static again.Darren Salt
2008-05-05Replace load_plugins.h with a more generic xine_private.h, move the ↵Diego 'Flameeyes' Pettenò
functions that are now hidden from xine_internal.h to xine_private.h.
2008-05-03Stop exporting a few internal functions, remove the unued parameter to ↵Diego 'Flameeyes' Pettenò
_x_cahce_plugin_get_instance.
2008-05-03Remove xine_register_log_cb and xine_trick_mode, which are both not implemented.Diego 'Flameeyes' Pettenò
2008-05-03Get rid of xine_get_video_frame as it was nevere implemented.Diego 'Flameeyes' Pettenò