kopia lustrzana https://github.com/hoglet67/RGBtoHDMI
remove update_param_range() clipping, replace with silent clipping
rodzic
0bd9863a00
commit
e7c680fdfd
|
@ -63,25 +63,6 @@ static geometry_t default_geometry;
|
||||||
static geometry_t mode7_geometry;
|
static geometry_t mode7_geometry;
|
||||||
static int scaling = 0;
|
static int scaling = 0;
|
||||||
|
|
||||||
static void update_param_range() {
|
|
||||||
int max;
|
|
||||||
// Set the range of the H_WIDTH param based on FB_WIDTH
|
|
||||||
max = geometry->fb_width;
|
|
||||||
params[H_WIDTH].max = max;
|
|
||||||
if (geometry->h_width > max) {
|
|
||||||
geometry->h_width = max;
|
|
||||||
}
|
|
||||||
// Set the range of the V_HEIGHT param based on FB_HEIGHT
|
|
||||||
max = geometry->fb_height;
|
|
||||||
|
|
||||||
params[V_HEIGHT].max = max;
|
|
||||||
if (geometry->v_height > max) {
|
|
||||||
geometry->v_height = max;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void geometry_init(int version) {
|
void geometry_init(int version) {
|
||||||
// These are Beeb specific defaults so the geometry property can be ommitted
|
// These are Beeb specific defaults so the geometry property can be ommitted
|
||||||
mode7_geometry.v_offset = 128;
|
mode7_geometry.v_offset = 128;
|
||||||
|
@ -129,8 +110,6 @@ void geometry_init(int version) {
|
||||||
void geometry_set_mode(int mode) {
|
void geometry_set_mode(int mode) {
|
||||||
mode7 = mode;
|
mode7 = mode;
|
||||||
geometry = mode ? &mode7_geometry : &default_geometry;
|
geometry = mode ? &mode7_geometry : &default_geometry;
|
||||||
update_param_range();
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int geometry_get_value(int num) {
|
int geometry_get_value(int num) {
|
||||||
|
@ -199,15 +178,12 @@ void geometry_set_value(int num, int value) {
|
||||||
break;
|
break;
|
||||||
case FB_WIDTH:
|
case FB_WIDTH:
|
||||||
geometry->fb_width = value;
|
geometry->fb_width = value;
|
||||||
update_param_range();
|
|
||||||
break;
|
break;
|
||||||
case FB_HEIGHT:
|
case FB_HEIGHT:
|
||||||
geometry->fb_height = value;
|
geometry->fb_height = value;
|
||||||
update_param_range();
|
|
||||||
break;
|
break;
|
||||||
case FB_HEIGHTX2:
|
case FB_HEIGHTX2:
|
||||||
geometry->fb_heightx2 = value;
|
geometry->fb_heightx2 = value;
|
||||||
update_param_range();
|
|
||||||
break;
|
break;
|
||||||
case FB_BPP:
|
case FB_BPP:
|
||||||
geometry->fb_bpp = value;
|
geometry->fb_bpp = value;
|
||||||
|
@ -260,6 +236,14 @@ void geometry_get_fb_params(capture_info_t *capinfo) {
|
||||||
capinfo->bpp = geometry->fb_bpp;
|
capinfo->bpp = geometry->fb_bpp;
|
||||||
capinfo->px_sampling = geometry->px_sampling;
|
capinfo->px_sampling = geometry->px_sampling;
|
||||||
|
|
||||||
|
if (capinfo->chars_per_line > (geometry->fb_width >> 3)) {
|
||||||
|
capinfo->chars_per_line = geometry->fb_width >> 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (capinfo->nlines > geometry->fb_height) {
|
||||||
|
capinfo->nlines = geometry->fb_height;
|
||||||
|
}
|
||||||
|
|
||||||
uint32_t h_size = (*PIXELVALVE2_HORZB) & 0xFFFF;
|
uint32_t h_size = (*PIXELVALVE2_HORZB) & 0xFFFF;
|
||||||
uint32_t v_size = (*PIXELVALVE2_VERTB) & 0xFFFF;
|
uint32_t v_size = (*PIXELVALVE2_VERTB) & 0xFFFF;
|
||||||
|
|
||||||
|
@ -277,7 +261,6 @@ void geometry_get_fb_params(capture_info_t *capinfo) {
|
||||||
}
|
}
|
||||||
|
|
||||||
int adjusted_width = mode7 ? geometry->h_width * 4 / 3 : geometry->h_width; // workaround mode 7 width so it looks like other modes
|
int adjusted_width = mode7 ? geometry->h_width * 4 / 3 : geometry->h_width; // workaround mode 7 width so it looks like other modes
|
||||||
|
|
||||||
int hscale = h_size43 / adjusted_width;
|
int hscale = h_size43 / adjusted_width;
|
||||||
int hborder = (h_size - (adjusted_width * hscale)) / hscale;
|
int hborder = (h_size - (adjusted_width * hscale)) / hscale;
|
||||||
int hborder43 = (h_size43 - (adjusted_width * hscale)) / hscale;
|
int hborder43 = (h_size43 - (adjusted_width * hscale)) / hscale;
|
||||||
|
|
|
@ -1332,7 +1332,7 @@ void get_props_sample_geometry(char *buffer)
|
||||||
{
|
{
|
||||||
char *prop;
|
char *prop;
|
||||||
// Initialize the CPLD sampling points
|
// Initialize the CPLD sampling points
|
||||||
for (int p = 0; p < 3; p++) { //reads geometry twice to workaround limiting problem
|
for (int p = 0; p < 2; p++) { //reads geometry twice to workaround limiting problem
|
||||||
for (int m7 = 0; m7 <= 1; m7++) {
|
for (int m7 = 0; m7 <= 1; m7++) {
|
||||||
char *propname;
|
char *propname;
|
||||||
if (m7) {
|
if (m7) {
|
||||||
|
@ -1352,9 +1352,7 @@ void get_props_sample_geometry(char *buffer)
|
||||||
if (prop) {
|
if (prop) {
|
||||||
cpld->set_mode(m7);
|
cpld->set_mode(m7);
|
||||||
geometry_set_mode(m7);
|
geometry_set_mode(m7);
|
||||||
if (p != 1) {
|
|
||||||
log_info("config.txt: %s = %s", propname, prop);
|
log_info("config.txt: %s = %s", propname, prop);
|
||||||
}
|
|
||||||
char *prop2 = strtok(prop, ",");
|
char *prop2 = strtok(prop, ",");
|
||||||
int i = 0;
|
int i = 0;
|
||||||
while (prop2) {
|
while (prop2) {
|
||||||
|
@ -1373,9 +1371,7 @@ void get_props_sample_geometry(char *buffer)
|
||||||
log_info("cpld: %s = %d", param->name, val);
|
log_info("cpld: %s = %d", param->name, val);
|
||||||
cpld->set_value(param->key, val);
|
cpld->set_value(param->key, val);
|
||||||
} else {
|
} else {
|
||||||
if (p != 1) {
|
|
||||||
log_info("geometry: %s = %d", param->name, val);
|
log_info("geometry: %s = %d", param->name, val);
|
||||||
}
|
|
||||||
geometry_set_value(param->key, val);
|
geometry_set_value(param->key, val);
|
||||||
}
|
}
|
||||||
prop2 = strtok(NULL, ",");
|
prop2 = strtok(NULL, ",");
|
||||||
|
|
|
@ -81,7 +81,8 @@ rgb_to_fb:
|
||||||
str r2, param_v_adjust
|
str r2, param_v_adjust
|
||||||
ldr r2, [r0, #O_FB_BASE]
|
ldr r2, [r0, #O_FB_BASE]
|
||||||
str r2, param_framebuffer0
|
str r2, param_framebuffer0
|
||||||
// Sanity check chars_per_line <= fb_width / 8
|
|
||||||
|
// Sanity check chars_per_line <= fb_width
|
||||||
ldr r3, param_fb_width
|
ldr r3, param_fb_width
|
||||||
lsr r3, r3, #3
|
lsr r3, r3, #3
|
||||||
ldr r2, param_chars_per_line
|
ldr r2, param_chars_per_line
|
||||||
|
|
Ładowanie…
Reference in New Issue