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 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) {
|
||||
// These are Beeb specific defaults so the geometry property can be ommitted
|
||||
mode7_geometry.v_offset = 128;
|
||||
|
@ -129,8 +110,6 @@ void geometry_init(int version) {
|
|||
void geometry_set_mode(int mode) {
|
||||
mode7 = mode;
|
||||
geometry = mode ? &mode7_geometry : &default_geometry;
|
||||
update_param_range();
|
||||
|
||||
}
|
||||
|
||||
int geometry_get_value(int num) {
|
||||
|
@ -199,15 +178,12 @@ void geometry_set_value(int num, int value) {
|
|||
break;
|
||||
case FB_WIDTH:
|
||||
geometry->fb_width = value;
|
||||
update_param_range();
|
||||
break;
|
||||
case FB_HEIGHT:
|
||||
geometry->fb_height = value;
|
||||
update_param_range();
|
||||
break;
|
||||
case FB_HEIGHTX2:
|
||||
geometry->fb_heightx2 = value;
|
||||
update_param_range();
|
||||
break;
|
||||
case FB_BPP:
|
||||
geometry->fb_bpp = value;
|
||||
|
@ -260,6 +236,14 @@ void geometry_get_fb_params(capture_info_t *capinfo) {
|
|||
capinfo->bpp = geometry->fb_bpp;
|
||||
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 v_size = (*PIXELVALVE2_VERTB) & 0xFFFF;
|
||||
|
||||
|
@ -276,8 +260,7 @@ void geometry_get_fb_params(capture_info_t *capinfo) {
|
|||
v_size43 = h_size * 3 / 4;
|
||||
}
|
||||
|
||||
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 hborder = (h_size - (adjusted_width * hscale)) / hscale;
|
||||
int hborder43 = (h_size43 - (adjusted_width * hscale)) / hscale;
|
||||
|
|
10
src/osd.c
10
src/osd.c
|
@ -1332,7 +1332,7 @@ void get_props_sample_geometry(char *buffer)
|
|||
{
|
||||
char *prop;
|
||||
// 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++) {
|
||||
char *propname;
|
||||
if (m7) {
|
||||
|
@ -1352,9 +1352,7 @@ void get_props_sample_geometry(char *buffer)
|
|||
if (prop) {
|
||||
cpld->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, ",");
|
||||
int i = 0;
|
||||
while (prop2) {
|
||||
|
@ -1373,9 +1371,7 @@ void get_props_sample_geometry(char *buffer)
|
|||
log_info("cpld: %s = %d", param->name, val);
|
||||
cpld->set_value(param->key, val);
|
||||
} 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);
|
||||
}
|
||||
prop2 = strtok(NULL, ",");
|
||||
|
|
|
@ -81,7 +81,8 @@ rgb_to_fb:
|
|||
str r2, param_v_adjust
|
||||
ldr r2, [r0, #O_FB_BASE]
|
||||
str r2, param_framebuffer0
|
||||
// Sanity check chars_per_line <= fb_width / 8
|
||||
|
||||
// Sanity check chars_per_line <= fb_width
|
||||
ldr r3, param_fb_width
|
||||
lsr r3, r3, #3
|
||||
ldr r2, param_chars_per_line
|
||||
|
|
Ładowanie…
Reference in New Issue