summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2011-09-05No longer require libarts.Darren Salt
2011-08-26DVB syncTorsten Jager
The problem When watching live DVB, data is delivered strictly at the broadcasters speed. We cannot change it through server commands. Our local systems clock usually runs slightly faster or slower than that, causing a/v fifos to run empty or full after a few minutes. Standard network buffering control only handles the first case by pausing the engine (not nice). The latter case ends up in severe stuttering and an a/v lag of several seconds (annoying). I tried quite a few differnt algorithms, and this one made it: a 3 point controller. There is a target buffer fill window with a center and some tolerated width: Minimum: definition: 1 second safety: clamped to 38% of fio size action: switch playback speed to 99.5% Center: definition: 2 seconds safety: clamped to 73% fifo size action: switch to normal playback speed Maximum: definition: 3 seconds safety: clamped to 98% fifo fill action: switch playback speed to 100.5% If the usual dvb audio to video muxing delay is more than 1 second, center time is increased. On low bitrate radio, window width is increased. Real TVs do adjust playback audio sampling rate to follow delivery speed. Some PC sound cards can do that, too. It could be implemented transparently (although I don't know yet how). This comes quite close, resampling audio to stretch. That half percent is large enough to cover clock deviation, and it is small enough not to cause audible pitch bending. Speed control consists of adjusting SCR and telling audio out. Doing just the first will cause metronom to drop and/or insert whole audio frames, not nice with music. BTW. this one needs demux_ts to send BUF_FLAG_FRAME_START.
2011-08-29Add AAC LATM support from FFmpeg 0.7+Chris Rankin
I've now tested this patch on Fedora 15 (FFmpeg 0.7) and Fedora 14 (FFmpeg 0.6), and am happy to report that it works fine on F15 and doesn't break xine-lib on F14. On F14, it also has the happy side effect of no longer trying to decode an LATM AAC stream with the xineplug_decode_faad.so plugin. (Which was something which never ended well anyway.)
2011-08-09Cosmetics: reordered functionsPetri Hintukainen
2011-08-09ffmpeg VC-1: scan for extradata (sequence header) from preview buffersPetri Hintukainen
2011-08-14Fixed multithreaded decoding with lavc >= 52.112.0.Petri Hintukainen
avcodec_thread_init() was deprecated in lavc 52.112.0 (2011-02-09)
2011-08-23Logic error with AC3 demuxerChris Rankin
This is a small mistake, but I'm fairly sure the index should be "j" and not "i".
2011-08-22Video deadlock fixTorsten Jager
When watching TV with Kaffeine I frequently had complete engine lockups. Multiple mutexes were waiting on each other. net_buf_ctrl requires the demuxer to keep running while playback is still paused. The diff might look a bit confusing. Basically, all I did was to replace phtread_mutex_lock (); ... pthread_mutex_unlock (); with if (pthread_mutex_trylock ()) { ... pthread_mutex_unlock (); } at a place where it does the least damage.
2011-08-22UI freeze fixTorsten Jager
xine_play () gets suspended after start or seek until first frame gets displayed. This often wont work on slow machines when first frame gets dropped because its too old. Consequently, UI freezes for full 10 seconds. Let's wake up xine_play when this happens as well. OK, this is a luxury convenience fix ;-)
2011-08-22Audio crash fixTorsten Jager
Audio decoder loop creates a sorted map of available audio channels on the fly. If neither user nor dvdnav intervene, it will pass the first (= lowest index) audio channel to decoders. Now imagine a TV recording with 2 audio channels: audio.0: eac3 5.1 (fra) audio.1: eac3 stereo (qaa) By chance, first audio frame to be demuxed is for channel #1. Track map will be [0]: eac3, channel 1 Audio loop opens ffmpeg audio decoder / stereo out. Fine. Then, first frame for channel #0 comes in. [0]: eac3, channel 0 [1]: eac3, channel 1 Both are same codec, so audio loop just switches to channel 0 without further notice. Audio decoder then runs into a mem leak, or worse, crashes audio out who still thinks we're only stereo. Whenever we insert something at track map index 0, and its going to be auto-selected later, reset current codec type. This forces a clean decoder/output switch.
2011-08-13rv30 & rv40 supportTorsten Jager
2011-08-13VP8 supportTorsten Jager
2011-08-13ffmpeg audio crash fix (sse2 alignment)Torsten Jager
Certain ffmpeg audio decoders use 32 bit float samples internally (wma, eac3, ...). They are then exported to the calling application as 16 bit integer. That conversion is done by faster sse2 code if your processor supports it. However, sse2 instructions require data buffers to be 16 byte aligned, or hit a segfault otherwise. Plain malloc() / realloc() ensures only 8 byte alignment, giving a 50% chance of a crash. FFmpeg internally uses aligned buffers a lot. It seems to be a good idea to do likewise for input buffers as well, even if current version does not strictly need it yet. Libavutil/av_realloc() has a bug that can break the alignment when enlarging an existing buffer. Thus I included a fixed version of it within ff_audio_decoder.c.
2011-08-10Merge.Darren Salt
2011-07-18demux_ts: added m2ts and mts file extensionsPetri Hintukainen
2011-08-02demux_ts: added buffer size checks to adaptation field parsingPetri Hintukainen
2011-07-18Fixed writing outside of buffer when there are more than MAX_PIDS scrambled ↵Petri Hintukainen
pids.
2011-07-22demux_ts: Added buffer size checks. Make sure buffer size is not set to ↵Petri Hintukainen
negative value (that results writing out of buffer when buffering payload). Check buffer size before checking substream header bytes.
2011-07-16parse_pes_header(): eliminated local variable by simplifying the code that ↵Petri Hintukainen
skips pes header
2011-07-16demux_ts: Fixed reading outside of buffer: check header length before ↵Petri Hintukainen
parsing pts.
2011-07-16demux_ts: Fixed reading outside of buffer. Checking if pes header length == ↵Petri Hintukainen
6 is not enough ; anything less than 9 is invalid (header length byte at [8] can't be used if it is outside of buffer). Moved check to beginning of parse_pes_header() to avoid reading outside of buffer.
2011-08-01demux_ts: removed unneeded check ((stream_id & 0xf0) == 0xe0 implies ↵Petri Hintukainen
stream_id >= 0xbc)
2011-07-18Removed unneeded checkPetri Hintukainen
2011-07-15Factorized known audio pid search codePetri Hintukainen
2011-07-15Removed unused parameterPetri Hintukainen
2011-07-22demux_ts: Removed unused and write-only variablesPetri Hintukainen
2011-07-09Fixed 20-bit BluRay PCM audio. In this format samples are padded to 24 bits, ↵Petri Hintukainen
4 lowest bits are 0 --> Handle as 24-bit BluRay PCM.
2011-07-09Fixed 24-bit BluRay PCM audio broken by commit 7b6c2dc0ac98. Samples are 24 ↵Petri Hintukainen
bit BE, not in DVD format.
2011-07-09Composition descriptor state is only two bitsPetri Hintukainen
2011-07-09Cosmetics: reordered functionsPetri Hintukainen
2011-07-09Killed warningsPetri Hintukainen
2011-07-09Fixed hiding subtitles: composition descriptor state has nothing to do with ↵Petri Hintukainen
hide/show. Hide overlay when there are no objects to display.
2011-07-08Improved standard compilance: Drop cached data at epoch start or acquistion ↵Petri Hintukainen
point, not at end of display set
2011-05-17Fix build with very recent copies of FFmpegBrad Smith
This is a backport of the 1.2 code that was commited to utilize the new API provided by FFmpeg for awhile now but this is especially important because the old API has been eliminated all together from said copies of FFmpeg.
2011-05-16Remove an excess "{".Darren Salt
2011-05-15Better support for 24-bit lpcmChristopher Martin
First of all, it improves the qt demuxer, ensuring that 24-bit audio is marked appropriately, and detecting little vs. big endian audio. It also adjusts the buffer size when audio is 24-bit, ensuring that samples aren't chopped in half (8192 does not divide evenly into 3 byte samples). Secondly, in the lpcm decoder, the patch distinguishes between standard 24-bit lpcm (big and little endian) and special DVD-format 24-bit lpcm (see http://wiki.multimedia.cx/index.php?title=PCM) and now handles both, instead of only handling the DVD format. The result is that xine now correctly plays all the 24-bit lpcm samples I throw at it, whereas before only a few worked.
2011-03-27Add "-no-undefined" as late as possible in the ./configure processVolker Grabsch
This is so it won't be passed to GCC by accident.
2011-03-20Check that we've found both AAC signaturesLorenzo Desole
demux_aac.c looks for 2 signatures in the given stream to detect if it is an AAC stream, however only the absence of the second signature is used to rule out a positive match. This may lead to false positives.
2011-03-13Define event for additional VDR key.Reinhard Nißl
2011-03-02Output a log message if raising of nice priority fails for video out and ↵Andreas Auras
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.
2011-03-02Recognize changes of cropping parameters within a frame and trigger ↵Andreas Auras
recalculation of displayed window. This issue comes up when a post plugin only changes the cropping parameters of a frame without changing width, height or ratio of the frame.
2011-03-02Fixes two issues of video out standard cropping feature.Andreas Auras
Resulting left and right cropping parameters should be multiple of 2. Left cropping offset calculation to YUY2 frames fixed.
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.
2011-01-21Fix parallel building (.deb packaging).Darren Salt
--HG-- extra : transplant_source : %D5%BC%1F%BAo%3A%88%CEOp%F4%83%B5%91%F1%C0H%C5%8E%40
2011-01-21Disable decoder flush from video out to avoid decoding errors.Reinhard Nißl
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
2011-01-21Disable decoder flush at discontinuity to avoid decoding errors.Reinhard Nißl
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
2011-01-20Avoid video clock errors due to decoder flush at discontinuity.Reinhard Nißl
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
2010-12-12List .ass in supported in extensions too.František Dvořák
2010-12-12Add .ass extension to be recognized as subtitle file.František Dvořák
2010-11-04Properly initialise and finalise {Image,Graphics}Magick context.Darren Salt
--HG-- extra : rebase_source : 97225919cd1c6c2327ccbb43b17a6b049e82946c