Set the cut path properly when a non-default output path is specified
[atscap.git] / atscap.CHANGELOG
blobe92c7a22a7b4814307775bce34b6301d54f0dda6
1 REVISION HISTORY aka CHANGELOG for atscap.
3     [text] may be bug finder or request source, or might be the key [key]
6 ------------------------------------------------------------------------------
7         atscap 1.1
9     1.1.0-final 20080101
11                 All features are in place and working here.
12                 There are still some minor cosmetic bugs that
13                 will be worked out in future 1.1.x releases.
15 ------------------------------------------------------------------------------
16         atscap 1.1 release candidates
18     1.1rc9u     20071231
20         atscap: 1.1rc9u
21                 added spam toggle to console EPG
22                 added VC select to html3 config/stats page
23                 added irealloc() for future use (EIT ETT EPG)
24                 added more sanity checks to fifo with error logging
25                 added more hold downs to various functions when in -S mode
26 TEST            added tsid_mutex: may be useless, never called by threads?
27                 added sort_tsids to save_tsids
28                 added build args to load config parse_search parse_ztime
29                 added to find_stations: ATSC or NTP time setting w/o TZ set
31                 changed console EPG only shows current selected program
32                 changed console headers to reflect current view (non-cap)
33                 changed spamlist tracks time of spam event not found time
34                 changed find_spam to test_spam_name
35                 changed test_spam to test_spam_event
36                 changed *alloc strategy to match common.h
37                 changed init_atsc memsets, bad idea, changed it back
38                 changed find_stations save config doesn't blank-pad fields
39                 changed other load_config options to use build_args
40                 changed load tsids calls save tsids (and sort_tsids)
41                 changed ts capture doesn't call save_tsids (temporary fix)
42                 changed find_stations exit doesn't show "DVB closed" message
43                 changed find_stations queries the user for auto EPG
44                 changed log_path set to same as out_path (or -p path)
45                 changed test_luser more checks and directory creates
46                 changed test_event_status checks if .tsc file not 0 bytes
47                 changed index html3/4 to check if .tsc file not 0 bytes
49 TODO            fix default color for html4 hrefs dark blue, add style
51                 fixed rapid http spam list entry resets spamlist to 0 items
52                 fixed build_stats_html3 only displays VC info if capturing
53                 fixed build_stats_html3 to use s->pkt for per channel stats
54                 fixed If-Modified-Since: 304 Not Modified handling errors
55                 fixed find_stations pkt.count /0 error when bad reception
56                 fixed USE_DYNAMIC ts_capture freeing eit/ett too soon [pknaggs]
57                 fixed ts_capture frees fifo before both threads done [pknaggs]
58                 fixed -S doesn't try to set the time, only shows calc [ivary]
59                 fixed -S ATSC STT time average, try #2, looks better: +27s out
60                 fixed fifo problems with USE_DYNAMIC defined and undefined 
61                 fixed show_static_mem didn't count static eit[] ett[] tables
62                 fixed allocations too large for eit[] ett[] w/o USE_DYNAMIC
63                 fixed load_tsids ignores bogus lines
64                 fixed parse_volatile_timer didn't work from Web UI
65                 fixed html4/3 epg gets some wrong weekday links at end of year
66                 fixed cursor in wrong place when find_stations exits
67                 fixed find_stations quits instead of running atscap [pknaggs]
68                 fixed http_add_epg_timer NOW timer crashes EPG cap [pknaggs]
69                 fixed load config trying to parse junk data
72         atscut: 1.1.7
73                 extracted common.h code for atscut and xtscut
75                 fixed -y option Video ES extract (still has some PES/UPS junk)
77         Xtscut: 1.3.4 - 1.3.5
78                 added show keyhelp and show config to video overlay [?] key
79                 added some shading and smooth corner algorithms
80                 added support for fast XVideo Intra frame rendering
81                 added support for Video Elementary Stream cutting (.es files)
82                 added build_esx/tsx (build_tsx fallback is "atscap -s" )
83                 added stream position visual indication, should match MMB
84                 added -g option [g] key sets GOP broken flag (TS only)
85                 added load/save configuration to /etc/atscap/xtscut.conf
87                 fixed I and P frames drawing on same line, missing break;
88                 fixed GOP broken link wasn't detecting every time
89                 fixed input scan wasn't detecting video PID properly            
91                 changed P & B lines drawn with 2 calls to XDrawSegments
92                 changed -k0 method to try to find good partial last Sequence
93                 changed to dynamic frame allocation for larger files
94                 changed xtscut -h usage text to reflect new options
95                 changed xtscut man pages to reflect new options
96                 
97 ------------------------------------------------------------------------------
98     1.1rc9t     20071128
100         atscap:
101                 added test epgs system(ntpdate) with non-numeric Z-line config
103                 fixed DST change gets weekday timer start time wrong
104                 fixed load_tsid parameter list pointers off by 1 [ivary]
105                 fixed find_stations write config has wrong data in fields
107         atscut:
108                 sequence write display at end of -s was off by +1 (-1LL term)
110         xtscut:
111                 code cleanups and imlib2 support
112                 cosmetic changes from sf users, see xtscut.c: 1.2.8 - 1.3.0
113                 new options -a -k -n -o, new keys [1] [a] [s] [t]
115         Makefile:
116                 added clock_gettime uses optional compile -DUSE_LIBRT
117                 added -DUSE_IMLIB* and imlib*-config scripts to set MFLAGS*
119 ------------------------------------------------------------------------------
120     1.1-rc9s    20070923
122         atscap:
123                 added dump_epg_grid html3/4 to show 3 hour grid of all epgs
124                 added weekdays to dump epg grid header
125                 added mutex for dump epg grid
126                 added test_powerdown
127                 added [g] key: show master guide has size/no-VN errors in red
128                       (This is only for compliance testing. It's not used.)
130                 changed log output redux
132                 fixed timer add in HTML3 EPG: new format is minutes not seconds
134         xtscut:
135                 added x_set_font to allow different sized fonts
137                 changed font size for timestamps at top and cuts at bottom
138                 changed I-frame timestamp display to handle variable sequences
140                     It gets timestamp wrong for some 3:2 pulldowns with
141                 Repeat Last Field set in the frame header, like FOX does,
142                 but the timestamps are only used for display, so it's OK.
144 -----------------------------------------------------------------------------
145     1.1-rc9r    20070907
147         atscap:
148                 added t->etmid to get_timer_add_event
149                 added mutex hold to serialize dump_cap_log
150                 added 'All' button: build_epg_top for CSS multi-day/pgm format
151                 added console timer list, [enter] key adds current EPG event
152                 added weekday/volatile href to delete what epg form adds
153                 added volatile timers w/o etmid weekday timer list
154                 added build_args and build_form_args to help with parsing
155                 added epg form for weekday/volatile timer entry to CSS EPG
156                 added save config has more descriptions of parameters
158                 changed HTML EPG add search uses channel info
159                 changed dump epg html4 divider logic for s->yday -1 or >
160                 changed default WWW_PORT to 1380
161                 changed dump epg html4 output redux, shows 1 day/1 pgm
162                 changed test epgs uses get next meridian
164                 fixed weekday divider disappears when aged filter enabled
165                 fixed load_epg HTML epg limiter s->yday (split year logic)
166                 fixed [w] key missing refresh for headers and channels
167                 fixed show_channels frequency field missing a digit
168                 fixed show_channels clears scan_freq, loads epg too often
169                 fixed parse_weekday_timer didn't clear qstat
170                 fixed bug in big CSS EPG weekday select in weekday timer
171                 fixed load epg sets sig.yday to first event yday
173 TODO?           move above comments about cable to atscap man page
175                 removed USE_EPG_MID, only using get next meridian now
177         atscut:
178                 fixed test_eit_descriptors only tested first EIT descriptor
179                  (A/52 audio descriptor seems broken, reports as channels 1/0)
181 ------------------------------------------------------------------------------
182     1.1-rc9p-q  20070821 looking good so far
184                 added last cap time to sig_s to improve stats math
185                 added more output redux in refresh.* for remote console
186                 added video and audio sizes/rates to idle CSS cfg stats page
187                 added PMT second loop parses audio descriptor
188                 added frame rate parse to SEQ header mpeg2_video_pes test
189                 added auto-TSID list build to find new stations on cable
190                 added load/save tsid for find stations and save on ts capture
191                 added VC selection to web server config page
192                 added [c] key to VCT display, selects next usable VC w/in PTC
193                 added dump cap log shows video frame summary
194                 added epg download S config option for remote epg via wget
195                 added atscap.tsid.vsb/qam so -S will keep user supplied names
196                 added FE_READ_BER to [w] key display to help tune antenna
197                 added console packet stats are saved per channel
198                 added dmx_reset to possibly solve tupari's DViCo nano issue
199                 added test_luser creates index.html in cap and cut dirs
201 TODO?           change parse channel to put .pn,an after ptc
202 TODO?           change save config to use new parse channel format
204 TODO            changed scroll show channels and chanlist, needs more work
206                 changed atscap.1 man page to reflect current options
207                 changed CSS cfg page, build stats dl bolds the list header
208                 changed CSS for build head html4 and epgtop filters/help
209                 changed parse_channel cleanup; add pnx and pnxf fields
210                 changed test_epgs copies previous ch.epx if pnxf matches
211                 changed test_epgs copies previous ch.vc if PTC matches
212                 changed ts capture to save guide if epg test doing cap
213                 changed find stations uses TSID to setup logical config
214                 changed timers save as logical channel order
215                 changed parse channel ptc[] load order to logical not physical
216                 changed cable reserved bits handling
217                 changed build_cnav/sigs_html4 italicizes current channel
218                 changed init_globals clears event name and description
219                 changed reschedule_timer clears event name and description
221                 fixed get timer add allows timer for tomorrow if after 'now'
222                 fixed parse volatile yyyymmdd format checks for dst
223                 fixed web interface sets timer with wrong pgm# but ch ok
224                 fixed show channels CPU hog on idle and > user_lines display
225                 fixed vc.name/vc.cname reflects vct and pmt component names
226                 fixed a /0 in dump_cap_log preventing init cap marker dump
227                 fixed ?v= http_scan_one for logical channel number
228                 fixed first capture before vc loaded has junk at start
229                 fixed test_packets checks cap_pn not vc, cleans junk at start
230                 fixed build_pat created wrong program number and pmt pid
231                 fixed build_pat sets syntax, reserved bits in r[1]:7,5-4
232                 fixed build_pmt sets syntax, reserved bits in r[1]:7,5-4
233                 fixed handling for local comcast cable, YMMV
234                 fixed http_index_html3/4 .tsx check wrong filename
235                 fixed? http_index_html3 missing alt tag for XTC
237                 fixed missing close after shutdown when accept refused
238                 fixed FOX and MNT sending insane number of Intra frames
240                 cleanup whitespace; added some, removed other comments
242                 removed frequency return display from [w] keys
244 ------------------------------------------------------------------------------
246     1.1-rc9o    20070618    Web EPG and server page have Cascading Style Sheets
248                 added more checks to test_luser: /etc/atscap /var/run/atscap
249                 added build_head_html3: single channel scan href to match html4
250                 added build_stats_html4: black header is no packets received
251                 added CSS version of ATSC + MPEG stats to new CSS server page
252                 added free space check at start of capture
253                 added SNR signal display option to new CSS server page
254                 added scan png fades in sigchart to uncover APG ON/OFF in scan
255                 added touch signal charts to toggle scanning one channel
256                 added gradient chrome effect to buttons and epg tiles
257                 added server config CSS buttons to main server page
258                 added test_var_procpid to check for running instances
259                 added build_*nav_html and other pieces for CSS server page
260                 added console_getch to chaos to SIGINT during chaos
261                 added calc_first_weekday to help daybits change in CSS EPG
262                 added build_epg_weekdays to check status or change daybits
263                 added USE_POWERDOWN scope: DVB open/close
264                 added test_luser and moved access checks from parse_args
265                 added defines for CSS_KERN sizes for large/small/tiny tiles
266                 added build epg filler for CSS EPG grid mode
267                 added truncate_text_kern_box san-serif for CSS EPG tiles
268                 added chaos_loop to make chaos try harder if enabled
269                 added dump_epg_xhtml and toggle for HTML or CSS EPG
270                 added style.css styleheet for XHTML EPG via CSS
271                 added large, small and tiny tiled EPG via CSS
272                 added text/css content type reply for .css files
274                 changed build_head_html3 to reflect latest format
275                 changed free check prevents timer+manual captures if <1G free
276                 changed/fixed atsc+fifo free to conditional on USE_DYNAMIC
277                 changed macro cleanups for AOS strength [tupari]
279                 fix for XGL + xtscut + imlib:
280                         set envar XLIB_SKIP_ARGB_VISUALS=1
282 TEST            timer[0].pn is 0 during any timer cap, but cap pids looks ok
284                 fixed HTTP security hole: hosts.allow ram copy is not GET-able
285                 fixed lltoasc to not count - sign as part of commas
286                 fixed main config new CSS object floating, no cfgleg div
287                 fixed two files being held open that didn't need to be
288                 fixed sort_timers skips timer[0] if timer[0] is streaming
289                 fixed if web hits scan while console in epg, scan doesn't run
290                 fixed parse weekday timer didn't set t->pn, isdigit breakage
291                 fixed load spamlist updates less often, logging reduced
292                 fixed test_epgs doesn't run immediately after capture
293                 fixed channel not set when starting with active timer
294                 fixed test_luser re-arrangement and cleanup
295                 fixed write_pkt_block stops capture on write error [teknutz]
296                 fixed filecopy opens source files read only [pknaggs]
297                 fixed -E energy save: stylesheet not copied to tmpfs [pknaggs]
298                 fixed test epgs retrying bad guide cap too often
299                 fixed find_search_event missing weekday and channel filters
300                 fixed build outnames not called before AOS, wrong name logged
302                 removed all USE_DVB_* except USE_DVB_EXPERIMENTAL
303                 removed redundant code in show_fe_status
304                 removed sub dir_index nav build_index_html
305                 removed isdigit. locale is not currently set.
307                 validated Transitional level for XHTML 1.0 plus CSS
308                 (Ampersand in event text are the only warnings.)
310 ------------------------------------------------------------------------------
312     1.1-rc9n    20070514
314 =============================================================================
315 TODO:   tupari reports DViCo Nano DVB API driver is broken and needs
316          close_device/open_device at start of capture.          
318         Can use -E option to open/close the device, but back-to-back
319          captures will leave the device open. Someone needs to fix the nano
320          driver instead of trying to build a work-around for it in atscap.
321 =============================================================================   
323                 added mutex to http_index_html to help with race condition
324                 added http_glob_sort and http_cgi code to set idx_sort
325                 added title, legend toggle & scan icon to dump_html_stats
326                 added build_html_foot for consistent html footers
327                 added gigabytes free to http_index_html
328                 added wait for start of timer since chaos() ends early now
329                 added -a AOS check to be inverse of old arg -b bogus
330                 added check for no auto epgs to test_epgs
331                 added SIGSEGV to handler and and sig_kill nz to signal_test
333                 changed http_index_html to sort by date or name
334                 changed [z]ap key forces 60s test epgs hold down
335                 changed dump_cap_log code cleanup, float precision
336                 changed web_legend enabled for new users
337                 changed dump_epg code cleanups for w3c validate
338                 changed dump_html_stats code cleanup for w3c validate
339                 changed build_html_stats removed <hr> from <pre> section
340                 changed chaos() only does AOS check if -a specified
341                 changed send() to use MSG_NOSIGNAL to prevent SIGPIPE
342                 changed loglevel for http_request to reduce log clutter
343                 changed sig_kill check in console_scan to stop immediately
344                 changed 'No EITs' to 'No EPG' to clarify status
345                 changed cap log rate display and shorter device
346                 changed 'EIP' to 'addr' in backtrace dumps
348                 disabled EPG [enter] during EPG capture because of SIGSEGV
350                 fixed ch.html needs touch because missing file is ignored
351                 fixed refresh.vstats cap_pids not updating with new PMT
352                 fixed test_epgs timer0 hold down, log the hold down
353                 fixed frequency offset negative when no signal lock
355                 moved test_epgs hold down code to test_epg_hold
357                 removed -b and inverted meaning arg_bogus
358                 removed fine tuning adjust, not fine enough
360                 validated with w3c validator: dump_cap_log, added png
361                 validated with w3c validator: dump_html_stats, added png
362                 validated with w3c validator: dump_epg, added png
363                 validate failed but still OK: http_index_html uses <pre><img>
365 ------------------------------------------------------------------------------
367     1.1-rc9m    20070331
368                 tupari request: x86_64 needs RIP not EIP for backtrace dump
369                 tupari request: set channel delay reverted for DViCo driver
370                 tupari request: strength threshold and channel delay defines
371                 fixed [l] - [p] - [enter] crash during EIT & ETT parse
372                 moved experimental FE_GET_FRONTEND ioctl to get signal lock
373                 moved all luser checks inside 0 != getuid() check
374                 removed v4l defines, vapi_text, obsolete v4l comments
375                 removed C style comments and extract flags from this file
377 ------------------------------------------------------------------------------
379     1.1-rc9k    20070322
380                 missing break in show signal caused log to fill up
382 ------------------------------------------------------------------------------
384     1.1-rc9j    20070318
385                 added SNR dB display after signal strength [w] key
386                 removed all old v4l code
387                 removed delay on set channel, is in latest driver patch now.
389 ------------------------------------------------------------------------------
391     1.1-rc9i    20070315
392                 changes for latest driver additions [w] freq offset
393                 revert to low signal strength % instead of NO LOCK/NO SIG
395 ------------------------------------------------------------------------------
397     1.1-rc9h    20070307
398                 fixed display of event start time if across a DST meridian
399                 revert to save config start times in machine readable
401 ------------------------------------------------------------------------------
403     1.1-rc9g    20070302
404                 prefix atsc_ to ATSC related function names
406 ------------------------------------------------------------------------------
408     1.1-rc9g    20070225
409                 changed parse args to test non-root luser access rights
410                 changed Makefile to use libtz to address new DST rules
411                 fixed save spamlist checks for NULL return, logs access error
412                 tested DST rule changes
414 ------------------------------------------------------------------------------
416     1.1-rc9f    20070218
417                 added optional compiles for backtrace dump as .bt or .sh
418                 fixed vanishing config file from mistakes in signal handler
419                 fixed find stations finding small subset of all stations
420                 reverted save_tmpfs to use system( cat >> ) to append log
421         TODO:
422                 Find why copy_file with append flag set appends endlessly.
423                 
424 -----------------------------------------------------------------------------
426     1.1-rc9e    20070217
427                 
428                 added btfd.sh script dump for QA testing of SIG* faults
429                 added signal handler for SIG* faults to help QA testing
430                 added reset_mg to correct problems with KHCW rolling MGT
432                 changed variable name eit_locks to epg_locks
434                 fixed KHCW rolling MGT version does not trash EPG anymore
437 ------------------------------------------------------------------------------
439     1.1-rc9d    20070214
441     MEMORY OPTIMIZATIONS:
442         A lot of memory has been dynamically allocated with atscap-1.1rc9a.
443     Some more work needs to be done to reduce the idle footprint below 4MB.
445         added sort pgx for stations with non-chronological EITs KFTH & KTFK
446         added copy file (w/glob & append) replaces system() in load/save tmpfs
447         added timer zap and timer reschedule for console scan simplification
448         added legend and extra edit indicators to http index html
449         added [cut] directory to build html head, if [/dtv/]cut exists.
450         added NULL to end of stream on/off ioctl to silence valgrind complaints
451         added memsets to some pthread structs to silence valgrind complaints
452         added pedantic char typing for a few places Peter reported
453         added some descriptive help for master guide and cap log display
454         added [m] key to display memory stats from [?] help screen
455         added mutex to build sig png
456         added sig pngs and scan-all option to build html stats
457         added man page documentation for 1.1 release
458         added conditional compile for non-html epg output, is not being used
459         added signal graph .png output idea from old XPM idea
460         added signal red/green scan href for signal scan on/off
462         changed config file name format to atscap#.conf, removed extra .
463         changed signal strength png filename to include instance#
464         changed free space display to http index html to help -E sleep
465         changed http index html zap or rec img href, zap to left now
466         changed zap/edit only allowed for *.ts in [cap] or [cut] dirs
467         changed test spam to use utsnow for spam time; spam age-out disabled
468         changed FIFO size is dynamic now, EPG cap small, timer/manual large
469         changed EIT and ETT payloads to dynamic allocate for capture only
470         changed frames and sequences allocated for single pgm cap only
471         changed cpu and output redux in refresh .pstats, .vstats and .estats
472         changed volume wakeup to test wakeup and tuned to one wakeup
473         changed config C line GTO to enable/disable instead of minutes
474         changed epg3/2 swap: epg2 test guides isn't optional, epg3 http is
475         changed KHCW rolling mgt hold disabled, epg/eit/ett clears with MGT
476         changed STT display to use the Z:delta so only see new variance
477         changed parse stt variable names and simplify the hold downs
478         changed test packet NULL packet processing returns sooner
479         changed test packet vc cap only counts CC errors if pid in cap pids []
480         changed program number instead of VC # in dump epg navigation hrefs
481         changed dump epg only called by http request and test epgs
482         changed color and swapped meaning of (epg*)reload.png and scan*.png
483             New colors for each image are: Green is start, Red is stop.
484             The antenna is now for signal scan to adjust your antenna.
485             The 'remote' image with the circle is EPG load/stop now.
486             Zap48 is replaced with EPG stop img.
488         fixed NULL check after sequences allocate from peter knaggs
489         fixed fifo write NULL: EPG finds search event matches now, then segv's
490         fixed [r]eschedule not timer0 was stopping current cap
491         fixed build html head uses <th> instead of <td> to center sig data
492         fixed missing fflush at end of save spamlist
493         fixed more links as relative links for file->open browsing (no cgi)
494         fixed EPG ts capture sets cap pn/vc/va to -1 after set channel
495         fixed test mpeg2 cap pn check incorrect for EPG capture
496         fixed console refresh of EPG when leaving help screen
497         fixed dump cap log EPG vs event cap location wrong
498         fixed test epgs epg2 imalloc pointer return
499         fixed bug in ifree: id text not moved up the list
500         fixed EPG load now 3hr meridian dependent, not EIT-01 event 1
501         fixed missing png on new start: created in parse channel
502         fixed missing html on new start: created in http init
503         fixed TIMER NAME MAX too short, truncated .p from GhostWhisperer@
504         fixed missing port# in Location: reply that is *not* relative href
505         fixed missing ram path adjust in http request
506         fixed dump epg html past end of year day#, can't href past dec31
507         fixed dump epg html 7 days forward didn't show month and mday
509         revert sigscan does not prevent auto-epg capture
511         removed zap file from EPG, but kept zap timer for current cap
512         removed mgx structure, nothing was using it
513         removed refresh href. may need it restored for no-dressing browsers
514         removed http_close_sockets until know why sigterm is broken
516         tested:  sig chart .png Z_BEST_COMPRESSION against Z_NO_COMPRESSION:
517         results: BEST compression for small file size & fast page reloads.
519 NOTE:
520             The new wakeup code should work equally well to wake up the volume,
521         as well as the DVB device. This is not yet completed, but may be soon.
522         Most of the code+ideas are in place to do it but the failures with the
523         DVB drivers, that have been mostly solved now, prevented further work.
524         Some work on HD3000 driver may be needed to power down cx88+or51132,
525         if closing the device is is not good enough. It should be.
527 BUGS:
528             Add a weekday timer for today after now requires config reload.
529         Moths must have flown in when trying to fix it last time around.
530         Regression testing is needed on console weekday timer addition.
532             Still tracking intermittent event/description mis-match.
533         It hasn't occurred in a few weeks. Fixed it? Keep collecting data.
535             Adding/remove event from web ui sometimes gets event wrong.
536         This one cropped up recently and not sure of the interaction yet.
537         It happened once after adding sort_pgx. Forgot to make eclean?
539 --------------------------------------------------------------------------
542     1.1-rc8g   20061217
544         added volume spin-up wakeup to test timer T0 minus 30s
545         added -e option for energy saver support via tmpfs for epg and log
546         added support for optional STT seconds offset on Z config line
547         added http 1.0/1.1 request uses select for 1s keep-alive timeout
548         added E_MTX to disable EPG unlink if no timer and event.ts is new
549         added astrncpy, is more efficient than strncpy() writing zeros
550         added ascii_xlate to event truncate for file system normalization
551         added xtc:// to build html index to invoke xtscut, smiley img
552         added get dvr count for html header
553         added spamlist age out to remove 30-day old spam events
554         added thread for dvrlog to serialize it
555         added validate config duplicate timer check
556         added more table size checking to build mgt text, is display only
558         changed volume status update to reduce cap drive spin-up events
559         changed volatile timer save format to human readable, plus examples
560         changed usage/comments to reflect latest options. Forget anything?
561         changed http test allows checks both ip address and name
562         changed -b does not load guide indefinitely, but does skip AOS
563         changed order of http accept tests: localhost, mask then hosts.allow
564         changed hold down on show program guide to allow filter change
565         changed signal scan headers and capture status headers
566         changed fifo input/output loop threads are detached, not joinable
567         changed test epgs stays on last channel captured
568         changed out_name checks to out_file checks
569         changed SIGINT ignored during cap
571         FIX reschedule timer restarts current timer
572         fixed parse volatile timer new format bug
573         fixed netmask default cleared instead of set
574         fixed http test allows was failing when gethostbyname failed
575         fixed build cap text z color, legend and range errors
576         fixed -r replay skips AOS in chaos()
577         fixed scrolling EPG when exit to timer list makes timer #'s negative
578         fixed -p breaks http, didn't copy directory to http arg wroot
579         fixed pid_c lost in the shuffle, used to hold down test epgs
580         fixed http local_name too short
581         fixed ubuntu padding strncpy bug in http index html
582         fixed adding timer from epg with weekday bits gives wrong start time
583         fixed signal strength color in show channels and show cap status
584         fixed ts capture thread synchronization. RIP Van Winkle/AOS hang
585         fixed dump cap log dumps blank log, utsets reset too soon
586         fixed http add timer ignores adding overlap of current timer
587         fixed move weekday timer, W not T line
588         fixed? .tsx file not generating every time
590         removed ts capture loop thread
591         removed some static variable definitions
593 NOTES:
594         Web UI performance should be much better with keep-alives.
595         AOS hang in ts capture is fixed with better synchronization.
596         Older linuxthreads-0.10 gives diff getpid() for each thread.
597         Newer NPTL gives same getpid() for each. /bin/top is diff too.
600 *** WARNING *** Some drives may fail prematurely with many spin-up/down cycles.
601     -E Energy saver RAM checklist: 20061215
603         Use with:
604         hdparm -S60 /dev/hda /dev/hdb /dev/hdc /dev/hda
606         hdparm -S60 sets spin-down timeout to 5m of no activity.
608         atscap -E should allow capture drive to save power when idle,
609             but don't leave browser in the EPG, or it wakes up every 30m
610             to check for existence of .ts files matching event names.
612         WHAT?                           DONE?
613         load tmpfs                      done
614         save tmpfs                      done
615         dvrlog init                     done
616         dump cap log                    done
617         console exit                    done
618         dump html stats                 done
619         save guide                      done
620         save epg                        done
621         load guide                      done
622         load epg                        done
623         dump epg                        done
624         load vct                        done
625         build html stats                done
626         find config                     done
627         http request                    done
628         parse channel                   done
629         test timer wakes up volume      done
630         hosts.allow is ram copy         done
632 *** TO DO *********** ALSO SEE FILE TODO *******************************
634 TODO    gethostbyname for allow entry, but ip address is much faster
636 TODO    Fix file type check code in http index html, not remove it.
637         Can't find now? Where did it go?
639 TODO    html wish list items:
640             manual and weekday capture control, weekday imgmap/similar
641             signal graph strength vs time png, DONE, see 1.1rc9a.
643 --------------------------------------------------------------------------
646     1.1-rc7   20061012
647         added missing mutex inits for log and epg mutex
648         added http load/test allows for TCP-wrapper-like low-security
649         added nanosleep after pthread create in ts capture
650         
651         changed test epgs uses mutex for hold down, pgm scan is status
652         changed port in mpeg:// url so mpeg.sh can do http playback
653         changed http request logs remote number not name
654         changed build html head to remove superfluous font/color markup
655         changed parse www bind to resolve -w hostname for use via NAT
656         changed http index html to use abstracted host name
657         changed build html head to use abstracted host name
658         changed http response to use abstracated host name
659         changed ts capture loop exit method
661         fixed compile bug when not defining USE_WWW
662 ??      fixed ts capture loop open write fail with blank filename
663         fixed cap fail scrambles stats page. init stats at top of ts cap loop
664         moved AOS loop to chaos function
666         todos from rc6 moved forward and re-evaluated
668 ----------------------------------------------------------------------------
671     1.1-rc6   20060927
672         Peter reports this version "puts KQED-HD back on the air".
673         This may help other users that have stations sending 2 packet PMTs.
674         The ATSC spec allows it, but very few have more than 2 audios.
676         changed xine:// to mpeg:// for -w option, more generic
677         changed get sync to try to sync on a single 21 packet block
679         fixed uintodot was truncating ip:port string
680         fixed http index html does not gen zap href until 60s after modtime
681         
682         renamed some items in tts_s to not be same as frequently used names
684         restored write_pkt, is too laggy without it, will figure flush later
686 TODO: *** DONE in 1.1-rc7 ***
687         change www_host populated from arg_whost, no need for dtv in hosts?
688             no: if machine has two different ip address, one local and
689             one remote, need to use different /etc/hosts for each client.
690             Reinstate the name and change all IP#s to name.
692 -----------------------------------------------------------------------------
695     1.1-rc5c  20060920
697         Cable testing: all scrambled but can see PAT + PMT. No MGT/VCT.
699         addded delete .tsc file when capture file is deleted
700         added select() check to fifo input loop and get sync, is broken? [WIP]
702         changed log level on load spamlist spamfile not found
703         changed parse pat and parse pmt do not check reserved bits unless -A
705             
706         fixed F: missing from getopt, -F[1...5] did not work
707         fixed parse pmt needs to make separate pmt payloads for each vc
709         fixed test packet falls to test mpeg2, doesnt check table/psi=1
710         fixed parse pmt was breaking KQED-HD (post 8pm) with 2 packet PMT
711             KQED-HD is still partly broken with 1.1-rc5a-c, but it
712             seems to be xine player not liking the 2 packet PMT, too.
714         todos from -rc4 moved forward
716 -----------------------------------------------------------------------------
718     1.1-rc4  20060913
720         audit fifo; valgrind errors; man gcc -fstack-check for multithreaded;
721         comp.os.unix.programming mentions signals need sa_mask init.
722         -fstack-check causes it to crash in asnprintf? odd.
724         audited fifo code, found one wrong fallthrough when 0 read return
725         audited fifo again, reduced number of pthread yields
726         audited asnprintf calls, found a few missing parameters
727         audited dvrlog calls, found a few missing parameters
729         added test clock res to find most accurate clock
730         added sa_mask init to emptyset for signal init
731         added load volatile yearmmdd:hh:mm:lm:name format, save is still uts
733         changed AOS back to 9 tries for wobbly stations
734         changed find stations runs automatically if no config
735         changed find stations uses Dxx for SID, old station # tupari request
736         changed parse tvct tries harder to get callsign, not "i", paxson.
737         changed frames sequences to use differential for smaller data type
739         fixed WHO macro to stop gcc 3.4 from complaining
740         fixed the mutex variables so gcc doesn't complain anymore.
741         fixed dvrlog init removed, let dvrlog handle it.
742         fixed rip van winkle bug that was killing main thread. bad stack.
745 **** TODO **** DONE (back to around 21m resident instead of 30m)
746         6h of frames and sequences should require just under 3mb of ram.
748         frames and sequences array memory redux:
749         frames can be 16 bit, using 2 bytes instead of 8:
750             16:15       frame type 01-03, 00 is invalid
751             14:0        1-16383 packets since last frame, 0 is invalid
752          Since this is largest list it will show biggest reduction.
753          0 or -1 can mark end of list.
755         sequences is reduced from 8 to 4 bytes:
756             32:0  bytes since last sequence
758         output can save in current format for xtscut and hexdump
760 ----------------------------------------------------------------------------
763     1.1-rc3a 20060905
765         added help on setting up for user mode to quickstart part 3
766         added defines near top for browser colors so user can change easily
768         changed sequence/frame allocation to reduce gcc pre-processor load
769         increased cap log to 12hr limit with same for sequences, frames
771         fixed wrong cap stat range check in show/dump cap log/test pkt stats
772         fixed -b allows long info cap. timer start should kick it out
773         fixed add current event while info cap doesn't start event
776 *** DONE ******* TO DO *************** all but last done in 1.1rc4
777                                         last done in 1.1rc9
779 TODO    Find why main thread is croaking, yet capture threads keep going.
780         This is the AOS#4 hang, aka Rip van Winkle sleeping bug.
781         It's still capturing but the console is dead.
782         Problem was dvrlog/asnprintf stray parameters not getting checked.
783         This caused stack to pop wrong values in main thread. Whoops.
784         Use dummy asnprintf/dvrlog to help compiler find too many/few parms.
786 DONE    find stations should check first letter for K or W match
787         and try next VC name until it finds one with K or W first char
788         KBPX Boston PAX network has this problem. "i" is first VC name.
789         DONE.
791 TODO?   EPG generated in RAM only except for save at end of capture.
792         Reason again?
797 ---------------------------------------------------------------------------
798     1.1-rc2 20060827
800         added table of contents, moved http config to quickstart
801         added http response send support for ram epg update [WIP]
802         added http start stores MTU as wss->mtu for http response
803         added [m] key to show vct for MPEG PAT/PMT display toggle
805         changed help to reflect correct netmask usage
806         changed allow 127.x.x.x ip address for -w option
807         changed -W -R exit with error if screen is not executable
808         changed find stations to 45% signal threshold
809         changed http response to use wss->mtu for output byte count
810         changed ts capture loop to stop waiting when thread pidi/o cleared
812         disabled low QoS auto-zapper. It needs more work.
814         fixed -W exits with error message if GNU screen not found
815         fixed parse www bind to generate correct netmask
816         fixed call to http test netmask, wrong address was used
817         fixed http auto epg set wrong pgto value, was 180 now 10800
820 TODO
822 DONE    tupari reports he can't bind to loopback. Removed 127.x.x.x check.
824 DONE    tupari reports -W does not give error when screen not found.
825         Also observed here is that -W crashes on capture start, and gdb
826         is not very helpful in this scenario. No screen exits atscap now.
828 DONE    tupari reports find stations ch15 bogus detects and hangs. He also
829         reported a freeze and hard lock on kill. killall might fix lockup,
830         but still need more data to see if freeze is same one I've seen:
832         The wall clock works but the capture clock doesn't. Low AOS?
834         If I recall, testing was showing input thread dying but the
835          output thread and parent thread were still running, but there
836          is code in both loops to check cap now being cleared. Join order?
838 ***  TODO audit other strength checks
840 DONE    Test MTU > 7200 for r8169 1g enet. Test failed. Back to 7200.
841         I guess the driver notes weren't kidding. Over 7200 is broken.
843 DONE    Testing is underway with intentionally bad antenna positions
844         to see if the freeze is related to driver failure. The normal
845         observed scenario is DVB-API returns junk packets and everything
846         keeps going even if it's all being marked as junk.
849 ------------------------------------------------------------------------------
851     1.1-rc1 20060815 sent to tupari, haven't heard from rc0 recipients yet
852         gcc 3.3.5 and 2.96 audit shadows: -ansi, -pedantic compiles
853         gcc 3.4.4 audit warn discarded type: __FUNCTION__ to define WHO
855         add daily primetime href to dump epg
856         added dvrlog to replace syslog to daemon.log
857         added cap fail and epg fail error display to dump epg
858         added ATSC PSIP status indication to EPG if no current event
860         changed EPGch.html saves in pg/, changed build html stat href to match
861         changed show cap status sets timer status T_DONE if below 50% QoS
862         changed show timers removes timer with T_DONE status
863         changed show channels signals gives avg before moving to next channel
864         changed delete order, ts file last makes html refresh remove log href
865         changed http log uses dvrlog, trunc NL (chg for full request/response)
866         changed http del timer checks program number, too
867         changed epg refresh time by a few seconds to spread the load around
868         changed epg current event field to 255 char limit
870         fixed http reload epg does not work when timer list is empty
871         fixed no delete href for spam event with timer in future
872         fixed no end-of-cap QOS/AOS fail status because delete timer reset it
873         fixed endless loop on search volatile timer that has failed AOS
874         fixed add/remove search doesn't erase timer0 if timer0 match is active
875         fixed -x, extra : in getopt whoops, 1.1-rc0 use -x0 -x1 workaround
876         fixed http version number parsed incorrectly
879 TESTME  dump cap log event name/description audit. Observed stale data.
881 TESTME  Proxy http failure, no imgs, may be related to keep alive fail.
883 DONE    Cap transfer stops on signal-dropout and hangs cap, zap still worked,
884         but show cap stats should catch QoS low and abort the capture.
885         Not sure if cap stats clock was still updating. Will test more.
886         The auto-zapper is working better now, maybe too agressive on zap.
888 DONE    Endless loop on search volatile timer that has failed AOS, for
889         the same reason delete volatile search timer puts back on list.
890         See if lzpgt can be used to prevent endless loop.
891         Problem was out of order logical sequence for delete and lzpgt.
893 DONE    Web epg event date more than 16 days old will give full date.
894         This is for stations that stop updating their guides, like KTBU.
896 DONE    Channel scan gives avg on last ch loop, instead of possible bogus
898 DONE    Log existing adds href to build stats html even for EPG
899             have to change build outnames to pg/EPGch.html
901 NO      Merge colors/filters legend? The fields have nearly the same meaning.
903 IDEA FOR FUTURE
904         noticed KHOU has wide variety of spam. add st to spamlist to
905         track last start time seen. add age-out to remove items >30-day old
906         load spamlist is where the age filter should be.
908 ------------------------------------------------------------------------------
909     1.1-rc0 20060730 sent to ray, gene, peter & jedrek
911         added legend for all epg hrefs to dump epg, tested epg relative hrefs
912         added auto-epg select to build html head, auto-epg blue href
913         added build html head for consistent top level navigation
914         added epg ch.html refreshes per instance every time it is requested
915         added abstractions to make any epg refresh always usable to http
916         added better navigation to dump epg html output for pgm and weekdays
917         added test epgs will create blank EPG to prevent endless EPG loop
918         added MGT hold down 180 seconds to retard bogus updates on KHCW
919         added to show cap stats: dump html stats output to /dtv/atscapX.html
920         added -w option: http code for small multi-threaded web-server
921         added filters for spa/fra paid/dtv/infomercial event auto-filter
922         added show vc mpeg2 fallback shows component name on vc/program line
923         added edit keys to scroll timers PU/PD/HM/EN, add/del timers IN/DE
924         added find current epg pgm for epg [enter] match current program
925         added init pids to reset PID totals when channel changes for show vct
926         added -F option: frequencies from dvb apps us-Cable*; us-ATSC -28615 Hz
928         changed dump epg has table for station img, status and current event
929         changed dump guides to dump epg with pointers abstracted for re-use
930         changed capture log and capture stats html-ized, fixups to html epg
931         changed ordering of some functions to reduce prototype count
932         changed abstract save guide into save vct and save epg
933         changed abstract load guide into load vct and load epg
934         changed build outnames @ flag tries to use start time then current
935         changed # as timer date flag to @ so it works as a URI
936         changed test spam compare optimization to reduce cpu loading
937         changed show event short does not call build pg epg, moved to parse eit
938         changed dump guides and build html head for multiple instances
939         changed multiple web servers for multiple instances
940         changed web server still sluggish: nanosleep after connect removed
941         changed test config to look for spamlist timeout
942         changed spamlist to global /etc/atscap/atscap.spam, removed cfg 'S'
943         changed parse stt logging but rest looks ok? what about KHCW drift?
944         changed dump guides to reflect server ip:port that dumped guide
945         changed fifo write tries more times, optioned out multi-stage tries
946         changed file redux, .tsx now has same data as .tss .tsf output had
947         changed atomic_ to fifo_atomic_ to give the functions a better name
948         changed html program guide cosmetic cleanups, added rating text
949         changed video + audio pid counts valid after VCT or PMT received
950         changed capture log starts at current minute when first invoked
951         changed EPG display starts at current event program when first invoked
952         changed EPG [ENTER] adds current event matching program # if set
953         changed build outnames to allow program number > 7 for cable
954         changed [TAB] disabled for cable, not needed, channel scroll avoidance
955         changed colors in show virtual channels: red indicates missing data
956         changed get_timer_add weekday timer program # to allow > 7 for cable
958         fixed old bug: stop capture if adding current timer during info cap
959         fixed move timers find search event index returns wrong counter
960         fixed add event timer from epg did not copy program # to timer
961         fixed volatile timers from EPG search event loses event descriptions
962         fixed find timer epg works better, but still no fuzzy start/len yet
963         fixed word wrap, forgot to print char after nl/indent
964         fixed timer start time correct but not refreshed after volatile expires
965         fixed add search during info cap doesn't start search event if current
966         fixed delete search event should redraw timer list from top
967         fixed build outnames timer [KUHT].1 audio# wrong after timer [KHCW].3,1
968         fixed search timer overlap kept writing to same file, ignored new name
969         fixed save config after ts cap to retain any found search timers
970         fixed epg_name memset() overflow wiping FIFO pointer and structure
971         fixed [z]ap did not zap the current capture, but did zap .ts[f,s,l]
973         fixed load config restores current channel to avoid guide corruption
974         fixed load config+guide while cap adds search match on wrong channel
975         fixed search timer hold down at end of timer to prevent event truncate
976         fixed? show virtual channels selected program gets colors wrong
977         fixed? [d]elete timer put search timer back on list, endless loop
979         removed delete code for .txt .tss .tsf files, using .html/.tsx now
980         removed EPG sort since EIT sort is working for KRIV FOX now
982         replaced syslog with dvrlog; html build snprintf with asnprintf
984 BUGLIST:
985         Stopping a timer with [o] override then BKSP does not remove the timer,
986         or does not set the hold down for a deleted timer. Web ui seems ok,
987         since it actually removes the timer, but still testing.
989         build outnames now overrides vc to 0 if find vc pgm fails, but it
990 FIXME:* SHOULD hold down output until cap vc set from cap pn + PAT/PMT info.
993 TODO scratchpad
995         Need html pages for Master Guide and Virtual channels. Put hrefs
996         for them in html stats page in the atsc transport table area.
998         Finish breaking down dumps to build and dump for dynamic update to
999         serve created page from mem in addition to the current file method.
1001 TODO?   html interface has no href for full capture, but room for href
1002          right of reload href. Full capture ability might be useful,
1003          There is always the console interface for full capture if needed.
1005 TESTME scratchpad
1007         Adding current event via [enter] sometimes screws up search timers
1008             by moving search timer to top of timer list, above valid timers.
1009             I think it's fixed but still testing. It's related to EPG filters.
1011         UDP xine seems to play a little bit too fast. Maybe it's dropping
1012             frames and then getting ahead and having to wait. Still testing.
1013             TCP playback is fine, because xine reads as fast as it wants,
1014             without being constrained to actual data rate from the card.
1016         http file not found is not working properly.
1017             does not return 404 as it should instead of hanging user agent
1019         -x seems broken, of all things. How did that happen?
1020             Currently having to hard code arg_extras = ~0;
1023 TESTME  Goal is to go from atscap -S to web browser, without using
1024          console beyond starting atscap -w or a script to do same.
1026         None of the web pages are dynamic in RAM-only. Should they be,
1027          rather than take the cpu cycle hit of file create?
1029         Current method is to write the channel.html file to /dtv/pg/,
1030          and it does seem to introduce enough load to be noticeable
1031          as a stall during playback when the guide create occurs.
1033         Yet another thread and socket for server to server communication.
1034          No need for it so far, but thinking about how it could be useful.
1035          Current method seems to work well enough for now.
1037         Rearrange console with timer name before start time. This is
1038          to make it easier for console user to tell which timer# to delete.
1040         Fix KQED not capturing program #1: atscut has -kmgt broken samples
1041          might be fixed with build outnames and program select rework?
1042          Have WB with swapped PMT's in PAT to test against now.
1043         Still on list of things to test.
1046 -------------------------------------------------------------------------------
1047 pchdtvr - 1.0rev1k test (last pchdtvr before change to generic atscap name)
1049 NEWS: HD3000 dvb driver is now Bullet-Proof with my patch. Uptime Ad Infinitum.
1050 NEWS: Build latest 2.6.12+ kernel with only DVB core as a module, then get the
1051 NEWS: v4l-dvb-20060115 CVS snapshot, not the latest hg, and apply this patch:
1052 NEWS:  http://www.nop.org/inkling/dtv/test/dvb-ink.diff.gz
1054 NEWS: Jedrek reports this version works with a DViCo Fusion5 HDTV ATSC card!
1056         Almost all UI bugs are gone. The rest are FEATURES! (Just Kidding!)
1057         More fixes than I expected, but it seems all were really needed.
1058         As always, some bugs remain. Please report the bugs you find.
1059         I will try to fix those along with the bugs I find myself.
1061    1.0-r1 20060508
1063         audit gcc: missing proto-types and other assorted fatfingers
1064         audit gcc: threaded applications treat errno as function, not as int
1065         audit gcc: pointer check before use after strrchr strchr
1066         audit gcc: cleanups for -pedantic -std=c99 and -ansi. Few remain.
1068         added mlockall prevents code+data swap during cap: swapon -a is OK now.
1069         added count pg pgm for show vc selection
1070         added spam events automatically hidden if any spamlist entries
1071         added global init. man that's a lotta dang globals.
1072         added sort eit epg to handle the apparent nationwide FOX EIT glitch
1073         added test eit ett done. info cap detects real end of guide faster
1074         added show vc stats extract from show packet stats
1075         added build pat and build pmt re-maps VC cap secondaries to primary
1076         added ,[comma] flag to build outnames for secondary audio flag
1077         added cap log sanity limit check and log full error text
1078         added sort spamlist and searchlist added to load config
1079         added list usage counts to show keyhelp for timer, search, epg
1080         added save config to show program guide [enter] for current program
1081         added PMT lines to show vct to inspect stations w/ mismatch VCT/PMT
1082         added zap removes .$, .ts, .tsl .tsf .tss and .txt in remove renamed
1083         added option -A for strict ATSC reserved bits check and logging
1084         added 1 second delay on control c to allow device i2c to finish
1085         added manual search event entry searches current channel
1087         changed PAT+PMT in VC select is bright magenta if different from VCT
1088         changed VCT & EPG highlights Program # to better indicate new method
1089         changed so MPEG fallback works, timer name VC # is now Program #
1090         changed -r does not generate capture log
1091         changed DVB SNR ioctl fallback if STRENGTH ioctl not implemented
1092         changed DVB STATUS ioctl fallback if SNR ioctl not implemented
1093         changed VCT keys for channel and audio selection to fewer keys
1094         changed -S to be a little bit faster and only scans to channel 70
1095         changed old T weekday timer config line is now W config line
1096         changed check timer to test timer and simplified the code
1097         changed timer status ignore sets normal no blink for times
1098         changed cap stat name to allow longer names with .0,1 audio select
1099         changed packet stat to identify channel from config if mpeg fallback
1100         changed allocation strategy for cap log, log limit set to 8 hours
1101         changed [c] key not needed in VC select, use number keys directly
1102         changed build pg epg reflects current virtual channel select or all
1103         changed parse spam event to reject duplicates, restored 256 item limit
1104         changed huffman decode callers check mode == 0xFF if strict -A option
1105         changed capture log saves to file.tsl instead of /var/log/dtv*
1106         changed generic build payload for most payload types, fatfinger redux
1107         changed list limit constants to more consistent nomenclature *_MAX
1109 TESTME: fixed? load config with more channels required restart to use them
1110             haven't had a chance to test it yet but should be ok since
1111             adding the duplicate reject. needs testing
1113 TESTME: fixed? KQED PAT/VCT mismatch caused timer to get wrong/no video/audio
1114             Waiting on report from Peter to find out if it's fixed yet.
1116         fixed back to back captures truncating file or keeping previous name
1117         fixed build vct descriptor boundary error reported by tupari
1118         fixed [?] key did not always refresh correctly on exit
1119         fixed -r on short files broken, using new fifo flush flag
1120         fixed -s breakage caused by the shuffle to VC selection
1121         fixed show timers search entry wrong when last volatile expires.
1122         fixed ETT version number poison on KHOU KRIV KPRC. rummy buzzards
1123         fixed load config and initial startup did not select vc correctly
1124         fixed vc pid selection problems, shouldn't reset on [a] anymore
1125         fixed show vct did not handle MPEG PAT+PMT fallback for VC selection
1126         fixed signal not clearing cap now, gave fifo_in: err bad file desc
1127         fixed parse channel should not add duplicate channels
1128         fixed PAT ncs wasn't being done correctly after generic payload
1129         fixed virtual channel and audio selection don't work during info cap
1130         fixed move search event should not move matching weekday timers
1131         fixed timer sort bugs introduced by search status and weekday bits
1132         fixed [t] add timer: start time correct if daybits today but past
1133         fixed [t] add timer: start time correct if daybits are previous day
1134         fixed word wrap off by one byte on indent string. aw shucks.
1135         fixed [enter] from epg gets event if time range matches filtered event
1136         fixed [enter] from epg saves cfg so move timer in doesn't stop capture
1137         fixed move search timer, one pass prevents target load config thrash
1138         fixed search timer ch:days poison, delete moves structures down
1139         fixed load config poison, waits 1/4s for move search/timer to finish
1140         fixed EIT error count poison from bad EIT assembly in build payload
1141         fixed huffman decode poison with table range check to fix WPIX crash
1142         fixed [o] overtime override: does not stop cap on first try
1143         fixed? [\] full capture: build outnames, set vc cap pids
1145         removed incorrect timer reschedule in ts cap loop, post AOS, huh? doh!
1146         removed redundant build_*_payload code and structures for generic, yay!
1147         removed [c] key change timer, get_timer_change because never used, doh!
1149         restored Closed Caption services list to show vchannels
1151         rewrote build outnames: a lot easier to read and follow now
1152         rewrote test info cap done: more efficent, easier to read, quicker
1154         updated help and help colors, plus these comments
1156  TODO scratch pad:
1157         show master guide: (NO: too much dca hassle)
1158             color should indicate have seen at least one
1159             * is payok status to blink when still parsing vn's received
1161         if it's an existing timer, it adds a duplicate. not supposed to.
1162         look at add search event and see if it checks pgm and audio ok.
1165 ===============================================================================
1166 pchdtvr 1.0 release version 
1168 -------------------------------------------------------------------------------
1169     1.0 20060326
1171         fixed huffman decode node lookup sanity limit for tupari's WPIX fix
1173 -------------------------------------------------------------------------------
1174 pchdtvr - 1.0 release candidates
1176 NEWS: ***** ALL CONSOLE FEATURES COMPLETED FOR TERRESTRIAL BROADCAST ******
1177 NEWS: it has been run through valgrind with few errors except pthread allocs
1178 NEWS: driver code being revised to work properly and handle i2c lockouts
1180     1.0-rc11 20060228
1182             Aside from a few display bugs here and there, it is finally done.
1184 ******* added +searchname to [t]imer entry; [d]elete event to remove it+matches
1185 ***     added channel and day bits filter to search events, load and save cfg
1186 ***     added FE_TUNE_MODE_ONESHOT to DVB flags to stop read status polling
1187 ***     added -N option to pad removed packets with NULLs for STB players
1188         added tracking function for malloc, free, and status on exit
1189         added signal handler to SIGINT SIGTERM SIGQUIT for normal exit
1190         added 250ms wait to all channel selects to help AOS
1191         added channel list shows magenta for stations with auto EPG reload
1192         added sorted search events on timer list; movable between instances
1193         added timer full event name and description from EPG. write to .txt
1194         added filebase pathname truncation function and fixups to use it
1195         added frequencies to ptc_*[] from dvb-atsc tools 1.0.1 from pcHDTV
1196         added find device test for /dev/dvb0.* from new hotplug re-arrangement
1197         added -m frame data and sequence data dump to .tsf .tss for a/xtscut
1198         added -u multicast option, needs two host test. one host loopback ok.
1199         added experimental cable frequency list: -C option to test with -S
1200         added uptime to show keyhelp and colors to indicate which modes use
1201         added move search event moves matching volatiles, use with care
1203         changed signal stregnth fail terminates program with log message why
1204         changed dump cap log to indicate arg_nulls not discarded
1205         changed search events to use 16 char truncated to match timer list
1206         changed fifo read/write sleeps, again, to find the happy medium
1207         changed lltoasc function to not use strdup, from valgrind testing
1208         changed show/dump cap log to use a-z A-Z for low error counts
1209         changed build outnames after aos to make name match timer start
1210         changed set channel to add 500ms delay after setting frequency
1211         changed EPG highlights white if timer match, magenta? if ETMID match
1212         changed delete timer to delete search timer (recurse range is a pita)
1213         changed STT parse time set conditions again
1214         changed show timers to isolate search timer entries
1215         changed signal scan loop count to 2x signal scan rate, more reliable
1216         changed AOS to 3 lock attempts: but no help on driver lock-out issue
1217         changed chanlist sigscan times out after 5 minutes if scanning all
1218         changed [a] key toggles magenta autoguide, saves new setting per ptc
1219         changed info cap fail logs/shows station id that failed
1220         changed frequencies to use DVB channel center not V4L NTSC IRC
1221         changed ATSC sets time with config file Z line, auto with C line GTO
1222         changed atsc_bcast to ptc, abstracted ptc to pointer broadcast
1223         changed timer_list to refresh.timers; other guides use refresh{}
1224         changed in_psip/in_help/display_timers to display_type
1225         changed put CRs on remove+zap display to handle longer filenames
1226         changed resize console stays in whichever guide, not kick to timers
1227         changed timing on show cap log redraw to wait for next second
1229         fixed? check timer to try to handle timer move-in during info cap.
1231         fixed [o]verride sometimes stopped the capture, whoops check timer
1232         fixed kernel 2.4.26 driver 1.6 issue, SCHED_FIFO fails on 2.4.26?
1233         fixed zap removes .txt event description file, tested this time :>
1234         fixed [ENTER] key in EPG during info cap gets current main (vc0) event
1235         fixed config file comments "not kept" line in wrong place
1236         fixed show disk status to pad blanks at end as timers are removed
1237         fixed set channel not setting on search timer found at start
1238         fixed does not open the device twice if not using fork()
1239         fixed auto-guide search entry does not trigger again after zap
1240         fixed long run too many files open error, audit all open/close
1241         fixed check timers causing multiple starts instead of info cap stop
1242         fixed help clears screen when help exits
1243         fixed parse timers truncates name at 19 chars instead of 16
1244         fixed exits guides at capture start or stop using display_type
1246         moved dump cap log to end of output thread
1248         removed -A option, use config file Zch line for enable/Z0 disable now
1250         tested dvb status check against hg/CVS v4l-dvb and immediately backed
1251             it out because it is a design idea only for sat tuners. Not ATSC, 
1252             so DVB FE_TUNE_MODE_ONESHOT ioctl disables this function now.
1254         tested .tsf .tss files for identity with atscut 0.9.5 .tsf .tss files
1255             these files are structures therefore architechture dependent.
1256             ergo, they are not transportable between little and big endian,
1257             but can easily generate by atscut -s compiled on the target.
1259         tested KRIV + KPRC ETT increasing: ETT Version change is non-compliant.
1260             TODO it would be informative if version change was visible in MGT.
1262         tested with old V4L drivers on 2.4.26. Works as well as it can.
1263             See comments near top for the reasons why V4L is sub-optimal,
1264             and why you should upgrade to DVB API at soonest opportunity.
1266         tweaked ATSC STT set system time method, trying to fix wobble
1268         updated comments to reflect new DVB API testing and results.
1269             Things are finally robust with correct DVB API settings.
1274 ******************************************************************************
1277 1.0-rc10 finally has almost every feature I wanted, with a few bugs.
1279     1.0-rc10 20051118
1280 ***     replaced bad fifo lock code with mutex for SMP/more reliable UP
1281 ***     added automatic program guides with non zero GTO: C line in config file
1282 ***     added automatic search event timer scheduling: A line in config file
1283 ***     added spam events not hard-coded now: S line in config file
1284 ***     added one channel to use for -A ATSC time: Z line in config file
1286         added search events to load guide, load config and cap
1287         added display structure for output redux for low baud ssh audit
1288         added sequences/idx tracker and dump for atscut .tss .tsf file
1289         added hold downs on VC cap until PAT, PMT, SEQ and audio payload start
1290         added zap channel/time to hold down autostart of same zapped event
1291         added saves config after timer expired to remove timer from config
1292         added persistent VC and full cap settings per station in config
1293         added event truncate function, more flexible than obsoleted strtrunc
1294         added find etmid function more efficient than obsoleted find pgm etmid
1295         added more error checks/logging to various functions and ioctls
1296         added staggered pthread yields to fifo write to drain output faster
1297         added P to indicate PMT received and make it red if flag seen
1298         added [?] key gives help for VCT and Program Guide displays
1299         added more key combinations for home/end console getch fn needs ncurses
1300         added ZAP to top left status indication for why previous cap ended
1301         added more volatiles to handle threading better
1302         added DVB ideas from dvb-atsc-tools: DVB new default; -1 -2 for V4L
1303         add TODO [ENTER] from program guide starts first VC timer cap
1305         changed fifo full doesn't log, increases SYN error count instead
1306         changed timers so channel scan doesn't hold down initial autoguide
1307         changed full channel scan to hold down autoguide, to adjust antenna
1308         changed timer removal doesn't save config, prevent immediate reload
1309         changed program guide output redux via display epg
1310         changed arrow keys work for timer list during capture
1311         changed all strtrunc calls to new event truncate function, del strtrunc
1312         changed PGM_INFO_TIMEOUT to 60 seconds because KRIV is misbehaving
1313         changed packet stats VC packet counts as vid aud under VID AUD
1314         changed packet stats field size to 9 digits for caps > 7753 seconds
1315         changed current program highlight works on spam tv entries too
1316         changed device read error EOVERFLOW increments synert SYN # w/o abort
1317         changed clock gettime to use REALTIME instead of PROCESS_CPUTIME_ID
1318         changed load config to fix user issue with length of ptc list
1319         changed PGM to VC in program guide, sort field hilite more noticable
1320         changed set channel, getsignal can use dvb, v4l2 or v4l1
1321         changed driver 2.0 removed/reduced getsig timeouts = faster scan test
1322         changed R on bottom line for RRT, stats red PMT indicates RC
1323         changed dump cap log MPEG PID list requires -l, reduces normal logging
1325         fixed -W, added missing credits, updated ATSC status comments above
1326         fixed twitchy cursor, output redux audit in mgt, vct, epg and cap log.
1327         fixed comments for gcc -ansi compile audit
1328         fixed resize term redraws program guide instead of kicking out
1329         fixed pgo method to select vc for offset instead of src
1330         fixed pg sort+add timer put wrong timer in. build pg pgm then sort it
1331         fixed FOX out of order EITs with dup avoid and default sort now ETMID
1332         fixed move timer to destination while destination in info cap
1333         fixed device not open when startup goes immediately to test guides
1334         fixed journal filesystem no longer causes FIFO full. flushes better.
1335         fixed hold down EIT parse until at least one VCT seen. Multi-VC fix.
1336         fixed move current timer to new card didn't stop info cap, does now.
1337         fixed timer list cleared before new timers in load config
1338         fixed missing volatile type declarations in fifo structure
1339         fixed scan freq hold down call reduction issues, slashed scan_freq=0
1340         fixed master guide display lost ETT header when ETT0 missing: KTMD fix
1341         fixed sleep times for various guides to use much less cpu
1342         fixed all build payloads overflow when near table payload limit
1343         fixed show cap log to remove ? in log during user input, again
1344         fixed -r mode allows multiple runs, fixes names and rewinds file
1345         fixed -r mode gets fifo full when sleep removed. 10x+ realtime now.
1346         fixed signal scan timing problems when siglock not set
1347         fixed 1.0-rc9 todo: show all channels to allow timer trigger
1348         fixed 1.0-rc9 todo: -S looks OK on aterm now
1349         fixed load config and test guides hold down prevent -S mode conflict
1350         fixed display bug on STT +- and inhibit display of +0
1352         removed cap_pgm because it was irritating
1353         removed NTSC from program guide entries to avoid bogus dynamic timers
1354         removed inconsistent sig% and obsolete V4L items from signal display
1356         updated comments to reflect latest changes and testing results
1358         tested on 24k baud ssh: not too bad after optimizations.
1360         STILL BROKEN:
1362             2nd overlapping timer does not change channel or close output
1363             validate config is where it should toss overlaps.
1365                 I changed show timers to put IGNORE on those overlaps,
1366                 so you can see them better and decide what to do yourself.
1368           WORKAROUNDS: Avoid doing what causes it to fail.
1370 -------------------------------------------------------------------------------
1372    1.0-rc9 20050721
1373         fixed compilation error with gcc 2.96, huffman *d++ to d++
1374         fixed -S by moving fifo calloc to top of main
1375         fixed dump guide html doctype, but may scrap it for cgi-bin method
1376         fixed -b for unlimited EPG load for long QoS check per user request
1377         fixed ? keyhelp stays on screen until timer, per user request
1378         fixed xterm DEL/BS stops guide load or manual cap per user request
1379         fixed show cap log error color indications per user request
1380         fixed ATSC MAX CHAN enforces ATSC channel limit, plus cleanups to use
1381         fixed VCT display blank after channel change
1382         fixed show cap stat to allow test guide override, -b unlimited EPG load
1383         fixed channel list clears screen to remove timers
1384         fixed test guides aborts if timer starts
1385         fixed [z] key zap stops [i] key test guides, BKSP skips to next station
1387         added Quick Start text examples at top of file per many user requests
1388         added RRT payload build/test for CRC32 for QoS only, no parse
1389         changed -o to use exact filename and not rename/delete previous.
1390               this was done at user request for FIFO support
1392 TODO    DONE fix channel display to honor timers, not ignore all timers.
1393         don't leave in full channel scan display, add a timer or hit [TAB].
1395 TODO    DONE fix '?'s in capture log during user input, extra gettime
1397 TODO    fix -S so it looks/works better under aterm, looks ok on vc or xterm
1399 -------------------------------------------------------------------------------
1401     1.0-rc8 20050622
1402         testing with 2.6.12 + pcHDTV ATSC 2.0 driver, but dvb still broken.
1403         fixed no VCT, but MGT+EIT, uses vc[] PAT+PMT for EIT program number.
1404         fixed MGT versioning rebuilds MGT and PG, fixes MG/PG display errors.
1405         fixed EIT erases obsoleted part of epg. during EIT for PG clean-up.
1406         fixed guide timeout did not time out during [i] auto guide test.
1407         fixed mini aos bog much less with some sleeps and fewer loops.
1408         fixed invalid channel hotkey does not select channel 0
1409         fixed -r fails fifo write with fifo full when file not found. freaky.
1410         fixed vct display component name had junk text from missing nul
1411         changed VCT allow display of guide saved vc[] as PMT
1412         changed save load guide handles vc[] for minimal VCT display to work
1413         changed dump guide .txt has month and day to handle more than 7 days
1414         changed dump guide no description if same as event name
1415         added [n] key in program guide shows pgo with etmids
1416         added html output for program guide. 3 char SID.png for network logo.
1417         removed left over r = from atscut testing in huffman decode
1419 -------------------------------------------------------------------------------
1421     1.0-rc7 20050613
1422         fixed with versioning, CPU usage reduced to as low as pre-ATSC versions
1423         fixed capture is spiking CPU to 15%: better console sleep handling
1424         fixed MGT VCT EIT ETT PAT and PMT version checking, finally
1425         fixed VCT and PMT always list video first to put audio(s) on 1-x
1426         fixed VCT display showing alternating values for Program and PIDs
1427         fixed PMT sometimes not getting captured, added PMT build cap pids
1428         fixed fallback to MPEG w/o ATSC PSIP gets the program numbers correct
1429         fixed OLDEST BUG: BLUE SCREENS XINE: clear stale fifo data before cap
1430         fixed QOS fail should reschedule/remove same as AOS, not stay ACTIVE
1431         fixed get pgm timer add: didn't stop info cap if timer current
1432         fixed AOS fail+timer resched/rm does not resort/draw timers immediately
1433         fixed continuity counter code. handles all but AFC DI. yay finally
1434         fixed program guide display bug that was making Program VC MPEG blink
1435         fixed multi-packet VCT typo making section length incorrect
1436         fixed channel hotkey A-Z not loading guide for new channel
1437         fixed event sid no longer displays lagged from channel hotkey
1438         fixed info cap and PSIP guides (EPG VCT MGT) exit on timer start/stop
1439         fixed -r dummy.ts. partly done, but no replay twice. good nuf for now
1440         fixed channel list not overwritten with timer list, but no scroll yet
1441         fixed most * payload to be consistent with current testing of atscut
1442         fixed VCT display was swapping and blinking on some stations
1443         fixed VCT display order matches PMT ES PID order and descriptors
1444         fixed? sometimes have to hit 'l' twice, a timeout is not being reset?
1446         changed find cap pid single VC extract PID count to 4 to include PAT
1447         changed in_guide to in_psip for any psip guide kick-out at timer start
1448         changed packet stats display method to reduce annoying flicker via ssh
1449         changed status ALN (same as SYN) to CC continuity counter error count
1450         changed help text that didn't reflect latest changes in -rc6, -rc7
1451         changed TEVM + STT display to always display during capture
1452         changed various * lines to user lines for all scrollable displays
1453         changed old stream test needs leniency on 1 reserved EIT bit. odd.
1454         changed CEL to end of pkt status lines to reduce flicker in xterms
1455         changed SCI to turn off cursor more often, but uses SCV for input
1456         changed arg zapper to zap at 90% QOS, maybe needs to be 95%
1457         changed and enabled program guide colors for shows within 12 hours
1458         changed VCT detail level reduced, use [d] key to expand
1459         changed dump cap stats to not log if outside valid elapsed time range
1460         changed dump cap stats to not log PIDs if QOS below 99% (logjunk avoid)
1461         changed dump cap stats to not log if program guide cap (logjunk avoid)
1462         changed dump cap stats to not log useless list of ATSC PIDs
1463         changed address of Free Software Foundation to reflect new offices
1465         added Huffman tables and huffman decode routine. yay! eats CPU?
1466         added RRT as built-in table, parse rrt needs Huffman decode :>
1467         added [f] key for capture log of current/last capture
1468         added MPEG2 descriptors to [v] VCT display, use [d] key in [v] VCT
1469         added ISO 639 lang parse to PMT parse to handle no VCT found
1470         added parse PAT & PMT to fill in common parts of vc[] if no VCT found
1471         added PMT descriptors to vc[] for VCT detail display
1472         added -W virtual console support via screen if available
1473         added Closed Captioning and event rating, aka v-chip, description text
1474         added [p] resets guide filters to allow [usually bogus] guide display
1475         added program guide [n] key to toggle etmid detail text/numeric display
1476         added -R option to attach screen session
1477         added more console resize support for virtual consoles
1478         added red R to left of TEVM and red PMT to indicate RC
1479         added ts capture pthread version so test guides could call it
1480         added [Home] key for guide to get to start of description text fast
1481         added wrapper ts capture to start ts capture loop pthread
1482         added test guides to main thread now that ts cap has own thread
1483             (try it out with [i] key until it is automatic)
1485 TODO    add separate ts cap init code from ts cap loop code for neatness
1488     Notes for 1.0-rc7 release:
1489             Lots of extra details to see and not a few bugfixes.
1491             Should be more compliant with ATSC specifications in regards
1492         to handling stations that stop sending PSIP and revert to MPEG only.
1494             [v] key VCT selection now works with VCT and PAT+PMT, so you
1495         may use timername.pgm even when PAT+PMT are only tables seen.
1497             Should also be more compliant with ATSC specifications in regards
1498         to handling Huffman text decompression. A/65b says 'must' support, so
1499         this code does it whenever mss text comp=1 or 2. (KPXB fix)
1501             Timer start or stop should kick any of the guides back to the
1502         timer list so you can see what is being done and any errors.
1504 -------------------------------------------------------------------------------
1506     1.0-rc6 20050415
1507         fixed bug in stat off that didn't redraw all timers after stat off
1508         fixed move timer to handle volatile timers with different format
1509         fixed payload bug causing CRC mangling, tables not counted correctly
1510         fixed purge stale data in driver buffer with multiple get syncs
1511         fixed guide exits when timer starts and times out after a minute
1512         fixed guide capture is overridden and cancelled by timer start
1513         fixed capture aborts when no signal or signal too low
1514         fixed broken cap stats from -rc5 with missing info during user input
1515         fixed guide timer name too long caused loss of timer name .pgm
1516         fixed do not save/load volatile timers that have expired
1517         fixed zap removes volatile timer from config so it won't persist
1518         fixed reschedule removes volatile timer from config so it won't persist
1519         fixed program guide doesn't add past TIMER_LIST_MAX
1520         fixed last timer delete still onscreen, ^L refresh shows not there
1521         fixed old bug: spring DST chg doesn't break config, fall may be ok too
1522         fixed old bug: timer does not loop on AOS fail, reschedule or expires
1523         fixed old bug: timer reschedule cancels capture if any in progress
1524         fixed old bug: load config should not load identical timers
1525         fixed or tried to: startup during timer didn't set channel. puzzling.
1526         fixed user submitted bug: use .ts for all files for external player
1527         fixed user submitted bug: file modes too strict, using 0666 instead
1528         fixed user submitted bug: out path not used for some timer types
1530         changed show program guide to handle display of above 999 minutes
1531         changed channel change resets VC capture flags and PID list
1532         changed console function key scan to ignore bogus keys better
1533         changed volatile timer gets sorted before same non volatile timeslot
1534         changed build cap pids for VCT audio select or default to first audio
1535         changed VCT and MGT display to handle scrolling of a more detailed list
1536         changed console scan to handle up down right left pgup pgdn for timers
1537         changed timer maximum is now 256. [=] ['] keys to scroll, like guide
1538         changed timer display to handle up to 999 timers, like guide
1539         changed timer and program display to compensate for stats onscreen
1540         changed get next reschedule only goes 7 days ahead instead of looping
1541         changed save cfg to handle timers with DST different from time now
1542         changed program guide to show which channel the guide has stored
1543         changed program guide to show descriptions beyond 160 chars; limit 255
1544         changed fifo output to exclude program guide cap write to disk
1545         changed cap status to reflect program guide load in progress
1546         changed program guide 't' to allow daybits for recurring timers
1547         changed program guide ignores zap threshold, guide tries bad rx
1548         changed 'p' to display program guide only, load with 'l' now
1549         changed dump cap stats added Mb/s field, rearranged packet stats
1550         changed dump cap stats to exclude program guide cap status log write
1551         changed post timer check to stop cap if info cap time near next timer
1552         changed timer reschedule to handle any timer instead of timer 0
1553         changed packet status to not display VC pids if ALL
1554         changed keyhelp to reflect new keys/meanings
1555         changed event status (bottom left) to be more descriptive
1557         added range to get pgm timer add
1558         added set virtual channel from vct
1559         added function keys: arrows and edit keys for scrolling
1560         added get timer reschedule with range for manual pre-empt reschedule
1561         added find last program to set guide file mtime for guide age out
1562         added build tvct text, removed duplicates from test vct, faster now
1563         added hotkey to channel checks for saved program guide and loads it
1564         added save and load guide for each station, with guide text dump
1565         added info cap checks some conditions to time out guide load
1566         added attempts to auto-correct if MGT version stays 0xFF
1567         added MPEG2 adaptation field test for MPEG2 payload handling
1568         added -l logs bad CRC that slipped past TEI check. short packets wtf
1569         added -S scans for signals and optionally builds a crude config file
1570         added more detail to show vct and made it scrollable for cable
1571         added more detail to show mgt and made it scrollable for cable
1572         added audio select to show vct for manual select but not in timers yet
1573         added 'r'eque for non-cap mode to manually reschedule pre-empted events
1574         added FILE_PERMS from user request to set permissions mode to 0666
1575         added timer duplicate remove load/pgm timer add, but user can still set
1576         moved cap stats data collection to fifo output loop to avoid dropouts
1578         renamed test_ to parse_ where it actually parses stream
1579         reduced aos to bare minimum code at start of capture
1580         
1581     Notes for 1.0-rc6 release:
1582             Most of the clunk has been fixed but some remains in VC select.
1583         Have to select [c] before you can select [a], or manual first-VC cap.
1585             Biggest UI improvement is arrow keys and pg up/dn keys work now,
1586         but you still have =[]' scroll keys in case you have chiclet keyboard.
1588             NOTE: signal scan being enabled will slow down timer scroll.
1590             All the screens are scrollable now, except channel list, including
1591         MGT and VCT lists that are also more detailed in the descriptions.
1592         MGT also shows live update of the tables during capture.
1594             Still a few quirks, but no segfaults.
1595         
1596     TODO DONE
1597         Only things left to do before I'm completely happy with it:
1598             Automatic guide load        ( [l] key is manual full guide load )
1599             Automatic event reschedule  ( [r] or [c] key is manual reschedule )
1600             Audio select for timers by name ( [v] [c] X [a] Y is manual select
1601                 where X is VC# and Y is Audio ES# within stream. Real CLUNKY! )
1603         These three may not be done before -rc6 goes out. The logic puzzles.
1605         Released to the wild. Bad bugs discovered after release:
1606             [z] zap immediately on cap start makes dump cap stats go nuts
1607             [p] program guide does not exit as claimed when timer starts
1609 -------------------------------------------------------------------------------
1611     1.0-rc5 20050314
1612         fixed show cap stats at start of cap giving stale values until update
1613         fixed output redux one shot on status change or status color change
1614         fixed test sync/packet to check the 21st packet when alignment is 0
1615         fixed alignment problem after X restart and buffer overrun. doh!
1617         changed [ENTER] now caps first valid VC. use \ for full ATSC cap
1618         changed FIFO align method, HD2000 handles X restarts without desync
1619         changed 'p' SNR display key to 'w', 'p' now for Program Guide!
1620         changed key signal scan toggle is now channel hotkey
1621         changed cap time display uses easier to read colors for digits
1622         changed SECOL to timer->secdt: calc secdt early end for timer BROKEN
1623         changed check timers to start 3 seconds early for longer AOS check
1624         changed fifo full does not exit: logs and sets cap fail type now
1625         changed card ID display to reflect card type+dtv# and V4L level
1626         changed ts cap goes to timer display when cap starts, to get user attn
1627         changed last file out status indicates reason for fail, if not ok
1628         changed in-program help screen to reflect new keys and colorized
1629         changed all float to double
1630         changed dump cap stats:
1631             use packet test code instead of custom driver vague LED check:
1632               added detailed stats about the stream for error determination
1633               changed indication of transport error severity per second
1634               appends to /var/log/dtv[0-3], no more *.stat file
1635               moved from -l option back to default scope, seems useful now
1636         changed show cap stats:
1637             more informative error stats during capture
1639         changed driver again (optional via -x):
1640             HD2000:
1641               signal scan split to v4l1:v4l2 code:
1642                 v4l1 faster, near 38 scans/second, makes -x LED update faster
1643                  NOTE: v4l1 gives RS indicator on strong sig where V4L2 doesn't
1644                 v4l2 method copies faster HD3000 method, w/o Rx Status AGC flag
1645                 v4l2 is slower than v4l1 but gives less vary in signal value
1646             HD3000:
1647               cx88-atsc.c changed:
1648                 changed Receiver Status timeout delay to 4 instead of 3
1649                     trying to get rid of occasional 55% getsigstr val lockup
1651         removed jivo and all gtk code. try a different method. maybe freevo.
1652         removed custom driver cap test LED code, test packet works better
1653         removed vary display. 's' & dump cap stats gives detailed reports.
1655         moved show KB LED status under -x scope, but still fakes for HD3000
1657         added ATSC and MPEG parsing. Bugs still exist:
1658             afc3 payload not parsed. No afc2 found in local streams.
1659             afc1 payloads handled well enough, but memcpy more than needed.
1660             This maybe affects statistics, short-changes a few error counts.
1662         added volatile timers to load save cfg to keep program guide selections
1663         added keys 'v' VCT 'g' MGT 'p' EIT/ETT Program Guide!
1664         added 's' key stream detail display to show every packet stat counted
1665         added 'e' key for elapsed/user time toggle, for how long timer has run
1666         added -r replay file mode, dummy mode, read parm or dummy.ts
1667         added -k Klutz-Guardo console input disable, keeps fatfingers away
1668         added -A option to set system time from stream time:
1669                 this does not currently work right because:
1670                   local stations do not synchronize to the same time.
1671         added signal scan time quantified for aos 120 tries or 4 seconds
1672         added volume has no space error should terminate the program:
1673                 FIXME: it's broken, doesn't terminate.
1674         added one shot timer redraw of color status change in next 24 hours
1675         added cap fail status abbreviations to indicate why cap failed
1676         added lltoasc to display large vals w/ commas; strdup=free after use
1677         added CRC32 function for ATSC tables from atscut.c. More robust now!
1678         added VC PID to vc[] and test mpeg packet for stream splitting
1680         audited timer total and space calc to verify correct display:
1681             It looks wrong, if you don't realize programs set to overwrite
1682             calc as a single length. Shows with $ or # calc multiple lengths.
1683             So no moth here, only the limits on how programs counted.
1685         Released to the wild.
1687         UPDATE: whoops, too early it seems, since it's buggy and clunky.
1688         
1689 -------------------------------------------------------------------------------
1691     1.0-rc4 20050117
1692         rewrote get sync, old method was obtuse and not robust, missed shows!
1693           caused: added test sync for sync error and minimal transport check
1694         fixed override timer to remove/reschedule the overridden timer
1695         fixed CLI -s load cfg, -s has 1 non option chan arg, -s no stdin
1696         fixed CLI find cfg parse of -c arg cfg path
1697         changed console scan to allow more UI during cap, disabled for -s
1698         changed show cap stats, updates timer list, finally
1699         changed 'k' keep to 'o' override timer
1700         changed jivo to show one signal bar instead of all [WIP]
1701         changed timer cap sets sets scan channel to next timer chan
1702         changed add/delete timer saves timer config, change/reset timer doesn't
1703         removed V4L2 signal strength from V4L1 driver return and parse
1704         moved SCHED FIFO before sync check to prevent buffer overruns
1705         moved dump cap stat to be within -l scope
1706         added close/open device at end of cap to prevent last buffer overrun
1707         added test packet for use by test sync and fifo output minimal check
1708         added more one shots to reduce excessive calls, from gprof analysis
1709         added 'c' change timer, adjusts running or queued timers [WIP]
1710         added test sync to fifo output loop. stream monitor, no editing
1711         added header line for capture status superfluous blinky lights
1712         added for multicard: 'm' moves timer from current cfg to another,
1713          caused: changed move timer and save cfg ignores timers w/o day bit
1714                  changed load cfg to not reset/load temp timers w/o day bit
1715         testing:
1716              2.6.7:  ok for both HD2000 and HD3000 V4L1, partial V4L2
1717              2.4.26: ok for HD2000, but kernel issues with HD3000 module load.
1718                     I don't have HD3000 working yet on 2.4.26, HD2000 is ok,
1719                     but if you do, pchdtvr should see it and use it.
1721 -------------------------------------------------------------------------------
1723     1.0-rc3 20041230
1724         fixed 't' timer, 'd' delete, resets tsvc/vt & fixed prompt + headers
1725         fixed -t only disables initial timer load, not all future loads
1726         fixed sig scan always shows NLK after 'x' clear
1727         fixed empty timer list prompt in wrong place at wrong time
1728         fixed user req: variable len callsign and net id.
1729         fixed jivo to work with latest cosmetics
1730         changed top left 0,0 displays version+email then last cap status
1731         changed dump cap stats to show fileout from filein, 1 line w/o -x
1732         changed kb LEDs need -x, as falls under hd2000 extras category
1733         changed blank virtual LED indicators when scan off
1734         changed manual cap is green, timer cap is red
1735         changed some commentary updated to current methods
1736         added preliminary V4L2 API, seems broken or know how to use issues
1737         tested with linux kernel 2.6.10: made driver 1.5 suspend/resume nop
1740     1.0-rc2 20041224
1741         fixed jivo for use with stock driver. forgot to test it -rc1. sorry :>
1742         added commentary segmentation to gtk refresh. ordering needs work.
1743         added -t to not load timers when config file loaded, for those days
1744           when antenna tests are more fun than watching re-runs.
1745         added error msg to alert which config file could not be found
1747             2 card, HD2000 + HD3000, testing 1.5 drivers, so far looks GREAT!
1748             I doubt my machine can test 4 cards to a single hard drive.
1749             But I might get another hard drive and let you know.
1750             UPDATE 2005-Jan-17: works fine, 4 cards to single drive. WHEE!
1751             
1752 -------------------------------------------------------------------------------
1754     1.0-rc1 20041222
1755         fixed deleting last timer on list left timer on console, now erased
1756         fixed timer headers always display when in timer screen
1757         removed args for channels, uses config file Cx lines instead now
1758         removed all (19+) -2/+2 chanadj by adding 0,1 to ptc[],
1759         audited snprintf and strncpy to use sizeof(dest)-1 where needed
1760         changed load/save config: 'Tx' timerlist 'Cx' scanlist channels
1761         changed key for clear timers to '~' to reduce accidents
1762         changed key for input config to '|' to reduce accidents
1763         changed key for config write to '+' to reduce accidents
1764         changed cap leds allocation to 8 hours
1765         added device autodetect, autoconfig select, can still override with -i
1766         added card# to log display and console header display
1767         added strength & peak to 'x' clear
1769         Send to Jack & Rusty after verifying against unmodified 1.5 driver,
1770          and against my patches for instrumentation. All works ok so far.
1772 -------------------------------------------------------------------------------
1773 pchdtvr - on the road to 1.0
1775     pre9-1.0  20041220
1776         removed fine tune setting and keys because no observed benefit to ATSC
1777         changed -i to take numeric (0-3) or /dev/dtv# argument
1778         changed default config file to /etc/pchdtvr.0.conf: 0 = card #
1779         changed signal strength display to simplify, use 'p' to cycle extras
1780         changes to variables and text to reflect SNR/AGC instead of post/pre-EQ
1781         added multi-card support: HD3000 + HD2000; finally got my HD3000s!
1782         added -x optional instrumentation support video_signal.aux extension
1783         added to get signal lock: more conditionals for HD3000 signal support
1786     pre8-1.0  20041213
1787         changes to match instrumentation driver video_signal.aux extension
1788         changed aos log format to show decimal % of signal strength
1789         added use of VIDIOCGCAP to set is_hd2k based on device name
1790         added preliminary HD3000 support via conditional is_hd2k
1793     pre7-1.0  20041108
1794         changed timer/free status, add space to end to get rid of ))
1795         changed fileout name status, remove path
1798     pre6-1.0  20041026
1799         changed RMS log for AGC, removed avg
1800         changed file remove log to reflect user zap vs automatic delete
1801         changed compile info at top because someone reported needing -lm
1802         changed console exit to not remove renamed
1805     pre5-1.0  20040913 Are you ready for some football?
1806         NFL fix, added 'k' to switch capture to manual mode for game overrun
1809     pre4-1.0  20040902
1810         cap fails sometimes: collect/log AOS data for all 15 tuning attempts
1811           log format: Bb, repeated 15 times, for 30 chars
1812           B is high nyb of post, 0-A is bad, B C D E are in good signal range
1813           b is . no error, E RS fail, L lock fail, X both
1815         creates .stat signal log file for each cap, ~78 bytes per minute of cap
1816           file is created at end of capture, with summary lock/error info.
1819     pre3-1.0  20040822
1820         better indication of no lock reason in signal scan.
1821         jivo checks DISPLAY envar being set before checking for gtk.
1824     pre2-1.0  20040820
1825         CAP LED blinks during capture, cycle is 2 seconds.
1826         NUM LED echoes green Lock LED, cap once per second, more during scan.
1827         SCR LED echoes red Error LED, cap once per second, more during scan.
1828         jivo reflects err on status line to indicate red Error LED.
1830         keyboard LEDs use more flexible console ioctl instead of VT ESC codes.
1831           You will not have any LED control if you start from X,
1832             but it's only for knowing what console is doing, without
1833             having to actually switch to it to see what it's doing.
1835     NOTE: 'reset' if your LEDs don't respond to respective keys.
1838     pre1-1.0  20040819
1839         Changes to get it ready for 1.0:
1840         Error and Carrier LED indicators in console, scan or capture.
1841         Capture abort if Error LED on too long (TESTME:)
1842         Compiles and works the same on gcc2/kernel2.4 and gcc3/k2.6,
1843             hopefully, using the drivers you will find at:
1844                 http://www.nop.org/inkling/dtv/kernel/ *-pchdtvr.tgz
1848     0.9z-pre1-1.0 20040525-20040817
1849         minor tweaks, keys & help & usage, default capture dir is . now.
1850         changed -c to be config path and -s to be capture seconds, makes sense.
1851         
1852         0.9z is the candidate for 1.0, but GTK2 issues, i.e. crashes if X does.
1853         Recover from X crash/kill somehow via msg, signal, whatever so
1854           GTK2 panel can be shut down properly and not crash console.
1855           (Update: NOT GOING TO BE DONE. It seems IMPOSSIBLE to do, too.)
1857         Final console issue before 1.0-pre is No Carrier or Reed Solomon Error
1858           should cause the capture to abort, rather than capture bad stream.
1859           Abort should happen only if Error is set for at least one minute.
1861     NOTE:
1862         X fault-tolerant GTK2 panel restart is a dead end for now.
1864         Recovery scrapped because recovering from X death seems impossible.
1865         Trapping SIGPIPE on X terminate did help, but not much. Without a
1866         method to de-alloc and re-init GTK2 structures, fault-tolerant
1867         gtk panel looks hopeless, or I'm not imaginative enough.
1869 -------------------------------------------------------------------------------
1870 pchdtvr - a bunch of silly stuff trying to find road to 1.0
1872 0.9z 20040525 add scan fine tune keys: - -125kc , = +125kc, 0 reset, useful?
1873  (NOTE: tuner gets FM mono, for grins, but not very useful at 4x step)
1875 0.9y 20040521 chg console 'g' doesn't crash after X dies? nope, still broken
1876 0.9x 20040514 fix gtk controls; capture reschedule stop zap; strength bars colored
1877 0.9w 20040511 add gtk control panel; remove sigacts
1878 0.9v 20040503 add snr avgs, 'x' clears; display fixups
1879 0.9u 20040501 add sig re-routes, chan sig 21-26; add surf-experiment; fix dump
1880 0.9t 20040430 fix find cfg, sig27 status dump, mkdir out_path, save_cfg
1882 0.9s 20040428 permission to use "pchdtvr" granted, code listed on pchdtv.com
1883 0.9s 20040428 fix sig_init, fifo_*_loop w/ sigaction; fix limit sigs to pid_m
1885 -------------------------------------------------------------------------------
1886 pchdtvr - a name that is more specific to the application, pending permission
1888 0.9r 20040427 add sig_init/ctl, find cfg, detach w/timers; update usage etc
1889 0.9q 20040426 quick fix usage/keyhelp for bad programming style. whoops.
1890 0.9p 20040425 add show signal; del redundants, vt redux; show timers redux;
1891 0.9o 20040424 fix [] at first/last, [] lock; del ch fr sid cfg; display redux
1892 0.9n 20040423 fix set sched outside loop; getopt finally; 1.0 is soon
1893 0.9m 20040422 fix val_cfg now ages timers right, no timer shuffle at start
1894 0.9l 20040421 fix testmode, bad hk:, []td keys; add set sched; ts cap con/clk
1895 0.9k 20040420 fix syslog /0: user start/stop <1s; fix zap, remove()+msgs
1896 0.9j 20040416 add sigpeaks chanlist, 'x' to clear peaks; % and bar fixes
1897 0.9i 20040413 chg stay on last chan rec; timer/channel list tweaks
1898 0.9h 20040409 chg free stats; keys: p sigraw, S sigtimeout, d deltimer
1899 0.9g 20040408 add some cron support: syslog, still needs fprintf replaced
1900 0.9f 20040407 chg display days as 1st char; fix 'r'eque/remove active timer
1901 0.9e 20040404 fix reschedule validate_config; add hilites, free space, headers
1902 0.9d 20040403 del overwrite w/o trunc: gives fifo full; add sigscan timeout
1903 0.9c 20040402 chg 'l' key timer display; toggle 1chan+timers or chans+sig
1904 0.9b 20040401 del debug msgs; cleanups; add fs_free to timer totals
1905 0.9a 20040331 del obsoletes, ntsc mode, always use multi-threads
1906 0.9  20040331 add validate_config: inits timers/day; fixes/smooth reload
1908 -------------------------------------------------------------------------------
1909 hdvr - high definition video recorder
1911 0.8p 20040330 chg timer logic kludges for validate_config
1912 0.8o 20040329 chg dst time shift indicated with - +; ldcfg at dst chg
1913 0.8n 20040325 chg 'i' forces ldcfg; ldcfg post rec; len+3s adjust svcfg
1914 0.8m 20040323 chg msg colors: redux; man rec whi; timer today grn, rec red
1915 0.8l 20040318 add timers total, minutes total and gigabytes required total
1916 0.8l 20040315 chg sync, define RESYNC; rename/delete; some timers age out
1917 0.8k 20040313 del some debug msgs; chg manual save format to NET.ts
1918 0.8j 20040312 chg resync method; TIMER_LIST_MAX larger but needs dyn alloc
1919 0.8i 20040311 add stat check to reload cfg file if mtime changes
1920 0.8h 20040310 fix use_2threads & use_sched: xine play fifo full fail fixed?
1921 0.8g 20040309 chg msgs: mhz; set manual capture tuner colors, total timers
1922 0.8f 20040307 chg xine file_input.c O_STREAMING = 100% cpu, removed patch
1923 0.8e 20040305 fix multi fifo calloc & moved to main to alloc vm at start
1924 0.8d 20040304 fix timer capture overlap: len - 3sec for tuner setup
1925 0.8c 20040302 chg some routines broken down into smaller pieces
1926 0.8b 20040301 add sig struct; obsoleted fifo->ready, was old method
1927 0.8a 20040229 add timer sort to put next/current timer at top
1928 0.8  20040227 fix reschedule logic, add load/save cfg, TIMER_LIST_MAX+4, fifo full bughunt
1930 0.7c 20040227 add reschedule weekday bitmask; reset timer scrapped for now
1931 0.7b 20040226 add weekday bitmask input, timer display rearrange for it
1932 0.7a 20040225 fix fifo output sleeping on wrong bench, rousted the bum
1933 0.7  20040223 fix timer bugs, finish add use_2threads, both need testing
1935 -------------------------------------------------------------------------------
1936 dsr - digital signal recorder
1938 0.6  20040221 add timers, 8 daily only right now, by all weekdays is goal.
1939 0.5  20040219 add fifo in thread, needs tuning, cc prev to J.S.Kelliher
1940 0.4  20040217 add ECMA48/VT102 color/cursor, ch pre/nxt/sel keys [/]/1-9
1941 0.3  20040216 fix ingo fifo, works well now, ~2% or less cpu
1943 0.2b 20040215 chg to ingo oeser fifo idea @ linux-audio-dev@music.columbia.edu
1944 0.2a 20040214 add 1st gen fifo, my own bad code, didn't work well
1945 0.2  20040213 test slightly better but still stream corruption, no fifo
1946 0.1  20040211 test first version, didn't work well at all, stream corrupted