From 1249a61edf13075a8a4e1d21d985dd072b475448 Mon Sep 17 00:00:00 2001 From: TangoCash Date: Sat, 19 Nov 2022 11:09:01 +0100 Subject: [PATCH] add option to rotate PiP clockwise/counterclockwise --- data/locale/deutsch.locale | 4 +++ data/locale/english.locale | 4 +++ src/gui/keybind_setup.cpp | 8 +++++ src/gui/keybind_setup.h | 2 ++ src/gui/pipsetup.cpp | 28 +++++++++++++--- src/gui/pipsetup.h | 1 + src/gui/videosettings.cpp | 2 +- src/neutrino.cpp | 65 ++++++++++++++++++++++++++++++++++++-- src/neutrino.h | 3 ++ src/system/locals.h | 4 +++ src/system/locals_intern.h | 4 +++ src/system/settings.h | 15 +++++++++ src/zapit/src/zapit.cpp | 3 +- 13 files changed, 134 insertions(+), 9 deletions(-) diff --git a/data/locale/deutsch.locale b/data/locale/deutsch.locale index 44ff34690..2e201620b 100644 --- a/data/locale/deutsch.locale +++ b/data/locale/deutsch.locale @@ -520,6 +520,8 @@ extra.key_pic_mode Bildschirmformat extra.key_pic_size 4:3 Anzeigeverhalten extra.key_pip_close Stop/Start PiP extra.key_pip_close_avinput Stop/Start PiP (HDMI) +extra.key_pip_rotate_cw Bewegen im Uhrzeigensinn +extra.key_pip_rotate_ccw Bewegen gegen Uhrzeigersinn extra.key_pip_setup PiP Konfiguration extra.key_pip_swap Umschalten PiP/live extra.key_record Aufnahme @@ -1448,6 +1450,8 @@ menu.hint_key_pageup Weisen Sie eine Taste für das Hochblättern zu menu.hint_key_pic_mode_active Die Taste für das Bildschirmformat deaktivieren/aktivieren menu.hint_key_pic_size_active Die Taste für das 4:3 Anzeigeverhalten deaktivieren/aktivieren menu.hint_key_pip_close Tastenzuordnung für Stop PiP oder Start mit aktuellem Kanal +menu.hint_key_pip_rotate_cw Tastenzuordnung für PiP Bewegung im Uhrzeigersinn +menu.hint_key_pip_rotate_ccw Tastenzuordnung für PiP Bewegung gegen den Uhrzeigersinn menu.hint_key_pip_setup Tastenzuordnung für PiP Konfiguration menu.hint_key_poweroff Wählen Sie eine Taste für den Standby und für das Verhalten für Standby und Deep-Standby menu.hint_key_quickzap Konfigurieren Sie die Tastenbelegung für die Schnellumschaltung diff --git a/data/locale/english.locale b/data/locale/english.locale index 4215df930..e3473a452 100644 --- a/data/locale/english.locale +++ b/data/locale/english.locale @@ -520,6 +520,8 @@ extra.key_pic_mode Screen format extra.key_pic_size 4:3 Display behavior extra.key_pip_close Stop/Start PiP extra.key_pip_close_avinput Stop/Start PiP (HDMI) +extra.key_pip_rotate_cw Move clockwise +extra.key_pip_rotate_ccw Move counter clockwise extra.key_pip_setup Configure PiP extra.key_pip_swap Swap PiP/live extra.key_record Record @@ -1447,6 +1449,8 @@ menu.hint_key_pageup Assign button to show previous items page menu.hint_key_pic_mode_active Disable/enable key for the screen format menu.hint_key_pic_size_active Disable/enable key for the 4:3 display behavior menu.hint_key_pip_close Assign button to stop PiP\nor start it for current channel +menu.hint_key_pip_rotate_cw Assign button to move PiP clockwise +menu.hint_key_pip_rotate_ccw Assign button to move PiP counter clockwise menu.hint_key_pip_setup Assign button to configure PiP menu.hint_key_poweroff Assign button to switch power state\n (standby/deep-standby <-> running) menu.hint_key_quickzap Configure keybingdings for quick\nchannel switch diff --git a/src/gui/keybind_setup.cpp b/src/gui/keybind_setup.cpp index 80d8629a2..12824bd73 100644 --- a/src/gui/keybind_setup.cpp +++ b/src/gui/keybind_setup.cpp @@ -225,6 +225,8 @@ const key_settings_struct_t key_settings[CKeybindSetup::KEYBINDS_COUNT] = #if ENABLE_PIP {LOCALE_EXTRA_KEY_PIP_CLOSE, &g_settings.key_pip_close, LOCALE_MENU_HINT_KEY_PIP_CLOSE }, {LOCALE_EXTRA_KEY_PIP_CLOSE_AVINPUT, &g_settings.key_pip_close_avinput, NONEXISTANT_LOCALE /*LOCALE_MENU_HINT_KEY_PIP_CLOSE_AVINPUT*/ }, + {LOCALE_EXTRA_KEY_PIP_ROTATE_CW, &g_settings.key_pip_rotate_cw, LOCALE_MENU_HINT_KEY_PIP_ROTATE_CW }, + {LOCALE_EXTRA_KEY_PIP_ROTATE_CCW, &g_settings.key_pip_rotate_ccw, LOCALE_MENU_HINT_KEY_PIP_ROTATE_CCW }, {LOCALE_EXTRA_KEY_PIP_SETUP, &g_settings.key_pip_setup, LOCALE_MENU_HINT_KEY_PIP_SETUP }, {LOCALE_EXTRA_KEY_PIP_SWAP, &g_settings.key_pip_swap, LOCALE_MENU_HINT_KEY_PIP_CLOSE }, #endif @@ -477,6 +479,12 @@ void CKeybindSetup::showKeyBindSetup(CMenuWidget *bindSettings) mf = new CMenuForwarder(key_settings[NKEY_PIP_SWAP].keydescription, true, keychooser[NKEY_PIP_SWAP]->getKeyName(), keychooser[NKEY_PIP_SWAP]); mf->setHint("", key_settings[NKEY_PIP_SWAP].hint); bindSettings->addItem(mf); + mf = new CMenuForwarder(key_settings[NKEY_PIP_ROTATE_CW].keydescription, true, keychooser[NKEY_PIP_ROTATE_CW]->getKeyName(), keychooser[NKEY_PIP_ROTATE_CW]); + mf->setHint("", key_settings[NKEY_PIP_ROTATE_CW].hint); + bindSettings->addItem(mf); + mf = new CMenuForwarder(key_settings[NKEY_PIP_ROTATE_CCW].keydescription, true, keychooser[NKEY_PIP_ROTATE_CCW]->getKeyName(), keychooser[NKEY_PIP_ROTATE_CCW]); + mf->setHint("", key_settings[NKEY_PIP_ROTATE_CCW].hint); + bindSettings->addItem(mf); #endif bindSettings->addItem(new CMenuForwarder(key_settings[NKEY_HELP].keydescription, true, keychooser[NKEY_HELP]->getKeyName(), keychooser[NKEY_HELP])); diff --git a/src/gui/keybind_setup.h b/src/gui/keybind_setup.h index 0126b3281..f84adb17c 100644 --- a/src/gui/keybind_setup.h +++ b/src/gui/keybind_setup.h @@ -89,6 +89,8 @@ class CKeybindSetup : public CMenuTarget, public CChangeObserver #if ENABLE_PIP NKEY_PIP_CLOSE, NKEY_PIP_CLOSE_AVINPUT, + NKEY_PIP_ROTATE_CW, + NKEY_PIP_ROTATE_CCW, NKEY_PIP_SETUP, NKEY_PIP_SWAP, #endif diff --git a/src/gui/pipsetup.cpp b/src/gui/pipsetup.cpp index ce038551c..b347db7bb 100644 --- a/src/gui/pipsetup.cpp +++ b/src/gui/pipsetup.cpp @@ -82,7 +82,20 @@ void CPipSetup::move(int x, int y, bool abs) printf("CPipSetup::move: x %d y %d\n", x_coord, y_coord); if (pipVideoDecoder[0] != NULL) - pipVideoDecoder[0]->Pig(x_coord, y_coord, width, height, maxw, maxh); + pipVideoDecoder[0]->Pig(CNeutrinoApp::getInstance()->pip_recalc_pos_x(x_coord), CNeutrinoApp::getInstance()->pip_recalc_pos_y(y_coord), width, height, maxw, maxh); +} + +void CPipSetup::rotate(int cw) +{ + g_settings.pip_rotate_lastpos += cw; + if (g_settings.pip_rotate_lastpos < PIP_UP_LEFT) + g_settings.pip_rotate_lastpos = PIP_DOWN_LEFT; + if (g_settings.pip_rotate_lastpos > PIP_DOWN_LEFT) + g_settings.pip_rotate_lastpos = PIP_UP_LEFT; + + printf("CPipSetup::rotate: x %d y %d\n", CNeutrinoApp::getInstance()->pip_recalc_pos_x(x_coord), CNeutrinoApp::getInstance()->pip_recalc_pos_y(y_coord)); + if (pipVideoDecoder[0] != NULL) + pipVideoDecoder[0]->Pig(CNeutrinoApp::getInstance()->pip_recalc_pos_x(x_coord), CNeutrinoApp::getInstance()->pip_recalc_pos_y(y_coord), width, height, maxw, maxh); } // w and h is percent, if not absolute @@ -122,7 +135,7 @@ void CPipSetup::resize(int w, int h, bool abs) printf("CPipSetup::resize: w %d h %d \n", width, height); if (pipVideoDecoder[0] != NULL) - pipVideoDecoder[0]->Pig(x_coord, y_coord, width, height, maxw, maxh); + pipVideoDecoder[0]->Pig(CNeutrinoApp::getInstance()->pip_recalc_pos_x(x_coord), CNeutrinoApp::getInstance()->pip_recalc_pos_y(y_coord), width, height, maxw, maxh); } int CPipSetup::exec(CMenuTarget *parent, const std::string &) @@ -189,6 +202,13 @@ int CPipSetup::exec(CMenuTarget *parent, const std::string &) resize(percent, percent); paint(); } + else if ((msg == (neutrino_msg_t) g_settings.key_pip_rotate_cw) || (msg == (neutrino_msg_t) g_settings.key_pip_rotate_ccw)) + { + clear(); + int rotate_cw = (msg == (neutrino_msg_t) g_settings.key_pip_rotate_cw) ? 1 : -1; + rotate(rotate_cw); + paint(); + } else if (msg > CRCInput::RC_MaxRC) { if (CNeutrinoApp::getInstance()->handleMsg(msg, data) & messages_return::cancel_all) @@ -213,7 +233,7 @@ void CPipSetup::hide() void CPipSetup::clear() { - frameBuffer->paintBackgroundBoxRel(x_coord, y_coord, width, height); + frameBuffer->paintBackgroundBoxRel(CNeutrinoApp::getInstance()->pip_recalc_pos_x(x_coord), CNeutrinoApp::getInstance()->pip_recalc_pos_y(y_coord), width, height); } void CPipSetup::paint() @@ -242,7 +262,7 @@ void CPipSetup::paint() if (pipVideoDecoder[0] != NULL) { if (pipVideoDecoder[0]->getBlank()) - frameBuffer->paintBoxRel(x_coord, y_coord, width, height, COL_MENUCONTENT_PLUS_0); + frameBuffer->paintBoxRel(CNeutrinoApp::getInstance()->pip_recalc_pos_x(x_coord), CNeutrinoApp::getInstance()->pip_recalc_pos_y(y_coord), width, height, COL_MENUCONTENT_PLUS_0); } frameBuffer->paintBoxRel(x, y, w, h, COL_MENUCONTENT_PLUS_0); diff --git a/src/gui/pipsetup.h b/src/gui/pipsetup.h index db9684de8..ed4c53364 100644 --- a/src/gui/pipsetup.h +++ b/src/gui/pipsetup.h @@ -26,6 +26,7 @@ class CPipSetup : public CMenuTarget CPipSetup(); void move(int x, int y, bool abs = false); void resize(int w, int h, bool abs = false); + void rotate(int cw); int exec(CMenuTarget *parent, const std::string &actionKey); }; diff --git a/src/gui/videosettings.cpp b/src/gui/videosettings.cpp index 287b30028..b071830b0 100644 --- a/src/gui/videosettings.cpp +++ b/src/gui/videosettings.cpp @@ -648,7 +648,7 @@ void CVideoSettings::initVideoSettings() #endif #if ENABLE_PIP if (pipVideoDecoder[0] != NULL) - pipVideoDecoder[0]->Pig(g_settings.pip_x, g_settings.pip_y, g_settings.pip_width, g_settings.pip_height, g_settings.screen_width, g_settings.screen_height); + pipVideoDecoder[0]->Pig(CNeutrinoApp::getInstance()->pip_recalc_pos_x(g_settings.pip_x),CNeutrinoApp::getInstance()->pip_recalc_pos_y(g_settings.pip_y), g_settings.pip_width, g_settings.pip_height, g_settings.screen_width, g_settings.screen_height); #endif } diff --git a/src/neutrino.cpp b/src/neutrino.cpp index d6a20eeef..a37d5f42a 100644 --- a/src/neutrino.cpp +++ b/src/neutrino.cpp @@ -1167,6 +1167,8 @@ int CNeutrinoApp::loadSetup(const char *fname) g_settings.pip_radio_y = configfile.getInt32("pip_radio_y", g_settings.pip_y); g_settings.pip_radio_width = configfile.getInt32("pip_radio_width", g_settings.pip_width); g_settings.pip_radio_height = configfile.getInt32("pip_radio_height", g_settings.pip_height); + + g_settings.pip_rotate_lastpos = configfile.getInt32("pip_rotate_lastpos", PIP_ROFF); #endif #if ENABLE_QUADPIP @@ -2043,6 +2045,8 @@ void CNeutrinoApp::saveSetup(const char *fname) configfile.setInt32("pip_radio_y", g_settings.pip_radio_y); configfile.setInt32("pip_radio_width", g_settings.pip_radio_width); configfile.setInt32("pip_radio_height", g_settings.pip_radio_height); + + configfile.setInt32("pip_rotate_lastpos", g_settings.pip_rotate_lastpos); #endif #if ENABLE_QUADPIP @@ -3484,6 +3488,9 @@ void CNeutrinoApp::RealRun() StartPip(CZapit::getInstance()->GetCurrentChannelID()); } } + else if (((msg == (neutrino_msg_t) g_settings.key_pip_rotate_cw) || (msg == (neutrino_msg_t) g_settings.key_pip_rotate_ccw)) && g_info.hw_caps->can_pip) { + (msg == (neutrino_msg_t) g_settings.key_pip_rotate_cw) ? pip_rotate(1) : pip_rotate(-1); + } #if !HAVE_CST_HARDWARE && !HAVE_GENERIC_HARDWARE else if ((msg == (neutrino_msg_t) g_settings.key_pip_close_avinput) && ((g_info.hw_caps->has_SCART_input) || (g_info.hw_caps->has_HDMI_input)) && g_info.hw_caps->can_pip) { int boxmode = getBoxMode(); @@ -4918,7 +4925,7 @@ void CNeutrinoApp::tvMode( bool rezap ) #if ENABLE_PIP if (g_info.hw_caps->can_pip) { - pipVideoDecoder[0]->Pig(g_settings.pip_x, g_settings.pip_y, + pipVideoDecoder[0]->Pig(pip_recalc_pos_x(g_settings.pip_x),pip_recalc_pos_y(g_settings.pip_y), g_settings.pip_width, g_settings.pip_height, frameBuffer->getScreenWidth(true), frameBuffer->getScreenHeight(true)); } @@ -5202,7 +5209,7 @@ void CNeutrinoApp::radioMode( bool rezap) #if ENABLE_PIP if (g_info.hw_caps->can_pip) { - pipVideoDecoder[0]->Pig(g_settings.pip_radio_x, g_settings.pip_radio_y, + pipVideoDecoder[0]->Pig(pip_recalc_pos_x(g_settings.pip_radio_x),pip_recalc_pos_y(g_settings.pip_radio_y), g_settings.pip_radio_width, g_settings.pip_radio_height, frameBuffer->getScreenWidth(true), frameBuffer->getScreenHeight(true)); } @@ -5284,7 +5291,7 @@ void CNeutrinoApp::StartAVInputPiP() { pipVideoDemux[0]->Start(); pipVideoDecoder[0]->Start(0, 0, 0); pipVideoDecoder[0]->open_AVInput_Device(); - pipVideoDecoder[0]->Pig(g_settings.pip_x,g_settings.pip_y,g_settings.pip_width,g_settings.pip_height,g_settings.screen_width,g_settings.screen_height); + pipVideoDecoder[0]->Pig(pip_recalc_pos_x(g_settings.pip_x),pip_recalc_pos_y(g_settings.pip_y),g_settings.pip_width,g_settings.pip_height,g_settings.screen_width,g_settings.screen_height); pipVideoDecoder[0]->ShowPig(1); avinput_pip = true; } @@ -5729,6 +5736,8 @@ void CNeutrinoApp::loadKeys(const char *fname) #if ENABLE_PIP g_settings.key_pip_close = tconfig->getInt32("key_pip_close", CRCInput::RC_prev); g_settings.key_pip_close_avinput = tconfig->getInt32("key_pip_close_avinput", CRCInput::RC_nokey); + g_settings.key_pip_rotate_cw = tconfig->getInt32("key_pip_rotate_cw", CRCInput::RC_nokey); + g_settings.key_pip_rotate_ccw = tconfig->getInt32("key_pip_rotate_ccw", CRCInput::RC_nokey); g_settings.key_pip_setup = tconfig->getInt32("key_pip_setup", CRCInput::RC_nokey); g_settings.key_pip_swap = tconfig->getInt32("key_pip_swap", CRCInput::RC_next); #endif @@ -5838,6 +5847,8 @@ void CNeutrinoApp::saveKeys(const char *fname) #if ENABLE_PIP tconfig->setInt32("key_pip_close", g_settings.key_pip_close); tconfig->setInt32("key_pip_close_avinput", g_settings.key_pip_close_avinput); + tconfig->setInt32("key_pip_rotate_cw", g_settings.key_pip_rotate_cw); + tconfig->setInt32("key_pip_rotate_ccw", g_settings.key_pip_rotate_ccw); tconfig->setInt32("key_pip_setup", g_settings.key_pip_setup); tconfig->setInt32("key_pip_swap", g_settings.key_pip_swap); #endif @@ -6048,6 +6059,54 @@ bool CNeutrinoApp::StartPip(const t_channel_id channel_id, int pip) } return ret; } + +int CNeutrinoApp::pip_recalc_pos_x(int x) +{ + int new_x = x; + switch(g_settings.pip_rotate_lastpos) + { + case PIP_UP_LEFT: + case PIP_DOWN_LEFT: + new_x = x; + break; + case PIP_UP_RIGHT: + case PIP_DOWN_RIGHT: + new_x = g_settings.screen_width - g_settings.pip_width - x; + break; + } + return new_x; +} + +int CNeutrinoApp::pip_recalc_pos_y(int y) +{ + int new_y = y; + switch(g_settings.pip_rotate_lastpos) + { + case PIP_UP_LEFT: + case PIP_UP_RIGHT: + new_y = y; + break; + case PIP_DOWN_RIGHT: + case PIP_DOWN_LEFT: + new_y = g_settings.screen_height - g_settings.pip_height - y; + break; + } + return new_y; +} + +void CNeutrinoApp::pip_rotate(int cw) +{ + if (!pipVideoDecoder[0]->getBlank()) + { + g_settings.pip_rotate_lastpos += cw; + if (g_settings.pip_rotate_lastpos < PIP_UP_LEFT) + g_settings.pip_rotate_lastpos = PIP_DOWN_LEFT; + if (g_settings.pip_rotate_lastpos > PIP_DOWN_LEFT) + g_settings.pip_rotate_lastpos = PIP_UP_LEFT; + + pipVideoDecoder[0]->Pig(pip_recalc_pos_x(g_settings.pip_x),pip_recalc_pos_y(g_settings.pip_y),g_settings.pip_width,g_settings.pip_height,g_settings.screen_width,g_settings.screen_height); + } +} #endif void CNeutrinoApp::Cleanup() diff --git a/src/neutrino.h b/src/neutrino.h index 4d5c907e2..76d153027 100644 --- a/src/neutrino.h +++ b/src/neutrino.h @@ -174,6 +174,9 @@ public: bool avinput_pip; void StartAVInputPiP(); void StopAVInputPiP(); + int pip_recalc_pos_x(int x); + int pip_recalc_pos_y(int y); + void pip_rotate(int cw); #endif #endif diff --git a/src/system/locals.h b/src/system/locals.h index a324ba89d..b3a65b780 100644 --- a/src/system/locals.h +++ b/src/system/locals.h @@ -547,6 +547,8 @@ typedef enum LOCALE_EXTRA_KEY_PIC_SIZE, LOCALE_EXTRA_KEY_PIP_CLOSE, LOCALE_EXTRA_KEY_PIP_CLOSE_AVINPUT, + LOCALE_EXTRA_KEY_PIP_ROTATE_CW, + LOCALE_EXTRA_KEY_PIP_ROTATE_CCW, LOCALE_EXTRA_KEY_PIP_SETUP, LOCALE_EXTRA_KEY_PIP_SWAP, LOCALE_EXTRA_KEY_RECORD, @@ -1475,6 +1477,8 @@ typedef enum LOCALE_MENU_HINT_KEY_PIC_MODE_ACTIVE, LOCALE_MENU_HINT_KEY_PIC_SIZE_ACTIVE, LOCALE_MENU_HINT_KEY_PIP_CLOSE, + LOCALE_MENU_HINT_KEY_PIP_ROTATE_CW, + LOCALE_MENU_HINT_KEY_PIP_ROTATE_CCW, LOCALE_MENU_HINT_KEY_PIP_SETUP, LOCALE_MENU_HINT_KEY_POWEROFF, LOCALE_MENU_HINT_KEY_QUICKZAP, diff --git a/src/system/locals_intern.h b/src/system/locals_intern.h index b31fdd04c..4cf3104ee 100644 --- a/src/system/locals_intern.h +++ b/src/system/locals_intern.h @@ -547,6 +547,8 @@ const char * locale_real_names[] = "extra.key_pic_size", "extra.key_pip_close", "extra.key_pip_close_avinput", + "extra.key_pip_rotate_cw", + "extra.key_pip_rotate_ccw", "extra.key_pip_setup", "extra.key_pip_swap", "extra.key_record", @@ -1475,6 +1477,8 @@ const char * locale_real_names[] = "menu.hint_key_pic_mode_active", "menu.hint_key_pic_size_active", "menu.hint_key_pip_close", + "menu.hint_key_pip_rotate_cw", + "menu.hint_key_pip_rotate_ccw", "menu.hint_key_pip_setup", "menu.hint_key_poweroff", "menu.hint_key_quickzap", diff --git a/src/system/settings.h b/src/system/settings.h index 75c958337..5261c4c77 100644 --- a/src/system/settings.h +++ b/src/system/settings.h @@ -978,10 +978,13 @@ struct SNeutrinoSettings int pip_height; int pip_x; int pip_y; + int pip_radio_width; int pip_radio_height; int pip_radio_x; int pip_radio_y; + + int pip_rotate_lastpos; #endif #if ENABLE_QUADPIP @@ -1234,6 +1237,8 @@ struct SNeutrinoSettings #if ENABLE_PIP int key_pip_close; int key_pip_close_avinput; + int key_pip_rotate_cw; + int key_pip_rotate_ccw; int key_pip_setup; int key_pip_swap; #endif @@ -1339,6 +1344,16 @@ const time_settings_struct_t handling_infobar_setting[SNeutrinoSettings::HANDLIN { 6, LOCALE_TIMING_INFOBAR_MEDIA_VIDEO, LOCALE_MENU_HINT_OSD_BEHAVIOR_INFOBAR} }; + +enum +{ + PIP_ROFF = -1, + PIP_UP_LEFT = 0, + PIP_UP_RIGHT = 1, + PIP_DOWN_RIGHT = 2, + PIP_DOWN_LEFT = 3 +}; + // lcdd #define DEFAULT_VFD_BRIGHTNESS 15 #define DEFAULT_VFD_STANDBYBRIGHTNESS 5 diff --git a/src/zapit/src/zapit.cpp b/src/zapit/src/zapit.cpp index 41305e184..0b7a7acf3 100644 --- a/src/zapit/src/zapit.cpp +++ b/src/zapit/src/zapit.cpp @@ -809,7 +809,8 @@ bool CZapit::StartPip(const t_channel_id channel_id, int pip) pipVideoDecoder[pip]->Start(0, newchannel->getPcrPid(), newchannel->getVideoPid()); pip_channel_id[pip] = newchannel->getChannelID(); - pipVideoDecoder[pip]->Pig(g_settings.pip_x,g_settings.pip_y,g_settings.pip_width,g_settings.pip_height,g_settings.screen_width,g_settings.screen_height); + pipVideoDecoder[pip]->Pig(CNeutrinoApp::getInstance()->pip_recalc_pos_x(g_settings.pip_x),CNeutrinoApp::getInstance()->pip_recalc_pos_y(g_settings.pip_y),g_settings.pip_width,g_settings.pip_height,g_settings.screen_width,g_settings.screen_height); + pipVideoDecoder[pip]->ShowPig(1); if (!pipAudioDemux[pip]) {