aboutsummaryrefslogtreecommitdiff
path: root/lib/dvb/tstools.cpp
AgeCommit message (Collapse)Author
2009-12-23Merge branch 'bug_355_seek_fixes'ghost
2009-12-23Merge branch 'bug_358_support_streamid_extension'ghost
2009-12-22Merge branch 'bug_245_record_playback_fixes'ghost
2009-12-21lib/dvb/tstools.cpp: support for stream id extension defined in ISO 13818-1 ↵ghost
Amendment 2.. this fixes skipping in some bluray ts files
2009-12-21lib/dvb/tstools.cpp: add more debug output to timestamp parserghost
2009-12-17lib/dvb/tstools.h/cpp: make eDVBTSTool thread safe (i.e. this fixes seeking ↵ghost
in timeshift and seeking in files without additional startcode/accespoint file
2009-10-29By Anders Holst:Felix Domke
* My previous code for "slow rewind" (aka "SeekBackHack") is not required any more. Indeed, since the change in "decoder states" some time ago my code stopped working and is now only destructively interfering with the new winding approach, effectively ruining the speed accuracy for slow rewind. Similarly, the "non-smooth winding" code ruins the accuracy for high winding speeds. The patch below removes the "SeekBackHack", and temporarily disables the "non-smooth winding" code until we know whether the decoder states will allow simultaneous repeat and skip rates again. (InfoBarGenerics.py) * Due to a bug in 'eDVBTSTools::findNextPicture', rewind was always at the required speed minus one. (The frame just played was counted as one when skipping backwards.) Fixed below. (tstools.cpp) * A piece of code to apparently increase precision in seeking, by always aligning to an i-frame start, had exactly the opposite effect: GOP single-stepping fails completely on DM7025 and gets highly unreliable on DM800. The piece of code is removed. (It destructively interferes with previous code by me to hit frames somewhat before the GOP start. As an alternative, my previous code can be removed instead, and the currently removed piece of code adjusted to work. But then it has to be done differently on the two platforms.) (dvb.cpp) * By some reason eDVBVideo::getPTS only returns even numbers on DM800 even when it should be odd. This ruins GOP single stepping in 50% of the cases. This is easy to compensate for by adding a margin of 1 in getAccessPoint. (pvrparse.cpp) * After the above, when GOP single-stepping works reliable on both platforms and on SD/HD, the correct step lengths can be used. (InfoBarGenerics.py)
2009-09-03fix skipping forward/backwardghost
2009-08-10fallback to live info when stores streaminfo failsFelix Domke
2009-04-06more accurate fast-forward/rewindFelix Domke
2009-02-13 - While recording, collect startcodes and save them into ".sc"-filesFelix Domke
- this allows finding iframes for fast forward/reverse more easily - when in fast forward, strictly just output good (=complete iframes) data (this might break dm7025, we will fix this later) - draw smaller, fixed-size bar in position gauge
2008-11-06Patch by Anders Holst:Felix Domke
* Undo "sparse-AP-fix" At March 25 a patch was checked in that makes sure that AP:s closer than half a second from each other are filtered away. I don't know the exact purpose of this fix, but I don't think it is a good idea: Besides being the cause of bugs 4 and 5 above, all seek operations are based on the AP:s, and it is a pity to cripple the precision here. And for example, when cutting movies it is important to be able to reach the right GOP boundary. (And the next fix relies on all boundaries being available.) (If you wonder, bug 5 was caused by a destructive interaction of this with the discontinuity handling.) * Hit GOP:s somewhat before GOP start It turns out that if you jump exactly to the GOP start, then that GOP is nevertheless skipped and playback starts from the GOP thereafter. However, if you jump to (at least) one frame before the GOP start, playback starts from that GOP. I don't know if this is a bug in the driver or elsewhere, but the best I can do is this workaround: Hit the GOP by jumping to half a GOP length before the GOP start. (By scanning the ts file it is of course possible to find the exact frame boundaries, but why bother since anywhere between the previous GOP start and the previous frame start will do.) Similarly, to show the first frame of a GOP, a few more frames must be included. Therefore, add half a GOP at the end of each source span. * Jump over discontinuities during AP relative seek The above two fixes together *almost* take care of bugs 1 and 2 above. Now seekRelative(1) moves one forward and seekRelative(-1) one backwards. However, at discontinuities they may get stuck. This is remedied by an extra if statement to check for discontinuities when stepping throught the AP:s in AP relative seek. * Stop after last source span In the function eDVBChannel::getNextSourceSpan there was no code to take care of the case when the seeked-to point is after the last source span. Currently it just goes on until the movie ends. I have added code for this, which takes care of bug 3, and as a fortunate bonus effect bug 6 too. (But please check my code here, I hope I can use current_offset the way I do, and return 0 size when it should stop.)
2007-05-24ignore negative segments which might occur when PTS and PCR values are mixedFelix Domke
2007-05-20remove some debug, fix abs -> llabsFelix Domke
2007-03-15also use PCR (optionally), don't use non-video, non-audio streams, fix ↵Felix Domke
improper samples when no boundaries are known
2007-03-15improve seek accuracyFelix Domke
2006-06-17I/O priority support with cfq scheduler (needs new kernel patch)Andreas Monzner
2006-04-03don't retry inifinitely to scan broken filesFelix Domke
2006-03-06optional cached (i.e. fopen,...) support for raw filesFelix Domke
2006-03-06moved PID search to proper please, simplified a bit (using the first found ↵Felix Domke
PMT should be ok)
2006-03-05only sample each 40MB at max, use fallback bitrate if no other bitrate availableFelix Domke
2006-03-03use samples for more accurate jumps when .ap files are not availableFelix Domke
2006-03-03enable playback of multifile (split) moviesFelix Domke
2006-02-28add getNextAccessPointFelix Domke
2006-02-27add getOffset and fix pvrparse for thatFelix Domke
2006-02-15some fixesFelix Domke
2006-02-15use cached pts/offsets when available, clean upFelix Domke
2006-02-08tstools: check for wrap arounds in length calculationFelix Domke
2006-01-27track changing filesizesFelix Domke
2006-01-22remove generated file "config.h":Andreas Oberritter
pass preprocessor definitions as command line arguments instead this also drops the dependency on "autoheader"
2005-12-06tstools: fix resync codeFelix Domke
2005-11-18tstools: fix adaption field, lower maxrange (increases accuracy), with ↵Felix Domke
multiple tries at end of file
2005-11-15add calc bitrate to tstoolsFelix Domke
2005-08-16 - add getLength() call to iStaticServiceInformationFelix Domke
- implementation for dvb pvr streams using tstools - start of implementing status information for PVR
2005-08-14 - add tstools to evaluate PTS values from TS files for playbackFelix Domke