1 Fxtv (BSD X TV)
2 Version 1.03
3
4 Written by Randall Hopper
5
6 URL: http://www.freebsd.org/~rhh/fxtv
7
81. PREPARATION
9
101.1 HARDWARE
11
12 To use this application, you need a video capture/tuner card
13 that's based on the Brooktree 848 capture chip, such as one of the
14 Hauppauge Wincast/TV or Win/TV cards, the STV TV PCI card, or the
15 Intel Smart Video Recorder III. See the BSD Bt848 driver page for
16 details:
17
18 http://telepresence.dmem.strath.ac.uk/bt848
19
201.2 THE DEVICE DRIVER
21
22 Once you have the hardware, you need the FreeBSD Brooktree 848
23 (bktr) driver. This version of fxtv uses the bt848.970604 driver, a
24 slightly modified version of the bt848.970424 which has better support
25 for the FPS ioctl call for running-video captures and throttled
26 display rate.
27
28 Normally, recent driver versions can be found at:
29
30 http://telepresence.dmem.strath.ac.uk/bt848
31
321.3 BUILD-TIME DEPENDENCIES
33
34 - A BSD OS (FreeBSD, NetBSD, OpenBSD, or BSDI)
35 - bktr driver
36 - tiff-3.3
37 - Xaw3d-1.3
38 - xpm-3.4j
39 - gmake-3.75
40 - XFree (tested on v3.2 and higher)
41 - VoxWare snd driver (3.0-beta-950506)
42
431.4 RUN-TIME DEPENDENCIES
44
45 - netpbm-94.3.1 (for tifftopnm)
46 - sox-12.12 (Audio Stream Conversions)
47 - mpeg_encode-1.5b (MPEG Video Encoder)
48 - dist10.tar.gz (MPEG Audio Encoder)
49 - mpg123 (MPEG Audio Player)
50 - mplex-1.1 (Mixes MPEG Audio/Video Streams into a
51 single MPEG System Stream)
52
53 Though not used by fxtv directly, you may find these useful as well:
54
55 - mtv (MPEG Video & System Stream Player - Fast!)
56 - mpeg_play-2.3 (MPEG Video Player)
57
58 Most of these are existing FreeBSD packages. The exceptions are
59 dist10, mtv, and mpg123. See Appendix A for info on how to get,
60 build, and install dist10. mtv is a Linux utility that can be had
61 from:
62
63 http://www.mpegtv.com/player.html
64
65 and mpg123 source is available at:
66
67 http://www.sfs.nphil.uni-tuebingen.de/~hipp/mpg123.html
68
69 Building it is a snap.
70
71
721.5 BUILDING AND INSTALLING FXTV
73
74 Installing the port is more desirable because you can then just
75 pkg_delete it when you want to upgrade to the next version.
76
77 1. Install the port
78
79 > tar -zxovf fxtv-<version>-port.tgz
80 > cd fxtv
81 > su
82 # make install
83
84 OR
85
86 2. Installing from the source package
87
88 > tar -zxovf fxtv-<version>.tgz
89 > cd fxtv-<version>
90 > gmake
91 > su
92 # gmake install
93
94 NOTE FOR FXTV USERS NOT RUNNING XFREE: Specify "HAVE_XFREE86=NO"
95 on the make command line to compile-out support for XFree86-specific
96 features. For example, when installing from the port:
97
98 # make HAVE_XFREE86=NO install
99
1001.6 CUSTOMIZING FXTV
101
102 Modifying Fxtv's default behavior can be accomplished in one of two
103 ways: 1) modifying the Fxtv X resources (see the sample Fxtv resource
104 file, or 2) specifying command-line options.
105
106 Note that the command-line options in most cases have the same names
107 as the X resources. Refer to the delivered global Fxtv resource file
108 for resource file examples, and run:
109
110 fxtv -help
111
112 to display all the supported command-line options:
113
114 -driverDefaults - Use appearance parms from driver on startup
115 -colorbars - Turn on colorbar display (for testing)
116 -hue [-90...90] - Initial Hue ; def=0
117 -brightness [-50..50] - Initial Brightness (%); def=0
118 -contrast [0..200] - Initial Contrast (%); def=100
119 -satU [0..200] - U Saturation (%); def=100
120 -satV [0..284] - V Saturation (%); def=100
121 -fps <#> - Display Speed (frames per second)
122 -noaspectlock - Disable 4:3 aspect lock on video window
123
124 -deviceNumber <#> - bktr/tuner device numbers; def=0
125 -inputFormat [pal|ntsc] - Tuner signal input format
126 -tunerMode [cable|antenna] - Tuner Mode
127 -defaultInput <input> - Startup tuner signal input
128 [tuner|video|svideo|csvideo|dev3]
129 -defaultAudioInput <input> - Startup TV card audio input
130 [tuner|external|internal|auto]
131 -defaultChannel <#> - Startup Channel Number
132 -cableStationList <...> - List of cable stations presets(see rsrc file)
133 -antennaStationList <...> - List of antenna stations presets
134 -cableFreqSet <freqset> - Freq set for cable (def = cableirc)
135 [nabcst|cableirc|cablehrc|weurope|
136 jpnbcst|jpncable|xussr|australia|france]
137 -antennaFreqSet <freqset> - Freq set for antenna (def = nabcst)
138
139 -noAudio - Suppress playing audio through soundcard
140 -dspDevice - Override default DSP device (/dev/dsp)
141 -mixerDevice - Override default mixer device (/dev/mixer)
142 -mixerChannel - Audio mixer (line,line1/2/3,cd,mic,video)
143
144 -stationInWinTitle - Display station text in window title
145 -stationInWinIcon - Display station text in window icon
146
147 -stationAnnotFont <fontpat> - Font pattern for station annot (see rsrcfile)
148 -stationAnnotColor <color> - Color for station annot
149 -stationAnnotDelay <msec> - How long to display (0 = never; -1 = always)
150 -stationAnnotIDOnly - Display station ID alone (when available)
151
152 -remoteType - Type of attached remote control
153 [None|X10|Hauppauge|PixelView]
154
155 -recCmdMpeg2 - MPEG-2 Audio record command
156 -recCmdMpeg3 - MPEG-3 Audio record command
157 -playCmdMpeg2 - MPEG-2 Audio play command
158 -playCmdMpeg3 - MPEG-3 Audio play command
159
160 -videoCnvtScript - Video convers workhorse script for vid encod.
161
162 -bswap2Bpp - Byte/word swap options for direct video
163 -nobswap2Bpp (used to match driver's pixel format with
164 -bswap3Bpp the video card's)
165 -nobswap3Bpp
166 -bswap4Bpp 2Bpp - 15/16-bpp modes
167 -nobswap4Bpp 3Bpp - packed 24bpp modes
168 -bwwap4Bpp 4Bpp - unpacked 24bpp modes
169 -nowswap4Bpp
170
171 -Bpp24bit [3|4] - Set frame buff Bytes-per-pixel for 24bpp mode
172 -Bpp32bit [3|4] - Set frame buff Bytes-per-pixel for 32bpp mode
173
174 -videoCapFile[1-4] - Optional paths (0-4) to scratch file paths
175 to use for vid capt; spread load across disks
176
177 -noafc - Disable AFC
178 -disableDirectV - Disable DMA transfers straight to video card
179 -debug <area> - Debug Msgs
180 {startup,subproc,events,subproc,video,frame}
181 -help - Display program options
182
183
1841.6.1 CUSTOMIZING STATION PRESETS
185
186 ---INTRODUCTION:---
187
188 Fxtv supports two tuner modes: "cable" and "antenna". Each of these
189 two modes can be assigned a frequency set, which determines the
190 frequency-to-channel-number mapping for the tuner mode (which are set
191 via the antennaFreqSet and cableFreqSet resources). The frequency set
192 you choose for each tuner mode will depend on where you live and who
193 your NTSC or PAL signal providers are. For example, in the US (NTSC),
194 you probably want to use:
195
196 Fxtv.antennaFreqSet: nabcst
197 Fxtv.cableFreqSet: cableirc
198
199 As with any standard NTSC or PAL TV or VCR, Fxtv supports "station
200 preset lists" for each tuner mode (cable and antenna), which
201 effectively define the hot-list of stations you will be surfing.
202 Station preset lists are specified via the:
203
204 Fxtv.antennaStationList: <preset list>
205 Fxtv.cableStationList: <preset list>
206
207 resources.
208
209 Here's how Fxtv models preset lists: Each <preset> in a <preset list>
210 is associated with a specific <channel-num> or a specific <frequency>.
211 Optionally, each <preset> may be also associated with a <station-id>,
212 which is a convenience name used to refer to the station preset
213 (e.g. "E10","ITD",... for the PAL folks; or "FOX","CBS",... for the US
214 folks).
215
216 When specified, <station-id>s can be used for keying-in station changes
217 and will also be displayed on the Fxtv window to reflect the current
218 station. Whether <station-id>s are specified or not, <channel-num>s
219 and <frequency>s can be used to key-in station changes, and will be
220 used for display in the absense of a <station-id>.
221
222 If you associate a preset with a <channel-num>, when the preset is made
223 active, that channel number is passed to the Bt848 driver which in-turn
224 maps it to a frequency (using the frequency set you configured for that
225 tuner mode). This frequency is used to configure the tuner.
226
227 If, on the other hand, you associate a preset with a <frequency>, the
228 frequency itself is passed to the Bt848 driver, bypassing its
229 channel-to-freq conversion. Again, this frequency is used to configure
230 the tuner.
231
232 Specifying a station in terms of its frequency can be useful when the
233 driver doesn't have an accurate channel-to-freq mapping for all
234 of the stations used in your area.
235
236
237 ---SYNTAX:---
238
239 With that preamble, here's the Fxtv syntax for encoding a <preset list>:
240
241 <preset list> := [<preset>|<preset-chan-range>] ...
242 <preset> := <channel-num>
243 F<frequency>
244 <station-id>(<channel-num>)
245 <station-id>(F<frequency>)
246 <preset-chan-range> := <channel-num>-<channel-num>
247 <channel-num> := a positive integer
248 <frequency> := a floating point number, in MHz
249
250 Note that <station-id>s are treated as case insensitive.
251
252 ---EXAMPLES:---
253
254 And here are some StationList examples:
255
256 1) Fxtv.antennaStationList: ITA(f471.25) ITC(15) E32(21) 22-24 99
257 2) Fxtv.antennaStationList: 3 ABC(5) PBS(f169.00) 83(f61.25)
258 3) Fxtv.cableStationList: 3-5 19-21 23
259
260 In the first example, the station-id "ITA" is associated with the
261 frequency 471.25 Mhz (with this, either "ITA" or "f471.25" may be used
262 to key-in a station change to this station). The station ID "ITC" is
263 associated with channel "15" in the frequency set configured for the
264 "antenna" tuner mode. "E32" is associated with channel "21". And
265 the channels 22, 23, 24, and 99 are also defined without explicit
266 station IDs (and thus the station-ids are defaulted to be the channel
267 numbers themselves). The first example is equivalent to the following
268 resource definition:
269
270 Fxtv.antennaStationList: ITA(f471.25) ITC(15) E32(21) 22(22) \
271 23(23) 24(24) 99(99)
272
273 The second example is like the first. Notice station-id 83 though.
274 With station IDs you can override the default channel-num-to-frequency
275 mappings (or put some into place where they didn't exist before -- the
276 more likely case). And yes, you can also drive yourself nuts by
277 remapping channel numbers to other channel numbers if you want
278 (e.g. "3(5) 5(3)" seemingly swaps channels 3 and 5).
279
280 Note that these examples are a bit contrived just to demonstrate the
281 syntax. For instance, you probably won't associate station presets
282 directly with frequencies unless the driver doesn't have channel
283 presets for all the stations you receive. When the driver does have
284 the needed channel presets, with AFC on and presets associated with
285 channel numbers, the tuner will usually be able to zero-in on the
286 station if its slightly off of the channel frequency (the same as if
287 you define a preset with a frequency that's slightly off).
288
2891.6.2 CHANGING STATIONS
290
291 Fxtv provides several ways for the user to change stations:
292
293 1) Station Up/Down Arrow Buttons (on taskbar)
294 2) Station Text Widget Key-in (on taskbar)
295 3) Video Window Key-ins
296 4) Video Window Action Routines
297
298 The Station Up & Down buttons are straightforward. These move through
299 your predefined station list for the currently selected tuner mode in
300 the direction indicated by the button icon.
301
302 The Station Text Key-in allows you to change to any predefined station
303 or arbitrary channel number or frequency. Acceptable values are:
304
305 1) the station IDs you've defined in your station list,
306 2) channel numbers, and
307 3) frequencies (prefix with "F" when entering).
308
309 Examples: "E1", "FOX", "23", "f61.25".
310
311 Video Window Key-in allows you to type in channel numbers directly on
312 top of the video window. The format is the same as with the text
313 key-in, except that station ID entry should be prefixed by "C". This
314 is for compatibility with action routines. Examples: "cE1", "cFOX",
315 "23", "f61.25".
316
317 And finally, Video Window Action Routines provide the user a way to
318 redefine the keys on their keyboard to change stations the way the user
319 prefers when the X pointer is over the video window. Station changes
320 may be specified both relative to the current station, or absolutely
321 (by specifying a station ID, channel number, or frequency). An example
322 first, followed by explanation:
323
324 Fxtv*videoWin.translations: #override \
325 <Key>+ : TVSetStation( +1 ) \n\
326 <Key>- : TVSetStation( -1 ) \n\
327 <Key>KP_Add : TVSetStation( +1 ) \n\
328 <Key>KP_Subtract : TVSetStation( -1 ) \n\
329 <Key>F6 : TVSetStation( FOX ) \n\
330 <Key>F7 : TVSetStation( 23 ) \n\
331 <Key>F8 : TVSetStation( f61.25 ) \n\
332 <Key>F9 : TVSetStation( -f ) \n\
333 <Key>F10 : TVSetStation( +f ) \n
334
335 The first 4 bind both pairs of "+" and "-" keys to perform relative
336 station changes. The 5th defines F6 to set the station to the one with
337 the station ID "FOX". The 6th defines F7 to change to the station to
338 channel 23 (assuming no station with an ID of "23" exists, in which
339 case it would take precedence). The 7th defines F8 to change station
340 to a frequency of 61.25 MHz. And the last two bind F9 and F10 to
341 increment and decrement frequency in small increments.
342
343 Note that "no-op()" has been registered as a valid action routine
344 for convenient unbinding of translations.
345
346 Having read 1.6.1 and customized your station presets (key in: "ITC" or
347 "15").
348
349
3501.6.3 CONFIGURING A REMOTE CONTROL
351
352 At this time, the X10 MouseRemote, Hauppauge, and PixelView remote
353 controls are supported.
354
3551.6.3.1 X10-SPECIFIC CONFIGURATION
356
357 Both stand-alone and system-mouse pass-through configuration are
358 supported in X. Both require an updated version of moused (see
359 moused(8)), which has support for the X10 MouseRemote.
360
361 My moused patch for X10 remote support is included with this verions of
362 Fxtv, though it may already be incorporated into your moused. You can
363 determine whether it has by running moused as follows:
364
365 moused -p /dev/cuaa0 -t x10mouseremote -3
366
367 substituting the path to the serial port your mouse is attached to
368 in place of /dev/cuaa0. If you see:
369
370 moused: no such mouse type `x10mouseremote'
371
372 It hasn't and you need to rebuild moused with the patch. Get it here:
373
374 http://www.freebsd.org/~rhh/fxtv/moused.x10remote.patch
375
376 And apply it like this:
377
378 # cd /usr/src/usr.sbin/moused
379 # patch < moused.x10remote.patch
380 # make
381
382 Now you're ready to go. Kick off moused on the MouseRemote serial
383 port (if you haven't already). For example, if your MouseRemote is
384 plugged into COM1 (cuaa0):
385
386 moused -p /dev/cuaa0 -t x10mouseremote -3
387
388 You may just want to configure this into your rc.conf so it's run each
389 time you boot up.
390
391 Next, insert these lines in your Fxtv resource file:
392
393 Fxtv.remoteType: X10
394
395 You're ready to use your remote control! Run Fxtv and play around with
396 it to make sure things are working. If you have trouble,
397 run "fxtv -debug remote" to see whether fxtv is getting any remote
398 events.
399
4001.6.3.2 HAUPPAUGE-SPECIFIC CONFIGURATION
401
402 Simply insert these lines in your Fxtv resource file:
403
404 Fxtv.remoteType: Hauppauge
405
406 and you're ready to use your remote control! Run Fxtv and play around
407 with it to make sure things are working. If you have trouble, run
408 "fxtv -debug remote" to see whether fxtv is getting any remote events.
409
4101.6.3.3 PIXELVIEW-SPECIFIC CONFIGURATION
411
412 Simply insert these lines in your Fxtv resource file:
413
414 Fxtv.remoteType: PixelView
415
416 and you're ready to use your remote control! Run Fxtv and play around
417 with it to make sure things are working. If you have trouble, run
418 "fxtv -debug remote" to see whether fxtv is getting any remote events.
419
4201.6.3.4 COMMON CONFIGURATION
421
422 Now that you've played with it, you probably will want to custom
423 configure some of the buttons to behave differently than the default
424 configuration. To do so, set up the remoteTranslations resource in
425 your Fxtv resource file. You can map any button to any provided
426 Fxtv action routine, similar to the way you can for mouse events
427 and keyboard keys. For example:
428
429 ! User-defined Remote Control Translations
430 Fxtv.remoteTranslations: \
431 <Remote>ChanUp : TVSetStation( +1 ) \n\
432 <Remote>ChanDn : TVSetStation( -1 ) \n\
433 <Remote>VolUp : TVSetVolume( +1 ) \n\
434 <Remote>VolDn : TVSetVolume( -1 ) \n\
435 <Remote>Mute : TVToggleMute() \n\
436 <Remote>Disp : TVToggleZoom( fullscreen ) \n\
437 <Remote>A-B : TVSetCaptureInput( +1 ) \n\
438 <Remote>Pause : TVToggleFreeze() \n\
439 <Remote>Rec : TVVideoRecordStart() \n\
440 <Remote>Stop : TVVideoRecordStop() \n\
441 <Remote>Power : TVQuit() \n
442
443 Here is the list of <Remote> key names supported by the X10 Remote
444 (case insensitive):
445
446 Power,AllOn,PC,CD,Web,DVD,Phone,0,1,Home,2,Up,3,PgUp,4,Left,5,6,
447 Right,7,End,8,Down,9,PgDn,ENTER,VolUp,BrightUp,VolDn,BrightDn,
448 ChanUp,On,ChanDn,Off,MUTE,AllOff,A-B,DISP,PLAY,REW,FF,STOP,REC,
449 PAUSE,LAST
450
451 Here is the list of <Remote> key names supported by the Hauppauge
452 Remote (case insensitive):
453
454 0,1,2,3,4,5,6,7,8,9,Radio,Mute,Tv,VolUp,VolDn,Reserved,
455 ChanUp,ChanDn,Source,Minimize,FullScreen
456
4572.0 SAVING IMAGES -- TIPS
458
459 Fxtv now supports saving of the last frozen image to disk.
460
461 Saving in TIFF and PPM formats is supported.
462
463 Fxtv can save the pic in the filename you specify, or that filename
464 with an image number appended. The latter is useful when you want to
465 capture a lot of stills on-demand (freeze, snap, freeze, snap, ...).
466
467 The action routine TVSaveImage() is provided for binding image save to
468 keyboard key or mouse button for repetitive on-demand image captures.
469
470
4713.0 SAVING AUDIO -- TIPS
472
473 Saving audio streams to disk (and playing the resulting streams) is now
474 supported in the following formats:
475
476 RAW WAV
477 AU AIFF
478 VOC MPEG (Levels 2 & 3)
479
480 The capture sample format, frequency, and number of channels can be
481 specified as well.
482
483 RAW and AU are supported without the aid of external programs. The
484 rest require that "sox" be installed (and in the PATH).
485
486 In addition, MPEG Level 2 & 3 support also require that MPEG audio
487 encoder and player utilities be installed. The recommended player is
488 "mpg123", and the recommended encoder is the one from dist10 (see
489 RUN-TIME DEPENDENCIES above).
490
491 The MPEG player and encoder utilities are identified to Fxtv via X
492 resources in the Fxtv resource file:
493
494 ! Custom MPEG record and play commands
495 Fxtv.recCmdMpeg2: mpeg_musicin -l 2 -p 1
496 Fxtv.recCmdMpeg3: mpeg_musicin -l 3 -p 2
497 Fxtv.playCmdMpeg2: mpg123
498 Fxtv.playCmdMpeg3: mpg123
499
500 TIP: If audio save and/or play doesn't seem to be working, fxtv
501 probably can't find "sox" or the mpeg encoder/player programs.
502 Try:
503 fxtv -debug subproc
504
505 for more verbose output.
506
507
5083.0 SAVING VIDEO -- TIPS
509
510 Three useful video targets are supported:
511
512 Images
513 MPEG Ready
514 MPEG
515
516 With each, audio may optionally be saved at the same time.
517 The image format, capture resolution, capture rate, audio format, and
518 audio rate can also be specified. A simple frame rate optimizer is
519 provided as well.
520
521 Selecting the "Images" target causes Fxtv to convert the captured
522 video stream into a sequence of numbered images in the specified format.
523 If audio save is enabled, audio will be simultaneously captured, and
524 post-converted to the specified format.
525
526 Selecting the "MPEG Ready" target causes Fxtv to capture images and
527 audio as with "Images", with a few additions. The frame rate
528 is buffered to 30 frames per second, and an mpeg_encode parameter file
529 and convenience "go" shell script are created so the user is ready
530 to tweak the encoding parameters and kick it off on their own.
531
532 Finally, selecting "MPEG" is like "MPEG Ready" except that Fxtv manages
533 the entire process of running the conversion and encoding programs,
534 informing the user of the current encoding status via dialogs.
535 This is useful for grabbing video and building an MPEG as quickly and
536 simply as possible.
537
538 TIP #1 -- IF VIDEO SAVE/ENCODE DOESN'T WORK
539
540 As with audio save, if video save doesn't seem to be working,
541 try:
542 fxtv -debug subproc
543
544 TIP #2 -- MPEG_ENCODE FRAME RATE LIMITATIONS
545
546 mpeg_encode, used to convert a sequence of images into an MPEG-1
547 video stream, is limited to frame rates of:
548
549 {23.976, 24, 25, 29.97, 30, 50, 59.94, 60}
550
551 So in general you'll get better results if you choose frame rates of
552 24, 25, or 30.
553
554 TIP #3 -- OPTIMIZING FRAME RATE
555
556 First, use the "Fxtv.videoCapFile[1-4]" resources to specify up to
557 four different files to interleave raw video/audio capture to. If
558 you point these resources to paths on different disks, you'll get
559 much higher bandwidth than you would with just one disk (the default).
560
561 The "Optimize" control provided here is a first-cut and too
562 simplistic. It blasts 100 frames at 30 fps to the disk at the
563 target resolution, and (averaging across blocking disk writes) it
564 looks at how long this process took to estimate the approximate
565 frame rate your disk might sustain without long hickups.
566
567 For now, you can probably eyeball a better estimate by running fxtv
568 like this:
569
570 fxtv -debug video
571
572 and doing RAW format captures at your target resolution and frame
573 rate. Watch the output fly by in your xterm. If you see half- to
574 whole-second delay "hickups", back the frame rate off a bit and
575 repeat until you see a fairly constant "gate" in skipped frames.
576
577 TIP #4 -- DRIVER BUG
578
579 Temporal decimation doesn't work perfectly in the driver yet. As
580 before, 30 fps will work fine at any resolution. With the 970604
581 driver, FPS adjustment < 30 should work OK for single-field captures
582 (i.e. num pixel rows <= 240). However, double-field captures
583 (i.e. num pixel rows > 240) at < 30fps don't work yet, so avoid that
584 combination. With a driver rev dated pre-970604, don't even bother
585 with anything other than 30fps.
586
587
588APPENDIX A - BUILDING MPEG LAYER 2 & 3 ENCODER SOFTWARE
589
590 First, grab dist10.tar.gz from:
591
592 http://www.pagesz.net/~aa8vb/fxtv, or
593 ftp://ftp.tnt.uni-hannover.de/pub/MPEG/audio/mpeg2/software/technical_report
594
595 Then:
596
597 tar -zxovf dist10.tar.gz
598 cd dist10/lsf/encoder
599 ./configure
600 gmake
601 mv encode /usr/local/bin/mpeg_musicin
602 find tables -print | cpio -dumpv /usr/local/lib/mpegaudio
603 cd ../decoder
604 ./configure
605 gmake
606 mv decode /usr/local/bin/mpeg_musicout
607
608 and finally, put this env var setting in your profile:
609
610 MPEGTABLES=/usr/local/lib/mpegaudio/tables
611
612 NOTE: For every last pinch of speed, after each "configure", modify
613 the Makefiles and change "-O" to "-O3 -ffast-math -mfancy-math-387".
614
615 NOTE: An older version of this software is packaged as the FreeBSD
616 "mpeg_audio" port, but it doesn't like some AIFF files (byte order
617 problems), and it doesn't seem to do Level 3 audio. dist10 does.
618
619
620APPENDIX B - MINIMIZING SCREEN CORRUPTION WHEN USING DIRECT VIDEO
621
622 Disable SaveUnders and BackingStore in your Window Manager configuration
623 to minimize the occurance of stray video trash that may appear on your
624 desktop when moving and resizing the Fxtv window while Fxtv is
625 in direct video mode.
626
627 Note that you can also use the "Refresh Screen" window manager function
628 to clean up any spurious trash as well.
629
630 FWIW, the author uses the AfterStep window manager and hardly ever sees
631 stray video trash left on the desktop or another client window.
632
633APPENDEX C - LICENSING AND DISTRIBUTION DETAILS
634
635The license and distribution terms for any publically available version or
636derivative of this code cannot be changed. i.e. this code cannot simply be
637copied and put under another distribution license
638[including the GNU Public License.]
639
640______________________________________________________________________________
641______________________________________________________________________________
642
643
644Have fun!
645
646All suggestions, bug reports, fixes, and enhancements welcome. Please
647mail to multimedia@freebsd.org.
648