kopia lustrzana https://github.com/hoglet67/RGBtoHDMI
Genlock improvements & bug fixes
rodzic
a7ee6fc323
commit
e93500e83a
|
@ -133,7 +133,7 @@ static param_t features[] = {
|
||||||
{ F_MUX, "Input Mux", 0, 1, 1 },
|
{ F_MUX, "Input Mux", 0, 1, 1 },
|
||||||
{ F_VSYNC, "VSync Indicator", 0, 1, 1 },
|
{ F_VSYNC, "VSync Indicator", 0, 1, 1 },
|
||||||
{ F_VLOCKMODE, "VLock Mode", 0, 5, 1 },
|
{ F_VLOCKMODE, "VLock Mode", 0, 5, 1 },
|
||||||
{ F_VLOCKLINE, "VLock Line", 5, 265, 1 },
|
{ F_VLOCKLINE, "VLock Line", 0, 265, 1 },
|
||||||
#ifdef MULTI_BUFFER
|
#ifdef MULTI_BUFFER
|
||||||
{ F_NBUFFERS, "Num Buffers", 0, 3, 1 },
|
{ F_NBUFFERS, "Num Buffers", 0, 3, 1 },
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -79,12 +79,12 @@ static int elk = 0;
|
||||||
static int debug = 0;
|
static int debug = 0;
|
||||||
static int m7disable = 0;
|
static int m7disable = 0;
|
||||||
static int scanlines = 0;
|
static int scanlines = 0;
|
||||||
static int deinterlace = 0;
|
static int deinterlace = 6;
|
||||||
static int vsync = 0;
|
static int vsync = 0;
|
||||||
static int vlockmode = 0;
|
static int vlockmode = 3;
|
||||||
static int vlockline = 5;
|
static int vlockline = 5;
|
||||||
#ifdef MULTI_BUFFER
|
#ifdef MULTI_BUFFER
|
||||||
static int nbuffers = 2;
|
static int nbuffers = 0;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static int current_vlockmode = -1;
|
static int current_vlockmode = -1;
|
||||||
|
@ -550,8 +550,8 @@ int recalculate_hdmi_clock_line_locked_update() {
|
||||||
resync_count = 0;
|
resync_count = 0;
|
||||||
recalculate_hdmi_clock_once(vlockmode);
|
recalculate_hdmi_clock_once(vlockmode);
|
||||||
} else {
|
} else {
|
||||||
signed int difference = vsync_line - vlockline;
|
signed int difference = vsync_line - ((capinfo->height >> capinfo->heightx2) - vlockline);
|
||||||
if (abs(difference) > capinfo->height/4) {
|
if (abs(difference) > (capinfo->height >> capinfo->heightx2)/2) {
|
||||||
difference = -difference;
|
difference = -difference;
|
||||||
}
|
}
|
||||||
if (genlocked == 1 && abs(difference) > 2) {
|
if (genlocked == 1 && abs(difference) > 2) {
|
||||||
|
@ -1232,10 +1232,10 @@ int get_vlockmode() {
|
||||||
void set_vlockline(int val) {
|
void set_vlockline(int val) {
|
||||||
genlocked = 0;
|
genlocked = 0;
|
||||||
vlockline = val;
|
vlockline = val;
|
||||||
if (vlockline > capinfo->height/4) {
|
if (vlockline > (capinfo->height >> capinfo->heightx2)/2) {
|
||||||
default_vsync_line = 1;
|
default_vsync_line = 0;
|
||||||
} else {
|
} else {
|
||||||
default_vsync_line = capinfo->height/2;
|
default_vsync_line = (capinfo->height >> capinfo->heightx2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1384,7 +1384,11 @@ void rgb_to_hdmi_main() {
|
||||||
|
|
||||||
flags |= deinterlace << OFFSET_INTERLACE;
|
flags |= deinterlace << OFFSET_INTERLACE;
|
||||||
#ifdef MULTI_BUFFER
|
#ifdef MULTI_BUFFER
|
||||||
flags |= nbuffers << OFFSET_NBUFFERS;
|
if (!mode7 && osd_active() && (nbuffers == 0)) {
|
||||||
|
flags |= (nbuffers + 1) << OFFSET_NBUFFERS;
|
||||||
|
} else {
|
||||||
|
flags |= nbuffers << OFFSET_NBUFFERS;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
capinfo->ncapture = ncapture;
|
capinfo->ncapture = ncapture;
|
||||||
|
|
||||||
|
|
Ładowanie…
Reference in New Issue