Some info about xbv (how to make your video a bit clearer)
Posted: Tue Sep 09, 2003 8:33 pm
I have been meaning to post this, but don't really know where to post it?
When I first installed linux on my xbox I was majorly disappointed with the video. So I went of on a mission to find out what I could do about it.
xbv is a very nice program that can do some nifty things, but isn't well documented.
One of the niftiest things it can do is directly set the connexant(spelling?) registers that control the "Flicker Filter" that your video goes through before it is output.
Basically this is used because of the way interlaced video looks flickered.
Anyway here follows a list of the conexant registers and what they do:
DIS_FFILT Bit 6–C8
0 = Enables Standard Flicker Filter. (DEFAULT)
1 = Disables Standard Flicker Filter.
ADPT_FF Bit 7–34
0 = Disable adaptive flicker filter. (DEFAULT)
1 = Enable adaptive flicker filter.
DIS_YLPF Bit 7–C8
0 = Enable Luma Initial Horizontal Low Pass filter. (DEFAULT)
1 = Disable Luma Initial Horizontal Low Pass filter.
F_SELY[2:0] Bits [2:0]–C8
Luma Standard Flicker Filter:
000 = 5 Line (DEFAULT)
001 = 2 Line
010 = 3 Line
011 = 4 Line
100 = Alternate 5 Line
101 = Alternate 5 Line
110 = Alternate 5 Line
F_SELC[2:0] Bits [5:3]–C8
Chroma Standard Flicker Filter:
000 = 5 Line (DEFAULT)
001 = 2 Line
010 = 3 Line
011 = 4 Line
100 = Alternate 5 Line
101 = Alternate 5 Line
110 = Alternate 5 Line
111 = Alternate 5 Line
111 = Alternate 5 Line
Y_ALTFF[1:0] Bits [1:0]–34
Luma alternate flicker filter selection. This bit will only have an effect when ADPT_FF is
set. Y_ALTFF should always be programmed to a value greater than or equal to F_SELY.
00 = 5 line (DEFAULT)
01 = 2 line
10 = 3 line
11 = 4 line
C_ALTFF[1:0] Bits [4:3]–34
Chroma alternate flicker filter selection. This bit will only have an effect when ADPT_FF is
set. C_ALTFF should always be programmed to a value greater than or equal to F_SELC.
00 = 5 line (DEFAULT)
01 = 2 line
10 = 3 line
11 = 4 line
Y_THRESH[2:0] Bits [2:0]–36
Controls the sensitivity or limit of turning on the alternate flicker filter for luma in adaptive
flicker filter mode. ADPT_FF bit must be set to 1 for Y_THRESH[2:0] to have any effect
(DEFAULT = 000)
C_THRESH[2:0] Bits [5:3]–36
Controls the sensitivity or limit of turning on the alternate
adaptive mode. ADPT_FF bit must be set to 1 for C_THRESH[
(DEFAULT = 0).
YSELECT Bit 6–36
This bit will only have an effect when ADPT_FF is set.
0 = Use the C_THRESH value to determine the threshold for turning on the alternate
flicker filter setting for chrominance. (DEFAULT)
1 = Use the Y_THRESH value to determine the threshold for turning on the alternate
flicker filter setting for chrominance. Both chroma and luma digital data is automatically
processed with their alternate flicker filter settings when the Y_THRESH limit is
exceeded.
FFRTN Bit 7–36
Alternate flicker filter detect and select. This bit is effective only when ADPT_FF = 1.
0 = Once the adaptive algorithm selects the alternate filter, use that filter’s coefficients for
the rest of the samples for that line. For example, the sequence could be STD/STD/ALT/
ALT/ALT; (DEFAULT)
1 = Once the adaptive algorithm selects the alternate filter, use the filter’s coefficients for
that sample only. For example, the sequence with FFRTN=1 could be STD/STD/ALT/STD/
STD.
PKFIL_SEL[1:0] Bits [5:4]–D8
Text sharpening filter. Also referred to as the luma peaking filter selection 00 = Bypass (DEFAULT)
01 = Filter 1 (1 dB gain)
10 = Filter 2 (2 dB gain)
11 = Filter 3 (3.5 dB gain)
I basically ripped these from freely available datasheets for similar (but not the same) video chips made by connexant
To have totally unblurry video at 640x480 try:
1) log in as root
2) cd /etc/xbv
3) ./xbv DIS_FFILT 1
look it's all clear, but damn it flickers!
I have found that the nicest display I can get on my bog standard pal TV is:
./xbv ADPT_FFILT 0 F_SELY 3
This looks sweet in kernel mode(Ok that probably isn't the right name, but you know what I mean), but is maybe a bit flickery when a window manager is running.
Basically for best results have a play with those registers. Also you can get xbv to give you there current values with ./xbv -d
Oh well good luck!
When I first installed linux on my xbox I was majorly disappointed with the video. So I went of on a mission to find out what I could do about it.
xbv is a very nice program that can do some nifty things, but isn't well documented.
One of the niftiest things it can do is directly set the connexant(spelling?) registers that control the "Flicker Filter" that your video goes through before it is output.
Basically this is used because of the way interlaced video looks flickered.
Anyway here follows a list of the conexant registers and what they do:
DIS_FFILT Bit 6–C8
0 = Enables Standard Flicker Filter. (DEFAULT)
1 = Disables Standard Flicker Filter.
ADPT_FF Bit 7–34
0 = Disable adaptive flicker filter. (DEFAULT)
1 = Enable adaptive flicker filter.
DIS_YLPF Bit 7–C8
0 = Enable Luma Initial Horizontal Low Pass filter. (DEFAULT)
1 = Disable Luma Initial Horizontal Low Pass filter.
F_SELY[2:0] Bits [2:0]–C8
Luma Standard Flicker Filter:
000 = 5 Line (DEFAULT)
001 = 2 Line
010 = 3 Line
011 = 4 Line
100 = Alternate 5 Line
101 = Alternate 5 Line
110 = Alternate 5 Line
F_SELC[2:0] Bits [5:3]–C8
Chroma Standard Flicker Filter:
000 = 5 Line (DEFAULT)
001 = 2 Line
010 = 3 Line
011 = 4 Line
100 = Alternate 5 Line
101 = Alternate 5 Line
110 = Alternate 5 Line
111 = Alternate 5 Line
111 = Alternate 5 Line
Y_ALTFF[1:0] Bits [1:0]–34
Luma alternate flicker filter selection. This bit will only have an effect when ADPT_FF is
set. Y_ALTFF should always be programmed to a value greater than or equal to F_SELY.
00 = 5 line (DEFAULT)
01 = 2 line
10 = 3 line
11 = 4 line
C_ALTFF[1:0] Bits [4:3]–34
Chroma alternate flicker filter selection. This bit will only have an effect when ADPT_FF is
set. C_ALTFF should always be programmed to a value greater than or equal to F_SELC.
00 = 5 line (DEFAULT)
01 = 2 line
10 = 3 line
11 = 4 line
Y_THRESH[2:0] Bits [2:0]–36
Controls the sensitivity or limit of turning on the alternate flicker filter for luma in adaptive
flicker filter mode. ADPT_FF bit must be set to 1 for Y_THRESH[2:0] to have any effect
(DEFAULT = 000)
C_THRESH[2:0] Bits [5:3]–36
Controls the sensitivity or limit of turning on the alternate
adaptive mode. ADPT_FF bit must be set to 1 for C_THRESH[
(DEFAULT = 0).
YSELECT Bit 6–36
This bit will only have an effect when ADPT_FF is set.
0 = Use the C_THRESH value to determine the threshold for turning on the alternate
flicker filter setting for chrominance. (DEFAULT)
1 = Use the Y_THRESH value to determine the threshold for turning on the alternate
flicker filter setting for chrominance. Both chroma and luma digital data is automatically
processed with their alternate flicker filter settings when the Y_THRESH limit is
exceeded.
FFRTN Bit 7–36
Alternate flicker filter detect and select. This bit is effective only when ADPT_FF = 1.
0 = Once the adaptive algorithm selects the alternate filter, use that filter’s coefficients for
the rest of the samples for that line. For example, the sequence could be STD/STD/ALT/
ALT/ALT; (DEFAULT)
1 = Once the adaptive algorithm selects the alternate filter, use the filter’s coefficients for
that sample only. For example, the sequence with FFRTN=1 could be STD/STD/ALT/STD/
STD.
PKFIL_SEL[1:0] Bits [5:4]–D8
Text sharpening filter. Also referred to as the luma peaking filter selection 00 = Bypass (DEFAULT)
01 = Filter 1 (1 dB gain)
10 = Filter 2 (2 dB gain)
11 = Filter 3 (3.5 dB gain)
I basically ripped these from freely available datasheets for similar (but not the same) video chips made by connexant
To have totally unblurry video at 640x480 try:
1) log in as root
2) cd /etc/xbv
3) ./xbv DIS_FFILT 1
look it's all clear, but damn it flickers!
I have found that the nicest display I can get on my bog standard pal TV is:
./xbv ADPT_FFILT 0 F_SELY 3
This looks sweet in kernel mode(Ok that probably isn't the right name, but you know what I mean), but is maybe a bit flickery when a window manager is running.
Basically for best results have a play with those registers. Also you can get xbv to give you there current values with ./xbv -d
Oh well good luck!