mirror of
https://github.com/marqs85/ossc
synced 2025-04-18 19:12:40 +03:00
add passthru mode option
This commit is contained in:
parent
88026cafa2
commit
46a4f4450f
@ -89,6 +89,7 @@ typedef struct {
|
|||||||
alt_u8 pm_480i;
|
alt_u8 pm_480i;
|
||||||
alt_u8 pm_480p;
|
alt_u8 pm_480p;
|
||||||
alt_u8 pm_1080i;
|
alt_u8 pm_1080i;
|
||||||
|
alt_u8 pt_mode;
|
||||||
alt_u8 l2_mode;
|
alt_u8 l2_mode;
|
||||||
alt_u8 l3_mode;
|
alt_u8 l3_mode;
|
||||||
alt_u8 l4_mode;
|
alt_u8 l4_mode;
|
||||||
|
@ -24,10 +24,10 @@
|
|||||||
#include "sysconfig.h"
|
#include "sysconfig.h"
|
||||||
|
|
||||||
#define FW_VER_MAJOR 1
|
#define FW_VER_MAJOR 1
|
||||||
#define FW_VER_MINOR 9
|
#define FW_VER_MINOR 10
|
||||||
|
|
||||||
#define PROFILE_VER_MAJOR 1
|
#define PROFILE_VER_MAJOR 1
|
||||||
#define PROFILE_VER_MINOR 6
|
#define PROFILE_VER_MINOR 10
|
||||||
|
|
||||||
#define INITCFG_VER_MAJOR 1
|
#define INITCFG_VER_MAJOR 1
|
||||||
#define INITCFG_VER_MINOR 0
|
#define INITCFG_VER_MINOR 0
|
||||||
|
@ -55,6 +55,7 @@ static const char *s480p_mode_desc[] = { LNG("Auto","オート"), "DTV 480p", "V
|
|||||||
static const char *s400p_mode_desc[] = { "VGA 640x400@70", "VGA 720x400@70" };
|
static const char *s400p_mode_desc[] = { "VGA 640x400@70", "VGA 720x400@70" };
|
||||||
static const char *sync_lpf_desc[] = { LNG("2.5MHz (max)","2.5MHz (サイダイ)"), LNG("10MHz (med)","10MHz (チュウイ)"), LNG("33MHz (min)","33MHz (サイショウ)"), LNG("Off","オフ") };
|
static const char *sync_lpf_desc[] = { LNG("2.5MHz (max)","2.5MHz (サイダイ)"), LNG("10MHz (med)","10MHz (チュウイ)"), LNG("33MHz (min)","33MHz (サイショウ)"), LNG("Off","オフ") };
|
||||||
static const char *stc_lpf_desc[] = { "4.8MHz (HDTV/PC)", "0.5MHz (SDTV)", "1.7MHz (EDTV)" };
|
static const char *stc_lpf_desc[] = { "4.8MHz (HDTV/PC)", "0.5MHz (SDTV)", "1.7MHz (EDTV)" };
|
||||||
|
static const char *pt_mode_desc[] = {"Normal", "High samplerate", LNG("512x240 optim.","512x240 サイテキカ."), LNG("384x240 optim.","384x240 サイテキカ."), LNG("320x240 optim.","320x240 サイテキカ."), LNG("256x240 optim.","256x240 サイテキカ.") };
|
||||||
static const char *l3_mode_desc[] = { LNG("Generic 16:9","ジェネリック 16:9"), LNG("Generic 4:3","ジェネリック 4:3"), LNG("512x240 optim.","512x240 サイテキカ."), LNG("384x240 optim.","384x240 サイテキカ."), LNG("320x240 optim.","320x240 サイテキカ."), LNG("256x240 optim.","256x240 サイテキカ.") };
|
static const char *l3_mode_desc[] = { LNG("Generic 16:9","ジェネリック 16:9"), LNG("Generic 4:3","ジェネリック 4:3"), LNG("512x240 optim.","512x240 サイテキカ."), LNG("384x240 optim.","384x240 サイテキカ."), LNG("320x240 optim.","320x240 サイテキカ."), LNG("256x240 optim.","256x240 サイテキカ.") };
|
||||||
static const char *l2l4l5l6_mode_desc[] = { LNG("Generic 4:3","ジェネリック 4:3"), LNG("512x240 optim.","512x240 サイテキカ."), LNG("384x240 optim.","384x240 サイテキカ."), LNG("320x240 optim.","320x240 サイテキカ."), LNG("256x240 optim.","256x240 サイテキカ.") };
|
static const char *l2l4l5l6_mode_desc[] = { LNG("Generic 4:3","ジェネリック 4:3"), LNG("512x240 optim.","512x240 サイテキカ."), LNG("384x240 optim.","384x240 サイテキカ."), LNG("320x240 optim.","320x240 サイテキカ."), LNG("256x240 optim.","256x240 サイテキカ.") };
|
||||||
static const char *l5_fmt_desc[] = { "1920x1080", "1600x1200", "1920x1200" };
|
static const char *l5_fmt_desc[] = { "1920x1080", "1600x1200", "1920x1200" };
|
||||||
@ -178,6 +179,7 @@ MENU(menu_output, P99_PROTECT({ \
|
|||||||
{ LNG("480i/576i proc","480i/576iショリ"), OPT_AVCONFIG_SELECTION, { .sel = { &tc.pm_480i, OPT_WRAP, SETTING_ITEM(pm_480i_desc) } } },
|
{ LNG("480i/576i proc","480i/576iショリ"), OPT_AVCONFIG_SELECTION, { .sel = { &tc.pm_480i, OPT_WRAP, SETTING_ITEM(pm_480i_desc) } } },
|
||||||
{ LNG("480p/576p proc","480p/576pショリ"), OPT_AVCONFIG_SELECTION, { .sel = { &tc.pm_480p, OPT_WRAP, SETTING_ITEM(pm_480p_desc) } } },
|
{ LNG("480p/576p proc","480p/576pショリ"), OPT_AVCONFIG_SELECTION, { .sel = { &tc.pm_480p, OPT_WRAP, SETTING_ITEM(pm_480p_desc) } } },
|
||||||
{ LNG("960i/1080i proc","960i/1080iショリ"), OPT_AVCONFIG_SELECTION, { .sel = { &tc.pm_1080i, OPT_WRAP, SETTING_ITEM(pm_1080i_desc) } } },
|
{ LNG("960i/1080i proc","960i/1080iショリ"), OPT_AVCONFIG_SELECTION, { .sel = { &tc.pm_1080i, OPT_WRAP, SETTING_ITEM(pm_1080i_desc) } } },
|
||||||
|
{ "Passthru mode", OPT_AVCONFIG_SELECTION, { .sel = { &tc.pt_mode, OPT_WRAP, SETTING_ITEM(pt_mode_desc) } } },
|
||||||
{ LNG("Line2x mode","Line2xモード"), OPT_AVCONFIG_SELECTION, { .sel = { &tc.l2_mode, OPT_WRAP, SETTING_ITEM(l2l4l5l6_mode_desc) } } },
|
{ LNG("Line2x mode","Line2xモード"), OPT_AVCONFIG_SELECTION, { .sel = { &tc.l2_mode, OPT_WRAP, SETTING_ITEM(l2l4l5l6_mode_desc) } } },
|
||||||
{ LNG("Line3x mode","Line3xモード"), OPT_AVCONFIG_SELECTION, { .sel = { &tc.l3_mode, OPT_WRAP, SETTING_ITEM(l3_mode_desc) } } },
|
{ LNG("Line3x mode","Line3xモード"), OPT_AVCONFIG_SELECTION, { .sel = { &tc.l3_mode, OPT_WRAP, SETTING_ITEM(l3_mode_desc) } } },
|
||||||
{ LNG("Line4x mode","Line4xモード"), OPT_AVCONFIG_SELECTION, { .sel = { &tc.l4_mode, OPT_WRAP, SETTING_ITEM(l2l4l5l6_mode_desc) } } },
|
{ LNG("Line4x mode","Line4xモード"), OPT_AVCONFIG_SELECTION, { .sel = { &tc.l4_mode, OPT_WRAP, SETTING_ITEM(l2l4l5l6_mode_desc) } } },
|
||||||
|
@ -135,7 +135,12 @@ int get_pure_lm_mode(avconfig_t *cc, mode_data_t *vm_in, mode_data_t *vm_out, vm
|
|||||||
{
|
{
|
||||||
int i, diff_lines, diff_v_hz_x100, mindiff_id=0, mindiff_lines=1000, mindiff_v_hz_x100=10000;
|
int i, diff_lines, diff_v_hz_x100, mindiff_id=0, mindiff_lines=1000, mindiff_v_hz_x100=10000;
|
||||||
mode_data_t *mode_preset;
|
mode_data_t *mode_preset;
|
||||||
mode_flags valid_lm[] = { MODE_PT, (MODE_L2 | (MODE_L2<<cc->l2_mode)), (MODE_L3_GEN_16_9<<cc->l3_mode), (MODE_L4_GEN_4_3<<cc->l4_mode), (MODE_L5_GEN_4_3<<cc->l5_mode), (MODE_L6_GEN_4_3<<cc->l6_mode) };
|
mode_flags valid_lm[] = { (MODE_PT | (cc->pt_mode ? (MODE_L5_GEN_4_3<<(cc->pt_mode-1)) : 0)),
|
||||||
|
(MODE_L2 | (MODE_L2<<cc->l2_mode)),
|
||||||
|
(MODE_L3_GEN_16_9<<cc->l3_mode),
|
||||||
|
(MODE_L4_GEN_4_3<<cc->l4_mode),
|
||||||
|
(MODE_L5_GEN_4_3<<cc->l5_mode),
|
||||||
|
(MODE_L6_GEN_4_3<<cc->l6_mode) };
|
||||||
mode_flags target_lm, mindiff_lm;
|
mode_flags target_lm, mindiff_lm;
|
||||||
uint8_t pt_only = 0;
|
uint8_t pt_only = 0;
|
||||||
uint8_t upsample2x = cc->upsample2x;
|
uint8_t upsample2x = cc->upsample2x;
|
||||||
@ -243,6 +248,10 @@ int get_pure_lm_mode(avconfig_t *cc, mode_data_t *vm_in, mode_data_t *vm_out, vm
|
|||||||
|
|
||||||
mindiff_lm &= mode_preset->flags; //ensure L2 mode uniqueness
|
mindiff_lm &= mode_preset->flags; //ensure L2 mode uniqueness
|
||||||
|
|
||||||
|
// Set passthru flag for all passthru mode options
|
||||||
|
if (*group_ptr[mode_preset->group] == 0)
|
||||||
|
mindiff_lm = MODE_PT;
|
||||||
|
|
||||||
if (mindiff_lm >= MODE_L6_GEN_4_3)
|
if (mindiff_lm >= MODE_L6_GEN_4_3)
|
||||||
vm_conf->y_rpt = 5;
|
vm_conf->y_rpt = 5;
|
||||||
else if (mindiff_lm >= MODE_L5_GEN_4_3)
|
else if (mindiff_lm >= MODE_L5_GEN_4_3)
|
||||||
@ -258,6 +267,13 @@ int get_pure_lm_mode(avconfig_t *cc, mode_data_t *vm_in, mode_data_t *vm_out, vm
|
|||||||
case MODE_PT:
|
case MODE_PT:
|
||||||
vm_out->vic = vm_in->vic;
|
vm_out->vic = vm_in->vic;
|
||||||
|
|
||||||
|
if ((cc->pt_mode == 1) && ((mode_preset->group >= GROUP_384P) && (mode_preset->group <= GROUP_576P))) {
|
||||||
|
vmode_hv_mult(vm_in, 2, 1);
|
||||||
|
vmode_hv_mult(vm_out, 2, 1);
|
||||||
|
} else if ((cc->pt_mode >= 2) && (mode_preset->group >= GROUP_240P) && (mode_preset->group <= GROUP_288P)) {
|
||||||
|
vm_conf->x_rpt = vm_conf->h_skip = cc->pt_mode;
|
||||||
|
}
|
||||||
|
|
||||||
// multiply horizontal resolution if necessary to fulfill min. 25MHz TMDS clock requirement. Tweak infoframe pixel repetition indicator later to make sink treat it as original resolution.
|
// multiply horizontal resolution if necessary to fulfill min. 25MHz TMDS clock requirement. Tweak infoframe pixel repetition indicator later to make sink treat it as original resolution.
|
||||||
while ((((vm_out->timings.v_hz_x100*vm_out->timings.v_total)/100)*vm_out->timings.h_total*(vm_conf->h_skip+1))>>vm_out->timings.interlaced < 25000000UL) {
|
while ((((vm_out->timings.v_hz_x100*vm_out->timings.v_total)/100)*vm_out->timings.h_total*(vm_conf->h_skip+1))>>vm_out->timings.interlaced < 25000000UL) {
|
||||||
vm_conf->x_rpt = vm_conf->h_skip = 2*(vm_conf->h_skip+1)-1;
|
vm_conf->x_rpt = vm_conf->h_skip = 2*(vm_conf->h_skip+1)-1;
|
||||||
|
Loading…
Reference in New Issue
Block a user