From 084e16c057ab195a76c2117c631a2fe10a904238 Mon Sep 17 00:00:00 2001 From: Klaus Schmidinger Date: Sun, 25 Jan 2009 13:13:00 +0100 Subject: =?UTF-8?q?Version=201.7.4=20-=20Removed=20the=20'#define=20FE=5FC?= =?UTF-8?q?AN=5F2ND=5FGEN=5FMODULATION',=20since=20it=20was=20wrong=20and?= =?UTF-8?q?=20the=20=20=20flag=20is=20now=20in=20the=20driver,=20anyway.?= =?UTF-8?q?=20-=20The=20full-featured=20DVB=20cards=20are=20now=20given=20?= =?UTF-8?q?the=20TS=20data=20directly=20for=20replay=20=20=20(thanks=20to?= =?UTF-8?q?=20Oliver=20Endriss=20for=20enhancing=20the=20av7110=20driver?= =?UTF-8?q?=20to=20make=20it=20replay=20=20=20TS=20data).=20The=20patch=20?= =?UTF-8?q?from=20ftp://ftp.cadsoft.de/vdr/Developer/av7110=5Fts=5Freplay?= =?UTF-8?q?=5F=5F1.diff=20=20=20implements=20this=20change=20in=20the=20dr?= =?UTF-8?q?iver.=20=20=20The=20patch=20av7110=5Fv4ldvb=5Fapi5=5Faudiobuf?= =?UTF-8?q?=5Ftest=5F1.diff=20mentioned=20in=20version=201.7.2=20=20=20is?= =?UTF-8?q?=20still=20necessary=20to=20avoid=20audio=20and=20video=20glitc?= =?UTF-8?q?hes=20on=20some=20channels.=20-=20Added=20a=20typecast=20in=20c?= =?UTF-8?q?UnbufferedFile::Write()=20to=20avoid=20an=20error=20message=20w?= =?UTF-8?q?hen=20=20=20compiling=20on=2064=20bit=20systems.=20-=20Added=20?= =?UTF-8?q?some=20missing=20'const'=20statements=20to=20cBitmap=20(thanks?= =?UTF-8?q?=20to=20Andreas=20Regel).=20-=20Fixed=20returning=20complete=20?= =?UTF-8?q?PES=20packets=20in=20cTsToPes::GetPes()=20(thanks=20to=20Reinha?= =?UTF-8?q?rd=20=20=20Nissl).=20-=20Added=20a=20missing=20Detach()=20in=20?= =?UTF-8?q?cTransfer::Activate()=20(thanks=20to=20Marco=20Schl=FC=DFler).?= =?UTF-8?q?=20-=20Added=20clearing=20the=20TS=20buffers=20in=20cDevice::De?= =?UTF-8?q?tach()=20(thanks=20to=20Marco=20Schl=FC=DFler).=20-=20Fixed=20i?= =?UTF-8?q?ncrementing=20the=20continuity=20counter=20in=20cPatPmtGenerato?= =?UTF-8?q?r::GetPmt()=20(thanks=20=20=20to=20Johann=20Friedrichs).=20-=20?= =?UTF-8?q?Fixed=20removing=20deleted=20recordings=20in=20case=20there=20i?= =?UTF-8?q?s=20a=20problem.=20Once=20a=20recording=20=20=20caused=20a=20pr?= =?UTF-8?q?oblem=20with=20removing,=20no=20others=20were=20removed=20any?= =?UTF-8?q?=20more=20and=20an=20ongoing=20=20=20recording=20could=20fill?= =?UTF-8?q?=20up=20the=20disk=20and=20cause=20other=20recordings=20to=20be?= =?UTF-8?q?=20deleted=20=20=20automatically=20(reported=20by=20Reinhard=20?= =?UTF-8?q?Nissl).=20-=20Added=20"DEFINES=20+=3D=20-D=5FFILE=5FOFFSET=5FBI?= =?UTF-8?q?TS=3D64=20-D=5FLARGEFILE=5FSOURCE=20-D=5FLARGEFILE64=5FSOURCE"?= =?UTF-8?q?=20=20=20to=20Make.config.template=20(thanks=20to=20Johann=20Fr?= =?UTF-8?q?iedrichs=20for=20pointing=20this=20out).=20=20=20Plugin=20autho?= =?UTF-8?q?rs=20should=20add=20this=20line=20to=20their=20Makefile=20or=20?= =?UTF-8?q?Make.config=20if=20they=20use=20=20=20file=20access=20functions?= =?UTF-8?q?=20that=20need=20special=20versions=20for=2064=20bit=20offsets.?= =?UTF-8?q?=20-=20The=20new=20command=20line=20option=20-i=20can=20be=20us?= =?UTF-8?q?ed=20to=20set=20an=20"instance=20id",=20which=20will=20=20=20be?= =?UTF-8?q?=20used=20to=20distinguish=20recordings=20of=20the=20same=20bro?= =?UTF-8?q?adcast=20made=20by=20different=20instances=20=20=20of=20VDR=20(?= =?UTF-8?q?suggested=20by=20Frank=20Schmirler).=20This=20replaces=20the=20?= =?UTF-8?q?use=20of=20the=20"resume=20id"=20=20=20that=20was=20introduced?= =?UTF-8?q?=20in=20version=201.7.3.=20-=20Added=20checking=20mutexCurrentA?= =?UTF-8?q?udioTrack=20to=20cDevice::PlayTs()=20(thanks=20to=20Reinhard=20?= =?UTF-8?q?=20=20Nissl=20for=20pointing=20this=20out).=20-=20Fixed=20handl?= =?UTF-8?q?ing=20the=20pointer=20field=20in=20cPatPmtParser::ParsePmt()=20?= =?UTF-8?q?(thanks=20to=20Frank=20=20=20Schmirler=20-=20sorry=20I=20swappe?= =?UTF-8?q?d=20two=20lines=20when=20adopting=20the=20original=20patch).=20?= =?UTF-8?q?-=20Checking=20the=20remaining=20packet=20length=20after=20proc?= =?UTF-8?q?essing=20the=20pointer=20field=20in=20=20=20cPatPmtParser::Pars?= =?UTF-8?q?ePat()=20and=20cPatPmtParser::ParsePmt()=20(suggested=20by=20Fr?= =?UTF-8?q?ank=20=20=20Schmirler).=20-=20Checking=20the=20pointer=20field?= =?UTF-8?q?=20in=20cPatPmtParser::ParsePmt()=20only=20in=20'payload=20star?= =?UTF-8?q?t'=20=20=20packets=20(suggested=20by=20Frank=20Schmirler).=20-?= =?UTF-8?q?=20Changed=20cPatPmtGenerator=20to=20make=20sure=20the=20PMT=20?= =?UTF-8?q?pid=20doesn't=20collide=20with=20any=20of=20=20=20the=20actual?= =?UTF-8?q?=20pids=20of=20the=20channel.=20-=20Fixed=20cDevice::PlayTsAudi?= =?UTF-8?q?o()=20and=20made=20cDevice::PlayTsVideo()=20return=200=20if=20?= =?UTF-8?q?=20=20PlayVideo()=20didn't=20play=20anything.=20-=20Added=20an?= =?UTF-8?q?=20'int'=20typecast=20to=20calculations=20involving=20FramesPer?= =?UTF-8?q?Second()=20to=20avoid=20=20=20compiler=20warnings=20(reported?= =?UTF-8?q?=20by=20Winfried=20Koehler).=20-=20Fixed=20detecting=20frames?= =?UTF-8?q?=20for=20pure=20audio=20recordings.=20-=20Fixed=20editing=20PES?= =?UTF-8?q?=20recordings.=20The=20frame=20type=20in=20the=20index.vdr=20fi?= =?UTF-8?q?le=20generated=20for=20=20=20the=20edited=20PES=20recording=20i?= =?UTF-8?q?s=20set=20to=201=20for=20I-frames=20and=202=20for=20all=20other?= =?UTF-8?q?s=20(P-=20and=20=20=20B-frames).=20The=20exact=20frame=20type?= =?UTF-8?q?=20doesn't=20matter=20for=20VDR,=20it=20only=20needs=20to=20kno?= =?UTF-8?q?w=20if=20=20=20it's=20an=20I-frame=20or=20not.=20-=20The=20PAT/?= =?UTF-8?q?PMT=20is=20now=20only=20processed=20if=20its=20version=20change?= =?UTF-8?q?s=20(reported=20by=20Reinhard=20=20=20Nissl).=20-=20Fixed=20han?= =?UTF-8?q?dling=20the=20maximum=20video=20file=20size=20(reported=20by=20?= =?UTF-8?q?Udo=20Richter).=20-=20Improved=20fast-forward/-rewind=20for=20a?= =?UTF-8?q?udio=20recordings.=20The=20actual=20data=20is=20now=20sent=20?= =?UTF-8?q?=20=20to=20the=20output=20device,=20so=20that=20it=20can=20be?= =?UTF-8?q?=20replayed=20and=20thus=20cause=20the=20proper=20delay.=20=20?= =?UTF-8?q?=20For=20pure=20audio=20recordings=20the=20audio=20is=20no=20lo?= =?UTF-8?q?nger=20muted=20in=20fast-forward/-rewind=20=20=20mode,=20so=20t?= =?UTF-8?q?hat=20some=20orientation=20regarding=20the=20position=20within?= =?UTF-8?q?=20the=20recording=20is=20=20=20possible.=20There=20may=20still?= =?UTF-8?q?=20be=20some=20offset=20in=20the=20replay=20position=20displaye?= =?UTF-8?q?d=20by=20the=20=20=20progress=20indicator=20when=20switching=20?= =?UTF-8?q?from=20fast-forward/-rewind=20to=20play=20mode,=20as=20well=20?= =?UTF-8?q?=20=20as=20in=20the=20current=20position=20during=20normal=20pl?= =?UTF-8?q?ay=20mode.=20This=20is=20due=20to=20the=20various=20=20=20buffe?= =?UTF-8?q?rs=20between=20the=20player=20and=20the=20output=20device=20and?= =?UTF-8?q?=20will=20be=20addressed=20later.=20=20=20Note=20the=20new=20fu?= =?UTF-8?q?nction=20cDevice::IsPlayingVideo(),=20which=20is=20used=20to=20?= =?UTF-8?q?inform=20the=20=20=20player=20whether=20there=20is=20video=20da?= =?UTF-8?q?ta=20in=20the=20currently=20replayed=20stream.=20If=20a=20deriv?= =?UTF-8?q?ed=20=20=20cDevice=20class=20reimplements=20PlayTs()=20or=20Pla?= =?UTF-8?q?yPes(),=20it=20also=20needs=20to=20make=20sure=20this=20=20=20n?= =?UTF-8?q?ew=20function=20works=20as=20expected.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- HISTORY | 77 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 72 insertions(+), 5 deletions(-) (limited to 'HISTORY') diff --git a/HISTORY b/HISTORY index 68bdc33..1cbc1bd 100644 --- a/HISTORY +++ b/HISTORY @@ -5868,9 +5868,9 @@ Video Disk Recorder Revision History 255). + The recording file names are now of the form 00001.ts (previously 001.vdr). + The frame rate is now detected by looking at two subsequent PTS values. - The "frame duration" (in multiples of 1/90000) is stored in the info.vdr - file using the new tag F (thanks to Artur Skawina for helping to get the - IndexToHMSF() calculation right). + The "frames per second" is stored in the "info" file using the new tag F + (thanks to Artur Skawina for helping to get the IndexToHMSF() calculation + right). + Several functions now have an additional parameter FramesPerSecond. + Several functions now have an additional parameter IsPesRecording. + The functionality of cFileWriter was moved into cRecorder, and cRemux is @@ -5882,7 +5882,7 @@ Video Disk Recorder Revision History + The directory name for a recording has been changed from YYYY-MM-DD-hh[.:]mm.pr.lt.rec (pr=priority, lt=lifetime) to YYYY-MM-DD-hh.mm.ch-ri.rec (ch=channel, ri=resumeId). - Priority and Lifetime are now stored in the info.vdr file with the new + Priority and Lifetime are now stored in the "info" file with the new tags P and L (if no such file exists, the maximum values are assumed by default, which avoids inadvertently deleting a recording if disk space is low). No longer storing Priority and Lifetime in the directory name @@ -5910,4 +5910,71 @@ Video Disk Recorder Revision History a video to an audio channel (thanks to Reinhard Nissl). - cDvbDevice now uses the FE_CAN_2G_MODULATION flag to determine whether a device can handle DVB-S2. The #define is still there to allow people with older drivers - who don't need DVB-S2 to use this version without pathcing. + who don't need DVB-S2 to use this version without patching. + +2009-01-25: Version 1.7.4 + +- Removed the '#define FE_CAN_2ND_GEN_MODULATION', since it was wrong and the + flag is now in the driver, anyway. +- The full-featured DVB cards are now given the TS data directly for replay + (thanks to Oliver Endriss for enhancing the av7110 driver to make it replay + TS data). The patch from ftp://ftp.cadsoft.de/vdr/Developer/av7110_ts_replay__1.diff + implements this change in the driver. + The patch av7110_v4ldvb_api5_audiobuf_test_1.diff mentioned in version 1.7.2 + is still necessary to avoid audio and video glitches on some channels. +- Added a typecast in cUnbufferedFile::Write() to avoid an error message when + compiling on 64 bit systems. +- Added some missing 'const' statements to cBitmap (thanks to Andreas Regel). +- Fixed returning complete PES packets in cTsToPes::GetPes() (thanks to Reinhard + Nissl). +- Added a missing Detach() in cTransfer::Activate() (thanks to Marco Schlüßler). +- Added clearing the TS buffers in cDevice::Detach() (thanks to Marco Schlüßler). +- Fixed incrementing the continuity counter in cPatPmtGenerator::GetPmt() (thanks + to Johann Friedrichs). +- Fixed removing deleted recordings in case there is a problem. Once a recording + caused a problem with removing, no others were removed any more and an ongoing + recording could fill up the disk and cause other recordings to be deleted + automatically (reported by Reinhard Nissl). +- Added "DEFINES += -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE" + to Make.config.template (thanks to Johann Friedrichs for pointing this out). + Plugin authors should add this line to their Makefile or Make.config if they use + file access functions that need special versions for 64 bit offsets. +- The new command line option -i can be used to set an "instance id", which will + be used to distinguish recordings of the same broadcast made by different instances + of VDR (suggested by Frank Schmirler). This replaces the use of the "resume id" + that was introduced in version 1.7.3. +- Added checking mutexCurrentAudioTrack to cDevice::PlayTs() (thanks to Reinhard + Nissl for pointing this out). +- Fixed handling the pointer field in cPatPmtParser::ParsePmt() (thanks to Frank + Schmirler - sorry I swapped two lines when adopting the original patch). +- Checking the remaining packet length after processing the pointer field in + cPatPmtParser::ParsePat() and cPatPmtParser::ParsePmt() (suggested by Frank + Schmirler). +- Checking the pointer field in cPatPmtParser::ParsePmt() only in 'payload start' + packets (suggested by Frank Schmirler). +- Changed cPatPmtGenerator to make sure the PMT pid doesn't collide with any of + the actual pids of the channel. +- Fixed cDevice::PlayTsAudio() and made cDevice::PlayTsVideo() return 0 if + PlayVideo() didn't play anything. +- Added an 'int' typecast to calculations involving FramesPerSecond() to avoid + compiler warnings (reported by Winfried Koehler). +- Fixed detecting frames for pure audio recordings. +- Fixed editing PES recordings. The frame type in the index.vdr file generated for + the edited PES recording is set to 1 for I-frames and 2 for all others (P- and + B-frames). The exact frame type doesn't matter for VDR, it only needs to know if + it's an I-frame or not. +- The PAT/PMT is now only processed if its version changes (reported by Reinhard + Nissl). +- Fixed handling the maximum video file size (reported by Udo Richter). +- Improved fast-forward/-rewind for audio recordings. The actual data is now sent + to the output device, so that it can be replayed and thus cause the proper delay. + For pure audio recordings the audio is no longer muted in fast-forward/-rewind + mode, so that some orientation regarding the position within the recording is + possible. There may still be some offset in the replay position displayed by the + progress indicator when switching from fast-forward/-rewind to play mode, as well + as in the current position during normal play mode. This is due to the various + buffers between the player and the output device and will be addressed later. + Note the new function cDevice::IsPlayingVideo(), which is used to inform the + player whether there is video data in the currently replayed stream. If a derived + cDevice class reimplements PlayTs() or PlayPes(), it also needs to make sure this + new function works as expected. -- cgit v1.2.3