diff --git a/packages/devel/libcec/meta b/packages/devel/libcec/meta index 89f1527659..01050345b7 100644 --- a/packages/devel/libcec/meta +++ b/packages/devel/libcec/meta @@ -19,7 +19,7 @@ ################################################################################ PKG_NAME="libcec" -PKG_VERSION="1.9.0" +PKG_VERSION="2.0.0" PKG_REV="1" PKG_ARCH="any" PKG_LICENSE="GPL" diff --git a/packages/linux/meta b/packages/linux/meta index b44e02f232..468f2758c5 100644 --- a/packages/linux/meta +++ b/packages/linux/meta @@ -21,7 +21,7 @@ PKG_NAME="linux" PKG_VERSION="3.6.1" if [ "$LINUX" = "3.2" ]; then - PKG_VERSION="3.2.30" + PKG_VERSION="3.2.31" fi PKG_REV="1" PKG_ARCH="any" diff --git a/packages/linux/patches/linux-3.2.30-000_crosscompile.patch b/packages/linux/patches/linux-3.2.31-000_crosscompile.patch similarity index 100% rename from packages/linux/patches/linux-3.2.30-000_crosscompile.patch rename to packages/linux/patches/linux-3.2.31-000_crosscompile.patch diff --git a/packages/linux/patches/linux-3.2.30-003-no_dev_console.patch b/packages/linux/patches/linux-3.2.31-003-no_dev_console.patch similarity index 100% rename from packages/linux/patches/linux-3.2.30-003-no_dev_console.patch rename to packages/linux/patches/linux-3.2.31-003-no_dev_console.patch diff --git a/packages/linux/patches/linux-3.2.30-004_lower_undefined_mode_timeout.patch b/packages/linux/patches/linux-3.2.31-004_lower_undefined_mode_timeout.patch similarity index 100% rename from packages/linux/patches/linux-3.2.30-004_lower_undefined_mode_timeout.patch rename to packages/linux/patches/linux-3.2.31-004_lower_undefined_mode_timeout.patch diff --git a/packages/linux/patches/linux-3.2.30-006_enable_utf8.patch b/packages/linux/patches/linux-3.2.31-006_enable_utf8.patch similarity index 100% rename from packages/linux/patches/linux-3.2.30-006_enable_utf8.patch rename to packages/linux/patches/linux-3.2.31-006_enable_utf8.patch diff --git a/packages/linux/patches/linux-3.2.30-007_die_floppy_die.patch b/packages/linux/patches/linux-3.2.31-007_die_floppy_die.patch similarity index 100% rename from packages/linux/patches/linux-3.2.30-007_die_floppy_die.patch rename to packages/linux/patches/linux-3.2.31-007_die_floppy_die.patch diff --git a/packages/linux/patches/linux-3.2.30-009_disable_i8042_check_on_apple_mac.patch b/packages/linux/patches/linux-3.2.31-009_disable_i8042_check_on_apple_mac.patch similarity index 100% rename from packages/linux/patches/linux-3.2.30-009_disable_i8042_check_on_apple_mac.patch rename to packages/linux/patches/linux-3.2.31-009_disable_i8042_check_on_apple_mac.patch diff --git a/packages/linux/patches/linux-3.2.30-052-aureal_remote_quirk-0.1.patch b/packages/linux/patches/linux-3.2.31-052-aureal_remote_quirk-0.1.patch similarity index 100% rename from packages/linux/patches/linux-3.2.30-052-aureal_remote_quirk-0.1.patch rename to packages/linux/patches/linux-3.2.31-052-aureal_remote_quirk-0.1.patch diff --git a/packages/linux/patches/linux-3.2.30-053-spinelplus-remote-0.1.patch b/packages/linux/patches/linux-3.2.31-053-spinelplus-remote-0.1.patch similarity index 100% rename from packages/linux/patches/linux-3.2.30-053-spinelplus-remote-0.1.patch rename to packages/linux/patches/linux-3.2.31-053-spinelplus-remote-0.1.patch diff --git a/packages/linux/patches/linux-3.2.30-054-nuvoton_revert_d7b290a1056c5564eec8a1b169c6e84ff3f54c13.patch b/packages/linux/patches/linux-3.2.31-054-nuvoton_revert_d7b290a1056c5564eec8a1b169c6e84ff3f54c13.patch similarity index 100% rename from packages/linux/patches/linux-3.2.30-054-nuvoton_revert_d7b290a1056c5564eec8a1b169c6e84ff3f54c13.patch rename to packages/linux/patches/linux-3.2.31-054-nuvoton_revert_d7b290a1056c5564eec8a1b169c6e84ff3f54c13.patch diff --git a/packages/linux/patches/linux-3.2.31-055-RC_Fix_invalid-free_region-and-or-free_irq-on-probe-failure.patch b/packages/linux/patches/linux-3.2.31-055-RC_Fix_invalid-free_region-and-or-free_irq-on-probe-failure.patch new file mode 100644 index 0000000000..24cb6b9f4d --- /dev/null +++ b/packages/linux/patches/linux-3.2.31-055-RC_Fix_invalid-free_region-and-or-free_irq-on-probe-failure.patch @@ -0,0 +1,149 @@ +From f27b853ea24a9b70585f9251384d97929e6551c3 Mon Sep 17 00:00:00 2001 +From: Ben Hutchings +Date: Mon, 14 May 2012 21:36:00 -0300 +Subject: [PATCH] [media] rc: Fix invalid free_region and/or free_irq on probe + failure + +fintek-cir, ite-cir and nuvoton-cir may try to free an I/O region +and/or IRQ handler that was never allocated after a failure in their +respective probe functions. Add and use separate labels on the +failure path so they will do the right cleanup after each possible +point of failure. + +Compile-tested only. + +Signed-off-by: Ben Hutchings +Signed-off-by: Mauro Carvalho Chehab +--- + drivers/media/rc/fintek-cir.c | 13 ++++++------- + drivers/media/rc/ite-cir.c | 14 ++++++-------- + drivers/media/rc/nuvoton-cir.c | 26 ++++++++++++-------------- + 3 files changed, 24 insertions(+), 29 deletions(-) + +diff --git a/drivers/media/rc/fintek-cir.c b/drivers/media/rc/fintek-cir.c +index 4a3a238..6aabf7a 100644 +--- a/drivers/media/rc/fintek-cir.c ++++ b/drivers/media/rc/fintek-cir.c +@@ -556,11 +556,11 @@ static int fintek_probe(struct pnp_dev *pdev, const struct pnp_device_id *dev_id + + if (request_irq(fintek->cir_irq, fintek_cir_isr, IRQF_SHARED, + FINTEK_DRIVER_NAME, (void *)fintek)) +- goto failure; ++ goto failure2; + + ret = rc_register_device(rdev); + if (ret) +- goto failure; ++ goto failure3; + + device_init_wakeup(&pdev->dev, true); + fintek->rdev = rdev; +@@ -570,12 +570,11 @@ static int fintek_probe(struct pnp_dev *pdev, const struct pnp_device_id *dev_id + + return 0; + ++failure3: ++ free_irq(fintek->cir_irq, fintek); ++failure2: ++ release_region(fintek->cir_addr, fintek->cir_port_len); + failure: +- if (fintek->cir_irq) +- free_irq(fintek->cir_irq, fintek); +- if (fintek->cir_addr) +- release_region(fintek->cir_addr, fintek->cir_port_len); +- + rc_free_device(rdev); + kfree(fintek); + +diff --git a/drivers/media/rc/ite-cir.c b/drivers/media/rc/ite-cir.c +index 0e49c99..36fe5a3 100644 +--- a/drivers/media/rc/ite-cir.c ++++ b/drivers/media/rc/ite-cir.c +@@ -1598,24 +1598,22 @@ static int ite_probe(struct pnp_dev *pdev, const struct pnp_device_id + + if (request_irq(itdev->cir_irq, ite_cir_isr, IRQF_SHARED, + ITE_DRIVER_NAME, (void *)itdev)) +- goto failure; ++ goto failure2; + + ret = rc_register_device(rdev); + if (ret) +- goto failure; ++ goto failure3; + + itdev->rdev = rdev; + ite_pr(KERN_NOTICE, "driver has been successfully loaded\n"); + + return 0; + ++failure3: ++ free_irq(itdev->cir_irq, itdev); ++failure2: ++ release_region(itdev->cir_addr, itdev->params.io_region_size); + failure: +- if (itdev->cir_irq) +- free_irq(itdev->cir_irq, itdev); +- +- if (itdev->cir_addr) +- release_region(itdev->cir_addr, itdev->params.io_region_size); +- + rc_free_device(rdev); + kfree(itdev); + +diff --git a/drivers/media/rc/nuvoton-cir.c b/drivers/media/rc/nuvoton-cir.c +index 8b2c071..dc8a7dd 100644 +--- a/drivers/media/rc/nuvoton-cir.c ++++ b/drivers/media/rc/nuvoton-cir.c +@@ -1075,19 +1075,19 @@ static int nvt_probe(struct pnp_dev *pdev, const struct pnp_device_id *dev_id) + + if (request_irq(nvt->cir_irq, nvt_cir_isr, IRQF_SHARED, + NVT_DRIVER_NAME, (void *)nvt)) +- goto failure; ++ goto failure2; + + if (!request_region(nvt->cir_wake_addr, + CIR_IOREG_LENGTH, NVT_DRIVER_NAME)) +- goto failure; ++ goto failure3; + + if (request_irq(nvt->cir_wake_irq, nvt_cir_wake_isr, IRQF_SHARED, + NVT_DRIVER_NAME, (void *)nvt)) +- goto failure; ++ goto failure4; + + ret = rc_register_device(rdev); + if (ret) +- goto failure; ++ goto failure5; + + device_init_wakeup(&pdev->dev, true); + nvt->rdev = rdev; +@@ -1099,17 +1099,15 @@ static int nvt_probe(struct pnp_dev *pdev, const struct pnp_device_id *dev_id) + + return 0; + ++failure5: ++ free_irq(nvt->cir_wake_irq, nvt); ++failure4: ++ release_region(nvt->cir_wake_addr, CIR_IOREG_LENGTH); ++failure3: ++ free_irq(nvt->cir_irq, nvt); ++failure2: ++ release_region(nvt->cir_addr, CIR_IOREG_LENGTH); + failure: +- if (nvt->cir_irq) +- free_irq(nvt->cir_irq, nvt); +- if (nvt->cir_addr) +- release_region(nvt->cir_addr, CIR_IOREG_LENGTH); +- +- if (nvt->cir_wake_irq) +- free_irq(nvt->cir_wake_irq, nvt); +- if (nvt->cir_wake_addr) +- release_region(nvt->cir_wake_addr, CIR_IOREG_LENGTH); +- + rc_free_device(rdev); + kfree(nvt); + +-- +1.7.7.6 + diff --git a/packages/linux/patches/linux-3.2.30-056-Formosa-IR606.patch b/packages/linux/patches/linux-3.2.31-056-Formosa-IR606.patch similarity index 100% rename from packages/linux/patches/linux-3.2.30-056-Formosa-IR606.patch rename to packages/linux/patches/linux-3.2.31-056-Formosa-IR606.patch diff --git a/packages/linux/patches/linux-3.2.30-057.01-media-ati_remote-allow-specifying-a-default-keymap-s.patch b/packages/linux/patches/linux-3.2.31-057.01-media-ati_remote-allow-specifying-a-default-keymap-s.patch similarity index 100% rename from packages/linux/patches/linux-3.2.30-057.01-media-ati_remote-allow-specifying-a-default-keymap-s.patch rename to packages/linux/patches/linux-3.2.31-057.01-media-ati_remote-allow-specifying-a-default-keymap-s.patch diff --git a/packages/linux/patches/linux-3.2.30-057.02-media-ati_remote-add-support-for-Medion-X10-Digitain.patch b/packages/linux/patches/linux-3.2.31-057.02-media-ati_remote-add-support-for-Medion-X10-Digitain.patch similarity index 100% rename from packages/linux/patches/linux-3.2.30-057.02-media-ati_remote-add-support-for-Medion-X10-Digitain.patch rename to packages/linux/patches/linux-3.2.31-057.02-media-ati_remote-add-support-for-Medion-X10-Digitain.patch diff --git a/packages/linux/patches/linux-3.2.30-057.03-media-ati_remote-add-keymap-for-Medion-X10-OR2x-remo.patch b/packages/linux/patches/linux-3.2.31-057.03-media-ati_remote-add-keymap-for-Medion-X10-OR2x-remo.patch similarity index 100% rename from packages/linux/patches/linux-3.2.30-057.03-media-ati_remote-add-keymap-for-Medion-X10-OR2x-remo.patch rename to packages/linux/patches/linux-3.2.31-057.03-media-ati_remote-add-keymap-for-Medion-X10-OR2x-remo.patch diff --git a/packages/linux/patches/linux-3.2.30-057.04-media-ati_remote-add-regular-up-down-buttons-to-Medi.patch b/packages/linux/patches/linux-3.2.31-057.04-media-ati_remote-add-regular-up-down-buttons-to-Medi.patch similarity index 100% rename from packages/linux/patches/linux-3.2.30-057.04-media-ati_remote-add-regular-up-down-buttons-to-Medi.patch rename to packages/linux/patches/linux-3.2.31-057.04-media-ati_remote-add-regular-up-down-buttons-to-Medi.patch diff --git a/packages/linux/patches/linux-3.2.30-071-silence_i915_agp-module-0.1.patch b/packages/linux/patches/linux-3.2.31-071-silence_i915_agp-module-0.1.patch similarity index 100% rename from packages/linux/patches/linux-3.2.30-071-silence_i915_agp-module-0.1.patch rename to packages/linux/patches/linux-3.2.31-071-silence_i915_agp-module-0.1.patch diff --git a/packages/linux/patches/linux-3.2.30-081-drm_cea_modes.patch b/packages/linux/patches/linux-3.2.31-081-drm_cea_modes.patch similarity index 100% rename from packages/linux/patches/linux-3.2.30-081-drm_cea_modes.patch rename to packages/linux/patches/linux-3.2.31-081-drm_cea_modes.patch diff --git a/packages/linux/patches/linux-3.2.30-201-add_Anysee_T2C_support-0.1.patch b/packages/linux/patches/linux-3.2.31-201-add_Anysee_T2C_support-0.1.patch similarity index 100% rename from packages/linux/patches/linux-3.2.30-201-add_Anysee_T2C_support-0.1.patch rename to packages/linux/patches/linux-3.2.31-201-add_Anysee_T2C_support-0.1.patch diff --git a/packages/linux/patches/linux-3.2.30-202-add_HVR930C_support-0.1.patch b/packages/linux/patches/linux-3.2.31-202-add_HVR930C_support-0.1.patch similarity index 100% rename from packages/linux/patches/linux-3.2.30-202-add_HVR930C_support-0.1.patch rename to packages/linux/patches/linux-3.2.31-202-add_HVR930C_support-0.1.patch diff --git a/packages/linux/patches/linux-3.2.30-203-stb0899_enable_low_symbol_rate.patch b/packages/linux/patches/linux-3.2.31-203-stb0899_enable_low_symbol_rate.patch similarity index 100% rename from packages/linux/patches/linux-3.2.30-203-stb0899_enable_low_symbol_rate.patch rename to packages/linux/patches/linux-3.2.31-203-stb0899_enable_low_symbol_rate.patch diff --git a/packages/linux/patches/linux-3.2.30-204-add_Formosa_eHome_Infrared_Receiver.patch b/packages/linux/patches/linux-3.2.31-204-add_Formosa_eHome_Infrared_Receiver.patch similarity index 100% rename from packages/linux/patches/linux-3.2.30-204-add_Formosa_eHome_Infrared_Receiver.patch rename to packages/linux/patches/linux-3.2.31-204-add_Formosa_eHome_Infrared_Receiver.patch diff --git a/packages/linux/patches/linux-3.2.30-210-add_DVBSky_support.patch b/packages/linux/patches/linux-3.2.31-210-add_DVBSky_support.patch similarity index 100% rename from packages/linux/patches/linux-3.2.30-210-add_DVBSky_support.patch rename to packages/linux/patches/linux-3.2.31-210-add_DVBSky_support.patch diff --git a/packages/linux/patches/linux-3.2.30-211-add_TeVii_s471_support.patch b/packages/linux/patches/linux-3.2.31-211-add_TeVii_s471_support.patch similarity index 100% rename from packages/linux/patches/linux-3.2.30-211-add_TeVii_s471_support.patch rename to packages/linux/patches/linux-3.2.31-211-add_TeVii_s471_support.patch diff --git a/packages/linux/patches/linux-3.2.30-212-mantis_stb0899_faster_lock.patch b/packages/linux/patches/linux-3.2.31-212-mantis_stb0899_faster_lock.patch similarity index 100% rename from packages/linux/patches/linux-3.2.30-212-mantis_stb0899_faster_lock.patch rename to packages/linux/patches/linux-3.2.31-212-mantis_stb0899_faster_lock.patch diff --git a/packages/linux/patches/linux-3.2.30-213-cinergy_s2_usb_r2.patch b/packages/linux/patches/linux-3.2.31-213-cinergy_s2_usb_r2.patch similarity index 100% rename from packages/linux/patches/linux-3.2.30-213-cinergy_s2_usb_r2.patch rename to packages/linux/patches/linux-3.2.31-213-cinergy_s2_usb_r2.patch diff --git a/packages/linux/patches/linux-3.2.30-214-hdtv-hvr930c.patch b/packages/linux/patches/linux-3.2.31-214-hdtv-hvr930c.patch similarity index 100% rename from packages/linux/patches/linux-3.2.30-214-hdtv-hvr930c.patch rename to packages/linux/patches/linux-3.2.31-214-hdtv-hvr930c.patch diff --git a/packages/linux/patches/linux-3.2.31-215-technisat-usb2-module.patch b/packages/linux/patches/linux-3.2.31-215-technisat-usb2-module.patch new file mode 100644 index 0000000000..acc664e699 --- /dev/null +++ b/packages/linux/patches/linux-3.2.31-215-technisat-usb2-module.patch @@ -0,0 +1,25 @@ +This patch adds a module-device-table-entry to the +technisat-usb2-driver which will help udev to on-demand load the +driver. This was obviously forgotten during initial commit. + +Signed-off-by: Patrick Boettcher +--- + drivers/media/dvb/dvb-usb/technisat-usb2.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/drivers/media/dvb/dvb-usb/technisat-usb2.c b/drivers/media/dvb/dvb-usb/technisat-usb2.c +index acefaa8..7a8c8c1 100644 +--- a/drivers/media/dvb/dvb-usb/technisat-usb2.c ++++ b/drivers/media/dvb/dvb-usb/technisat-usb2.c +@@ -677,6 +677,7 @@ static struct usb_device_id technisat_usb2_id_table[] = { + { USB_DEVICE(USB_VID_TECHNISAT, USB_PID_TECHNISAT_USB2_DVB_S2) }, + { 0 } /* Terminating entry */ + }; ++MODULE_DEVICE_TABLE(usb, technisat_usb2_id_table); + + /* device description */ + static struct dvb_usb_device_properties technisat_usb2_devices = { +-- +1.7.9.5 + +-- diff --git a/packages/linux/patches/linux-3.2.30-251-acpi-5.0_support.patch b/packages/linux/patches/linux-3.2.31-251-acpi-5.0_support.patch similarity index 100% rename from packages/linux/patches/linux-3.2.30-251-acpi-5.0_support.patch rename to packages/linux/patches/linux-3.2.31-251-acpi-5.0_support.patch diff --git a/packages/linux/patches/linux-3.2.30-601-RPi_support-8bccc7a.patch b/packages/linux/patches/linux-3.2.31-601-RPi_support-8bccc7a.patch similarity index 100% rename from packages/linux/patches/linux-3.2.30-601-RPi_support-8bccc7a.patch rename to packages/linux/patches/linux-3.2.31-601-RPi_support-8bccc7a.patch diff --git a/packages/linux/patches/linux-3.2.30-901_broken_bluetooth.patch b/packages/linux/patches/linux-3.2.31-901_broken_bluetooth.patch similarity index 100% rename from packages/linux/patches/linux-3.2.30-901_broken_bluetooth.patch rename to packages/linux/patches/linux-3.2.31-901_broken_bluetooth.patch diff --git a/packages/linux/patches/linux-3.2.30-920_add_rtl8168.patch b/packages/linux/patches/linux-3.2.31-920_add_rtl8168.patch similarity index 100% rename from packages/linux/patches/linux-3.2.30-920_add_rtl8168.patch rename to packages/linux/patches/linux-3.2.31-920_add_rtl8168.patch diff --git a/packages/linux/patches/linux-3.2.30-990-xc5000_add_support_for_get_if_frequency.patch b/packages/linux/patches/linux-3.2.31-990-xc5000_add_support_for_get_if_frequency.patch similarity index 100% rename from packages/linux/patches/linux-3.2.30-990-xc5000_add_support_for_get_if_frequency.patch rename to packages/linux/patches/linux-3.2.31-990-xc5000_add_support_for_get_if_frequency.patch diff --git a/packages/linux/patches/linux-3.2.30-999-fix-iMon-Knob-event-interpretation-issues.patch b/packages/linux/patches/linux-3.2.31-999-fix-iMon-Knob-event-interpretation-issues.patch similarity index 100% rename from packages/linux/patches/linux-3.2.30-999-fix-iMon-Knob-event-interpretation-issues.patch rename to packages/linux/patches/linux-3.2.31-999-fix-iMon-Knob-event-interpretation-issues.patch diff --git a/packages/mediacenter/xbmc-addon-xvdr/meta b/packages/mediacenter/xbmc-addon-xvdr/meta index ab84e791c1..c87132a3bc 100644 --- a/packages/mediacenter/xbmc-addon-xvdr/meta +++ b/packages/mediacenter/xbmc-addon-xvdr/meta @@ -19,7 +19,7 @@ ################################################################################ PKG_NAME="xbmc-addon-xvdr" -PKG_VERSION="d48e68e" +PKG_VERSION="42d78a2" PKG_REV="1" PKG_ARCH="any" PKG_LICENSE="GPL" diff --git a/packages/mediacenter/xbmc-addon-xvdr/patches/xbmc-addon-xvdr-d48e68e-xbmc_head_changes.patch b/packages/mediacenter/xbmc-addon-xvdr/patches/xbmc-addon-xvdr-d48e68e-xbmc_head_changes.patch deleted file mode 100644 index 8a7d5d3727..0000000000 --- a/packages/mediacenter/xbmc-addon-xvdr/patches/xbmc-addon-xvdr-d48e68e-xbmc_head_changes.patch +++ /dev/null @@ -1,110 +0,0 @@ -diff -Naur xbmc-addon-xvdr-d48e68e/addons/library.xbmc.addon/libXBMC_addon.h xbmc-addon-xvdr-d48e68e.patch/addons/library.xbmc.addon/libXBMC_addon.h ---- xbmc-addon-xvdr-d48e68e/addons/library.xbmc.addon/libXBMC_addon.h 2012-09-13 08:11:02.000000000 +0200 -+++ xbmc-addon-xvdr-d48e68e.patch/addons/library.xbmc.addon/libXBMC_addon.h 2012-09-13 11:12:53.496913518 +0200 -@@ -14,9 +14,8 @@ - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License -- * along with XBMC; see the file COPYING. If not, write to -- * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. -- * http://www.gnu.org/copyleft/gpl.html -+ * along with XBMC; see the file COPYING. If not, see -+ * . - * - */ - -@@ -29,37 +28,34 @@ - #ifdef _WIN32 // windows - #include "dlfcn-win32.h" - #define ADDON_DLL "\\library.xbmc.addon\\libXBMC_addon" ADDON_HELPER_EXT --#define ADDON_HELPER_PLATFORM "win32" - #define ADDON_HELPER_EXT ".dll" - #else - #if defined(__APPLE__) // osx --#define ADDON_HELPER_PLATFORM "osx" - #if defined(__POWERPC__) --#define ADDON_HELPER_ARCH "powerpc" -+#define ADDON_HELPER_ARCH "powerpc-osx" - #elif defined(__arm__) --#define ADDON_HELPER_ARCH "arm" -+#define ADDON_HELPER_ARCH "arm-osx" - #else --#define ADDON_HELPER_ARCH "x86" -+#define ADDON_HELPER_ARCH "x86-osx" - #endif - #else // linux --#define ADDON_HELPER_PLATFORM "linux" - #if defined(__x86_64__) --#define ADDON_HELPER_ARCH "x86_64" -+#define ADDON_HELPER_ARCH "x86_64-linux" - #elif defined(_POWERPC) --#define ADDON_HELPER_ARCH "powerpc" -+#define ADDON_HELPER_ARCH "powerpc-linux" - #elif defined(_POWERPC64) --#define ADDON_HELPER_ARCH "powerpc64" -+#define ADDON_HELPER_ARCH "powerpc64-linux" - #elif defined(__ARMEL__) - #define ADDON_HELPER_ARCH "arm" - #elif defined(_MIPSEL) --#define ADDON_HELPER_ARCH "mipsel" -+#define ADDON_HELPER_ARCH "mipsel-linux" - #else --#define ADDON_HELPER_ARCH "i486" -+#define ADDON_HELPER_ARCH "i486-linux" - #endif - #endif - #include // linux+osx - #define ADDON_HELPER_EXT ".so" --#define ADDON_DLL "/library.xbmc.addon/libXBMC_addon-" ADDON_HELPER_ARCH "-" ADDON_HELPER_PLATFORM ADDON_HELPER_EXT -+#define ADDON_DLL "/library.xbmc.addon/libXBMC_addon-" ADDON_HELPER_ARCH ADDON_HELPER_EXT - #endif - - #ifdef LOG_DEBUG -diff -Naur xbmc-addon-xvdr-d48e68e/addons/library.xbmc.gui/libXBMC_gui.h xbmc-addon-xvdr-d48e68e.patch/addons/library.xbmc.gui/libXBMC_gui.h ---- xbmc-addon-xvdr-d48e68e/addons/library.xbmc.gui/libXBMC_gui.h 2012-09-13 08:11:02.000000000 +0200 -+++ xbmc-addon-xvdr-d48e68e.patch/addons/library.xbmc.gui/libXBMC_gui.h 2012-09-13 11:10:40.866902690 +0200 -@@ -14,9 +14,8 @@ - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License -- * along with XBMC; see the file COPYING. If not, write to -- * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. -- * http://www.gnu.org/copyleft/gpl.html -+ * along with XBMC; see the file COPYING. If not, see -+ * . - * - */ - -@@ -32,7 +31,7 @@ - #ifdef _WIN32 - #define GUI_HELPER_DLL "\\library.xbmc.gui\\libXBMC_gui" ADDON_HELPER_EXT - #else --#define GUI_HELPER_DLL "/library.xbmc.gui/libXBMC_gui-" ADDON_HELPER_ARCH "-" ADDON_HELPER_PLATFORM ADDON_HELPER_EXT -+#define GUI_HELPER_DLL "/library.xbmc.gui/libXBMC_gui-" ADDON_HELPER_ARCH ADDON_HELPER_EXT - #endif - - #define ADDON_ACTION_PREVIOUS_MENU 10 -diff -Naur xbmc-addon-xvdr-d48e68e/addons/library.xbmc.pvr/libXBMC_pvr.h xbmc-addon-xvdr-d48e68e.patch/addons/library.xbmc.pvr/libXBMC_pvr.h ---- xbmc-addon-xvdr-d48e68e/addons/library.xbmc.pvr/libXBMC_pvr.h 2012-09-13 08:11:02.000000000 +0200 -+++ xbmc-addon-xvdr-d48e68e.patch/addons/library.xbmc.pvr/libXBMC_pvr.h 2012-09-13 11:10:40.866902690 +0200 -@@ -14,9 +14,8 @@ - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License -- * along with XBMC; see the file COPYING. If not, write to -- * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. -- * http://www.gnu.org/copyleft/gpl.html -+ * along with XBMC; see the file COPYING. If not, see -+ * . - * - */ - -@@ -31,7 +30,7 @@ - #ifdef _WIN32 - #define PVR_HELPER_DLL "\\library.xbmc.pvr\\libXBMC_pvr" ADDON_HELPER_EXT - #else --#define PVR_HELPER_DLL "/library.xbmc.pvr/libXBMC_pvr-" ADDON_HELPER_ARCH "-" ADDON_HELPER_PLATFORM ADDON_HELPER_EXT -+#define PVR_HELPER_DLL "/library.xbmc.pvr/libXBMC_pvr-" ADDON_HELPER_ARCH ADDON_HELPER_EXT - #endif - - #define DVD_TIME_BASE 1000000 diff --git a/packages/mediacenter/xbmc-pvr-addons/meta b/packages/mediacenter/xbmc-pvr-addons/meta index 9dbc51d8e7..5d5733bd5b 100644 --- a/packages/mediacenter/xbmc-pvr-addons/meta +++ b/packages/mediacenter/xbmc-pvr-addons/meta @@ -19,7 +19,7 @@ ################################################################################ PKG_NAME="xbmc-pvr-addons" -PKG_VERSION="9e7a5ba" +PKG_VERSION="388254a" PKG_REV="1" PKG_ARCH="any" PKG_LICENSE="GPL" diff --git a/packages/mediacenter/xbmc-pvr-addons/patches/xbmc-pvr-addons-9e7a5ba-fortherecord.patch b/packages/mediacenter/xbmc-pvr-addons/patches/xbmc-pvr-addons-388254a-fortherecord.patch similarity index 100% rename from packages/mediacenter/xbmc-pvr-addons/patches/xbmc-pvr-addons-9e7a5ba-fortherecord.patch rename to packages/mediacenter/xbmc-pvr-addons/patches/xbmc-pvr-addons-388254a-fortherecord.patch diff --git a/packages/mediacenter/xbmc-theme-Confluence/meta b/packages/mediacenter/xbmc-theme-Confluence/meta index 247c5ea316..18d5583196 100644 --- a/packages/mediacenter/xbmc-theme-Confluence/meta +++ b/packages/mediacenter/xbmc-theme-Confluence/meta @@ -19,7 +19,7 @@ ################################################################################ PKG_NAME="xbmc-theme-Confluence" -PKG_VERSION="f13566b" +PKG_VERSION="a296342" PKG_REV="1" PKG_ARCH="any" PKG_LICENSE="GPL" diff --git a/packages/mediacenter/xbmc/meta b/packages/mediacenter/xbmc/meta index 758e199f8a..c8d8b9ffdd 100644 --- a/packages/mediacenter/xbmc/meta +++ b/packages/mediacenter/xbmc/meta @@ -19,7 +19,7 @@ ################################################################################ PKG_NAME="xbmc" -PKG_VERSION="f13566b" +PKG_VERSION="a296342" PKG_REV="1" PKG_ARCH="any" PKG_LICENSE="GPL" @@ -44,7 +44,6 @@ PKG_AUTORECONF="no" # various PVR clients PKG_DEPENDS="$PKG_DEPENDS xbmc-pvr-addons" - PKG_DEPENDS="$PKG_DEPENDS xbmc-addon-vuplus" PKG_DEPENDS="$PKG_DEPENDS xbmc-addon-xvdr" if [ "$DISPLAYSERVER" = "xorg-server" ]; then diff --git a/packages/mediacenter/xbmc/patches/xbmc-f13566b-001-add_support_to_specify_GIT_REV-0.1.patch b/packages/mediacenter/xbmc/patches/xbmc-a296342-001-add_support_to_specify_GIT_REV-0.1.patch similarity index 100% rename from packages/mediacenter/xbmc/patches/xbmc-f13566b-001-add_support_to_specify_GIT_REV-0.1.patch rename to packages/mediacenter/xbmc/patches/xbmc-a296342-001-add_support_to_specify_GIT_REV-0.1.patch diff --git a/packages/mediacenter/xbmc/patches/xbmc-f13566b-303-fix_libdvd_xFLAGS-0.1.patch b/packages/mediacenter/xbmc/patches/xbmc-a296342-303-fix_libdvd_xFLAGS-0.1.patch similarity index 100% rename from packages/mediacenter/xbmc/patches/xbmc-f13566b-303-fix_libdvd_xFLAGS-0.1.patch rename to packages/mediacenter/xbmc/patches/xbmc-a296342-303-fix_libdvd_xFLAGS-0.1.patch diff --git a/packages/mediacenter/xbmc/patches/xbmc-f13566b-311-fix_rsxs_build-0.1.patch b/packages/mediacenter/xbmc/patches/xbmc-a296342-311-fix_rsxs_build-0.1.patch similarity index 100% rename from packages/mediacenter/xbmc/patches/xbmc-f13566b-311-fix_rsxs_build-0.1.patch rename to packages/mediacenter/xbmc/patches/xbmc-a296342-311-fix_rsxs_build-0.1.patch diff --git a/packages/mediacenter/xbmc/patches/xbmc-f13566b-321-texturepacker-hostflags-and-rework.patch b/packages/mediacenter/xbmc/patches/xbmc-a296342-321-texturepacker-hostflags-and-rework.patch similarity index 76% rename from packages/mediacenter/xbmc/patches/xbmc-f13566b-321-texturepacker-hostflags-and-rework.patch rename to packages/mediacenter/xbmc/patches/xbmc-a296342-321-texturepacker-hostflags-and-rework.patch index 4d54002c02..113e0f79e7 100644 --- a/packages/mediacenter/xbmc/patches/xbmc-f13566b-321-texturepacker-hostflags-and-rework.patch +++ b/packages/mediacenter/xbmc/patches/xbmc-a296342-321-texturepacker-hostflags-and-rework.patch @@ -1,7 +1,7 @@ -diff -Naur xbmc-frodo-a642b33/configure.in xbmc-frodo-a642b33.patch/configure.in ---- xbmc-frodo-a642b33/configure.in 2012-09-25 15:44:35.000000000 +0200 -+++ xbmc-frodo-a642b33.patch/configure.in 2012-09-25 16:17:31.666076439 +0200 -@@ -445,6 +445,12 @@ +diff -Naur xbmc-frodo-0ff0d2e/configure.in xbmc-frodo-0ff0d2e.patch/configure.in +--- xbmc-frodo-0ff0d2e/configure.in 2012-10-11 15:45:44.000000000 +0200 ++++ xbmc-frodo-0ff0d2e.patch/configure.in 2012-10-11 16:49:08.872850880 +0200 +@@ -452,6 +452,12 @@ [use_texturepacker=$enableval], [use_texturepacker=auto]) @@ -14,26 +14,7 @@ diff -Naur xbmc-frodo-a642b33/configure.in xbmc-frodo-a642b33.patch/configure.in AC_ARG_WITH([lirc-device], [AS_HELP_STRING([--with-lirc-device=file], [specify the default LIRC device (default is /dev/lircd)])], -@@ -584,8 +590,7 @@ - use_cpu=cortex-a8 - check_sdl_arch=[`file /opt/local/lib/libSDL_image.dylib | awk '{V=7; print $V}'`] - if test "x$check_sdl_arch" = "xi386"; then -- use_texturepacker_native=yes -- USE_TEXTUREPACKER_NATIVE_ROOT="/opt/local" -+ use_texturepacker_root="/opt/local" - else - use_texturepacker=no - fi -@@ -601,8 +606,6 @@ - *86*-apple-darwin*) - use_joystick=no - use_vtbdecoder=no -- use_texturepacker_native=yes -- USE_TEXTUREPACKER_NATIVE_ROOT="$prefix" - ARCH="x86-osx" - AC_SUBST(ARCH_DEFINES, "-DTARGET_POSIX -DTARGET_DARWIN -DTARGET_DARWIN_OSX -D_LINUX") - ;; -@@ -1987,13 +1990,13 @@ +@@ -2000,13 +2006,13 @@ USE_TEXTUREPACKER_NATIVE=0 if test "x$use_texturepacker" != "xno"; then @@ -52,9 +33,9 @@ diff -Naur xbmc-frodo-a642b33/configure.in xbmc-frodo-a642b33.patch/configure.in fi else final_message="$final_message\n TexturePacker:No" -diff -Naur xbmc-frodo-a642b33/lib/libsquish/Makefile.in xbmc-frodo-a642b33.patch/lib/libsquish/Makefile.in ---- xbmc-frodo-a642b33/lib/libsquish/Makefile.in 2012-09-25 15:45:45.000000000 +0200 -+++ xbmc-frodo-a642b33.patch/lib/libsquish/Makefile.in 2012-09-25 16:17:31.666076439 +0200 +diff -Naur xbmc-frodo-0ff0d2e/lib/libsquish/Makefile.in xbmc-frodo-0ff0d2e.patch/lib/libsquish/Makefile.in +--- xbmc-frodo-0ff0d2e/lib/libsquish/Makefile.in 2012-10-11 15:47:26.000000000 +0200 ++++ xbmc-frodo-0ff0d2e.patch/lib/libsquish/Makefile.in 2012-10-11 16:49:08.873850900 +0200 @@ -11,26 +11,25 @@ singlecolourfit.cpp \ squish.cpp @@ -93,9 +74,9 @@ diff -Naur xbmc-frodo-a642b33/lib/libsquish/Makefile.in xbmc-frodo-a642b33.patch endif include ../../Makefile.include -diff -Naur xbmc-frodo-a642b33/tools/TexturePacker/Makefile.in xbmc-frodo-a642b33.patch/tools/TexturePacker/Makefile.in ---- xbmc-frodo-a642b33/tools/TexturePacker/Makefile.in 2012-09-25 15:44:57.000000000 +0200 -+++ xbmc-frodo-a642b33.patch/tools/TexturePacker/Makefile.in 2012-09-25 16:19:08.889015705 +0200 +diff -Naur xbmc-frodo-0ff0d2e/tools/TexturePacker/Makefile.in xbmc-frodo-0ff0d2e.patch/tools/TexturePacker/Makefile.in +--- xbmc-frodo-0ff0d2e/tools/TexturePacker/Makefile.in 2012-10-11 15:47:05.000000000 +0200 ++++ xbmc-frodo-0ff0d2e.patch/tools/TexturePacker/Makefile.in 2012-10-11 16:49:08.874850920 +0200 @@ -1,56 +1,54 @@ -DEFINES += -D_LINUX -DUSE_LZO_PACKING +DEFINES += -D_LINUX -DUSE_LZO_PACKING diff --git a/packages/mediacenter/xbmc/patches/xbmc-f13566b-408-enable_PYTHONOPTIMIZE_with_external_Python-0.1.patch b/packages/mediacenter/xbmc/patches/xbmc-a296342-408-enable_PYTHONOPTIMIZE_with_external_Python-0.1.patch similarity index 100% rename from packages/mediacenter/xbmc/patches/xbmc-f13566b-408-enable_PYTHONOPTIMIZE_with_external_Python-0.1.patch rename to packages/mediacenter/xbmc/patches/xbmc-a296342-408-enable_PYTHONOPTIMIZE_with_external_Python-0.1.patch diff --git a/packages/mediacenter/xbmc/patches/xbmc-f13566b-452-change_lcd_content-0.1.patch b/packages/mediacenter/xbmc/patches/xbmc-a296342-452-change_lcd_content-0.1.patch similarity index 100% rename from packages/mediacenter/xbmc/patches/xbmc-f13566b-452-change_lcd_content-0.1.patch rename to packages/mediacenter/xbmc/patches/xbmc-a296342-452-change_lcd_content-0.1.patch diff --git a/packages/mediacenter/xbmc/patches/xbmc-f13566b-453-add_openelec.tv_RSS_news-0.1.patch b/packages/mediacenter/xbmc/patches/xbmc-a296342-453-add_openelec.tv_RSS_news-0.1.patch similarity index 100% rename from packages/mediacenter/xbmc/patches/xbmc-f13566b-453-add_openelec.tv_RSS_news-0.1.patch rename to packages/mediacenter/xbmc/patches/xbmc-a296342-453-add_openelec.tv_RSS_news-0.1.patch diff --git a/packages/mediacenter/xbmc/patches/xbmc-f13566b-454-disable_backslash-0.1.patch b/packages/mediacenter/xbmc/patches/xbmc-a296342-454-disable_backslash-0.1.patch similarity index 100% rename from packages/mediacenter/xbmc/patches/xbmc-f13566b-454-disable_backslash-0.1.patch rename to packages/mediacenter/xbmc/patches/xbmc-a296342-454-disable_backslash-0.1.patch diff --git a/packages/mediacenter/xbmc/patches/xbmc-f13566b-457-fix_connection_check-0.1.patch b/packages/mediacenter/xbmc/patches/xbmc-a296342-457-fix_connection_check-0.1.patch similarity index 100% rename from packages/mediacenter/xbmc/patches/xbmc-f13566b-457-fix_connection_check-0.1.patch rename to packages/mediacenter/xbmc/patches/xbmc-a296342-457-fix_connection_check-0.1.patch diff --git a/packages/mediacenter/xbmc/patches/xbmc-f13566b-463-add_remote_devinput-0.1.patch b/packages/mediacenter/xbmc/patches/xbmc-a296342-463-add_remote_devinput-0.1.patch similarity index 100% rename from packages/mediacenter/xbmc/patches/xbmc-f13566b-463-add_remote_devinput-0.1.patch rename to packages/mediacenter/xbmc/patches/xbmc-a296342-463-add_remote_devinput-0.1.patch diff --git a/packages/mediacenter/xbmc/patches/xbmc-f13566b-801-xvba_support-d7b836a.patch b/packages/mediacenter/xbmc/patches/xbmc-a296342-801-xvba_support-7388477.patch similarity index 77% rename from packages/mediacenter/xbmc/patches/xbmc-f13566b-801-xvba_support-d7b836a.patch rename to packages/mediacenter/xbmc/patches/xbmc-a296342-801-xvba_support-7388477.patch index f524585181..f9f5b6a16a 100644 --- a/packages/mediacenter/xbmc/patches/xbmc-f13566b-801-xvba_support-d7b836a.patch +++ b/packages/mediacenter/xbmc/patches/xbmc-a296342-801-xvba_support-7388477.patch @@ -1,1027 +1,1033 @@ -diff -Naur xbmc-f13566b/configure.in xbmc-f13566b.patch/configure.in ---- xbmc-f13566b/configure.in 2012-10-08 09:19:06.000000000 +0200 -+++ xbmc-f13566b.patch/configure.in 2012-10-08 17:13:46.956519915 +0200 -@@ -124,6 +124,8 @@ - vaapi_disabled="== VAAPI support manually disabled. ==" - crystalhd_not_found="== Could not find libcrystalhd. CrystalHD support disabled. ==" - crystalhd_disabled="== CrystalHD support manually disabled. ==" -+xvba_not_found="== Could not find amdxvba.h. XVBA support disabled. ==" -+xvba_disabled="== XVBA support manually disabled. ==" - vdadecoder_enabled="== VDADecoder support enabled. ==" - vdadecoder_disabled="== VDADecoder support manually disabled. ==" - vtbdecoder_enabled="== VTBDecoder support enabled. ==" -@@ -247,6 +249,12 @@ - [enable CrystalHD decoding (default is auto)])], - [use_crystalhd=$enableval], - [use_crystalhd=auto]) -+ -+AC_ARG_ENABLE([xvba], -+ [AS_HELP_STRING([--enable-xvba], -+ [enable XVBA decoding (default is auto)])], -+ [use_xvba=$enableval], -+ [use_xvba=auto]) +From 0984b36d3bab90d40fd03d307b32188b5e3e7be5 Mon Sep 17 00:00:00 2001 +From: xbmc +Date: Mon, 28 May 2012 10:03:31 +0200 +Subject: [PATCH 01/51] VideoRenerers: add buffering + +--- + xbmc/Application.cpp | 3 + + xbmc/cores/VideoRenderers/BaseRenderer.h | 5 +- + xbmc/cores/VideoRenderers/LinuxRendererGL.cpp | 41 ++-- + xbmc/cores/VideoRenderers/LinuxRendererGL.h | 13 +- + xbmc/cores/VideoRenderers/LinuxRendererGLES.cpp | 8 +- + xbmc/cores/VideoRenderers/LinuxRendererGLES.h | 4 +- + xbmc/cores/VideoRenderers/OverlayRenderer.cpp | 19 +- + xbmc/cores/VideoRenderers/OverlayRenderer.h | 6 +- + xbmc/cores/VideoRenderers/RenderManager.cpp | 296 +++++++++++++++++++---- + xbmc/cores/VideoRenderers/RenderManager.h | 48 +++- + xbmc/cores/VideoRenderers/WinRenderer.cpp | 8 +- + xbmc/cores/VideoRenderers/WinRenderer.h | 2 +- + xbmc/cores/dvdplayer/DVDPlayer.cpp | 2 +- + xbmc/cores/dvdplayer/DVDPlayerVideo.cpp | 18 +- + 14 files changed, 380 insertions(+), 93 deletions(-) + +diff --git a/xbmc/Application.cpp b/xbmc/Application.cpp +index 7563160..c2e4be6 100644 +--- a/xbmc/Application.cpp ++++ b/xbmc/Application.cpp +@@ -2350,7 +2350,10 @@ void CApplication::Render() + m_lastFrameTime = XbmcThreads::SystemClockMillis(); - AC_ARG_ENABLE([vdadecoder], - [AS_HELP_STRING([--enable-vdadecoder], -@@ -1725,6 +1733,38 @@ - USE_CRYSTALHD=0 - fi - -+# XVBA -+if test "x$use_xvba" != "xno"; then -+ if test "$host_vendor" = "apple" ; then -+ if test "x$use_xvba" = "xyes"; then -+ AC_MSG_ERROR([XVBA not supported on this platform]) -+ else -+ use_xvba="no" -+ AC_MSG_NOTICE($xvba_disabled) -+ fi -+ USE_XVBA=0 -+ else -+ initial_val=$use_xvba -+ AC_CHECK_HEADER([amd/amdxvba.h],, use_xvba=no, [#include ]) -+ -+ if test "x$use_xvba" = "xno"; then -+ if test "x$initial_val" = "xyes"; then -+ AC_MSG_ERROR($xvba_not_found) -+ else -+ AC_MSG_RESULT($xvba_not_found) -+ fi -+ USE_XVBA=0 -+ else -+ AC_DEFINE([HAVE_LIBXVBA], [1], [Define to 1 if you have the 'xvba' header (amdxvba.h)]) -+ USE_XVBA=1 -+ fi -+ fi -+else -+ AC_MSG_NOTICE($xvba_disabled) -+ USE_XVBA=0 -+fi -+ -+ - # VDADecoder - if test "x$use_vdadecoder" != "xno"; then - if test "$host_vendor" = "apple" ; then -@@ -1936,6 +1976,12 @@ - final_message="$final_message\n CrystalHD:\tNo" - fi - -+if test "x$use_xvba" != "xno"; then -+ final_message="$final_message\n XVBA:\t\tYes" -+else -+ final_message="$final_message\n XVBA:\t\tNo" -+fi -+ - if test "x$use_vdadecoder" != "xno"; then - final_message="$final_message\n VDADecoder:\tYes" - else -@@ -2410,6 +2456,7 @@ - AC_SUBST(USE_VDPAU) - AC_SUBST(USE_VAAPI) - AC_SUBST(USE_CRYSTALHD) -+AC_SUBST(USE_XVBA) - AC_SUBST(USE_LIBSMBCLIENT) - AC_SUBST(USE_LIBNFS) - AC_SUBST(USE_LIBAFPCLIENT) -@@ -2593,6 +2640,7 @@ - `if test "x$use_vdpau" != "xno"; then echo --enable-vdpau; else echo --disable-vdpau; fi` \ - `if test "x$use_vaapi" != "xno"; then echo --enable-vaapi; else echo --disable-vaapi; fi` \ - `if test "$use_optimizations" != "no"; then echo --enable-optimizations; else echo --disable-optimizations; fi` \ -+ `if test "x$use_xvba" != "xno"; then echo --enable-xvba; else echo --disable-xvba; fi` \ - --enable-protocol=http \ - --enable-pthreads \ - --enable-runtime-cpudetect \ -diff -Naur xbmc-f13566b/language/English/strings.po xbmc-f13566b.patch/language/English/strings.po ---- xbmc-f13566b/language/English/strings.po 2012-10-08 09:20:34.000000000 +0200 -+++ xbmc-f13566b.patch/language/English/strings.po 2012-10-08 17:15:01.841017875 +0200 -@@ -850,7 +850,9 @@ - msgid "Sizing: (%i,%i)->(%i,%i) (Zoom x%2.2f) AR:%2.2f:1 (Pixels: %2.2f:1) (VShift: %2.2f)" - msgstr "" - --#empty string with id 246 -+msgctxt "#246" -+msgid "Monitor" -+msgstr "" - - msgctxt "#247" - msgid "Scripts" -@@ -4839,7 +4841,19 @@ - msgid "Play only this" - msgstr "" - --#empty strings from id 13435 to 13499 -+msgctxt "#13435" -+msgid "Allow hardware acceleration (XVBA)" -+msgstr "" -+ -+msgctxt "#13436" -+msgid "Allow Vdpau OpenGL interop" -+msgstr "" -+ -+msgctxt "#13437" -+msgid "Allow Vdpau OpenGL interop YUV" -+msgstr "" -+ -+#empty strings from id 13438 to 13499 - - msgctxt "#13500" - msgid "A/V sync method" -@@ -6032,10 +6046,14 @@ - msgstr "" - - msgctxt "#16325" --msgid "Auto - ION Optimized" -+msgid "VDPAU - Bob" -+msgstr "" -+ -+msgctxt "#16326" -+msgid "XVBA" - msgstr "" - --#empty strings from id 16326 to 16399 -+#empty strings from id 16327 to 16399 - - msgctxt "#16400" - msgid "Post-processing" -diff -Naur xbmc-f13566b/lib/DllAvFormat.h xbmc-f13566b.patch/lib/DllAvFormat.h ---- xbmc-f13566b/lib/DllAvFormat.h 2012-10-08 09:19:35.000000000 +0200 -+++ xbmc-f13566b.patch/lib/DllAvFormat.h 2012-10-08 17:13:47.065522089 +0200 -@@ -98,6 +98,7 @@ - virtual int avformat_write_header (AVFormatContext *s, AVDictionary **options)=0; - virtual int av_write_trailer(AVFormatContext *s)=0; - virtual int av_write_frame (AVFormatContext *s, AVPacket *pkt)=0; -+ virtual int av_find_default_stream_index(AVFormatContext *s)=0; - }; - - #if (defined USE_EXTERNAL_FFMPEG) || (defined TARGET_DARWIN) -@@ -153,6 +154,7 @@ - virtual int avformat_write_header (AVFormatContext *s, AVDictionary **options) { return ::avformat_write_header (s, options); } - virtual int av_write_trailer(AVFormatContext *s) { return ::av_write_trailer(s); } - virtual int av_write_frame (AVFormatContext *s, AVPacket *pkt) { return ::av_write_frame(s, pkt); } -+ virtual int av_find_default_stream_index(AVFormatContext *s) { return ::av_find_default_stream_index(s); } - - // DLL faking. - virtual bool ResolveExports() { return true; } -@@ -209,6 +211,7 @@ - DEFINE_METHOD2(int, avformat_write_header , (AVFormatContext *p1, AVDictionary **p2)) - DEFINE_METHOD1(int, av_write_trailer, (AVFormatContext *p1)) - DEFINE_METHOD2(int, av_write_frame , (AVFormatContext *p1, AVPacket *p2)) -+ DEFINE_METHOD1(int, av_find_default_stream_index, (AVFormatContext *p1)) - BEGIN_METHOD_RESOLVE() - RESOLVE_METHOD_RENAME(av_register_all, av_register_all_dont_call) - RESOLVE_METHOD(av_find_input_format) -@@ -243,6 +246,7 @@ - RESOLVE_METHOD(avformat_write_header) - RESOLVE_METHOD(av_write_trailer) - RESOLVE_METHOD(av_write_frame) -+ RESOLVE_METHOD(av_find_default_stream_index) - END_METHOD_RESOLVE() - - /* dependencies of libavformat */ -diff -Naur xbmc-f13566b/lib/ffmpeg/configure xbmc-f13566b.patch/lib/ffmpeg/configure ---- xbmc-f13566b/lib/ffmpeg/configure 2012-10-08 09:19:51.000000000 +0200 -+++ xbmc-f13566b.patch/lib/ffmpeg/configure 2012-10-08 17:13:46.940519596 +0200 -@@ -113,6 +113,7 @@ - --enable-vdpau enable VDPAU code [autodetect] - --disable-dxva2 disable DXVA2 code - --disable-vda disable VDA code -+ --disable-xvba disable XVBA code - --enable-runtime-cpudetect detect cpu capabilities at runtime (bigger binary) - --enable-hardcoded-tables use hardcoded tables instead of runtime generation - --disable-safe-bitstream-reader -@@ -1084,6 +1085,7 @@ - vaapi - vda - vdpau -+ xvba - version3 - x11grab - zlib -@@ -1423,6 +1425,7 @@ - h264_vaapi_hwaccel_select="vaapi h264_decoder" - h264_vda_hwaccel_deps="VideoDecodeAcceleration_VDADecoder_h pthreads" - h264_vda_hwaccel_select="vda h264_decoder" -+h264_xvba_hwaccel_select="xvba h264_decoder" - h264_vdpau_decoder_select="vdpau h264_decoder" - imc_decoder_select="fft mdct sinewin" - jpegls_decoder_select="golomb" -@@ -1459,6 +1462,7 @@ - mpeg4_decoder_select="h263_decoder mpeg4video_parser" - mpeg4_encoder_select="h263_encoder" - mpeg4_vaapi_hwaccel_select="vaapi mpeg4_decoder" -+mpeg2_xvba_hwaccel_select="xvba mpeg2video_decoder" - mpeg4_vdpau_decoder_select="vdpau mpeg4_decoder" - msmpeg4_crystalhd_decoder_select="crystalhd" - msmpeg4v1_decoder_select="h263_decoder" -@@ -1501,6 +1505,7 @@ - vc1_dxva2_hwaccel_deps="dxva2api_h" - vc1_dxva2_hwaccel_select="dxva2 vc1_decoder" - vc1_vaapi_hwaccel_select="vaapi vc1_decoder" -+vc1_xvba_hwaccel_select="xvba vc1_decoder" - vc1_vdpau_decoder_select="vdpau vc1_decoder" - vc1image_decoder_select="vc1_decoder" - vorbis_decoder_select="mdct" -@@ -1525,6 +1530,7 @@ - wmv3_vaapi_hwaccel_select="vc1_vaapi_hwaccel" - wmv3_vdpau_decoder_select="vc1_vdpau_decoder" - wmv3image_decoder_select="wmv3_decoder" -+wmv3_xvba_hwaccel_select="vc1_xvba_hwaccel" - zlib_decoder_select="zlib" - zlib_encoder_select="zlib" - zmbv_decoder_select="zlib" -@@ -1533,6 +1539,7 @@ - crystalhd_deps="libcrystalhd_libcrystalhd_if_h" - vaapi_deps="va_va_h" - vda_deps="VideoDecodeAcceleration_VDADecoder_h pthreads" -+xvba_deps="amd_amdxvba_h" - vdpau_deps="vdpau_vdpau_h vdpau_vdpau_x11_h" - - # parsers -@@ -3062,6 +3069,7 @@ - check_header termios.h - check_header vdpau/vdpau.h - check_header vdpau/vdpau_x11.h -+check_header amd/amdxvba.h - check_cpp_condition vdpau/vdpau.h "defined(VDP_DECODER_PROFILE_MPEG4_PART2_SP)" && enable vdpau_mpeg4_support - - check_header X11/extensions/XvMClib.h -diff -Naur xbmc-f13566b/lib/ffmpeg/libavcodec/allcodecs.c xbmc-f13566b.patch/lib/ffmpeg/libavcodec/allcodecs.c ---- xbmc-f13566b/lib/ffmpeg/libavcodec/allcodecs.c 2012-10-08 09:19:55.000000000 +0200 -+++ xbmc-f13566b.patch/lib/ffmpeg/libavcodec/allcodecs.c 2012-10-08 17:13:46.944519676 +0200 -@@ -59,14 +59,18 @@ - REGISTER_HWACCEL (H264_VAAPI, h264_vaapi); - REGISTER_HWACCEL (H264_VDA, h264_vda); - REGISTER_HWACCEL (MPEG1_VDPAU, mpeg1_vdpau); -+ REGISTER_HWACCEL (H264_XVBA, h264_xvba); - REGISTER_HWACCEL (MPEG2_DXVA2, mpeg2_dxva2); - REGISTER_HWACCEL (MPEG2_VAAPI, mpeg2_vaapi); - REGISTER_HWACCEL (MPEG2_VDPAU, mpeg2_vdpau); - REGISTER_HWACCEL (MPEG4_VAAPI, mpeg4_vaapi); -+ REGISTER_HWACCEL (MPEG2_XVBA, mpeg2_xvba); - REGISTER_HWACCEL (VC1_DXVA2, vc1_dxva2); - REGISTER_HWACCEL (VC1_VAAPI, vc1_vaapi); -+ REGISTER_HWACCEL (VC1_XVBA, vc1_xvba); - REGISTER_HWACCEL (WMV3_DXVA2, wmv3_dxva2); - REGISTER_HWACCEL (WMV3_VAAPI, wmv3_vaapi); -+ REGISTER_HWACCEL (WMV3_XVBA, wmv3_xvba); - - /* video codecs */ - REGISTER_ENCODER (A64MULTI, a64multi); -diff -Naur xbmc-f13566b/lib/ffmpeg/libavcodec/h264.c xbmc-f13566b.patch/lib/ffmpeg/libavcodec/h264.c ---- xbmc-f13566b/lib/ffmpeg/libavcodec/h264.c 2012-10-08 09:19:57.000000000 +0200 -+++ xbmc-f13566b.patch/lib/ffmpeg/libavcodec/h264.c 2012-10-08 17:13:46.946519716 +0200 -@@ -60,6 +60,7 @@ - PIX_FMT_DXVA2_VLD, - PIX_FMT_VAAPI_VLD, - PIX_FMT_VDA_VLD, -+ PIX_FMT_XVBA_VLD, - PIX_FMT_YUVJ420P, - PIX_FMT_NONE - }; -diff -Naur xbmc-f13566b/lib/ffmpeg/libavcodec/Makefile xbmc-f13566b.patch/lib/ffmpeg/libavcodec/Makefile ---- xbmc-f13566b/lib/ffmpeg/libavcodec/Makefile 2012-10-08 09:20:01.000000000 +0200 -+++ xbmc-f13566b.patch/lib/ffmpeg/libavcodec/Makefile 2012-10-08 17:13:46.943519656 +0200 -@@ -3,7 +3,7 @@ - NAME = avcodec - FFLIBS = avutil - --HEADERS = avcodec.h avfft.h dxva2.h opt.h vaapi.h vda.h vdpau.h version.h xvmc.h -+HEADERS = avcodec.h avfft.h dxva2.h opt.h vaapi.h vda.h vdpau.h version.h xvmc.h xvba.h - - OBJS = allcodecs.o \ - audioconvert.o \ -@@ -51,6 +51,7 @@ - OBJS-$(CONFIG_VAAPI) += vaapi.o - OBJS-$(CONFIG_VDA) += vda.o - OBJS-$(CONFIG_VDPAU) += vdpau.o -+OBJS-$(CONFIG_XVBA) += xvba.o - - # decoders/encoders/hardware accelerators - OBJS-$(CONFIG_A64MULTI_ENCODER) += a64multienc.o elbg.o -@@ -201,6 +202,7 @@ - OBJS-$(CONFIG_H264_DXVA2_HWACCEL) += dxva2_h264.o - OBJS-$(CONFIG_H264_VAAPI_HWACCEL) += vaapi_h264.o - OBJS-$(CONFIG_H264_VDA_HWACCEL) += vda_h264.o -+OBJS-$(CONFIG_H264_XVBA_HWACCEL) += xvba_h264.o - OBJS-$(CONFIG_HUFFYUV_DECODER) += huffyuv.o - OBJS-$(CONFIG_HUFFYUV_ENCODER) += huffyuv.o - OBJS-$(CONFIG_IDCIN_DECODER) += idcinvideo.o -@@ -284,6 +286,7 @@ - mpegvideo.o error_resilience.o - OBJS-$(CONFIG_MPEG2_DXVA2_HWACCEL) += dxva2_mpeg2.o - OBJS-$(CONFIG_MPEG2_VAAPI_HWACCEL) += vaapi_mpeg2.o -+OBJS-$(CONFIG_MPEG2_XVBA_HWACCEL) += xvba_mpeg2.o - OBJS-$(CONFIG_MPEG2VIDEO_DECODER) += mpeg12.o mpeg12data.o \ - mpegvideo.o error_resilience.o - OBJS-$(CONFIG_MPEG2VIDEO_ENCODER) += mpeg12enc.o mpegvideo_enc.o \ -@@ -431,6 +434,7 @@ - intrax8.o intrax8dsp.o - OBJS-$(CONFIG_VC1_DXVA2_HWACCEL) += dxva2_vc1.o - OBJS-$(CONFIG_VC1_VAAPI_HWACCEL) += vaapi_vc1.o -+OBJS-$(CONFIG_VC1_XVBA_HWACCEL) += xvba_vc1.o - OBJS-$(CONFIG_VCR1_DECODER) += vcr1.o - OBJS-$(CONFIG_VCR1_ENCODER) += vcr1.o - OBJS-$(CONFIG_VMDAUDIO_DECODER) += vmdav.o -@@ -732,6 +736,7 @@ - SKIPHEADERS-$(CONFIG_LIBSCHROEDINGER) += libschroedinger.h - SKIPHEADERS-$(CONFIG_VAAPI) += vaapi_internal.h - SKIPHEADERS-$(CONFIG_VDA) += vda_internal.h -+SKIPHEADERS-$(CONFIG_XVBA) += xvba_internal.h - SKIPHEADERS-$(CONFIG_VDPAU) += vdpau.h - SKIPHEADERS-$(CONFIG_XVMC) += xvmc.h - SKIPHEADERS-$(HAVE_W32THREADS) += w32pthreads.h -diff -Naur xbmc-f13566b/lib/ffmpeg/libavcodec/mpegvideo.c xbmc-f13566b.patch/lib/ffmpeg/libavcodec/mpegvideo.c ---- xbmc-f13566b/lib/ffmpeg/libavcodec/mpegvideo.c 2012-10-08 09:20:03.000000000 +0200 -+++ xbmc-f13566b.patch/lib/ffmpeg/libavcodec/mpegvideo.c 2012-10-08 17:13:46.948519755 +0200 -@@ -136,6 +136,7 @@ - PIX_FMT_DXVA2_VLD, - PIX_FMT_VAAPI_VLD, - PIX_FMT_VDA_VLD, -+ PIX_FMT_XVBA_VLD, - PIX_FMT_YUV420P, - PIX_FMT_NONE - }; -diff -Naur xbmc-f13566b/lib/ffmpeg/libavcodec/xvba.c xbmc-f13566b.patch/lib/ffmpeg/libavcodec/xvba.c ---- xbmc-f13566b/lib/ffmpeg/libavcodec/xvba.c 1970-01-01 01:00:00.000000000 +0100 -+++ xbmc-f13566b.patch/lib/ffmpeg/libavcodec/xvba.c 2012-10-08 17:13:46.949519775 +0200 -@@ -0,0 +1,66 @@ -+/* -+ * HW decode acceleration for MPEG-2, H.264 and VC-1 -+ * -+ * Copyright (C) 2005-2011 Team XBMC -+ * -+ * This file is part of FFmpeg. -+ * -+ * FFmpeg is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU Lesser General Public -+ * License as published by the Free Software Foundation; either -+ * version 2.1 of the License, or (at your option) any later version. -+ * -+ * FFmpeg is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ * Lesser General Public License for more details. -+ * -+ * You should have received a copy of the GNU Lesser General Public -+ * License along with FFmpeg; if not, write to the Free Software -+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -+ */ -+ -+ -+/** -+ * \addtogroup XVBA_Decoding -+ * -+ * @{ -+ */ -+ -+#include -+#include "xvba.h" -+#include "xvba_internal.h" -+#include "avcodec.h" -+ -+int ff_xvba_translate_profile(int profile) { -+ -+ if (profile == 66) -+ return 1; -+ else if (profile == 77) -+ return 2; -+ else if (profile == 100) -+ return 3; -+ else if (profile == 0) -+ return 4; -+ else if (profile == 1) -+ return 5; -+ else if (profile == 3) -+ return 6; -+ else -+ return -1; -+} -+ -+void ff_xvba_add_slice_data(struct xvba_render_state *render, const uint8_t *buffer, uint32_t size) { -+ -+ render->buffers = av_fast_realloc( -+ render->buffers, -+ &render->buffers_alllocated, -+ sizeof(struct xvba_bitstream_buffers)*(render->num_slices + 1) -+ ); -+ -+ render->buffers[render->num_slices].buffer = buffer; -+ render->buffers[render->num_slices].size = size; -+ -+ render->num_slices++; -+} -+ -diff -Naur xbmc-f13566b/lib/ffmpeg/libavcodec/xvba.h xbmc-f13566b.patch/lib/ffmpeg/libavcodec/xvba.h ---- xbmc-f13566b/lib/ffmpeg/libavcodec/xvba.h 1970-01-01 01:00:00.000000000 +0100 -+++ xbmc-f13566b.patch/lib/ffmpeg/libavcodec/xvba.h 2012-10-08 17:13:47.077522329 +0200 -@@ -0,0 +1,71 @@ -+/* -+ * HW decode acceleration for MPEG-2, H.264 and VC-1 -+ * -+ * Copyright (C) 2005-2011 Team XBMC -+ * -+ * This file is part of FFmpeg. -+ * -+ * FFmpeg is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU Lesser General Public -+ * License as published by the Free Software Foundation; either -+ * version 2.1 of the License, or (at your option) any later version. -+ * -+ * FFmpeg is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ * Lesser General Public License for more details. -+ * -+ * You should have received a copy of the GNU Lesser General Public -+ * License along with FFmpeg; if not, write to the Free Software -+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -+ */ -+ -+#ifndef AVCODEC_XVBA_H -+#define AVCODEC_XVBA_H -+ -+#include -+#include -+#include -+ -+ -+/** -+ * \defgroup XVBA_Decoding VA API Decoding -+ * \ingroup Decoder -+ * @{ -+ */ -+ -+/** \brief The videoSurface is used for rendering. */ -+#define FF_XVBA_STATE_USED_FOR_RENDER 1 -+ -+/** -+ * \brief The videoSurface is needed for reference/prediction. -+ * The codec manipulates this. -+ */ -+#define FF_XVBA_STATE_USED_FOR_REFERENCE 2 -+ -+/** -+ * \brief The videoSurface holds a decoded frame. -+ * The codec manipulates this. -+ */ -+#define FF_XVBA_STATE_DECODED 4 -+ -+/* @} */ -+ -+struct xvba_bitstream_buffers -+{ -+ const void *buffer; -+ unsigned int size; -+}; -+ -+struct xvba_render_state { -+ -+ int state; ///< Holds FF_XVBA_STATE_* values. -+ void *surface; -+ XVBAPictureDescriptor *picture_descriptor; -+ XVBAQuantMatrixAvc *iq_matrix; -+ unsigned int num_slices; -+ struct xvba_bitstream_buffers *buffers; -+ uint32_t buffers_alllocated; -+}; -+ -+#endif /* AVCODEC_XVBA_H */ -diff -Naur xbmc-f13566b/lib/ffmpeg/libavcodec/xvba_h264.c xbmc-f13566b.patch/lib/ffmpeg/libavcodec/xvba_h264.c ---- xbmc-f13566b/lib/ffmpeg/libavcodec/xvba_h264.c 1970-01-01 01:00:00.000000000 +0100 -+++ xbmc-f13566b.patch/lib/ffmpeg/libavcodec/xvba_h264.c 2012-10-08 17:13:46.950519794 +0200 -@@ -0,0 +1,189 @@ -+/* -+ * H.264 HW decode acceleration through XVBA -+ * -+ * Copyright (C) 2005-2011 Team XBMC -+ * -+ * This file is part of FFmpeg. -+ * -+ * FFmpeg is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU Lesser General Public -+ * License as published by the Free Software Foundation; either -+ * version 2.1 of the License, or (at your option) any later version. -+ * -+ * FFmpeg is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ * Lesser General Public License for more details. -+ * -+ * You should have received a copy of the GNU Lesser General Public -+ * License along with FFmpeg; if not, write to the Free Software -+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -+ */ -+ -+#include "xvba.h" -+#include "xvba_internal.h" -+#include "h264.h" -+#include -+ -+/** @file -+ * This file implements the glue code between FFmpeg's and XvBA API's -+ * structures for H.264 decoding. -+ */ -+ -+ -+/** Initialize and start decoding a frame with XVBA. */ -+static int start_frame(AVCodecContext *avctx, -+ av_unused const uint8_t *buffer, -+ av_unused uint32_t size) -+{ -+ H264Context * const h = avctx->priv_data; -+ MpegEncContext * const s = &h->s; -+ struct xvba_render_state *render; -+ XVBAPictureDescriptor *pic_descriptor; -+ int i; -+ -+ render = (struct xvba_render_state *)s->current_picture_ptr->f.data[0]; -+ assert(render); -+ -+ if (render->picture_descriptor == 0) -+ return -1; -+ -+ pic_descriptor = render->picture_descriptor; -+ -+ for (i = 0; i < 2; ++i) { -+ int foc = s->current_picture_ptr->field_poc[i]; -+ if (foc == INT_MAX) -+ foc = 0; -+ pic_descriptor->avc_curr_field_order_cnt_list[i] = foc; + if (flip) ++ { + g_graphicsContext.Flip(dirtyRegions); ++ g_renderManager.NotifyDisplayFlip(); + } -+ -+ pic_descriptor->avc_frame_num = h->frame_num; -+ -+ render->num_slices = 0; -+ -+ return 0; + CTimeUtils::UpdateFrameTime(flip); + + g_renderManager.UpdateResolution(); +diff --git a/xbmc/cores/VideoRenderers/BaseRenderer.h b/xbmc/cores/VideoRenderers/BaseRenderer.h +index fdd0ad4..15f2515 100644 +--- a/xbmc/cores/VideoRenderers/BaseRenderer.h ++++ b/xbmc/cores/VideoRenderers/BaseRenderer.h +@@ -80,10 +80,13 @@ class CBaseRenderer + void GetVideoRect(CRect &source, CRect &dest); + float GetAspectRatio() const; + +- virtual bool AddVideoPicture(DVDVideoPicture* picture) { return false; } ++ virtual bool AddVideoPicture(DVDVideoPicture* picture, int index) { return false; } + virtual void Flush() {}; + + virtual unsigned int GetProcessorSize() { return 0; } ++ virtual unsigned int GetMaxProcessorSize() { return 0; } ++ virtual void SetProcessorSize(int numBuffers) { } ++ virtual void ReleaseBuffer(int idx) { } + + virtual bool Supports(ERENDERFEATURE feature) { return false; } + +diff --git a/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp b/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp +index 9298e8a..bf06422 100644 +--- a/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp ++++ b/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp +@@ -235,14 +235,6 @@ bool CLinuxRendererGL::ValidateRenderer() + return true; + } + +- +-void CLinuxRendererGL::ManageTextures() +-{ +- m_NumYV12Buffers = 2; +- //m_iYV12RenderBuffer = 0; +- return; +-} +- + bool CLinuxRendererGL::ValidateRenderTarget() + { + if (!m_bValidated) +@@ -603,13 +595,28 @@ void CLinuxRendererGL::Flush() + glFinish(); + m_bValidated = false; + m_fbo.fbo.Cleanup(); ++ m_iYV12RenderBuffer = 0; +} + -+/** End a hardware decoding based frame. */ -+static int end_frame(AVCodecContext *avctx) ++void CLinuxRendererGL::ReleaseBuffer(int idx) +{ -+ H264Context * const h = avctx->priv_data; -+ MpegEncContext * const s = &h->s; -+ struct xvba_render_state *render; -+ XVBAPictureDescriptor *pic_descriptor; -+ XVBAQuantMatrixAvc *iq_matrix; -+ -+ render = (struct xvba_render_state *)s->current_picture_ptr->f.data[0]; -+ assert(render); -+ -+ if (render->picture_descriptor == 0 || render->iq_matrix == 0) -+ return -1; -+ -+ pic_descriptor = render->picture_descriptor; -+ iq_matrix = render->iq_matrix; -+ -+ av_dlog(avctx, "end_frame()\n"); -+ -+ /* Fill in Picture Parameters*/ -+ pic_descriptor->profile = ff_xvba_translate_profile(avctx->profile); -+ pic_descriptor->level = avctx->level; -+ pic_descriptor->width_in_mb = s->mb_width; -+ pic_descriptor->height_in_mb = s->mb_height; -+ pic_descriptor->picture_structure = s->picture_structure; -+ pic_descriptor->chroma_format = s->chroma_format ? s->chroma_format : 1; -+ pic_descriptor->avc_intra_flag = (h->slice_type == AV_PICTURE_TYPE_I) ? 1 : 0; -+ pic_descriptor->avc_reference = (s->current_picture_ptr->f.reference & 3) ? 1 : 0; -+ -+ pic_descriptor->avc_bit_depth_luma_minus8 = h->sps.bit_depth_luma - 8; -+ pic_descriptor->avc_bit_depth_chroma_minus8 = h->sps.bit_depth_chroma - 8; -+ pic_descriptor->avc_log2_max_frame_num_minus4 = h->sps.log2_max_frame_num -4; -+ pic_descriptor->avc_pic_order_cnt_type = h->sps.poc_type; -+ pic_descriptor->avc_log2_max_pic_order_cnt_lsb_minus4 = h->sps.log2_max_poc_lsb - 4; -+ pic_descriptor->avc_num_ref_frames = h->sps.ref_frame_count; -+ pic_descriptor->avc_reserved_8bit = 0; -+ -+ /* Set correct level */ -+ if (pic_descriptor->level == 41) { -+ const unsigned int mbw = pic_descriptor->width_in_mb; -+ const unsigned int mbh = pic_descriptor->height_in_mb; -+ const unsigned int max_ref_frames = 12288 * 1024 / (mbw * mbh * 384); -+ const unsigned int num_ref_frames = pic_descriptor->avc_num_ref_frames; -+ if (max_ref_frames < num_ref_frames) -+ pic_descriptor->level = 51; -+ } -+ -+ pic_descriptor->avc_num_slice_groups_minus1 = h->pps.slice_group_count - 1; -+ pic_descriptor->avc_num_ref_idx_l0_active_minus1 = h->pps.ref_count[0] - 1; -+ pic_descriptor->avc_num_ref_idx_l1_active_minus1 = h->pps.ref_count[1] - 1; -+ -+ pic_descriptor->avc_pic_init_qp_minus26 = h->pps.init_qp - 26; -+ pic_descriptor->avc_pic_init_qs_minus26 = h->pps.init_qs - 26; -+ pic_descriptor->avc_chroma_qp_index_offset = h->pps.chroma_qp_index_offset[0]; -+ pic_descriptor->avc_second_chroma_qp_index_offset = h->pps.chroma_qp_index_offset[1]; -+ pic_descriptor->avc_slice_group_change_rate_minus1 = 0; // not implemented in ffmpeg -+ pic_descriptor->avc_reserved_16bit = 0; // must be 0 -+ memset(pic_descriptor->avc_field_order_cnt_list,0,sizeof(pic_descriptor->avc_field_order_cnt_list)); // must be 0 -+ memset(pic_descriptor->avc_slice_group_map,0,sizeof(pic_descriptor->avc_slice_group_map)); // must be 0 -+ -+ // sps -+ pic_descriptor->sps_info.avc.delta_pic_always_zero_flag = h->sps.delta_pic_order_always_zero_flag; -+ pic_descriptor->sps_info.avc.direct_8x8_inference_flag = h->sps.direct_8x8_inference_flag; -+ pic_descriptor->sps_info.avc.frame_mbs_only_flag = h->sps.frame_mbs_only_flag; -+ pic_descriptor->sps_info.avc.gaps_in_frame_num_value_allowed_flag = h->sps.gaps_in_frame_num_allowed_flag; -+ pic_descriptor->sps_info.avc.mb_adaptive_frame_field_flag = h->sps.mb_aff; -+ pic_descriptor->sps_info.avc.residual_colour_transform_flag = h->sps.residual_color_transform_flag; -+ pic_descriptor->sps_info.avc.xvba_avc_sps_reserved = 0; -+ -+ // pps -+ pic_descriptor->pps_info.avc.entropy_coding_mode_flag = h->pps.cabac; -+ pic_descriptor->pps_info.avc.pic_order_present_flag = h->pps.pic_order_present; -+ pic_descriptor->pps_info.avc.weighted_pred_flag = h->pps.weighted_pred; -+ pic_descriptor->pps_info.avc.weighted_bipred_idc = h->pps.weighted_bipred_idc; -+ pic_descriptor->pps_info.avc.deblocking_filter_control_present_flag = h->pps.deblocking_filter_parameters_present; -+ pic_descriptor->pps_info.avc.constrained_intra_pred_flag = h->pps.constrained_intra_pred; -+ pic_descriptor->pps_info.avc.redundant_pic_cnt_present_flag = h->pps.redundant_pic_cnt_present; -+ pic_descriptor->pps_info.avc.transform_8x8_mode_flag = h->pps.transform_8x8_mode; -+ pic_descriptor->pps_info.avc.xvba_avc_pps_reserved = 0; // must be 0 -+ -+ memcpy(iq_matrix->bScalingLists4x4, h->pps.scaling_matrix4, sizeof(iq_matrix->bScalingLists4x4)); -+ memcpy(iq_matrix->bScalingLists8x8[0], h->pps.scaling_matrix8[0], sizeof(iq_matrix->bScalingLists8x8[0])); -+ memcpy(iq_matrix->bScalingLists8x8[1], h->pps.scaling_matrix8[3], sizeof(iq_matrix->bScalingLists8x8[0])); -+ -+ // Wait for an I-frame before start decoding. Workaround for ATI UVD and UVD+ GPUs -+ if (!h->got_first_iframe) { -+ if (h->slice_type != AV_PICTURE_TYPE_I && h->slice_type != AV_PICTURE_TYPE_SI) -+ return -1; -+ h->got_first_iframe = 1; -+ } -+ -+ ff_draw_horiz_band(s, 0, s->avctx->height); -+ -+ return 0; -+} -+ -+/** Decode the given H.264 slice with XVBA. */ -+static int decode_slice(AVCodecContext *avctx, -+ const uint8_t *buffer, -+ uint32_t size) -+{ -+ H264Context * const h = avctx->priv_data; -+ MpegEncContext * const s = &h->s; -+ struct xvba_render_state *render; -+ -+ render = (struct xvba_render_state *)s->current_picture_ptr->f.data[0]; -+ assert(render); -+ -+ ff_xvba_add_slice_data(render, buffer, size); -+ -+ return 0; -+} -+ -+AVHWAccel ff_h264_xvba_hwaccel = { -+ .name = "h264_xvba", -+ .type = AVMEDIA_TYPE_VIDEO, -+ .id = CODEC_ID_H264, -+ .pix_fmt = PIX_FMT_XVBA_VLD, -+ .start_frame = start_frame, -+ .end_frame = end_frame, -+ .decode_slice = decode_slice, -+}; -diff -Naur xbmc-f13566b/lib/ffmpeg/libavcodec/xvba_internal.h xbmc-f13566b.patch/lib/ffmpeg/libavcodec/xvba_internal.h ---- xbmc-f13566b/lib/ffmpeg/libavcodec/xvba_internal.h 1970-01-01 01:00:00.000000000 +0100 -+++ xbmc-f13566b.patch/lib/ffmpeg/libavcodec/xvba_internal.h 2012-10-08 17:13:46.950519794 +0200 -@@ -0,0 +1,24 @@ -+/* -+ * HW decode acceleration for MPEG-2, H.264 and VC-1 -+ * -+ * Copyright (C) 2005-2011 Team XBMC -+ * -+ * This file is part of FFmpeg. -+ * -+ * FFmpeg is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU Lesser General Public -+ * License as published by the Free Software Foundation; either -+ * version 2.1 of the License, or (at your option) any later version. -+ * -+ * FFmpeg is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ * Lesser General Public License for more details. -+ * -+ * You should have received a copy of the GNU Lesser General Public -+ * License along with FFmpeg; if not, write to the Free Software -+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -+ */ -+ -+int ff_xvba_translate_profile(int profile); -+void ff_xvba_add_slice_data(struct xvba_render_state *render, const uint8_t *buffer, uint32_t size); -diff -Naur xbmc-f13566b/lib/ffmpeg/libavcodec/xvba_mpeg2.c xbmc-f13566b.patch/lib/ffmpeg/libavcodec/xvba_mpeg2.c ---- xbmc-f13566b/lib/ffmpeg/libavcodec/xvba_mpeg2.c 1970-01-01 01:00:00.000000000 +0100 -+++ xbmc-f13566b.patch/lib/ffmpeg/libavcodec/xvba_mpeg2.c 2012-10-08 17:13:46.951519813 +0200 -@@ -0,0 +1,52 @@ -+/* -+ * MPEG-2 HW decode acceleration through XVBA -+ * -+ * Copyright (C) 2005-2011 Team XBMC -+ * -+ * This file is part of FFmpeg. -+ * -+ * FFmpeg is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU Lesser General Public -+ * License as published by the Free Software Foundation; either -+ * version 2.1 of the License, or (at your option) any later version. -+ * -+ * FFmpeg is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ * Lesser General Public License for more details. -+ * -+ * You should have received a copy of the GNU Lesser General Public -+ * License along with FFmpeg; if not, write to the Free Software -+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -+ */ -+ -+#include "dsputil.h" -+ -+static int start_frame(AVCodecContext *avctx, av_unused const uint8_t *buffer, av_unused uint32_t size) -+{ -+ struct MpegEncContext * const s = avctx->priv_data; -+ return 0; -+} -+ -+static int end_frame(AVCodecContext *avctx) -+{ -+ return 0; -+} -+ -+static int decode_slice(AVCodecContext *avctx, const uint8_t *buffer, uint32_t size) -+{ -+ struct MpegEncContext * const s = avctx->priv_data; -+ return 0; -+} -+ -+AVHWAccel ff_mpeg2_xvba_hwaccel = { -+ .name = "mpeg2_xvba", -+ .type = AVMEDIA_TYPE_VIDEO, -+ .id = CODEC_ID_MPEG2VIDEO, -+ .pix_fmt = PIX_FMT_XVBA_VLD, -+ .capabilities = 0, -+ .start_frame = start_frame, -+ .end_frame = end_frame, -+ .decode_slice = decode_slice, -+ .priv_data_size = 0, -+}; -diff -Naur xbmc-f13566b/lib/ffmpeg/libavcodec/xvba_vc1.c xbmc-f13566b.patch/lib/ffmpeg/libavcodec/xvba_vc1.c ---- xbmc-f13566b/lib/ffmpeg/libavcodec/xvba_vc1.c 1970-01-01 01:00:00.000000000 +0100 -+++ xbmc-f13566b.patch/lib/ffmpeg/libavcodec/xvba_vc1.c 2012-10-08 17:13:46.952519833 +0200 -@@ -0,0 +1,190 @@ -+/* -+ * VC-1 HW decode acceleration through XVBA -+ * -+ * Copyright (C) 2005-2011 Team XBMC -+ * -+ * This file is part of FFmpeg. -+ * -+ * FFmpeg is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU Lesser General Public -+ * License as published by the Free Software Foundation; either -+ * version 2.1 of the License, or (at your option) any later version. -+ * -+ * FFmpeg is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ * Lesser General Public License for more details. -+ * -+ * You should have received a copy of the GNU Lesser General Public -+ * License along with FFmpeg; if not, write to the Free Software -+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -+ */ -+ -+#include "xvba.h" -+#include "xvba_internal.h" -+#include "vc1.h" -+#include "vc1data.h" -+#include -+ -+ -+/** @file -+ * Implement structures of ffmpeg <-> XvBA -+ */ -+ -+/* Initialize and start decoding a frame with XvBA */ -+static int start_frame(AVCodecContext *avctx, -+ av_unused const uint8_t *buffer, -+ av_unused uint32_t size) -+{ -+ VC1Context * const v = avctx->priv_data; -+ MpegEncContext * const s = &v->s; -+ struct xvba_render_state *render; -+ -+ render = (struct xvba_render_state *)s->current_picture_ptr->f.data[0]; -+ assert(render); -+ -+ render->num_slices = 0; -+ return 0; -+} -+ -+/* End a hardware decoding based frame */ -+static int end_frame(AVCodecContext *avctx) -+{ -+ VC1Context* const v = avctx->priv_data; -+ MpegEncContext* const s = &v->s; -+ struct xvba_render_state *render, *last, *next; -+ XVBAPictureDescriptor *pic_descriptor; -+ -+ render = (struct xvba_render_state *)s->current_picture_ptr->f.data[0]; -+ assert(render); -+ -+ if (render->picture_descriptor == 0) -+ return -1; -+ -+ pic_descriptor = render->picture_descriptor; -+ -+ av_dlog(avctx, "xvba_vc1_end_frame()\n"); -+ -+ memset(pic_descriptor, 0, sizeof(*pic_descriptor)); -+ -+ /* Fill in Parameters - for reference see AMD sdk documentation */ -+ pic_descriptor->profile = ff_xvba_translate_profile(v->profile); -+ pic_descriptor->level = v->level; -+ //done like in va-driver and vaapi -+ if (v->profile == PROFILE_ADVANCED) { -+ pic_descriptor->width_in_mb = s->avctx->coded_width; -+ pic_descriptor->height_in_mb = s->avctx->coded_height; -+ } else { -+ pic_descriptor->width_in_mb = s->mb_width; -+ pic_descriptor->height_in_mb = s->mb_height; -+ } -+ pic_descriptor->picture_structure = s->picture_structure; -+ // xvba-video set this to 1 only 4:2:0 supported -+ // doc says: if not set, choose 1 - we try this -+ pic_descriptor->chroma_format = 1; -+ pic_descriptor->avc_intra_flag = s->pict_type == AV_PICTURE_TYPE_I || v->bi_type == 1; -+ pic_descriptor->avc_reference = (s->current_picture_ptr->f.reference & 3) ? 1 : 0; -+ -+ // VC-1 explicit parameters see page 30 of sdk -+ // sps_info -+ pic_descriptor->sps_info.vc1.postprocflag = v->postprocflag; -+ -+ // done as in vaapi -+ pic_descriptor->sps_info.vc1.pulldown = v->broadcast; -+ pic_descriptor->sps_info.vc1.interlace = v->interlace; -+ pic_descriptor->sps_info.vc1.tfcntrflag = v->tfcntrflag; -+ pic_descriptor->sps_info.vc1.finterpflag = v->finterpflag; -+ pic_descriptor->sps_info.vc1.reserved = 1; -+ // eventually check if this makes sense together with interlace -+ pic_descriptor->sps_info.vc1.psf = v->psf; -+ // what about if it is a frame (page 31) -+ // looked at xvba-driver -+ pic_descriptor->sps_info.vc1.second_field = !s->first_field; -+ pic_descriptor->sps_info.vc1.xvba_vc1_sps_reserved = 0; -+ -+ // VC-1 explicit parameters see page 30 of sdk -+ // pps_info -+ pic_descriptor->pps_info.vc1.panscan_flag = v->panscanflag; -+ pic_descriptor->pps_info.vc1.refdist_flag = v->refdist_flag; -+ pic_descriptor->pps_info.vc1.loopfilter = s->loop_filter; -+ pic_descriptor->pps_info.vc1.fastuvmc = v->fastuvmc; -+ pic_descriptor->pps_info.vc1.extended_mv = v->extended_mv; -+ pic_descriptor->pps_info.vc1.dquant = v->dquant; -+ pic_descriptor->pps_info.vc1.vstransform = v->vstransform; -+ pic_descriptor->pps_info.vc1.overlap = v->overlap; -+ pic_descriptor->pps_info.vc1.quantizer = v->quantizer_mode; -+ pic_descriptor->pps_info.vc1.extended_dmv = v->extended_dmv; -+ pic_descriptor->pps_info.vc1.maxbframes = s->avctx->max_b_frames; -+ pic_descriptor->pps_info.vc1.rangered = (pic_descriptor->profile == PROFILE_SIMPLE) ? 0 : v->rangered; -+ pic_descriptor->pps_info.vc1.syncmarker = (pic_descriptor->profile == PROFILE_SIMPLE) ? 0 : s->resync_marker; -+ pic_descriptor->pps_info.vc1.multires = v->multires; -+ pic_descriptor->pps_info.vc1.reserved = 1; -+ pic_descriptor->pps_info.vc1.range_mapy_flag = v->range_mapy_flag; -+ pic_descriptor->pps_info.vc1.range_mapy = v->range_mapy; -+ pic_descriptor->pps_info.vc1.range_mapuv_flag = v->range_mapuv_flag; -+ pic_descriptor->pps_info.vc1.range_mapuv = v->range_mapuv; -+ pic_descriptor->pps_info.vc1.xvba_vc1_pps_reserved = 0; -+ -+ pic_descriptor->past_surface = 0; -+ pic_descriptor->future_surface = 0; -+ switch (s->pict_type) { -+ case AV_PICTURE_TYPE_B: -+ next = (struct xvba_render_state *)s->next_picture.f.data[0]; -+ assert(next); -+ if (next) -+ pic_descriptor->past_surface = next->surface; -+ // fall-through -+ case AV_PICTURE_TYPE_P: -+ last = (struct xvba_render_state *)s->last_picture.f.data[0]; -+ assert(last); -+ if (last) -+ pic_descriptor->future_surface = last->surface; -+ break; -+ } -+ -+ ff_draw_horiz_band(s, 0, s->avctx->height); -+ -+ return 0; -+} -+ -+static int decode_slice(AVCodecContext *avctx, const uint8_t *buffer, uint32_t size) -+{ -+ VC1Context* const v = avctx->priv_data; -+ MpegEncContext* const s = &v->s; -+ struct xvba_render_state *render; -+ -+ render = (struct xvba_render_state *)s->current_picture_ptr->f.data[0]; -+ assert(render); -+ -+ if (avctx->codec_id == CODEC_ID_VC1 && -+ size >= 4 && IS_MARKER(AV_RB32(buffer))) { -+ buffer += 4; -+ size -= 4; -+ } -+ -+ ff_xvba_add_slice_data(render, buffer, size); -+ -+ return 0; -+} -+ -+#if CONFIG_WMV3_XVBA_HWACCEL -+AVHWAccel ff_wmv3_xvba_hwaccel = { -+ .name = "wmv3_xvba", -+ .type = AVMEDIA_TYPE_VIDEO, -+ .id = CODEC_ID_WMV3, -+ .pix_fmt = PIX_FMT_XVBA_VLD, -+ .start_frame = start_frame, -+ .end_frame = end_frame, -+ .decode_slice = decode_slice, -+}; ++ YUVBUFFER &buf = m_buffers[idx]; ++#ifdef HAVE_LIBVDPAU ++ SAFE_RELEASE(buf.vdpau); +#endif -+ -+AVHWAccel ff_vc1_xvba_hwaccel = { -+ .name = "vc1_xvba", -+ .type = AVMEDIA_TYPE_VIDEO, -+ .id = CODEC_ID_VC1, -+ .pix_fmt = PIX_FMT_XVBA_VLD, -+ .start_frame = start_frame, -+ .end_frame = end_frame, -+ .decode_slice = decode_slice, -+}; -diff -Naur xbmc-f13566b/lib/ffmpeg/libavcodec/xvmc_internal.h xbmc-f13566b.patch/lib/ffmpeg/libavcodec/xvmc_internal.h ---- xbmc-f13566b/lib/ffmpeg/libavcodec/xvmc_internal.h 2012-10-08 09:19:58.000000000 +0200 -+++ xbmc-f13566b.patch/lib/ffmpeg/libavcodec/xvmc_internal.h 2012-10-08 17:13:46.952519833 +0200 -@@ -1,5 +1,7 @@ - /* -- * XVideo Motion Compensation internal functions -+ * HW decode acceleration for MPEG-2, H.264 and VC-1 -+ * -+ * Copyright (C) 2005-2011 Team XBMC - * - * This file is part of FFmpeg. - * -diff -Naur xbmc-f13566b/lib/ffmpeg/libavutil/pixdesc.c xbmc-f13566b.patch/lib/ffmpeg/libavutil/pixdesc.c ---- xbmc-f13566b/lib/ffmpeg/libavutil/pixdesc.c 2012-10-08 09:19:52.000000000 +0200 -+++ xbmc-f13566b.patch/lib/ffmpeg/libavutil/pixdesc.c 2012-10-08 17:13:46.953519854 +0200 -@@ -874,6 +874,12 @@ - .log2_chroma_h = 1, - .flags = PIX_FMT_HWACCEL, - }, -+ [PIX_FMT_XVBA_VLD] = { -+ .name = "xvba_vld", -+ .log2_chroma_w = 1, -+ .log2_chroma_h = 1, -+ .flags = PIX_FMT_HWACCEL, -+ }, - [PIX_FMT_YUV420P9LE] = { - .name = "yuv420p9le", - .nb_components = 3, -diff -Naur xbmc-f13566b/lib/ffmpeg/libavutil/pixfmt.h xbmc-f13566b.patch/lib/ffmpeg/libavutil/pixfmt.h ---- xbmc-f13566b/lib/ffmpeg/libavutil/pixfmt.h 2012-10-08 09:19:52.000000000 +0200 -+++ xbmc-f13566b.patch/lib/ffmpeg/libavutil/pixfmt.h 2012-10-08 17:13:46.954519875 +0200 -@@ -129,6 +129,7 @@ - PIX_FMT_YUV444P16BE, ///< planar YUV 4:4:4, 48bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian - PIX_FMT_VDPAU_MPEG4, ///< MPEG4 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers - PIX_FMT_DXVA2_VLD, ///< HW decoding through DXVA2, Picture.data[3] contains a LPDIRECT3DSURFACE9 pointer -+ PIX_FMT_XVBA_VLD, ///< HW decoding through DXVA2, Picture.data[3] contains a vaapi_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers ++#ifdef HAVE_LIBVA ++ buf.vaapi.surface.reset(); ++#endif ++#ifdef TARGET_DARWIN ++ if (buf.cvBufferRef) ++ CVBufferRelease(buf.cvBufferRef); ++#endif + } - PIX_FMT_RGB444LE, ///< packed RGB 4:4:4, 16bpp, (msb)4A 4R 4G 4B(lsb), little-endian, most significant bits to 0 - PIX_FMT_RGB444BE, ///< packed RGB 4:4:4, 16bpp, (msb)4A 4R 4G 4B(lsb), big-endian, most significant bits to 0 -diff -Naur xbmc-f13566b/system/shaders/yuv2rgb_basic.glsl xbmc-f13566b.patch/system/shaders/yuv2rgb_basic.glsl ---- xbmc-f13566b/system/shaders/yuv2rgb_basic.glsl 2012-10-08 09:19:21.000000000 +0200 -+++ xbmc-f13566b.patch/system/shaders/yuv2rgb_basic.glsl 2012-10-08 17:13:46.870518199 +0200 -@@ -70,6 +70,18 @@ - rgb.a = gl_Color.a; - gl_FragColor = rgb; + void CLinuxRendererGL::Update(bool bPauseDrawing) + { + if (!m_bConfigured) return; + ManageDisplay(); +- ManageTextures(); + } -+#elif defined(XBMC_VDPAU_NV12) -+ -+ vec4 yuv, rgb; -+ yuv.rgba = vec4( texture2D(m_sampY, stretch(m_cordY)).r -+ , texture2D(m_sampU, stretch(m_cordU)).r -+ , texture2D(m_sampV, stretch(m_cordV)).g -+ , 1.0 ); -+ -+ rgb = m_yuvmat * yuv; -+ rgb.a = gl_Color.a; -+ gl_FragColor = rgb; -+ - #elif defined(XBMC_YUY2) || defined(XBMC_UYVY) + void CLinuxRendererGL::RenderUpdate(bool clear, DWORD flags, DWORD alpha) +@@ -625,7 +632,6 @@ void CLinuxRendererGL::RenderUpdate(bool clear, DWORD flags, DWORD alpha) + } - #if(XBMC_texture_rectangle) -diff -Naur xbmc-f13566b/xbmc/Application.cpp xbmc-f13566b.patch/xbmc/Application.cpp ---- xbmc-f13566b/xbmc/Application.cpp 2012-10-08 09:19:31.000000000 +0200 -+++ xbmc-f13566b.patch/xbmc/Application.cpp 2012-10-08 17:13:47.031521412 +0200 -@@ -426,8 +426,6 @@ + ManageDisplay(); +- ManageTextures(); + + g_graphicsContext.BeginPaint(); + +@@ -782,7 +788,6 @@ unsigned int CLinuxRendererGL::PreInit() + m_resolution = RES_DESKTOP; + + m_iYV12RenderBuffer = 0; +- m_NumYV12Buffers = 2; + + m_formats.push_back(RENDER_FMT_YUV420P); + GLint size; +@@ -2464,7 +2469,7 @@ void CLinuxRendererGL::UploadVAAPITexture(int index) + || status == VA_STATUS_ERROR_INVALID_DISPLAY) + { + va.display->lost(true); +- for(int i = 0; i < NUM_BUFFERS; i++) ++ for(int i = 0; i < m_NumYV12Buffers; i++) + { + m_buffers[i].vaapi.display.reset(); + m_buffers[i].vaapi.surface.reset(); +@@ -3416,26 +3421,26 @@ void CLinuxRendererGL::UnBindPbo(YUVBUFFER& buff) + } + + #ifdef HAVE_LIBVDPAU +-void CLinuxRendererGL::AddProcessor(CVDPAU* vdpau) ++void CLinuxRendererGL::AddProcessor(CVDPAU* vdpau, int index) + { +- YUVBUFFER &buf = m_buffers[NextYV12Texture()]; ++ YUVBUFFER &buf = m_buffers[index]; + SAFE_RELEASE(buf.vdpau); + buf.vdpau = (CVDPAU*)vdpau->Acquire(); + } + #endif + + #ifdef HAVE_LIBVA +-void CLinuxRendererGL::AddProcessor(VAAPI::CHolder& holder) ++void CLinuxRendererGL::AddProcessor(VAAPI::CHolder& holder, int index) + { +- YUVBUFFER &buf = m_buffers[NextYV12Texture()]; ++ YUVBUFFER &buf = m_buffers[index]; + buf.vaapi.surface = holder.surface; + } + #endif + + #ifdef TARGET_DARWIN +-void CLinuxRendererGL::AddProcessor(struct __CVBuffer *cvBufferRef) ++void CLinuxRendererGL::AddProcessor(struct __CVBuffer *cvBufferRef, int index) + { +- YUVBUFFER &buf = m_buffers[NextYV12Texture()]; ++ YUVBUFFER &buf = m_buffers[index]; + if (buf.cvBufferRef) + CVBufferRelease(buf.cvBufferRef); + buf.cvBufferRef = cvBufferRef; +diff --git a/xbmc/cores/VideoRenderers/LinuxRendererGL.h b/xbmc/cores/VideoRenderers/LinuxRendererGL.h +index acebfe0..9f55fcb 100644 +--- a/xbmc/cores/VideoRenderers/LinuxRendererGL.h ++++ b/xbmc/cores/VideoRenderers/LinuxRendererGL.h +@@ -44,7 +44,7 @@ + namespace Shaders { class BaseVideoFilterShader; } + namespace VAAPI { struct CHolder; } + +-#define NUM_BUFFERS 3 ++#define NUM_BUFFERS 10 + + + #undef ALIGN +@@ -138,15 +138,19 @@ class CLinuxRendererGL : public CBaseRenderer + virtual void UnInit(); + virtual void Reset(); /* resets renderer after seek for example */ + virtual void Flush(); ++ virtual void ReleaseBuffer(int idx); ++ virtual void SetProcessorSize(int numBuffers) { m_NumYV12Buffers = numBuffers; } ++ virtual unsigned int GetMaxProcessorSize() { return NUM_BUFFERS; } ++ virtual unsigned int GetProcessorSize() { return m_NumYV12Buffers; } + + #ifdef HAVE_LIBVDPAU +- virtual void AddProcessor(CVDPAU* vdpau); ++ virtual void AddProcessor(CVDPAU* vdpau, int index); + #endif + #ifdef HAVE_LIBVA +- virtual void AddProcessor(VAAPI::CHolder& holder); ++ virtual void AddProcessor(VAAPI::CHolder& holder, int index); + #endif + #ifdef TARGET_DARWIN +- virtual void AddProcessor(struct __CVBuffer *cvBufferRef); ++ virtual void AddProcessor(struct __CVBuffer *cvBufferRef, int index); + #endif + + virtual void RenderUpdate(bool clear, DWORD flags = 0, DWORD alpha = 255); +@@ -168,7 +172,6 @@ class CLinuxRendererGL : public CBaseRenderer + void DrawBlackBars(); + + bool ValidateRenderer(); +- virtual void ManageTextures(); + int NextYV12Texture(); + virtual bool ValidateRenderTarget(); + virtual void LoadShaders(int field=FIELD_FULL); +diff --git a/xbmc/cores/VideoRenderers/LinuxRendererGLES.cpp b/xbmc/cores/VideoRenderers/LinuxRendererGLES.cpp +index 40c91a5..91a1f44 100644 +--- a/xbmc/cores/VideoRenderers/LinuxRendererGLES.cpp ++++ b/xbmc/cores/VideoRenderers/LinuxRendererGLES.cpp +@@ -1965,16 +1965,16 @@ EINTERLACEMETHOD CLinuxRendererGLES::AutoInterlaceMethod() + } + + #ifdef HAVE_LIBOPENMAX +-void CLinuxRendererGLES::AddProcessor(COpenMax* openMax, DVDVideoPicture *picture) ++void CLinuxRendererGLES::AddProcessor(COpenMax* openMax, DVDVideoPicture *picture, int index) + { +- YUVBUFFER &buf = m_buffers[NextYV12Texture()]; ++ YUVBUFFER &buf = m_buffers[index]; + buf.openMaxBuffer = picture->openMaxBuffer; + } + #endif + #ifdef HAVE_VIDEOTOOLBOXDECODER +-void CLinuxRendererGLES::AddProcessor(struct __CVBuffer *cvBufferRef) ++void CLinuxRendererGLES::AddProcessor(struct __CVBuffer *cvBufferRef, int index) + { +- YUVBUFFER &buf = m_buffers[NextYV12Texture()]; ++ YUVBUFFER &buf = m_buffers[index]; + if (buf.cvBufferRef) + CVBufferRelease(buf.cvBufferRef); + buf.cvBufferRef = cvBufferRef; +diff --git a/xbmc/cores/VideoRenderers/LinuxRendererGLES.h b/xbmc/cores/VideoRenderers/LinuxRendererGLES.h +index 76b5437..c6b69db 100644 +--- a/xbmc/cores/VideoRenderers/LinuxRendererGLES.h ++++ b/xbmc/cores/VideoRenderers/LinuxRendererGLES.h +@@ -153,10 +153,10 @@ class CLinuxRendererGLES : public CBaseRenderer + virtual std::vector SupportedFormats() { return m_formats; } + + #ifdef HAVE_LIBOPENMAX +- virtual void AddProcessor(COpenMax* openMax, DVDVideoPicture *picture); ++ virtual void AddProcessor(COpenMax* openMax, DVDVideoPicture *picture, int index); + #endif + #ifdef HAVE_VIDEOTOOLBOXDECODER +- virtual void AddProcessor(struct __CVBuffer *cvBufferRef); ++ virtual void AddProcessor(struct __CVBuffer *cvBufferRef, int index); + #endif + + protected: +diff --git a/xbmc/cores/VideoRenderers/OverlayRenderer.cpp b/xbmc/cores/VideoRenderers/OverlayRenderer.cpp +index 19d2d7d..94aaaf5 100644 +--- a/xbmc/cores/VideoRenderers/OverlayRenderer.cpp ++++ b/xbmc/cores/VideoRenderers/OverlayRenderer.cpp +@@ -89,7 +89,6 @@ long COverlayMainThread::Release() + CRenderer::CRenderer() + { + m_render = 0; +- m_decode = (m_render + 1) % 2; + } + + CRenderer::~CRenderer() +@@ -151,20 +150,30 @@ void CRenderer::Flush() + { + CSingleLock lock(m_section); + +- for(int i = 0; i < 2; i++) ++ for(int i = 0; i < m_iNumBuffers; i++) + Release(m_buffers[i]); + ++ m_render = 0; + Release(m_cleanup); + } + + void CRenderer::Flip() + { + CSingleLock lock(m_section); ++ m_render = (m_render + 1) % m_iNumBuffers; ++} + +- m_render = m_decode; +- m_decode =(m_decode + 1) % 2; ++void CRenderer::SetBuffer(int idx) ++{ ++ CSingleLock lock(m_section); ++ Release(m_buffers[idx]); ++ m_decode = idx; ++} + +- Release(m_buffers[m_decode]); ++void CRenderer::ReleaseBuffer(int idx) ++{ ++ CSingleLock lock(m_section); ++ Release(m_buffers[idx]); + } + + void CRenderer::Render() +diff --git a/xbmc/cores/VideoRenderers/OverlayRenderer.h b/xbmc/cores/VideoRenderers/OverlayRenderer.h +index d2175d8..c6740a5 100644 +--- a/xbmc/cores/VideoRenderers/OverlayRenderer.h ++++ b/xbmc/cores/VideoRenderers/OverlayRenderer.h +@@ -98,6 +98,9 @@ + void Flip(); + void Render(); + void Flush(); ++ void SetNumBuffers(int numBuffers) { m_iNumBuffers = numBuffers; } ++ void SetBuffer(int idx); ++ void ReleaseBuffer(int idx); + + protected: + +@@ -124,7 +127,8 @@ + void Release(SElementV& list); + + CCriticalSection m_section; +- SElementV m_buffers[2]; ++ SElementV m_buffers[10]; ++ int m_iNumBuffers; + int m_decode; + int m_render; + +diff --git a/xbmc/cores/VideoRenderers/RenderManager.cpp b/xbmc/cores/VideoRenderers/RenderManager.cpp +index d22287d..eeb6c6f 100644 +--- a/xbmc/cores/VideoRenderers/RenderManager.cpp ++++ b/xbmc/cores/VideoRenderers/RenderManager.cpp +@@ -28,6 +28,7 @@ + #include "utils/MathUtils.h" + #include "threads/SingleLock.h" + #include "utils/log.h" ++#include "utils/TimeUtils.h" + + #include "Application.h" + #include "ApplicationMessenger.h" +@@ -247,6 +248,11 @@ bool CXBMCRenderManager::Configure(unsigned int width, unsigned int height, unsi + return false; + } + ++ // check if decoder supports buffering ++ m_bCodecSupportsBuffering = false; ++// if (format == RENDER_FMT_VDPAU) ++// m_bCodecSupportsBuffering = true; ++ + bool result = m_pRenderer->Configure(width, height, d_width, d_height, fps, flags, format, extended_format, orientation); + if(result) + { +@@ -261,6 +267,7 @@ bool CXBMCRenderManager::Configure(unsigned int width, unsigned int height, unsi + m_bReconfigured = true; + m_presentstep = PRESENT_IDLE; + m_presentevent.Set(); ++ ResetRenderBuffer(); + } + + return result; +@@ -292,8 +299,12 @@ void CXBMCRenderManager::RenderUpdate(bool clear, DWORD flags, DWORD alpha) + if (!m_pRenderer) + return; + ++ if (m_presentstep == PRESENT_IDLE) ++ PrepareNextRender(); ++ + if(m_presentstep == PRESENT_FLIP) + { ++ FlipRenderBuffer(); + m_overlays.Flip(); + m_pRenderer->FlipPage(m_presentsource); + m_presentstep = PRESENT_FRAME; +@@ -312,7 +323,7 @@ void CXBMCRenderManager::RenderUpdate(bool clear, DWORD flags, DWORD alpha) + m_presentevent.Set(); + } + +-unsigned int CXBMCRenderManager::PreInit() ++unsigned int CXBMCRenderManager::PreInit(CDVDClock *pClock) + { + CRetakeLock lock(m_sharedSection); + +@@ -320,6 +331,7 @@ unsigned int CXBMCRenderManager::PreInit() + m_presenterr = 0.0; + m_errorindex = 0; + memset(m_errorbuff, 0, sizeof(m_errorbuff)); ++ m_pClock = pClock; + + m_bIsStarted = false; + m_bPauseDrawing = false; +@@ -338,6 +350,10 @@ unsigned int CXBMCRenderManager::PreInit() + + UpdateDisplayLatency(); + ++ m_bUseBuffering = false; ++ m_bCodecSupportsBuffering = true; ++ ResetRenderBuffer(); ++ + return m_pRenderer->PreInit(); + } + +@@ -366,7 +382,9 @@ bool CXBMCRenderManager::Flush() + + CRetakeLock lock(m_sharedSection); + m_pRenderer->Flush(); ++ m_overlays.Flush(); + m_flushEvent.Set(); ++ ResetRenderBuffer(); + } + else + { +@@ -534,25 +552,21 @@ void CXBMCRenderManager::SetViewMode(int iViewMode) + m_pRenderer->SetViewMode(iViewMode); + } + +-void CXBMCRenderManager::FlipPage(volatile bool& bStop, double timestamp /* = 0LL*/, int source /*= -1*/, EFIELDSYNC sync /*= FS_NONE*/) ++void CXBMCRenderManager::FlipPage(volatile bool& bStop, double timestamp /* = 0LL*/, int source /*= -1*/, EFIELDSYNC sync /*= FS_NONE*/, int speed /*= 0*/) + { +- if(timestamp - GetPresentTime() > MAXPRESENTDELAY) +- timestamp = GetPresentTime() + MAXPRESENTDELAY; +- +- /* can't flip, untill timestamp */ +- if(!g_graphicsContext.IsFullScreenVideo()) +- WaitPresentTime(timestamp); +- +- /* make sure any queued frame was fully presented */ +- double timeout = m_presenttime + 1.0; +- while(m_presentstep != PRESENT_IDLE && !bStop) ++ if (!m_bUseBuffering) + { +- if(!m_presentevent.WaitMSec(100) && GetPresentTime() > timeout && !bStop) ++ /* make sure any queued frame was fully presented */ ++ double timeout = m_presenttime + 1.0; ++ while(m_presentstep != PRESENT_IDLE && !bStop) + { +- CLog::Log(LOGWARNING, "CRenderManager::FlipPage - timeout waiting for previous frame"); +- return; ++ if(!m_presentevent.WaitMSec(100) && GetPresentTime() > timeout && !bStop) ++ { ++ CLog::Log(LOGWARNING, "CRenderManager::FlipPage - timeout waiting for previous frame"); ++ return; ++ } + } +- }; ++ } + + if(bStop) + return; +@@ -560,58 +574,67 @@ void CXBMCRenderManager::FlipPage(volatile bool& bStop, double timestamp /* = 0L + { CRetakeLock lock(m_sharedSection); + if(!m_pRenderer) return; + +- m_presenttime = timestamp; +- m_presentfield = sync; +- m_presentstep = PRESENT_FLIP; +- m_presentsource = source; ++ double presenttime = timestamp; ++ EFIELDSYNC presentfield = sync; ++ EPRESENTMETHOD presentmethod; ++ + EDEINTERLACEMODE deinterlacemode = g_settings.m_currentVideoSettings.m_DeinterlaceMode; + EINTERLACEMETHOD interlacemethod = AutoInterlaceMethodInternal(g_settings.m_currentVideoSettings.m_InterlaceMethod); + + bool invert = false; + + if (deinterlacemode == VS_DEINTERLACEMODE_OFF) +- m_presentmethod = PRESENT_METHOD_SINGLE; ++ presentmethod = PRESENT_METHOD_SINGLE; + else + { +- if (deinterlacemode == VS_DEINTERLACEMODE_AUTO && m_presentfield == FS_NONE) +- m_presentmethod = PRESENT_METHOD_SINGLE; ++ if (deinterlacemode == VS_DEINTERLACEMODE_AUTO && presentfield == FS_NONE) ++ presentmethod = PRESENT_METHOD_SINGLE; + else + { +- if (interlacemethod == VS_INTERLACEMETHOD_RENDER_BLEND) m_presentmethod = PRESENT_METHOD_BLEND; +- else if (interlacemethod == VS_INTERLACEMETHOD_RENDER_WEAVE) m_presentmethod = PRESENT_METHOD_WEAVE; +- else if (interlacemethod == VS_INTERLACEMETHOD_RENDER_WEAVE_INVERTED) { m_presentmethod = PRESENT_METHOD_WEAVE ; invert = true; } +- else if (interlacemethod == VS_INTERLACEMETHOD_RENDER_BOB) m_presentmethod = PRESENT_METHOD_BOB; +- else if (interlacemethod == VS_INTERLACEMETHOD_RENDER_BOB_INVERTED) { m_presentmethod = PRESENT_METHOD_BOB; invert = true; } +- else if (interlacemethod == VS_INTERLACEMETHOD_DXVA_BOB) m_presentmethod = PRESENT_METHOD_BOB; +- else if (interlacemethod == VS_INTERLACEMETHOD_DXVA_BEST) m_presentmethod = PRESENT_METHOD_BOB; +- else m_presentmethod = PRESENT_METHOD_SINGLE; ++ if (interlacemethod == VS_INTERLACEMETHOD_RENDER_BLEND) presentmethod = PRESENT_METHOD_BLEND; ++ else if (interlacemethod == VS_INTERLACEMETHOD_RENDER_WEAVE) presentmethod = PRESENT_METHOD_WEAVE; ++ else if (interlacemethod == VS_INTERLACEMETHOD_RENDER_WEAVE_INVERTED) { presentmethod = PRESENT_METHOD_WEAVE ; invert = true; } ++ else if (interlacemethod == VS_INTERLACEMETHOD_RENDER_BOB) presentmethod = PRESENT_METHOD_BOB; ++ else if (interlacemethod == VS_INTERLACEMETHOD_RENDER_BOB_INVERTED) { presentmethod = PRESENT_METHOD_BOB; invert = true; } ++ else if (interlacemethod == VS_INTERLACEMETHOD_DXVA_BOB) presentmethod = PRESENT_METHOD_BOB; ++ else if (interlacemethod == VS_INTERLACEMETHOD_DXVA_BEST) presentmethod = PRESENT_METHOD_BOB; ++ else presentmethod = PRESENT_METHOD_SINGLE; + + /* default to odd field if we want to deinterlace and don't know better */ +- if (deinterlacemode == VS_DEINTERLACEMODE_FORCE && m_presentfield == FS_NONE) +- m_presentfield = FS_TOP; ++ if (deinterlacemode == VS_DEINTERLACEMODE_FORCE && presentfield == FS_NONE) ++ presentfield = FS_TOP; + + /* invert present field */ + if(invert) + { +- if( m_presentfield == FS_BOT ) +- m_presentfield = FS_TOP; ++ if( presentfield == FS_BOT ) ++ presentfield = FS_TOP; + else +- m_presentfield = FS_BOT; ++ presentfield = FS_BOT; + } + } + } + ++ FlipFreeBuffer(); ++ m_renderBuffers[m_iOutputRenderBuffer].pts = timestamp; ++ m_renderBuffers[m_iOutputRenderBuffer].presentfield = presentfield; ++ m_renderBuffers[m_iOutputRenderBuffer].presentmethod = presentmethod; ++ m_speed = speed; + } + + g_application.NewFrame(); +- /* wait untill render thread have flipped buffers */ +- timeout = m_presenttime + 1.0; +- while(m_presentstep == PRESENT_FLIP && !bStop) ++ ++ if (!m_bUseBuffering) + { +- if(!m_presentevent.WaitMSec(100) && GetPresentTime() > timeout && !bStop) ++ /* wait untill render thread have flipped buffers */ ++ double timeout = m_presenttime + 1.0; ++ while(m_presentstep == PRESENT_FLIP && !bStop) + { +- CLog::Log(LOGWARNING, "CRenderManager::FlipPage - timeout waiting for flip to complete"); +- return; ++ if(!m_presentevent.WaitMSec(100) && GetPresentTime() > timeout && !bStop) ++ { ++ CLog::Log(LOGWARNING, "CRenderManager::FlipPage - timeout waiting for flip to complete"); ++ return; ++ } + } + } + } +@@ -675,8 +698,12 @@ void CXBMCRenderManager::Present() + if (!m_pRenderer) + return; + ++ if (m_presentstep == PRESENT_IDLE) ++ PrepareNextRender(); ++ + if(m_presentstep == PRESENT_FLIP) + { ++ FlipRenderBuffer(); + m_overlays.Flip(); + m_pRenderer->FlipPage(m_presentsource); + m_presentstep = PRESENT_FRAME; +@@ -800,11 +827,11 @@ int CXBMCRenderManager::AddVideoPicture(DVDVideoPicture& pic) + if (!m_pRenderer) + return -1; + +- if(m_pRenderer->AddVideoPicture(&pic)) ++ if(m_pRenderer->AddVideoPicture(&pic, (m_iOutputRenderBuffer + 1) % m_iNumRenderBuffers)) + return 1; + + YV12Image image; +- int index = m_pRenderer->GetImage(&image); ++ int index = m_pRenderer->GetImage(&image, (m_iOutputRenderBuffer + 1) % m_iNumRenderBuffers); + + if(index < 0) + return index; +@@ -830,19 +857,19 @@ int CXBMCRenderManager::AddVideoPicture(DVDVideoPicture& pic) + } + #ifdef HAVE_LIBVDPAU + else if(pic.format == RENDER_FMT_VDPAU) +- m_pRenderer->AddProcessor(pic.vdpau); ++ m_pRenderer->AddProcessor(pic.vdpau, index); + #endif + #ifdef HAVE_LIBOPENMAX + else if(pic.format == RENDER_FMT_OMXEGL) +- m_pRenderer->AddProcessor(pic.openMax, &pic); ++ m_pRenderer->AddProcessor(pic.openMax, &pic, index); + #endif + #ifdef TARGET_DARWIN + else if(pic.format == RENDER_FMT_CVBREF) +- m_pRenderer->AddProcessor(pic.cvBufferRef); ++ m_pRenderer->AddProcessor(pic.cvBufferRef, index); + #endif + #ifdef HAVE_LIBVA + else if(pic.format == RENDER_FMT_VAAPI) +- m_pRenderer->AddProcessor(*pic.vaapi); ++ m_pRenderer->AddProcessor(*pic.vaapi, index); + #endif + m_pRenderer->ReleaseImage(index, false); + +@@ -904,3 +931,176 @@ EINTERLACEMETHOD CXBMCRenderManager::AutoInterlaceMethodInternal(EINTERLACEMETHO + + return mInt; + } ++ ++int CXBMCRenderManager::WaitForBuffer(volatile bool& bStop) ++{ ++ CSharedLock lock(m_sharedSection); ++ if (!m_pRenderer) ++ return -1; ++ ++ //wait up to a second as this is our slowest allowed output rate ++ double timeout = GetPresentTime() + 0.1; ++ while(!HasFreeBuffer() && !bStop) ++ { ++ lock.Leave(); ++ m_flipEvent.WaitMSec(50); ++ if(GetPresentTime() > timeout && !bStop) ++ { ++ CLog::Log(LOGWARNING, "CRenderManager::WaitForBuffer - timeout waiting for buffer"); ++ return -1; ++ } ++ lock.Enter(); ++ } ++ lock.Leave(); ++ ++ { CRetakeLock lock(m_sharedSection); ++ m_overlays.SetBuffer((m_iOutputRenderBuffer + 1) % m_iNumRenderBuffers); ++ } ++ ++ if (bStop) ++ return -1; ++ ++ return 1; ++} ++ ++int CXBMCRenderManager::GetNextRenderBufferIndex() ++{ ++ if (m_iOutputRenderBuffer == m_iCurrentRenderBuffer) ++ return -1; ++ return (m_iCurrentRenderBuffer + 1) % m_iNumRenderBuffers; ++} ++ ++void CXBMCRenderManager::FlipRenderBuffer() ++{ ++ m_iCurrentRenderBuffer = GetNextRenderBufferIndex(); ++} ++ ++int CXBMCRenderManager::FlipFreeBuffer() ++{ ++ // See "Render Buffer State Description" in header for information. ++ if (HasFreeBuffer()) ++ { ++ m_bAllRenderBuffersDisplayed = false; ++ m_iOutputRenderBuffer = (m_iOutputRenderBuffer + 1) % m_iNumRenderBuffers; ++ return m_iOutputRenderBuffer; ++ } ++} ++ ++bool CXBMCRenderManager::HasFreeBuffer() ++{ ++ if (!m_bUseBuffering) ++ { ++ if (m_iOutputRenderBuffer != m_iCurrentRenderBuffer) ++ return false; ++ else ++ return true; ++ } ++ ++ int outputPlus1 = (m_iOutputRenderBuffer + 1) % m_iNumRenderBuffers; ++ if ((m_iOutputRenderBuffer == m_iDisplayedRenderBuffer && !m_bAllRenderBuffersDisplayed) ++ || outputPlus1 == m_iCurrentRenderBuffer) ++ return false; ++ else ++ return true; ++} ++ ++void CXBMCRenderManager::ResetRenderBuffer() ++{ ++ m_iNumRenderBuffers = m_pRenderer->GetMaxProcessorSize(); ++ m_iNumRenderBuffers = std::min(5, m_iNumRenderBuffers); ++ m_iNumRenderBuffers = std::max(2, m_iNumRenderBuffers); ++ ++ if (!m_bCodecSupportsBuffering) ++ m_iNumRenderBuffers = 2; ++ ++ CLog::Log(LOGNOTICE,"CXBMCRenderManager::ResetRenderBuffer - using %d render buffers", m_iNumRenderBuffers); ++ m_overlays.SetNumBuffers(m_iNumRenderBuffers); ++ m_pRenderer->SetProcessorSize(m_iNumRenderBuffers); ++ ++ m_iCurrentRenderBuffer = 0; ++ m_iOutputRenderBuffer = 0; ++ m_iDisplayedRenderBuffer = 0; ++ m_bAllRenderBuffersDisplayed = true; ++ m_sleeptime = 1.0; ++ m_presentPts = DVD_NOPTS_VALUE; ++ m_speed = 0; ++} ++ ++void CXBMCRenderManager::PrepareNextRender() ++{ ++ int idx = GetNextRenderBufferIndex(); ++ if (idx < 0) ++ { ++ if (m_speed >= DVD_PLAYSPEED_NORMAL && g_graphicsContext.IsFullScreenVideo()) ++ CLog::Log(LOGDEBUG,"%s no buffer, out: %d, current: %d, display: %d", ++ __FUNCTION__, m_iOutputRenderBuffer, m_iCurrentRenderBuffer, m_iDisplayedRenderBuffer); ++ return; ++ } ++ ++ double iClockSleep, iPlayingClock, iCurrentClock; ++ iPlayingClock = m_pClock->GetClock(iCurrentClock, false); ++ iClockSleep = m_renderBuffers[idx].pts - iPlayingClock; ++ ++ if (m_speed) ++ iClockSleep = iClockSleep * DVD_PLAYSPEED_NORMAL / m_speed; ++ ++ double presenttime = (iCurrentClock + iClockSleep) / DVD_TIME_BASE; ++ double clocktime = iCurrentClock / DVD_TIME_BASE; ++ if(presenttime - clocktime > MAXPRESENTDELAY) ++ presenttime = clocktime + MAXPRESENTDELAY; ++ ++ m_sleeptime = presenttime - clocktime; ++ ++ if (g_graphicsContext.IsFullScreenVideo() || presenttime <= clocktime+0.01) ++ { ++ m_presentPts = m_renderBuffers[idx].pts; ++ m_presenttime = presenttime; ++ m_presentmethod = m_renderBuffers[idx].presentmethod; ++ m_presentfield = m_renderBuffers[idx].presentfield; ++ m_presentstep = PRESENT_FLIP; ++ m_presentsource = idx; ++ } ++} ++ ++void CXBMCRenderManager::EnableBuffering(bool enable) ++{ ++ CRetakeLock lock(m_sharedSection); ++ ++ if (m_iNumRenderBuffers < 3) ++ return; ++ ++ m_bUseBuffering = enable; ++ if (!m_bUseBuffering) ++ m_iOutputRenderBuffer = m_iCurrentRenderBuffer; ++ ++ CLog::Log(LOGDEBUG, "CXBMCRenderManager::EnableBuffering - %d", m_bUseBuffering); ++} ++ ++void CXBMCRenderManager::DiscardBuffer() ++{ ++ CRetakeLock lock(m_sharedSection); ++ m_iOutputRenderBuffer = m_iCurrentRenderBuffer; ++} ++ ++void CXBMCRenderManager::NotifyDisplayFlip() ++{ ++ CRetakeLock lock(m_sharedSection); ++ if (!m_pRenderer) ++ return; ++ ++ if (m_iNumRenderBuffers < 3) ++ return; ++ ++ int last = m_iDisplayedRenderBuffer; ++ m_iDisplayedRenderBuffer = (m_iCurrentRenderBuffer + m_iNumRenderBuffers - 1) % m_iNumRenderBuffers; ++ ++ if (last != m_iDisplayedRenderBuffer ++ && m_iDisplayedRenderBuffer != m_iCurrentRenderBuffer) ++ { ++ m_pRenderer->ReleaseBuffer(m_iDisplayedRenderBuffer); ++ m_overlays.ReleaseBuffer(m_iDisplayedRenderBuffer); ++ } ++ ++ lock.Leave(); ++ m_flipEvent.Set(); ++} +diff --git a/xbmc/cores/VideoRenderers/RenderManager.h b/xbmc/cores/VideoRenderers/RenderManager.h +index 7fe6bb2..34ff8d0 100644 +--- a/xbmc/cores/VideoRenderers/RenderManager.h ++++ b/xbmc/cores/VideoRenderers/RenderManager.h +@@ -31,6 +31,7 @@ + #include "OverlayRenderer.h" + + class CRenderCapture; ++class CDVDClock; + + namespace DXVA { class CProcessor; } + namespace VAAPI { class CSurfaceHolder; } +@@ -70,8 +71,8 @@ class CXBMCRenderManager + + int AddVideoPicture(DVDVideoPicture& picture); + +- void FlipPage(volatile bool& bStop, double timestamp = 0.0, int source = -1, EFIELDSYNC sync = FS_NONE); +- unsigned int PreInit(); ++ void FlipPage(volatile bool& bStop, double timestamp = 0.0, int source = -1, EFIELDSYNC sync = FS_NONE, int speed = 0); ++ unsigned int PreInit(CDVDClock *pClock); + void UnInit(); + bool Flush(); + +@@ -131,6 +132,10 @@ class CXBMCRenderManager + CSharedSection& GetSection() { return m_sharedSection; }; + + void RegisterRenderUpdateCallBack(const void *ctx, RenderUpdateCallBackFn fn); ++ int WaitForBuffer(volatile bool& bStop); ++ void NotifyDisplayFlip(); ++ void EnableBuffering(bool enable); ++ void DiscardBuffer(); + + protected: + void Render(bool clear, DWORD flags, DWORD alpha); +@@ -139,6 +144,13 @@ class CXBMCRenderManager + void PresentFields(bool clear, DWORD flags, DWORD alpha); + void PresentBlend(bool clear, DWORD flags, DWORD alpha); + ++ int GetNextRenderBufferIndex(); ++ void FlipRenderBuffer(); ++ int FlipFreeBuffer(); ++ bool HasFreeBuffer(); ++ void ResetRenderBuffer(); ++ void PrepareNextRender(); ++ + EINTERLACEMETHOD AutoInterlaceMethodInternal(EINTERLACEMETHOD mInt); + + bool m_bPauseDrawing; // true if we should pause rendering +@@ -169,6 +181,37 @@ class CXBMCRenderManager + double m_displayLatency; + void UpdateDisplayLatency(); + ++ // Render Buffer State Description: ++ // ++ // Output: is the buffer about to or having its texture prepared for render (ie from output thread). ++ // Cannot go past the "Displayed" buffer (otherwise we will probably overwrite buffers not yet ++ // displayed or even rendered). ++ // Current: is the current buffer being or having been submitted for render to back buffer. ++ // Cannot go past "Output" buffer (else it would be rendering old output). ++ // Displayed: is the buffer that is now considered to be safely copied from back buffer to front buffer ++ // (we assume that after two swap-buffer flips for the same "Current" render buffer that that ++ // buffer will be safe, but otherwise we consider that only the previous-to-"Current" is guaranteed). ++ ++ int m_iCurrentRenderBuffer; ++ int m_iNumRenderBuffers; ++ int m_iOutputRenderBuffer; ++ int m_iDisplayedRenderBuffer; ++ bool m_bAllRenderBuffersDisplayed; ++ bool m_bUseBuffering; ++ bool m_bCodecSupportsBuffering; ++ int m_speed; ++ CEvent m_flipEvent; ++ ++ struct ++ { ++ double pts; ++ EFIELDSYNC presentfield; ++ EPRESENTMETHOD presentmethod; ++ }m_renderBuffers[5]; ++ ++ double m_sleeptime; ++ double m_presentPts; ++ + double m_presenttime; + double m_presentcorr; + double m_presenterr; +@@ -180,6 +223,7 @@ class CXBMCRenderManager + int m_presentsource; + CEvent m_presentevent; + CEvent m_flushEvent; ++ CDVDClock *m_pClock; + + + OVERLAY::CRenderer m_overlays; +diff --git a/xbmc/cores/VideoRenderers/WinRenderer.cpp b/xbmc/cores/VideoRenderers/WinRenderer.cpp +index 7842089..6e4433c 100644 +--- a/xbmc/cores/VideoRenderers/WinRenderer.cpp ++++ b/xbmc/cores/VideoRenderers/WinRenderer.cpp +@@ -253,12 +253,12 @@ int CWinRenderer::NextYV12Texture() + return -1; + } + +-bool CWinRenderer::AddVideoPicture(DVDVideoPicture* picture) ++bool CWinRenderer::AddVideoPicture(DVDVideoPicture* picture, int index) + { + if (m_renderMethod == RENDER_DXVA) + { +- int source = NextYV12Texture(); +- if(source < 0) ++ int source = index; ++ if(source < 0 || NextYV12Texture() < 0) + return false; + + DXVABuffer *buf = (DXVABuffer*)m_VideoBuffers[source]; +@@ -274,7 +274,7 @@ int CWinRenderer::GetImage(YV12Image *image, int source, bool readonly) + if( source == AUTOSOURCE ) + source = NextYV12Texture(); + +- if( source < 0 ) ++ if( source < 0 || NextYV12Texture() < 0) + return -1; + + YUVBuffer *buf = (YUVBuffer*)m_VideoBuffers[source]; +diff --git a/xbmc/cores/VideoRenderers/WinRenderer.h b/xbmc/cores/VideoRenderers/WinRenderer.h +index 2ab5684..f493ba7 100644 +--- a/xbmc/cores/VideoRenderers/WinRenderer.h ++++ b/xbmc/cores/VideoRenderers/WinRenderer.h +@@ -157,7 +157,7 @@ class CWinRenderer : public CBaseRenderer + virtual bool Configure(unsigned int width, unsigned int height, unsigned int d_width, unsigned int d_height, float fps, unsigned flags, ERenderFormat format, unsigned extended_format, unsigned int orientation); + virtual int GetImage(YV12Image *image, int source = AUTOSOURCE, bool readonly = false); + virtual void ReleaseImage(int source, bool preserve = false); +- virtual bool AddVideoPicture(DVDVideoPicture* picture); ++ virtual bool AddVideoPicture(DVDVideoPicture* picture, int index); + virtual void FlipPage(int source); + virtual unsigned int PreInit(); + virtual void UnInit(); +diff --git a/xbmc/cores/dvdplayer/DVDPlayer.cpp b/xbmc/cores/dvdplayer/DVDPlayer.cpp +index b0defa3..1259fae 100644 +--- a/xbmc/cores/dvdplayer/DVDPlayer.cpp ++++ b/xbmc/cores/dvdplayer/DVDPlayer.cpp +@@ -462,7 +462,7 @@ bool CDVDPlayer::OpenFile(const CFileItem& file, const CPlayerOptions &options) + m_ready.Reset(); + + #if defined(HAS_VIDEO_PLAYBACK) +- g_renderManager.PreInit(); ++ g_renderManager.PreInit(&m_clock); + #endif + + Create(); +diff --git a/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp b/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp +index 3008c25..a4bb1ba 100644 +--- a/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp ++++ b/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp +@@ -261,6 +261,7 @@ void CDVDPlayerVideo::OpenStream(CDVDStreamInfo &hint, CDVDVideoCodec* codec) + m_stalled = m_messageQueue.GetPacketCount(CDVDMsg::DEMUXER_PACKET) == 0; + m_started = false; + m_codecname = m_pVideoCodec->GetName(); ++ g_renderManager.EnableBuffering(false); + } + + void CDVDPlayerVideo::CloseStream(bool bWaitForBuffers) +@@ -436,6 +437,7 @@ void CDVDPlayerVideo::Process() + picture.iFlags &= ~DVP_FLAG_ALLOCATED; + m_packets.clear(); + m_started = false; ++ g_renderManager.EnableBuffering(false); + } + else if (pMsg->IsType(CDVDMsg::GENERAL_FLUSH)) // private message sent by (CDVDPlayerVideo::Flush()) + { +@@ -448,6 +450,7 @@ void CDVDPlayerVideo::Process() + //we need to recalculate the framerate + //TODO: this needs to be set on a streamchange instead + ResetFrameRateCalc(); ++ g_renderManager.EnableBuffering(false); + + m_stalled = true; + m_started = false; +@@ -586,6 +589,8 @@ void CDVDPlayerVideo::Process() + + m_pVideoCodec->Reset(); + m_packets.clear(); ++ picture.iFlags &= ~DVP_FLAG_ALLOCATED; ++ g_renderManager.DiscardBuffer(); + break; + } + +@@ -700,6 +705,7 @@ void CDVDPlayerVideo::Process() + m_codecname = m_pVideoCodec->GetName(); + m_started = true; + m_messageParent.Put(new CDVDMsgInt(CDVDMsg::PLAYER_STARTED, DVDPLAYER_VIDEO)); ++ g_renderManager.EnableBuffering(true); + } + + // guess next frame pts. iDuration is always valid +@@ -1317,6 +1323,16 @@ int CDVDPlayerVideo::OutputPicture(const DVDVideoPicture* src, double pts) + mDisplayField = FS_BOT; + } + ++ int buffer = g_renderManager.WaitForBuffer(m_bStop); ++ while (buffer < 0 && !CThread::m_bStop && ++ CDVDClock::GetAbsoluteClock(false) < iCurrentClock + iSleepTime + DVD_MSEC_TO_TIME(500) ) ++ { ++ Sleep(1); ++ buffer = g_renderManager.WaitForBuffer(m_bStop); ++ } ++ if (buffer < 0) ++ return EOS_DROPPED; ++ + ProcessOverlays(pPicture, pts); + AutoCrop(pPicture); + +@@ -1333,7 +1349,7 @@ int CDVDPlayerVideo::OutputPicture(const DVDVideoPicture* src, double pts) + if (index < 0) + return EOS_DROPPED; + +- g_renderManager.FlipPage(CThread::m_bStop, (iCurrentClock + iSleepTime) / DVD_TIME_BASE, -1, mDisplayField); ++ g_renderManager.FlipPage(CThread::m_bStop, pts, -1, mDisplayField, m_speed); + + return result; + #else +-- +1.7.10 + + +From b366d29d306f43a709a091309612086ecde4fdf7 Mon Sep 17 00:00:00 2001 +From: xbmc +Date: Tue, 2 Oct 2012 10:49:09 +0200 +Subject: [PATCH 02/51] linuxrenderer: delete all textures on reconfigure + +--- + xbmc/cores/VideoRenderers/LinuxRendererGL.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp b/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp +index bf06422..05b0426 100644 +--- a/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp ++++ b/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp +@@ -251,7 +251,7 @@ bool CLinuxRendererGL::ValidateRenderTarget() + // function pointer for texture might change in + // call to LoadShaders + glFinish(); +- for (int i = 0 ; i < m_NumYV12Buffers ; i++) ++ for (int i = 0 ; i < NUM_BUFFERS ; i++) + (this->*m_textureDelete)(i); + + // trigger update of video filters +-- +1.7.10 + + +From 9d1e333790d81a4e1dbf706be46c3d5db880fdaf Mon Sep 17 00:00:00 2001 +From: xbmc +Date: Mon, 28 May 2012 10:17:33 +0200 +Subject: [PATCH 03/51] drop frame counter in application, ask render manager + instead + +--- + xbmc/Application.cpp | 50 +++++---------------------- + xbmc/Application.h | 6 ++-- + xbmc/cores/VideoRenderers/RenderManager.cpp | 11 ++++++ + xbmc/cores/VideoRenderers/RenderManager.h | 1 + + 4 files changed, 23 insertions(+), 45 deletions(-) + +diff --git a/xbmc/Application.cpp b/xbmc/Application.cpp +index c2e4be6..b240e94 100644 +--- a/xbmc/Application.cpp ++++ b/xbmc/Application.cpp +@@ -418,8 +418,6 @@ #endif m_currentStack = new CFileItemList; @@ -1030,16 +1036,7 @@ diff -Naur xbmc-f13566b/xbmc/Application.cpp xbmc-f13566b.patch/xbmc/Application m_bPresentFrame = false; m_bPlatformDirectories = true; -@@ -796,7 +794,7 @@ - - uint32_t sdlFlags = 0; - --#if defined(HAS_SDL_OPENGL) || (HAS_GLES == 2) -+#if (defined(HAS_SDL_OPENGL) || (HAS_GLES == 2)) && !defined(HAS_GLX) - sdlFlags |= SDL_INIT_VIDEO; - #endif - -@@ -2227,28 +2225,18 @@ +@@ -2208,28 +2206,18 @@ float CApplication::GetDimScreenSaverLevel() const bool CApplication::WaitFrame(unsigned int timeout) { @@ -1073,7 +1070,15 @@ diff -Naur xbmc-f13566b/xbmc/Application.cpp xbmc-f13566b.patch/xbmc/Application } void CApplication::Render() -@@ -2282,12 +2270,13 @@ +@@ -2249,7 +2237,6 @@ void CApplication::Render() + + int vsync_mode = g_guiSettings.GetInt("videoscreen.vsync"); + +- bool decrement = false; + bool hasRendered = false; + bool limitFrames = false; + unsigned int singleFrameTime = 10; // default limit 100 fps +@@ -2263,13 +2250,10 @@ void CApplication::Render() m_bPresentFrame = false; if (!extPlayerActive && g_graphicsContext.IsFullScreenVideo() && !IsPaused()) { @@ -1081,38 +1086,27 @@ diff -Naur xbmc-f13566b/xbmc/Application.cpp xbmc-f13566b.patch/xbmc/Application - - TightConditionVariable cv(m_frameCond,m_frameCount); - cv.wait(lock,100); -+ uint64_t timeout = CurrentHostCounter() + CurrentHostFrequency()/10; -+ while (!g_renderManager.HasFrame() && CurrentHostCounter() < timeout) -+ { -+ m_frameEvent.WaitMSec(100); -+ } -+ m_bPresentFrame = g_renderManager.HasFrame(); - +- - m_bPresentFrame = m_frameCount > 0; - decrement = m_bPresentFrame; +- decrement = m_bPresentFrame; ++ m_frameEvent.Reset(); ++ m_bPresentFrame = g_renderManager.HasFrame(); ++ if (!m_bPresentFrame && m_frameEvent.WaitMSec(100)) ++ m_bPresentFrame = g_renderManager.HasFrame(); hasRendered = true; } -@@ -2336,8 +2325,6 @@ - - g_Windowing.EndRender(); - -- g_TextureManager.FreeUnusedTextures(); + else +@@ -2293,8 +2277,6 @@ void CApplication::Render() + else if (lowfps) + singleFrameTime = 200; // 5 fps, <=200 ms latency to wake up + } - - // reset our info cache - we do this at the end of Render so that it is - // fresh for the next process(), or after a windowclose animation (where process() - // isn't called) -@@ -2369,18 +2356,16 @@ - m_lastFrameTime = XbmcThreads::SystemClockMillis(); +- decrement = true; + } + } - if (flip) -+ { - g_graphicsContext.Flip(dirtyRegions); -+ g_renderManager.NotifyDisplayFlip(); -+ } - CTimeUtils::UpdateFrameTime(flip); +@@ -2358,13 +2340,6 @@ void CApplication::Render() -+ g_TextureManager.FreeUnusedTextures(); -+ g_renderManager.UpdateResolution(); g_renderManager.ManageCaptures(); - @@ -1125,7 +1119,7 @@ diff -Naur xbmc-f13566b/xbmc/Application.cpp xbmc-f13566b.patch/xbmc/Application } void CApplication::SetStandAlone(bool value) -@@ -5778,12 +5763,6 @@ +@@ -5596,12 +5571,6 @@ bool CApplication::SwitchToFullScreen() // See if we're playing a video, and are in GUI mode if ( IsPlayingVideo() && g_windowManager.GetActiveWindow() != WINDOW_FULLSCREEN_VIDEO) { @@ -1138,7 +1132,7 @@ diff -Naur xbmc-f13566b/xbmc/Application.cpp xbmc-f13566b.patch/xbmc/Application // then switch to fullscreen mode g_windowManager.ActivateWindow(WINDOW_FULLSCREEN_VIDEO); return true; -@@ -6023,7 +6002,6 @@ +@@ -5834,7 +5803,6 @@ bool CApplication::IsCurrentThread() const bool CApplication::IsPresentFrame() { @@ -1146,10 +1140,11 @@ diff -Naur xbmc-f13566b/xbmc/Application.cpp xbmc-f13566b.patch/xbmc/Application bool ret = m_bPresentFrame; return ret; -diff -Naur xbmc-f13566b/xbmc/Application.h xbmc-f13566b.patch/xbmc/Application.h ---- xbmc-f13566b/xbmc/Application.h 2012-10-08 09:19:23.000000000 +0200 -+++ xbmc-f13566b.patch/xbmc/Application.h 2012-10-08 17:13:46.915519097 +0200 -@@ -430,10 +430,8 @@ +diff --git a/xbmc/Application.h b/xbmc/Application.h +index 58b093a..350e5da 100644 +--- a/xbmc/Application.h ++++ b/xbmc/Application.h +@@ -424,10 +424,8 @@ class CApplication : public CXBApplicationEx, public IPlayerCallback, public IMs bool m_bEnableLegacyRes; bool m_bTestMode; bool m_bSystemScreenSaverEnable; @@ -1162,189 +1157,1380 @@ diff -Naur xbmc-f13566b/xbmc/Application.h xbmc-f13566b.patch/xbmc/Application.h VIDEO::CVideoInfoScanner *m_videoInfoScanner; MUSIC_INFO::CMusicInfoScanner *m_musicInfoScanner; -diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDAudio.cpp xbmc-f13566b.patch/xbmc/cores/dvdplayer/DVDAudio.cpp ---- xbmc-f13566b/xbmc/cores/dvdplayer/DVDAudio.cpp 2012-10-08 09:19:29.000000000 +0200 -+++ xbmc-f13566b.patch/xbmc/cores/dvdplayer/DVDAudio.cpp 2012-10-08 17:13:46.807516941 +0200 -@@ -30,6 +30,68 @@ - - using namespace std; - +diff --git a/xbmc/cores/VideoRenderers/RenderManager.cpp b/xbmc/cores/VideoRenderers/RenderManager.cpp +index eeb6c6f..4b897da 100644 +--- a/xbmc/cores/VideoRenderers/RenderManager.cpp ++++ b/xbmc/cores/VideoRenderers/RenderManager.cpp +@@ -1104,3 +1104,14 @@ void CXBMCRenderManager::NotifyDisplayFlip() + lock.Leave(); + m_flipEvent.Set(); + } + -+CPTSOutputQueue::CPTSOutputQueue() ++bool CXBMCRenderManager::HasFrame() +{ -+ Flush(); -+} -+ -+void CPTSOutputQueue::Add(double pts, double delay, double duration) -+{ -+ CSingleLock lock(m_sync); -+ -+ // don't accept a re-add, since that would cause time moving back -+ double last = m_queue.empty() ? m_current.pts : m_queue.back().pts; -+ if(last == pts) -+ return; -+ -+ TPTSItem item; -+ item.pts = pts; -+ item.timestamp = CDVDClock::GetAbsoluteClock() + delay; -+ item.duration = duration; -+ -+ // first one is applied directly -+ if(m_queue.empty() && m_current.pts == DVD_NOPTS_VALUE) -+ m_current = item; ++ CSharedLock lock(m_sharedSection); ++ if (m_presentstep == PRESENT_IDLE && ++ GetNextRenderBufferIndex() < 0 && ++ m_speed > 0) ++ return false; + else -+ m_queue.push(item); -+ -+ // call function to make sure the queue -+ // doesn't grow should nobody call it -+ Current(); ++ return true; +} -+void CPTSOutputQueue::Flush() -+{ -+ CSingleLock lock(m_sync); -+ -+ while( !m_queue.empty() ) m_queue.pop(); -+ m_current.pts = DVD_NOPTS_VALUE; -+ m_current.timestamp = 0.0; -+ m_current.duration = 0.0; -+} -+ -+double CPTSOutputQueue::Current() -+{ -+ CSingleLock lock(m_sync); -+ -+ if(!m_queue.empty() && m_current.pts == DVD_NOPTS_VALUE) -+ { -+ m_current = m_queue.front(); -+ m_queue.pop(); -+ } -+ -+ while( !m_queue.empty() && CDVDClock::GetAbsoluteClock() >= m_queue.front().timestamp ) -+ { -+ m_current = m_queue.front(); -+ m_queue.pop(); -+ } -+ -+ if( m_current.timestamp == 0 ) return m_current.pts; -+ -+ return m_current.pts + min(m_current.duration, (CDVDClock::GetAbsoluteClock() - m_current.timestamp)); -+} -+ -+ - CDVDAudio::CDVDAudio(volatile bool &bStop) - : m_bStop(bStop) - { -@@ -114,6 +176,7 @@ - m_iBitsPerSample = 0; - m_bPassthrough = false; - m_bPaused = true; -+ m_time.Flush(); +diff --git a/xbmc/cores/VideoRenderers/RenderManager.h b/xbmc/cores/VideoRenderers/RenderManager.h +index 34ff8d0..288175e 100644 +--- a/xbmc/cores/VideoRenderers/RenderManager.h ++++ b/xbmc/cores/VideoRenderers/RenderManager.h +@@ -134,6 +134,7 @@ class CXBMCRenderManager + void RegisterRenderUpdateCallBack(const void *ctx, RenderUpdateCallBackFn fn); + int WaitForBuffer(volatile bool& bStop); + void NotifyDisplayFlip(); ++ bool HasFrame(); + void EnableBuffering(bool enable); + void DiscardBuffer(); + +-- +1.7.10 + + +From 0eb2bc2fff5c4e3f4d0f25f2d9295379ab4473c8 Mon Sep 17 00:00:00 2001 +From: xbmc +Date: Mon, 28 May 2012 10:34:39 +0200 +Subject: [PATCH 04/51] videoplayer: adopt lateness detection and dropping to + buffering + +--- + xbmc/cores/VideoRenderers/RenderManager.cpp | 12 ++ + xbmc/cores/VideoRenderers/RenderManager.h | 1 + + .../dvdplayer/DVDCodecs/Video/DVDVideoCodec.h | 14 ++ + .../DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp | 31 +++ + .../DVDCodecs/Video/DVDVideoCodecFFmpeg.h | 7 + + xbmc/cores/dvdplayer/DVDPlayerVideo.cpp | 224 ++++++++++++++++---- + xbmc/cores/dvdplayer/DVDPlayerVideo.h | 24 +++ + 7 files changed, 268 insertions(+), 45 deletions(-) + +diff --git a/xbmc/cores/VideoRenderers/RenderManager.cpp b/xbmc/cores/VideoRenderers/RenderManager.cpp +index 4b897da..f19797c 100644 +--- a/xbmc/cores/VideoRenderers/RenderManager.cpp ++++ b/xbmc/cores/VideoRenderers/RenderManager.cpp +@@ -1105,6 +1105,18 @@ void CXBMCRenderManager::NotifyDisplayFlip() + m_flipEvent.Set(); } - DWORD CDVDAudio::AddPacketsRenderer(unsigned char* data, DWORD len, CSingleLock &lock) -@@ -203,6 +266,10 @@ - m_iBufferSize = len; - memcpy(m_pBuffer, data, len); ++bool CXBMCRenderManager::GetStats(double &sleeptime, double &pts, int &bufferLevel) ++{ ++ CSharedLock lock(m_sharedSection); ++ sleeptime = m_sleeptime; ++ pts = m_presentPts; ++ if (m_iNumRenderBuffers < 3) ++ bufferLevel = -1; ++ else ++ bufferLevel = (m_iOutputRenderBuffer - m_iCurrentRenderBuffer + m_iNumRenderBuffers) % m_iNumRenderBuffers; ++ return true; ++} ++ + bool CXBMCRenderManager::HasFrame() + { + CSharedLock lock(m_sharedSection); +diff --git a/xbmc/cores/VideoRenderers/RenderManager.h b/xbmc/cores/VideoRenderers/RenderManager.h +index 288175e..9342586 100644 +--- a/xbmc/cores/VideoRenderers/RenderManager.h ++++ b/xbmc/cores/VideoRenderers/RenderManager.h +@@ -134,6 +134,7 @@ class CXBMCRenderManager + void RegisterRenderUpdateCallBack(const void *ctx, RenderUpdateCallBackFn fn); + int WaitForBuffer(volatile bool& bStop); + void NotifyDisplayFlip(); ++ bool GetStats(double &sleeptime, double &pts, int &bufferLevel); + bool HasFrame(); + void EnableBuffering(bool enable); + void DiscardBuffer(); +diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodec.h b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodec.h +index 1d8bad3..5001aac 100644 +--- a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodec.h ++++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodec.h +@@ -110,6 +110,10 @@ struct DVDVideoUserData + #define DVP_FLAG_NOSKIP 0x00000010 // indicate this picture should never be dropped + #define DVP_FLAG_DROPPED 0x00000020 // indicate that this picture has been dropped in decoder stage, will have no data + ++#define DVP_FLAG_DROPDEINT 0x00000040 // indicate that this picture was requested to have been dropped in deint stage ++#define DVP_FLAG_NO_POSTPROC 0x00000100 ++#define DVP_FLAG_DRAIN 0x00000200 ++ + // DVP_FLAG 0x00000100 - 0x00000f00 is in use by libmpeg2! + + #define DVP_QSCALE_UNKNOWN 0 +@@ -127,6 +131,9 @@ struct DVDVideoUserData + #define VC_PICTURE 0x00000004 // the decoder got a picture, call Decode(NULL, 0) again to parse the rest of the data + #define VC_USERDATA 0x00000008 // the decoder found some userdata, call Decode(NULL, 0) again to parse the rest of the data + #define VC_FLUSHED 0x00000010 // the decoder lost it's state, we need to restart decoding again ++#define VC_DROPPED 0x00000020 // needed to identify if a picture was dropped ++#define VC_HURRY 0x00000040 ++ + class CDVDVideoCodec + { + public: +@@ -237,4 +244,11 @@ class CDVDVideoCodec + { + return 0; } + -+ double time_added = DVD_SEC_TO_TIME(m_SecondsPerByte * (data - audioframe.data)); -+ m_time.Add(audioframe.pts, GetDelay() - time_added, audioframe.duration); ++ virtual bool GetPts(double &pts, int &skippedDeint, int &interlaced) ++ { ++ return false; ++ } + - return total; ++ virtual void SetCodecControl(int flags) {} + }; +diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp +index 8f81637..af706bd 100644 +--- a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp ++++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp +@@ -142,6 +142,7 @@ enum PixelFormat CDVDVideoCodecFFmpeg::GetFormat( struct AVCodecContext * avctx + m_iLastKeyframe = 0; + m_dts = DVD_NOPTS_VALUE; + m_started = false; ++ m_decoderPts = DVD_NOPTS_VALUE; } -@@ -276,6 +343,7 @@ + CDVDVideoCodecFFmpeg::~CDVDVideoCodecFFmpeg() +@@ -340,6 +341,14 @@ void CDVDVideoCodecFFmpeg::SetDropState(bool bDrop) { - CSingleLock lock (m_critSection); - if (m_pAudioStream) m_pAudioStream->Pause(); -+ m_time.Flush(); - } + if( m_pCodecContext ) + { ++ if (bDrop && m_pHardware && m_pHardware->CanSkipDeint()) ++ { ++ m_requestSkipDeint = true; ++ bDrop = false; ++ } ++ else ++ m_requestSkipDeint = false; ++ + // i don't know exactly how high this should be set + // couldn't find any good docs on it. think it varies + // from codec to codec on what it does +@@ -541,6 +550,7 @@ int CDVDVideoCodecFFmpeg::Decode(BYTE* pData, int iSize, double dts, double pts) + void CDVDVideoCodecFFmpeg::Reset() + { + m_started = false; ++ m_decoderPts = DVD_NOPTS_VALUE; + m_iLastKeyframe = m_pCodecContext->has_b_frames; + m_dllAvCodec.avcodec_flush_buffers(m_pCodecContext); - void CDVDAudio::Resume() -@@ -306,6 +374,7 @@ - m_pAudioStream->Flush(); - } - m_iBufferSize = 0; -+ m_time.Flush(); - } +@@ -639,6 +649,22 @@ bool CDVDVideoCodecFFmpeg::GetPictureCommon(DVDVideoPicture* pDvdVideoPicture) + else + pDvdVideoPicture->pts = DVD_NOPTS_VALUE; - bool CDVDAudio::IsValidFormat(const DVDAudioFrame &audioframe) -@@ -354,3 +423,10 @@ - return 0.0; - return m_pAudioStream->GetCacheTotal(); ++ if (pDvdVideoPicture->pts != DVD_NOPTS_VALUE) ++ m_decoderPts = pDvdVideoPicture->pts; ++ else ++ m_decoderPts = m_dts; ++ ++ if (m_requestSkipDeint) ++ { ++ pDvdVideoPicture->iFlags |= DVP_FLAG_DROPDEINT; ++ m_skippedDeint = 1; ++ } ++ else ++ m_skippedDeint = 0; ++ ++ m_requestSkipDeint = false; ++ pDvdVideoPicture->iFlags |= m_codecControlFlags; ++ + if(!m_started) + pDvdVideoPicture->iFlags |= DVP_FLAG_DROPPED; + +@@ -861,3 +887,8 @@ unsigned CDVDVideoCodecFFmpeg::GetConvergeCount() + else + return 0; } + -+void CDVDAudio::SetPlayingPts(double pts) ++void CDVDVideoCodecFFmpeg::SetCodecControl(int flags) +{ -+ CSingleLock lock (m_critSection); -+ m_time.Flush(); -+ m_time.Add(pts, GetDelay(), 0); ++ m_codecControlFlags = flags; +} -diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDAudio.h xbmc-f13566b.patch/xbmc/cores/dvdplayer/DVDAudio.h ---- xbmc-f13566b/xbmc/cores/dvdplayer/DVDAudio.h 2012-10-08 09:19:29.000000000 +0200 -+++ xbmc-f13566b.patch/xbmc/cores/dvdplayer/DVDAudio.h 2012-10-08 17:13:46.805516901 +0200 -@@ -25,6 +25,7 @@ - #endif - #include "threads/CriticalSection.h" - #include "PlatformDefs.h" -+#include +diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.h b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.h +index 61d0305..52e1113 100644 +--- a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.h ++++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.h +@@ -44,6 +44,7 @@ class CDVDVideoCodecFFmpeg : public CDVDVideoCodec + virtual bool GetPicture(AVCodecContext* avctx, AVFrame* frame, DVDVideoPicture* picture) = 0; + virtual int Check (AVCodecContext* avctx) = 0; + virtual void Reset () {} ++ virtual bool CanSkipDeint() {return false; } + virtual const std::string Name() = 0; + virtual CCriticalSection* Section() { return NULL; } + }; +@@ -60,6 +61,8 @@ class CDVDVideoCodecFFmpeg : public CDVDVideoCodec + virtual unsigned int SetFilters(unsigned int filters); + virtual const char* GetName() { return m_name.c_str(); }; // m_name is never changed after open + virtual unsigned GetConvergeCount(); ++ virtual bool GetPts(double &pts, int &skippedDeint, int &interlaced) {pts=m_decoderPts; skippedDeint=m_skippedDeint; if (m_pFrame) interlaced = m_pFrame->interlaced_frame; return true;} ++ virtual void SetCodecControl(int flags); - #include "cores/AudioEngine/Utils/AEChannelInfo.h" - class IAEStream; -@@ -46,6 +47,22 @@ - #endif - typedef struct stDVDAudioFrame DVDAudioFrame; + bool IsHardwareAllowed() { return !m_bSoftware; } + IHardwareDecoder * GetHardware() { return m_pHardware; }; +@@ -119,4 +122,8 @@ class CDVDVideoCodecFFmpeg : public CDVDVideoCodec + double m_dts; + bool m_started; + std::vector m_formats; ++ double m_decoderPts, m_decoderInterval; ++ int m_skippedDeint; ++ bool m_requestSkipDeint; ++ int m_codecControlFlags; + }; +diff --git a/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp b/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp +index a4bb1ba..93908a7 100644 +--- a/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp ++++ b/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp +@@ -326,8 +326,10 @@ void CDVDPlayerVideo::Process() + int iDropped = 0; //frames dropped in a row + bool bRequestDrop = false; ++ int iDropDirective; + + m_videoStats.Start(); ++ m_droppingStats.Reset(); + + while (!m_bStop) + { +@@ -437,6 +439,7 @@ void CDVDPlayerVideo::Process() + picture.iFlags &= ~DVP_FLAG_ALLOCATED; + m_packets.clear(); + m_started = false; ++ m_droppingStats.Reset(); + g_renderManager.EnableBuffering(false); + } + else if (pMsg->IsType(CDVDMsg::GENERAL_FLUSH)) // private message sent by (CDVDPlayerVideo::Flush()) +@@ -450,6 +453,7 @@ void CDVDPlayerVideo::Process() + //we need to recalculate the framerate + //TODO: this needs to be set on a streamchange instead + ResetFrameRateCalc(); ++ m_droppingStats.Reset(); + g_renderManager.EnableBuffering(false); + + m_stalled = true; +@@ -468,6 +472,7 @@ void CDVDPlayerVideo::Process() + m_speed = static_cast(pMsg)->m_value; + if(m_speed == DVD_PLAYSPEED_PAUSE) + m_iNrOfPicturesNotToSkip = 0; ++ m_droppingStats.Reset(); + } + else if (pMsg->IsType(CDVDMsg::PLAYER_STARTED)) + { +@@ -502,6 +507,28 @@ void CDVDPlayerVideo::Process() + m_iNrOfPicturesNotToSkip = 1; + } + ++ bRequestDrop = false; ++ iDropDirective = CalcDropRequirement(pts); ++ if (iDropDirective & EOS_VERYLATE) ++ { ++ if (m_bAllowDrop) ++ { ++ m_pullupCorrection.Flush(); ++ bRequestDrop = true; ++ } ++ } ++ int codecControl = 0; ++ if (iDropDirective & EOS_BUFFER_LEVEL) ++ codecControl |= DVP_FLAG_DRAIN; ++ if (m_speed > DVD_PLAYSPEED_NORMAL) ++ codecControl |= DVP_FLAG_NO_POSTPROC; ++ m_pVideoCodec->SetCodecControl(codecControl); ++ if (iDropDirective & EOS_DROPPED) ++ { ++ m_iDroppedFrames++; ++ iDropped++; ++ } + -+class CPTSOutputQueue + #ifdef PROFILE + bRequestDrop = false; + #else +@@ -511,6 +538,7 @@ void CDVDPlayerVideo::Process() + bRequestDrop = false; + m_iDroppedRequest = 0; + m_iLateFrames = 0; ++ m_droppingStats.m_requestOutputDrop = false; + } + #endif + +@@ -558,15 +586,8 @@ void CDVDPlayerVideo::Process() + } + + m_videoStats.AddSampleBytes(pPacket->iSize); +- // assume decoder dropped a picture if it didn't give us any +- // picture from a demux packet, this should be reasonable +- // for libavformat as a demuxer as it normally packetizes +- // pictures when they come from demuxer +- if(bRequestDrop && !bPacketDrop && (iDecoderState & VC_BUFFER) && !(iDecoderState & VC_PICTURE)) +- { +- m_iDroppedFrames++; +- iDropped++; +- } ++ ++ bRequestDrop = false; + + // loop while no error + while (!m_bStop) +@@ -1244,50 +1265,30 @@ int CDVDPlayerVideo::OutputPicture(const DVDVideoPicture* src, double pts) + m_FlipTimeStamp += max(0.0, iSleepTime); + m_FlipTimeStamp += iFrameDuration; + +- if (iSleepTime <= 0 && m_speed) +- m_iLateFrames++; +- else +- m_iLateFrames = 0; +- +- // ask decoder to drop frames next round, as we are very late +- if(m_iLateFrames > 10) +- { +- if (!(pPicture->iFlags & DVP_FLAG_NOSKIP)) +- { +- //if we're calculating the framerate, +- //don't drop frames until we've calculated a stable framerate +- if (m_bAllowDrop || m_speed != DVD_PLAYSPEED_NORMAL) +- { +- result |= EOS_VERYLATE; +- m_pullupCorrection.Flush(); //dropped frames mess up the pattern, so just flush it +- } +- +- //if we requested 5 drops in a row and we're still late, drop on output +- //this keeps a/v sync if the decoder can't drop, or we're still calculating the framerate +- if (m_iDroppedRequest > 5) +- { +- m_iDroppedRequest--; //decrease so we only drop half the frames +- return result | EOS_DROPPED; +- } +- m_iDroppedRequest++; +- } +- } +- else ++ if ((m_droppingStats.m_requestOutputDrop && !(pPicture->iFlags & DVP_FLAG_NOSKIP)) ++ || (pPicture->iFlags & DVP_FLAG_DROPPED)) + { +- m_iDroppedRequest = 0; ++ m_droppingStats.AddOutputDropGain(pts, 1/m_fFrameRate); ++ m_droppingStats.m_requestOutputDrop = false; ++ CLog::Log(LOGDEBUG,"%s - dropped in output", __FUNCTION__); ++ return result | EOS_DROPPED; + } + + if( m_speed < 0 ) + { +- if( iClockSleep < -DVD_MSEC_TO_TIME(200) +- && !(pPicture->iFlags & DVP_FLAG_NOSKIP) ) ++ double decoderPts = m_droppingStats.m_lastDecoderPts; ++ double renderPts = m_droppingStats.m_lastRenderPts; ++ if (pts > renderPts) ++ { ++ if (decoderPts >= renderPts) ++ { ++ Sleep(200); ++ } + return result | EOS_DROPPED; ++ } + } + +- if( (pPicture->iFlags & DVP_FLAG_DROPPED) ) +- return result | EOS_DROPPED; +- +- if( m_speed != DVD_PLAYSPEED_NORMAL && limited ) ++ if( m_speed != DVD_PLAYSPEED_NORMAL && m_speed >= 0 && limited ) + { + // calculate frame dropping pattern to render at this speed + // we do that by deciding if this or next frame is closest +@@ -1648,3 +1649,136 @@ void CDVDPlayerVideo::CalcFrameRate() + m_iFrameRateCount = 0; + } + } ++ ++int CDVDPlayerVideo::CalcDropRequirement(double pts) +{ -+private: -+ typedef struct {double pts; double timestamp; double duration;} TPTSItem; -+ TPTSItem m_current; -+ std::queue m_queue; -+ CCriticalSection m_sync; ++ int result = 0; ++ double iSleepTime; ++ double iDecoderPts, iRenderPts; ++ double iInterval; ++ int interlaced; ++ double iGain; ++ double iLateness; ++ bool bNewFrame; ++ int iSkippedDeint = 0; ++ int iBufferLevel; + ++ // get decoder stats ++ if (!m_pVideoCodec->GetPts(iDecoderPts, iSkippedDeint, interlaced)) ++ iDecoderPts = pts; ++ if (iDecoderPts == DVD_NOPTS_VALUE) ++ iDecoderPts = pts; ++ ++ // get render stats ++ g_renderManager.GetStats(iSleepTime, iRenderPts, iBufferLevel); ++ ++ if (iBufferLevel < 0) ++ result |= EOS_BUFFER_LEVEL; ++ else if (iBufferLevel < 2) ++ { ++ result |= EOS_BUFFER_LEVEL; ++ CLog::Log(LOGDEBUG,"CDVDPlayerVideo::CalcDropRequirement - hurry: %d", iBufferLevel); ++ } ++ ++ bNewFrame = iDecoderPts != m_droppingStats.m_lastDecoderPts; ++ ++ if (interlaced) ++ iInterval = 2/m_fFrameRate*(double)DVD_TIME_BASE; ++ else ++ iInterval = 1/m_fFrameRate*(double)DVD_TIME_BASE; ++ ++ if (m_droppingStats.m_lastDecoderPts > 0 ++ && bNewFrame ++ && m_bAllowDrop ++ && m_droppingStats.m_dropRequests > 0) ++ { ++ iGain = (iDecoderPts - m_droppingStats.m_lastDecoderPts - iInterval)/(double)DVD_TIME_BASE; ++ if (iSkippedDeint) ++ { ++ CDroppingStats::CGain gain; ++ gain.gain = 1/m_fFrameRate; ++ gain.pts = iDecoderPts; ++ m_droppingStats.m_gain.push_back(gain); ++ m_droppingStats.m_totalGain += gain.gain; ++ result |= EOS_DROPPED; ++ m_droppingStats.m_dropRequests = 0; ++ CLog::Log(LOGDEBUG,"CDVDPlayerVideo::CalcDropRequirement - dropped de-interlacing cycle, Sleeptime: %f, Bufferlevel: %d", iSleepTime, iBufferLevel); ++ } ++ else if (iGain > 1/m_fFrameRate) ++ { ++ CDroppingStats::CGain gain; ++ gain.gain = iGain; ++ gain.pts = iDecoderPts; ++ m_droppingStats.m_gain.push_back(gain); ++ m_droppingStats.m_totalGain += iGain; ++ result |= EOS_DROPPED; ++ m_droppingStats.m_dropRequests = 0; ++ CLog::Log(LOGDEBUG,"CDVDPlayerVideo::CalcDropRequirement - dropped in decoder, Sleeptime: %f, Bufferlevel: %d, Gain: %f", iSleepTime, iBufferLevel, iGain); ++ } ++ } ++ m_droppingStats.m_lastDecoderPts = iDecoderPts; ++ ++ // subtract gains ++ while (!m_droppingStats.m_gain.empty() && ++ iRenderPts >= m_droppingStats.m_gain.front().pts) ++ { ++ m_droppingStats.m_totalGain -= m_droppingStats.m_gain.front().gain; ++ m_droppingStats.m_gain.pop_front(); ++ } ++ ++ // calculate lateness ++ iLateness = iSleepTime + m_droppingStats.m_totalGain; ++ if (iLateness < 0 && m_speed) ++ { ++ if (bNewFrame) ++ m_droppingStats.m_lateFrames++; ++ ++ // if lateness is smaller than frametime, we observe this state ++ // for 10 cycles ++ if (m_droppingStats.m_lateFrames > 10 || iLateness < -2/m_fFrameRate) ++ { ++ // is frame allowed to skip ++ if (m_iNrOfPicturesNotToSkip <= 0) ++ { ++ result |= EOS_VERYLATE; ++ ++ // drop in output ++ if (m_droppingStats.m_dropRequests > 7 && g_graphicsContext.IsFullScreenVideo()) ++ { ++ m_droppingStats.m_dropRequests--; //decrease so we only drop half the frames ++ m_droppingStats.m_requestOutputDrop = true; ++ } ++ else if (bNewFrame) ++ m_droppingStats.m_dropRequests++; ++ } ++ } ++ } ++ else ++ { ++ m_droppingStats.m_dropRequests = 0; ++ m_droppingStats.m_lateFrames = 0; ++ m_droppingStats.m_requestOutputDrop = false; ++ } ++ m_droppingStats.m_lastRenderPts = iRenderPts; ++ return result; ++} ++ ++void CDroppingStats::Reset() ++{ ++ m_gain.clear(); ++ m_totalGain = 0; ++ m_lastDecoderPts = 0; ++ m_lastRenderPts = 0; ++ m_lateFrames = 0; ++ m_dropRequests = 0; ++ m_requestOutputDrop = false; ++} ++ ++void CDroppingStats::AddOutputDropGain(double pts, double frametime) ++{ ++ CDroppingStats::CGain gain; ++ gain.gain = frametime; ++ gain.pts = pts; ++ m_gain.push_back(gain); ++ m_totalGain += frametime; ++} +diff --git a/xbmc/cores/dvdplayer/DVDPlayerVideo.h b/xbmc/cores/dvdplayer/DVDPlayerVideo.h +index fe7e12c..4913712 100644 +--- a/xbmc/cores/dvdplayer/DVDPlayerVideo.h ++++ b/xbmc/cores/dvdplayer/DVDPlayerVideo.h +@@ -37,6 +37,26 @@ + + #define VIDEO_PICTURE_QUEUE_SIZE 1 + ++class CDroppingStats ++{ +public: -+ CPTSOutputQueue(); -+ void Add(double pts, double delay, double duration); -+ void Flush(); -+ double Current(); ++ void Reset(); ++ void AddOutputDropGain(double pts, double frametime); ++ struct CGain ++ { ++ double gain; ++ double pts; ++ }; ++ std::deque m_gain; ++ double m_totalGain; ++ double m_lastDecoderPts; ++ double m_lastRenderPts; ++ unsigned int m_lateFrames; ++ unsigned int m_dropRequests; ++ bool m_requestOutputDrop; +}; + - class CSingleLock; - class IAudioCallback; ++ + class CDVDPlayerVideo : public CThread + { + public: +@@ -110,6 +130,7 @@ class CDVDPlayerVideo : public CThread + #define EOS_ABORT 1 + #define EOS_DROPPED 2 + #define EOS_VERYLATE 4 ++#define EOS_BUFFER_LEVEL 8 -@@ -68,6 +85,8 @@ - void Destroy(); - DWORD AddPackets(const DVDAudioFrame &audioframe); - double GetDelay(); // returns the time it takes to play a packet if we add one at this time -+ double GetPlayingPts() { return m_time.Current(); } -+ void SetPlayingPts(double pts); - double GetCacheTime(); // returns total amount of data cached in audio output at this time - double GetCacheTotal(); // returns total amount the audio device can buffer - void Flush(); -@@ -79,6 +98,7 @@ + void AutoCrop(DVDVideoPicture* pPicture); + void AutoCrop(DVDVideoPicture *pPicture, RECT &crop); +@@ -135,6 +156,7 @@ class CDVDPlayerVideo : public CThread - IAEStream *m_pAudioStream; - protected: -+ CPTSOutputQueue m_time; - DWORD AddPacketsRenderer(unsigned char* data, DWORD len, CSingleLock &lock); - BYTE* m_pBuffer; // should be [m_dwPacketSize] - DWORD m_iBufferSize; -diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp xbmc-f13566b.patch/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp ---- xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp 2012-10-08 09:19:29.000000000 +0200 -+++ xbmc-f13566b.patch/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp 2012-10-08 17:13:46.965520095 +0200 -@@ -56,6 +56,9 @@ - #ifdef HAVE_LIBVA - #include "VAAPI.h" + void ResetFrameRateCalc(); + void CalcFrameRate(); ++ int CalcDropRequirement(double pts); + + double m_fFrameRate; //framerate of the video currently playing + bool m_bCalcFrameRate; //if we should calculate the framerate from the timestamps +@@ -195,5 +217,7 @@ class CDVDPlayerVideo : public CThread + CPullupCorrection m_pullupCorrection; + + std::list m_packets; ++ ++ CDroppingStats m_droppingStats; + }; + +-- +1.7.10 + + +From 6444ee8d37e29c8e2beaf3b33df6849ec2bf25d9 Mon Sep 17 00:00:00 2001 +From: xbmc +Date: Mon, 28 May 2012 10:41:31 +0200 +Subject: [PATCH 05/51] videoplayer: update frametime, it might change due to + fps detection + +--- + xbmc/cores/dvdplayer/DVDPlayerVideo.cpp | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp b/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp +index 93908a7..4675556 100644 +--- a/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp ++++ b/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp +@@ -721,6 +721,8 @@ void CDVDPlayerVideo::Process() + CDVDCodecUtils::FreePicture(pTempYUVPackedPicture); #endif -+#ifdef HAVE_LIBXVBA -+#include "XVBA.h" + ++ frametime = (double)DVD_TIME_BASE/m_fFrameRate; ++ + if(m_started == false) + { + m_codecname = m_pVideoCodec->GetName(); +-- +1.7.10 + + +From 873bb4dba8526cfcd977cb15e425caf5ff669c68 Mon Sep 17 00:00:00 2001 +From: xbmc +Date: Mon, 28 May 2012 10:43:06 +0200 +Subject: [PATCH 06/51] videoplayer: give streams with invalid fps a chance + for fps detection + +--- + xbmc/cores/dvdplayer/DVDPlayerVideo.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp b/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp +index 4675556..2ef6358 100644 +--- a/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp ++++ b/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp +@@ -1595,7 +1595,7 @@ void CDVDPlayerVideo::CalcFrameRate() + double frameduration = m_pullupCorrection.GetFrameDuration(); + + if (frameduration == DVD_NOPTS_VALUE || +- (g_advancedSettings.m_videoFpsDetect == 1 && m_pullupCorrection.GetPatternLength() > 1)) ++ (g_advancedSettings.m_videoFpsDetect == 1 && (m_pullupCorrection.GetPatternLength() > 1 && !m_bFpsInvalid))) + { + //reset the stored framerates if no good framerate was detected + m_fStableFrameRate = 0.0; +-- +1.7.10 + + +From e6fbf42ceedf9d517195b1b9545556ccd65a144a Mon Sep 17 00:00:00 2001 +From: xbmc +Date: Mon, 28 May 2012 10:49:05 +0200 +Subject: [PATCH 07/51] dvdplayer: allow rewinding at end of stream, do a seek + after rewind + +--- + xbmc/cores/dvdplayer/DVDPlayer.cpp | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +diff --git a/xbmc/cores/dvdplayer/DVDPlayer.cpp b/xbmc/cores/dvdplayer/DVDPlayer.cpp +index 1259fae..cc38d30 100644 +--- a/xbmc/cores/dvdplayer/DVDPlayer.cpp ++++ b/xbmc/cores/dvdplayer/DVDPlayer.cpp +@@ -1557,7 +1557,7 @@ void CDVDPlayer::HandlePlaySpeed() + + } + else if (m_CurrentVideo.id >= 0 +- && m_CurrentVideo.inited == true ++ && (m_CurrentVideo.inited == true || GetPlaySpeed() < 0) // allow rewind at end of file + && m_SpeedState.lastpts != m_dvdPlayerVideo.GetCurrentPts() + && m_SpeedState.lasttime != GetTime()) + { +@@ -2193,6 +2193,12 @@ void CDVDPlayer::HandleMessages() + pvrinputstream->Pause( speed == 0 ); + } + ++ // do a seek after rewind, clock is not in sync with current pts ++ if (m_playSpeed < 0 && speed >= 0) ++ { ++ m_messenger.Put(new CDVDMsgPlayerSeek(GetTime(), true, true, true)); ++ } ++ + // if playspeed is different then DVD_PLAYSPEED_NORMAL or DVD_PLAYSPEED_PAUSE + // audioplayer, stops outputing audio to audiorendere, but still tries to + // sleep an correct amount for each packet +-- +1.7.10 + + +From a4fbe70f213d149870d6373498750bb763318b72 Mon Sep 17 00:00:00 2001 +From: xbmc +Date: Sun, 2 Sep 2012 16:05:21 +0200 +Subject: [PATCH 08/51] video player: present correct pts to user for a/v sync + (after buffering in renderer) + +--- + xbmc/cores/dvdplayer/DVDPlayerVideo.cpp | 41 +++++++++++++++++++------------ + xbmc/cores/dvdplayer/DVDPlayerVideo.h | 2 +- + 2 files changed, 26 insertions(+), 17 deletions(-) + +diff --git a/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp b/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp +index 2ef6358..10e2225 100644 +--- a/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp ++++ b/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp +@@ -1251,22 +1251,6 @@ int CDVDPlayerVideo::OutputPicture(const DVDVideoPicture* src, double pts) + else + iSleepTime = iFrameSleep + (iClockSleep - iFrameSleep) / m_autosync; + +-#ifdef PROFILE /* during profiling, try to play as fast as possible */ +- iSleepTime = 0; +-#endif +- +- // present the current pts of this frame to user, and include the actual +- // presentation delay, to allow him to adjust for it +- if( m_stalled ) +- m_iCurrentPts = DVD_NOPTS_VALUE; +- else +- m_iCurrentPts = pts - max(0.0, iSleepTime); +- +- // timestamp when we think next picture should be displayed based on current duration +- m_FlipTimeStamp = iCurrentClock; +- m_FlipTimeStamp += max(0.0, iSleepTime); +- m_FlipTimeStamp += iFrameDuration; +- + if ((m_droppingStats.m_requestOutputDrop && !(pPicture->iFlags & DVP_FLAG_NOSKIP)) + || (pPicture->iFlags & DVP_FLAG_DROPPED)) + { +@@ -1571,6 +1555,22 @@ void CDVDPlayerVideo::ResetFrameRateCalc() + g_advancedSettings.m_videoFpsDetect == 0; + } + ++double CDVDPlayerVideo::GetCurrentPts() ++{ ++ double iSleepTime, iRenderPts; ++ int iBufferLevel; ++ ++ // get render stats ++ g_renderManager.GetStats(iSleepTime, iRenderPts, iBufferLevel); ++ ++ if( m_stalled ) ++ iRenderPts = DVD_NOPTS_VALUE; ++ else ++ iRenderPts = iRenderPts - max(0.0, iSleepTime); ++ ++ return iRenderPts; ++} ++ + #define MAXFRAMERATEDIFF 0.01 + #define MAXFRAMESERR 1000 + +@@ -1689,6 +1689,15 @@ int CDVDPlayerVideo::CalcDropRequirement(double pts) + else + iInterval = 1/m_fFrameRate*(double)DVD_TIME_BASE; + ++ ++ m_FlipTimeStamp = m_pClock->GetAbsoluteClock() + max(0.0, iSleepTime) + iInterval; ++ ++ if( m_stalled ) ++ m_iCurrentPts = DVD_NOPTS_VALUE; ++ else ++ m_iCurrentPts = iRenderPts - max(0.0, iSleepTime); ++ ++ + if (m_droppingStats.m_lastDecoderPts > 0 + && bNewFrame + && m_bAllowDrop +diff --git a/xbmc/cores/dvdplayer/DVDPlayerVideo.h b/xbmc/cores/dvdplayer/DVDPlayerVideo.h +index 4913712..509d5f7 100644 +--- a/xbmc/cores/dvdplayer/DVDPlayerVideo.h ++++ b/xbmc/cores/dvdplayer/DVDPlayerVideo.h +@@ -108,7 +108,7 @@ class CDVDPlayerVideo : public CThread + + bool InitializedOutputDevice(); + +- double GetCurrentPts() { return m_iCurrentPts; } ++ double GetCurrentPts(); + int GetPullupCorrection() { return m_pullupCorrection.GetPatternLength(); } + + double GetOutputDelay(); /* returns the expected delay, from that a packet is put in queue */ +-- +1.7.10 + + +From bbfe3c98f1ccf7eb27f99603b96d62d4c1ec0d0f Mon Sep 17 00:00:00 2001 +From: xbmc +Date: Mon, 28 May 2012 11:02:29 +0200 +Subject: [PATCH 09/51] vaapi: adopt to buffering in renderer + +--- + xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp | 2 +- + xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI.cpp | 3 ++- + xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI.h | 1 + + 3 files changed, 4 insertions(+), 2 deletions(-) + +diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp +index af706bd..dae3b8e 100644 +--- a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp ++++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp +@@ -106,7 +106,7 @@ enum PixelFormat CDVDVideoCodecFFmpeg::GetFormat( struct AVCodecContext * avctx + && (avctx->codec_id != CODEC_ID_MPEG4 || g_advancedSettings.m_videoAllowMpeg4VAAPI)) + { + VAAPI::CDecoder* dec = new VAAPI::CDecoder(); +- if(dec->Open(avctx, *cur)) ++ if(dec->Open(avctx, *cur, ctx->m_uSurfacesCount)) + { + ctx->SetHardware(dec); + return *cur; +diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI.cpp +index c8d9e43..e605e6a 100644 +--- a/xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI.cpp ++++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI.cpp +@@ -357,6 +357,7 @@ bool CDecoder::Open(AVCodecContext *avctx, enum PixelFormat fmt, unsigned int su + CHECK(vaCreateConfig(m_display->get(), profile, entrypoint, &attrib, 1, &m_hwaccel->config_id)) + m_config = m_hwaccel->config_id; + ++ m_renderbuffers_count = surfaces; + if (!EnsureContext(avctx)) + return false; + +@@ -388,7 +389,7 @@ bool CDecoder::EnsureContext(AVCodecContext *avctx) + else + m_refs = 2; + } +- return EnsureSurfaces(avctx, m_refs + 3); ++ return EnsureSurfaces(avctx, m_refs + m_renderbuffers_count + 1); + } + + bool CDecoder::EnsureSurfaces(AVCodecContext *avctx, unsigned n_surfaces_count) +diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI.h b/xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI.h +index af33700..a51662a 100644 +--- a/xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI.h ++++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI.h +@@ -122,6 +122,7 @@ class CDecoder + static const unsigned m_surfaces_max = 32; + unsigned m_surfaces_count; + VASurfaceID m_surfaces[m_surfaces_max]; ++ unsigned m_renderbuffers_count; + + int m_refs; + std::list m_surfaces_used; +-- +1.7.10 + + +From fc9b264f5e7746c37ad2fd13323a62a732d1654d Mon Sep 17 00:00:00 2001 +From: xbmc +Date: Sat, 7 Apr 2012 09:19:00 +0200 +Subject: [PATCH 10/51] vdpau: redesign + +--- + language/English/strings.po | 12 +- + system/shaders/yuv2rgb_basic.glsl | 12 + + xbmc/cores/VideoRenderers/LinuxRendererGL.cpp | 203 +- + xbmc/cores/VideoRenderers/LinuxRendererGL.h | 13 +- + xbmc/cores/VideoRenderers/RenderFormats.h | 1 + + xbmc/cores/VideoRenderers/RenderManager.cpp | 8 +- + xbmc/cores/VideoRenderers/RenderManager.h | 2 +- + .../VideoRenderers/VideoShaders/YUV2RGBShader.cpp | 2 + + .../dvdplayer/DVDCodecs/Video/DVDVideoCodec.h | 4 +- + .../DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp | 23 +- + .../DVDCodecs/Video/DVDVideoCodecFFmpeg.h | 1 - + xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp | 3798 +++++++++++++++----- + xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.h | 662 +++- + xbmc/cores/dvdplayer/DVDPlayerVideo.cpp | 3 + + xbmc/settings/AdvancedSettings.cpp | 8 +- + xbmc/settings/AdvancedSettings.h | 4 +- + xbmc/settings/GUISettings.cpp | 2 + + xbmc/settings/GUIWindowSettingsCategory.cpp | 34 + + xbmc/utils/ActorProtocol.cpp | 253 ++ + xbmc/utils/ActorProtocol.h | 87 + + xbmc/utils/Makefile | 1 + + xbmc/video/dialogs/GUIDialogVideoSettings.cpp | 2 +- + xbmc/windowing/X11/WinSystemX11.h | 1 + + 23 files changed, 3942 insertions(+), 1194 deletions(-) + create mode 100644 xbmc/utils/ActorProtocol.cpp + create mode 100644 xbmc/utils/ActorProtocol.h + +diff --git a/language/English/strings.po b/language/English/strings.po +index 80d00bc..c677a03 100644 +--- a/language/English/strings.po ++++ b/language/English/strings.po +@@ -4845,7 +4845,15 @@ msgctxt "#13434" + msgid "Play only this" + msgstr "" + +-#empty strings from id 13435 to 13499 ++msgctxt "#13435" ++msgid "Allow Vdpau OpenGL interop" ++msgstr "" ++ ++msgctxt "#13436" ++msgid "Allow Vdpau OpenGL interop YUV" ++msgstr "" ++ ++#empty strings from id 13437 to 13499 + + msgctxt "#13500" + msgid "A/V sync method" +@@ -6058,7 +6066,7 @@ msgid "Software Blend" + msgstr "" + + msgctxt "#16325" +-msgid "Auto - ION Optimized" ++msgid "VDPAU - Bob" + msgstr "" + + #empty strings from id 16326 to 16399 +diff --git a/system/shaders/yuv2rgb_basic.glsl b/system/shaders/yuv2rgb_basic.glsl +index 88c33b2..aa26174 100644 +--- a/system/shaders/yuv2rgb_basic.glsl ++++ b/system/shaders/yuv2rgb_basic.glsl +@@ -70,6 +70,18 @@ void main() + rgb.a = gl_Color.a; + gl_FragColor = rgb; + ++#elif defined(XBMC_VDPAU_NV12) ++ ++ vec4 yuv, rgb; ++ yuv.rgba = vec4( texture2D(m_sampY, stretch(m_cordY)).r ++ , texture2D(m_sampU, stretch(m_cordU)).r ++ , texture2D(m_sampV, stretch(m_cordV)).g ++ , 1.0 ); ++ ++ rgb = m_yuvmat * yuv; ++ rgb.a = gl_Color.a; ++ gl_FragColor = rgb; ++ + #elif defined(XBMC_YUY2) || defined(XBMC_UYVY) + + #if(XBMC_texture_rectangle) +diff --git a/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp b/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp +index 05b0426..090f1a5 100644 +--- a/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp ++++ b/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp +@@ -689,6 +689,18 @@ void CLinuxRendererGL::RenderUpdate(bool clear, DWORD flags, DWORD alpha) + glDisable(GL_POLYGON_STIPPLE); + + } ++ else if(m_format == RENDER_FMT_VDPAU_420 ++ && !(flags & RENDER_FLAG_BOTH)) ++ { ++ glDisable(GL_BLEND); ++ glColor4f(1.0f, 1.0f, 1.0f, 1.0f); ++ Render(flags | RENDER_FLAG_TOP, index); ++ ++ glEnable(GL_BLEND); ++ glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); ++ glColor4f(1.0f, 1.0f, 1.0f, 128 / 255.0f); ++ Render(flags | RENDER_FLAG_BOT , index); ++ } + else + Render(flags, index); + +@@ -769,11 +781,6 @@ void CLinuxRendererGL::FlipPage(int source) + + m_buffers[m_iYV12RenderBuffer].flipindex = ++m_flipindex; + +-#ifdef HAVE_LIBVDPAU +- if((m_renderMethod & RENDER_VDPAU) && m_buffers[m_iYV12RenderBuffer].vdpau) +- m_buffers[m_iYV12RenderBuffer].vdpau->Present(); +-#endif +- + return; + } + +@@ -1100,6 +1107,12 @@ void CLinuxRendererGL::LoadShaders(int field) + m_textureCreate = &CLinuxRendererGL::CreateVDPAUTexture; + m_textureDelete = &CLinuxRendererGL::DeleteVDPAUTexture; + } ++ else if (m_format == RENDER_FMT_VDPAU_420) ++ { ++ m_textureUpload = &CLinuxRendererGL::UploadVDPAUTexture420; ++ m_textureCreate = &CLinuxRendererGL::CreateVDPAUTexture420; ++ m_textureDelete = &CLinuxRendererGL::DeleteVDPAUTexture420; ++ } + else if (m_format == RENDER_FMT_VAAPI) + { + m_textureUpload = &CLinuxRendererGL::UploadVAAPITexture; +@@ -1175,7 +1188,10 @@ void CLinuxRendererGL::Render(DWORD flags, int renderBuffer) + m_currentField = FIELD_FULL; + + // call texture load function ++ m_skipRender = false; + (this->*m_textureUpload)(renderBuffer); ++ if (m_skipRender) ++ return; + + if (m_renderMethod & RENDER_GLSL) + { +@@ -1541,17 +1557,12 @@ void CLinuxRendererGL::RenderFromFBO() + void CLinuxRendererGL::RenderVDPAU(int index, int field) + { + #ifdef HAVE_LIBVDPAU +- YUVPLANE &plane = m_buffers[index].fields[field][0]; +- CVDPAU *vdpau = m_buffers[m_iYV12RenderBuffer].vdpau; +- +- if (!vdpau) +- return; ++ YUVPLANE &plane = m_buffers[index].fields[0][1]; + + glEnable(m_textureTarget); + glActiveTextureARB(GL_TEXTURE0); +- glBindTexture(m_textureTarget, plane.id); + +- vdpau->BindPixmap(); ++ glBindTexture(m_textureTarget, plane.id); + + // Try some clamping or wrapping + glTexParameteri(m_textureTarget, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); +@@ -1609,8 +1620,6 @@ void CLinuxRendererGL::RenderVDPAU(int index, int field) + if (m_pVideoFilterShader) + m_pVideoFilterShader->Disable(); + +- vdpau->ReleasePixmap(); +- + glBindTexture (m_textureTarget, 0); + glDisable(m_textureTarget); + #endif +@@ -2294,12 +2303,14 @@ void CLinuxRendererGL::DeleteVDPAUTexture(int index) + { + #ifdef HAVE_LIBVDPAU + YUVPLANE &plane = m_buffers[index].fields[0][0]; ++ YUVFIELDS &fields = m_buffers[index].fields; + + SAFE_RELEASE(m_buffers[index].vdpau); + + if(plane.id && glIsTexture(plane.id)) + glDeleteTextures(1, &plane.id); + plane.id = 0; ++ fields[0][1].id = 0; + #endif + } + +@@ -2333,11 +2344,152 @@ bool CLinuxRendererGL::CreateVDPAUTexture(int index) + void CLinuxRendererGL::UploadVDPAUTexture(int index) + { + #ifdef HAVE_LIBVDPAU ++ VDPAU::CVdpauRenderPicture *vdpau = m_buffers[index].vdpau; ++ ++ unsigned int flipindex = m_buffers[index].flipindex; ++ YUVFIELDS &fields = m_buffers[index].fields; ++ YUVPLANE &plane = fields[0][0]; ++ ++ if (!vdpau || !vdpau->valid) ++ { ++ m_eventTexturesDone[index]->Set(); ++ m_skipRender = true; ++ return; ++ } ++ ++ fields[0][1].id = vdpau->texture[0]; ++ + m_eventTexturesDone[index]->Set(); +- glPixelStorei(GL_UNPACK_ALIGNMENT,1); //what's this for? + #endif + } + ++void CLinuxRendererGL::DeleteVDPAUTexture420(int index) ++{ ++#ifdef HAVE_LIBVDPAU ++ YUVPLANE &plane = m_buffers[index].fields[0][0]; ++ YUVFIELDS &fields = m_buffers[index].fields; ++ ++ SAFE_RELEASE(m_buffers[index].vdpau); ++ ++ if(plane.id && glIsTexture(plane.id)) ++ glDeleteTextures(1, &plane.id); ++ plane.id = 0; ++ fields[1][0].id = 0; ++ fields[1][1].id = 0; ++ fields[2][0].id = 0; ++ fields[2][1].id = 0; ++ +#endif ++} ++ ++bool CLinuxRendererGL::CreateVDPAUTexture420(int index) ++{ ++#ifdef HAVE_LIBVDPAU ++ YV12Image &im = m_buffers[index].image; ++ YUVFIELDS &fields = m_buffers[index].fields; ++ YUVPLANE &plane = fields[0][0]; ++ GLuint *pbo = m_buffers[index].pbo; ++ ++ DeleteVDPAUTexture420(index); ++ ++ memset(&im , 0, sizeof(im)); ++ memset(&fields, 0, sizeof(fields)); ++ ++ im.cshift_x = 1; ++ im.cshift_y = 1; ++ ++ im.plane[0] = NULL; ++ im.plane[1] = NULL; ++ im.plane[2] = NULL; ++ ++ for(int p = 0;p<3;p++) ++ { ++ pbo[p] = None; ++ } ++ ++ glEnable(m_textureTarget); ++ glGenTextures(1, &plane.id); ++ glDisable(m_textureTarget); ++ ++ m_eventTexturesDone[index]->Set(); ++#endif ++ return true; ++} ++ ++void CLinuxRendererGL::UploadVDPAUTexture420(int index) ++{ ++#ifdef HAVE_LIBVDPAU ++ VDPAU::CVdpauRenderPicture *vdpau = m_buffers[index].vdpau; ++ YV12Image &im = m_buffers[index].image; ++ ++ unsigned int flipindex = m_buffers[index].flipindex; ++ YUVFIELDS &fields = m_buffers[index].fields; ++ YUVPLANE &plane = fields[0][0]; ++ ++ if (!vdpau || !vdpau->valid) ++ { ++ m_eventTexturesDone[index]->Set(); ++ m_skipRender = true; ++ return; ++ } ++ ++ im.height = vdpau->texHeight; ++ im.width = vdpau->texWidth; ++ ++ // YUV ++ for (int f = FIELD_FULL; f<=FIELD_BOT ; f++) ++ { ++ int fieldshift = (f==FIELD_FULL) ? 0 : 1; ++ YUVPLANES &planes = fields[f]; ++ ++ planes[0].texwidth = im.width; ++ planes[0].texheight = im.height >> fieldshift; ++ ++ planes[1].texwidth = planes[0].texwidth >> im.cshift_x; ++ planes[1].texheight = planes[0].texheight >> im.cshift_y; ++ planes[2].texwidth = planes[1].texwidth; ++ planes[2].texheight = planes[1].texheight; ++ ++ for (int p = 0; p < 3; p++) ++ { ++ planes[p].pixpertex_x = 1; ++ planes[p].pixpertex_y = 1; ++ } ++ } ++ // crop ++// m_sourceRect.x1 += vdpau->crop.x1; ++// m_sourceRect.x2 -= vdpau->crop.x2; ++// m_sourceRect.y1 += vdpau->crop.y1; ++// m_sourceRect.y2 -= vdpau->crop.y2; ++ ++ // set textures ++ fields[1][0].id = vdpau->texture[0]; ++ fields[1][1].id = vdpau->texture[2]; ++ fields[2][0].id = vdpau->texture[1]; ++ fields[2][1].id = vdpau->texture[3]; ++ ++ glEnable(m_textureTarget); ++ for (int f = 1; f < 3; f++) ++ { ++ for (int p=0;p<2;p++) ++ { ++ glBindTexture(m_textureTarget,fields[f][p].id); ++ glTexParameteri(m_textureTarget, GL_TEXTURE_MIN_FILTER, GL_LINEAR); ++ glTexParameteri(m_textureTarget, GL_TEXTURE_MAG_FILTER, GL_LINEAR); ++ glTexParameteri(m_textureTarget, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); ++ glTexParameteri(m_textureTarget, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); ++ ++ glBindTexture(m_textureTarget,0); ++ VerifyGLState(); ++ } ++ fields[f][2].id = fields[f][1].id; ++ } ++ CalculateTextureSourceRects(index, 3); ++ glDisable(m_textureTarget); ++ ++ m_eventTexturesDone[index]->Set(); ++#endif ++} - using namespace boost; + void CLinuxRendererGL::DeleteVAAPITexture(int index) + { +@@ -3280,12 +3432,13 @@ bool CLinuxRendererGL::Supports(EINTERLACEMETHOD method) + if(method == VS_INTERLACEMETHOD_AUTO) + return true; -@@ -71,14 +74,14 @@ +- if(m_renderMethod & RENDER_VDPAU) ++ if(m_renderMethod & RENDER_VDPAU || ++ m_format == RENDER_FMT_VDPAU_420) + { + #ifdef HAVE_LIBVDPAU +- CVDPAU *vdpau = m_buffers[m_iYV12RenderBuffer].vdpau; +- if(vdpau) +- return vdpau->Supports(method); ++ VDPAU::CVdpauRenderPicture *vdpauPic = m_buffers[m_iYV12RenderBuffer].vdpau; ++ if(vdpauPic && vdpauPic->vdpau) ++ return vdpauPic->vdpau->Supports(method); + #endif + return false; + } +@@ -3371,14 +3524,7 @@ EINTERLACEMETHOD CLinuxRendererGL::AutoInterlaceMethod() + return VS_INTERLACEMETHOD_NONE; + + if(m_renderMethod & RENDER_VDPAU) +- { +-#ifdef HAVE_LIBVDPAU +- CVDPAU *vdpau = m_buffers[m_iYV12RenderBuffer].vdpau; +- if(vdpau) +- return vdpau->AutoInterlaceMethod(); +-#endif + return VS_INTERLACEMETHOD_NONE; +- } + + if(Supports(VS_INTERLACEMETHOD_RENDER_BOB)) + return VS_INTERLACEMETHOD_RENDER_BOB; +@@ -3421,11 +3567,12 @@ void CLinuxRendererGL::UnBindPbo(YUVBUFFER& buff) + } + + #ifdef HAVE_LIBVDPAU +-void CLinuxRendererGL::AddProcessor(CVDPAU* vdpau, int index) ++void CLinuxRendererGL::AddProcessor(VDPAU::CVdpauRenderPicture *vdpau, int index) + { + YUVBUFFER &buf = m_buffers[index]; ++ VDPAU::CVdpauRenderPicture *pic = vdpau->Acquire(); + SAFE_RELEASE(buf.vdpau); +- buf.vdpau = (CVDPAU*)vdpau->Acquire(); ++ buf.vdpau = pic; + } + #endif + +diff --git a/xbmc/cores/VideoRenderers/LinuxRendererGL.h b/xbmc/cores/VideoRenderers/LinuxRendererGL.h +index 9f55fcb..3218cd5 100644 +--- a/xbmc/cores/VideoRenderers/LinuxRendererGL.h ++++ b/xbmc/cores/VideoRenderers/LinuxRendererGL.h +@@ -38,15 +38,14 @@ + + class CRenderCapture; + +-class CVDPAU; + class CBaseTexture; + namespace Shaders { class BaseYUV2RGBShader; } + namespace Shaders { class BaseVideoFilterShader; } + namespace VAAPI { struct CHolder; } ++namespace VDPAU { class CVdpauRenderPicture; } + + #define NUM_BUFFERS 10 + +- + #undef ALIGN + #define ALIGN(value, alignment) (((value)+((alignment)-1))&~((alignment)-1)) + #define CLAMP(a, min, max) ((a) > (max) ? (max) : ( (a) < (min) ? (min) : a )) +@@ -144,7 +143,7 @@ class CLinuxRendererGL : public CBaseRenderer + virtual unsigned int GetProcessorSize() { return m_NumYV12Buffers; } + + #ifdef HAVE_LIBVDPAU +- virtual void AddProcessor(CVDPAU* vdpau, int index); ++ virtual void AddProcessor(VDPAU::CVdpauRenderPicture* vdpau, int index); + #endif + #ifdef HAVE_LIBVA + virtual void AddProcessor(VAAPI::CHolder& holder, int index); +@@ -195,6 +194,10 @@ class CLinuxRendererGL : public CBaseRenderer + void DeleteVDPAUTexture(int index); + bool CreateVDPAUTexture(int index); + ++ void UploadVDPAUTexture420(int index); ++ void DeleteVDPAUTexture420(int index); ++ bool CreateVDPAUTexture420(int index); ++ + void UploadVAAPITexture(int index); + void DeleteVAAPITexture(int index); + bool CreateVAAPITexture(int index); +@@ -221,6 +224,7 @@ class CLinuxRendererGL : public CBaseRenderer + void RenderSinglePass(int renderBuffer, int field); // single pass glsl renderer + void RenderSoftware(int renderBuffer, int field); // single pass s/w yuv2rgb renderer + void RenderVDPAU(int renderBuffer, int field); // render using vdpau hardware ++ void RenderVDPAUYV12(int renderBuffer, int field); // render using vdpau hardware + void RenderVAAPI(int renderBuffer, int field); // render using vdpau hardware + + struct +@@ -281,7 +285,7 @@ class CLinuxRendererGL : public CBaseRenderer + GLuint pbo[MAX_PLANES]; + + #ifdef HAVE_LIBVDPAU +- CVDPAU* vdpau; ++ VDPAU::CVdpauRenderPicture *vdpau; + #endif + #ifdef HAVE_LIBVA + VAAPI::CHolder& vaapi; +@@ -327,6 +331,7 @@ class CLinuxRendererGL : public CBaseRenderer + bool m_nonLinStretch; + bool m_nonLinStretchGui; + float m_pixelRatio; ++ bool m_skipRender; + }; + + +diff --git a/xbmc/cores/VideoRenderers/RenderFormats.h b/xbmc/cores/VideoRenderers/RenderFormats.h +index 09f8f5d..0262c60 100644 +--- a/xbmc/cores/VideoRenderers/RenderFormats.h ++++ b/xbmc/cores/VideoRenderers/RenderFormats.h +@@ -26,6 +26,7 @@ enum ERenderFormat { + RENDER_FMT_YUV420P10, + RENDER_FMT_YUV420P16, + RENDER_FMT_VDPAU, ++ RENDER_FMT_VDPAU_420, + RENDER_FMT_NV12, + RENDER_FMT_UYVY422, + RENDER_FMT_YUYV422, +diff --git a/xbmc/cores/VideoRenderers/RenderManager.cpp b/xbmc/cores/VideoRenderers/RenderManager.cpp +index f19797c..a521680 100644 +--- a/xbmc/cores/VideoRenderers/RenderManager.cpp ++++ b/xbmc/cores/VideoRenderers/RenderManager.cpp +@@ -250,8 +250,9 @@ bool CXBMCRenderManager::Configure(unsigned int width, unsigned int height, unsi + + // check if decoder supports buffering + m_bCodecSupportsBuffering = false; +-// if (format == RENDER_FMT_VDPAU) +-// m_bCodecSupportsBuffering = true; ++ if (format == RENDER_FMT_VDPAU || ++ format == RENDER_FMT_VDPAU_420) ++ m_bCodecSupportsBuffering = true; + + bool result = m_pRenderer->Configure(width, height, d_width, d_height, fps, flags, format, extended_format, orientation); + if(result) +@@ -856,7 +857,8 @@ int CXBMCRenderManager::AddVideoPicture(DVDVideoPicture& pic) + CDVDCodecUtils::CopyDXVA2Picture(&image, &pic); + } + #ifdef HAVE_LIBVDPAU +- else if(pic.format == RENDER_FMT_VDPAU) ++ else if(pic.format == RENDER_FMT_VDPAU ++ || pic.format == RENDER_FMT_VDPAU_420) + m_pRenderer->AddProcessor(pic.vdpau, index); + #endif + #ifdef HAVE_LIBOPENMAX +diff --git a/xbmc/cores/VideoRenderers/RenderManager.h b/xbmc/cores/VideoRenderers/RenderManager.h +index 9342586..6746957 100644 +--- a/xbmc/cores/VideoRenderers/RenderManager.h ++++ b/xbmc/cores/VideoRenderers/RenderManager.h +@@ -35,7 +35,7 @@ + + namespace DXVA { class CProcessor; } + namespace VAAPI { class CSurfaceHolder; } +-class CVDPAU; ++namespace VDPAU { class CVdpauRenderPicture; } + struct DVDVideoPicture; + + #define ERRORBUFFSIZE 30 +diff --git a/xbmc/cores/VideoRenderers/VideoShaders/YUV2RGBShader.cpp b/xbmc/cores/VideoRenderers/VideoShaders/YUV2RGBShader.cpp +index 58f26b0..50606eb 100644 +--- a/xbmc/cores/VideoRenderers/VideoShaders/YUV2RGBShader.cpp ++++ b/xbmc/cores/VideoRenderers/VideoShaders/YUV2RGBShader.cpp +@@ -201,6 +201,8 @@ static void CalculateYUVMatrixGL(GLfloat res[4][4] + m_defines += "#define XBMC_YUY2\n"; + else if (m_format == RENDER_FMT_UYVY422) + m_defines += "#define XBMC_UYVY\n"; ++ else if (RENDER_FMT_VDPAU_420) ++ m_defines += "#define XBMC_VDPAU_NV12\n"; + else + CLog::Log(LOGERROR, "GL: BaseYUV2RGBGLSLShader - unsupported format %d", m_format); + +diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodec.h b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodec.h +index 5001aac..98d8f89 100644 +--- a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodec.h ++++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodec.h +@@ -34,7 +34,7 @@ + + namespace DXVA { class CSurfaceContext; } + namespace VAAPI { struct CHolder; } +-class CVDPAU; ++namespace VDPAU { class CVdpauRenderPicture; } + class COpenMax; + class COpenMaxVideo; + struct OpenMaxVideoBuffer; +@@ -55,7 +55,7 @@ struct DVDVideoPicture + DXVA::CSurfaceContext* context; + }; + struct { +- CVDPAU* vdpau; ++ VDPAU::CVdpauRenderPicture* vdpau; + }; + struct { + VAAPI::CHolder* vaapi; +diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp +index dae3b8e..a6e42e5 100644 +--- a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp ++++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp +@@ -71,14 +71,14 @@ enum PixelFormat CDVDVideoCodecFFmpeg::GetFormat( struct AVCodecContext * avctx while(*cur != PIX_FMT_NONE) { #ifdef HAVE_LIBVDPAU @@ -1362,43 +2548,7 @@ diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg { ctx->SetHardware(vdp); return *cur; -@@ -100,13 +103,26 @@ - dec->Release(); - } - #endif -+#ifdef HAVE_LIBXVBA -+ if(*cur == PIX_FMT_XVBA_VLD && g_guiSettings.GetBool("videoplayer.usexvba")) -+ { -+ XVBA::CDecoder* dec = new XVBA::CDecoder(); -+ if(dec->Open(avctx, *cur, ctx->m_uSurfacesCount)) -+ { -+ ctx->SetHardware(dec); -+ return *cur; -+ } -+ else -+ dec->Release(); -+ } -+#endif - #ifdef HAVE_LIBVA - // mpeg4 vaapi decoding is disabled - if(*cur == PIX_FMT_VAAPI_VLD && g_guiSettings.GetBool("videoplayer.usevaapi") - && (avctx->codec_id != CODEC_ID_MPEG4 || g_advancedSettings.m_videoAllowMpeg4VAAPI)) - { - VAAPI::CDecoder* dec = new VAAPI::CDecoder(); -- if(dec->Open(avctx, *cur)) -+ if(dec->Open(avctx, *cur, ctx->m_uSurfacesCount)) - { - ctx->SetHardware(dec); - return *cur; -@@ -142,6 +158,7 @@ - m_iLastKeyframe = 0; - m_dts = DVD_NOPTS_VALUE; - m_started = false; -+ m_decoderPts = DVD_NOPTS_VALUE; - } - - CDVDVideoCodecFFmpeg::~CDVDVideoCodecFFmpeg() -@@ -204,14 +221,27 @@ +@@ -205,14 +205,27 @@ bool CDVDVideoCodecFFmpeg::Open(CDVDStreamInfo &hints, CDVDCodecOptions &options continue; CLog::Log(LOGNOTICE,"CDVDVideoCodecFFmpeg::Open() Creating VDPAU(%ix%i, %d)",hints.width, hints.height, hints.codec); @@ -1428,64 +2578,10 @@ diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg { m_pHardware = vdp; m_pCodecContext->codec_id = CODEC_ID_NONE; // ffmpeg will complain if this has been set -@@ -340,6 +370,14 @@ - { - if( m_pCodecContext ) - { -+ if (bDrop && m_pHardware && m_pHardware->CanSkipDeint()) -+ { -+ m_requestSkipDeint = true; -+ bDrop = false; -+ } -+ else -+ m_requestSkipDeint = false; -+ - // i don't know exactly how high this should be set - // couldn't find any good docs on it. think it varies - // from codec to codec on what it does -@@ -540,6 +578,7 @@ - void CDVDVideoCodecFFmpeg::Reset() - { - m_started = false; -+ m_decoderPts = DVD_NOPTS_VALUE; - m_iLastKeyframe = m_pCodecContext->has_b_frames; - m_dllAvCodec.avcodec_flush_buffers(m_pCodecContext); - -@@ -638,6 +677,22 @@ - else - pDvdVideoPicture->pts = DVD_NOPTS_VALUE; - -+ if (pDvdVideoPicture->pts != DVD_NOPTS_VALUE) -+ m_decoderPts = pDvdVideoPicture->pts; -+ else -+ m_decoderPts = m_dts; -+ -+ if (m_requestSkipDeint) -+ { -+ pDvdVideoPicture->iFlags |= DVP_FLAG_DROPDEINT; -+ m_skippedDeint = 1; -+ } -+ else -+ m_skippedDeint = 0; -+ -+ m_requestSkipDeint = false; -+ pDvdVideoPicture->iFlags |= m_codecControlFlags; -+ - if(!m_started) - pDvdVideoPicture->iFlags |= DVP_FLAG_DROPPED; - -@@ -860,3 +915,8 @@ - else - return 0; - } -+ -+void CDVDVideoCodecFFmpeg::SetCodecControl(int flags) -+{ -+ m_codecControlFlags = flags; -+} -diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.h xbmc-f13566b.patch/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.h ---- xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.h 2012-10-08 09:19:29.000000000 +0200 -+++ xbmc-f13566b.patch/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.h 2012-10-08 17:13:46.920519197 +0200 +diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.h b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.h +index 52e1113..bf4367c 100644 +--- a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.h ++++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.h @@ -28,7 +28,6 @@ #include "DllSwScale.h" #include "DllAvFilter.h" @@ -1494,166 +2590,11 @@ diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg class CCriticalSection; class CDVDVideoCodecFFmpeg : public CDVDVideoCodec -@@ -44,6 +43,7 @@ - virtual bool GetPicture(AVCodecContext* avctx, AVFrame* frame, DVDVideoPicture* picture) = 0; - virtual int Check (AVCodecContext* avctx) = 0; - virtual void Reset () {} -+ virtual bool CanSkipDeint() {return false; } - virtual const std::string Name() = 0; - virtual CCriticalSection* Section() { return NULL; } - }; -@@ -60,6 +60,8 @@ - virtual unsigned int SetFilters(unsigned int filters); - virtual const char* GetName() { return m_name.c_str(); }; // m_name is never changed after open - virtual unsigned GetConvergeCount(); -+ virtual bool GetPts(double &pts, int &skippedDeint, int &interlaced) {pts=m_decoderPts; skippedDeint=m_skippedDeint; if (m_pFrame) interlaced = m_pFrame->interlaced_frame; return true;} -+ virtual void SetCodecControl(int flags); - - bool IsHardwareAllowed() { return !m_bSoftware; } - IHardwareDecoder * GetHardware() { return m_pHardware; }; -@@ -119,4 +121,8 @@ - double m_dts; - bool m_started; - std::vector m_formats; -+ double m_decoderPts, m_decoderInterval; -+ int m_skippedDeint; -+ bool m_requestSkipDeint; -+ int m_codecControlFlags; - }; -diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodec.h xbmc-f13566b.patch/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodec.h ---- xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodec.h 2012-10-08 09:19:29.000000000 +0200 -+++ xbmc-f13566b.patch/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodec.h 2012-10-08 17:13:46.964520075 +0200 -@@ -34,7 +34,8 @@ - - namespace DXVA { class CSurfaceContext; } - namespace VAAPI { struct CHolder; } --class CVDPAU; -+namespace VDPAU { class CVdpauRenderPicture; } -+namespace XVBA { class CXvbaRenderPicture; } - class COpenMax; - class COpenMaxVideo; - struct OpenMaxVideoBuffer; -@@ -55,11 +56,14 @@ - DXVA::CSurfaceContext* context; - }; - struct { -- CVDPAU* vdpau; -+ VDPAU::CVdpauRenderPicture* vdpau; - }; - struct { - VAAPI::CHolder* vaapi; - }; -+ struct { -+ XVBA::CXvbaRenderPicture* xvba; -+ }; - - struct { - COpenMax *openMax; -@@ -110,6 +114,10 @@ - #define DVP_FLAG_NOSKIP 0x00000010 // indicate this picture should never be dropped - #define DVP_FLAG_DROPPED 0x00000020 // indicate that this picture has been dropped in decoder stage, will have no data - -+#define DVP_FLAG_DROPDEINT 0x00000040 // indicate that this picture was requested to have been dropped in deint stage -+#define DVP_FLAG_NO_POSTPROC 0x00000100 -+#define DVP_FLAG_DRAIN 0x00000200 -+ - // DVP_FLAG 0x00000100 - 0x00000f00 is in use by libmpeg2! - - #define DVP_QSCALE_UNKNOWN 0 -@@ -127,6 +135,9 @@ - #define VC_PICTURE 0x00000004 // the decoder got a picture, call Decode(NULL, 0) again to parse the rest of the data - #define VC_USERDATA 0x00000008 // the decoder found some userdata, call Decode(NULL, 0) again to parse the rest of the data - #define VC_FLUSHED 0x00000010 // the decoder lost it's state, we need to restart decoding again -+#define VC_DROPPED 0x00000020 // needed to identify if a picture was dropped -+#define VC_HURRY 0x00000040 -+ - class CDVDVideoCodec - { - public: -@@ -237,4 +248,11 @@ - { - return 0; - } -+ -+ virtual bool GetPts(double &pts, int &skippedDeint, int &interlaced) -+ { -+ return false; -+ } -+ -+ virtual void SetCodecControl(int flags) {} - }; -diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/Makefile.in xbmc-f13566b.patch/xbmc/cores/dvdplayer/DVDCodecs/Video/Makefile.in ---- xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/Makefile.in 2012-10-08 09:19:29.000000000 +0200 -+++ xbmc-f13566b.patch/xbmc/cores/dvdplayer/DVDCodecs/Video/Makefile.in 2012-10-08 17:13:46.966520115 +0200 -@@ -14,6 +14,10 @@ - SRCS += CrystalHD.cpp - SRCS += DVDVideoCodecCrystalHD.cpp - endif -+ifeq (@USE_XVBA@,1) -+SRCS+= XVBA.cpp \ -+ -+endif - ifeq (@USE_VDA@,1) - SRCS += DVDVideoCodecVDA.cpp - endif -diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI.cpp xbmc-f13566b.patch/xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI.cpp ---- xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI.cpp 2012-10-08 09:19:29.000000000 +0200 -+++ xbmc-f13566b.patch/xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI.cpp 2012-10-08 17:13:47.023521252 +0200 -@@ -261,6 +261,15 @@ - - bool CDecoder::Open(AVCodecContext *avctx, enum PixelFormat fmt, unsigned int surfaces) - { -+#ifdef HAVE_LIBXVBA -+ std::string Vendor = g_Windowing.GetRenderVendor(); -+ std::transform(Vendor.begin(), Vendor.end(), Vendor.begin(), ::tolower); -+ if (Vendor.compare(0, 3, "ati") == 0) -+ { -+ return false; -+ } -+#endif -+ - VAEntrypoint entrypoint = VAEntrypointVLD; - VAProfile profile; - -@@ -357,6 +366,7 @@ - CHECK(vaCreateConfig(m_display->get(), profile, entrypoint, &attrib, 1, &m_hwaccel->config_id)) - m_config = m_hwaccel->config_id; - -+ m_renderbuffers_count = surfaces; - if (!EnsureContext(avctx)) - return false; - -@@ -388,7 +398,7 @@ - else - m_refs = 2; - } -- return EnsureSurfaces(avctx, m_refs + 3); -+ return EnsureSurfaces(avctx, m_refs + m_renderbuffers_count + 1); - } - - bool CDecoder::EnsureSurfaces(AVCodecContext *avctx, unsigned n_surfaces_count) -diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI.h xbmc-f13566b.patch/xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI.h ---- xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI.h 2012-10-08 09:19:29.000000000 +0200 -+++ xbmc-f13566b.patch/xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI.h 2012-10-08 17:13:46.934519476 +0200 -@@ -122,6 +122,7 @@ - static const unsigned m_surfaces_max = 32; - unsigned m_surfaces_count; - VASurfaceID m_surfaces[m_surfaces_max]; -+ unsigned m_renderbuffers_count; - - int m_refs; - std::list m_surfaces_used; -diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp xbmc-f13566b.patch/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp ---- xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp 2012-10-08 09:19:29.000000000 +0200 -+++ xbmc-f13566b.patch/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp 2012-10-08 17:13:47.009520973 +0200 -@@ -1,5 +1,6 @@ - /* - * Copyright (C) 2005-2012 Team XBMC -+ * Copyright (C) 2005-2011 Team XBMC - * http://www.xbmc.org - * - * This Program is free software; you can redistribute it and/or modify -@@ -32,11 +33,16 @@ +diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp +index f70a4f9..235f565 100644 +--- a/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp ++++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp +@@ -32,11 +32,16 @@ #include "settings/AdvancedSettings.h" #include "Application.h" #include "utils/MathUtils.h" @@ -1671,7 +2612,7 @@ diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp xbmc-f135 {"MPEG1", VDP_DECODER_PROFILE_MPEG1}, {"MPEG2_SIMPLE", VDP_DECODER_PROFILE_MPEG2_SIMPLE}, {"MPEG2_MAIN", VDP_DECODER_PROFILE_MPEG2_MAIN}, -@@ -50,14 +56,16 @@ +@@ -50,14 +55,16 @@ {"MPEG4_PART2_ASP", VDP_DECODER_PROFILE_MPEG4_PART2_ASP}, #endif }; @@ -1695,7 +2636,7 @@ diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp xbmc-f135 static struct SInterlaceMapping { -@@ -68,88 +76,30 @@ +@@ -68,88 +75,30 @@ , {VS_INTERLACEMETHOD_VDPAU_TEMPORAL_HALF , VDP_VIDEO_MIXER_FEATURE_DEINTERLACE_TEMPORAL} , {VS_INTERLACEMETHOD_VDPAU_TEMPORAL_SPATIAL , VDP_VIDEO_MIXER_FEATURE_DEINTERLACE_TEMPORAL_SPATIAL} , {VS_INTERLACEMETHOD_VDPAU_TEMPORAL_SPATIAL_HALF, VDP_VIDEO_MIXER_FEATURE_DEINTERLACE_TEMPORAL_SPATIAL} @@ -1709,9 +2650,14 @@ diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp xbmc-f135 //so we just keep a static handle to libvdpau around -void* CVDPAU::dl_handle; +void* CDecoder::dl_handle; ++ ++//----------------------------------------------------------------------------- ++// CVDPAU ++//----------------------------------------------------------------------------- -CVDPAU::CVDPAU() --{ ++CDecoder::CDecoder() : m_vdpauOutput(&m_inMsgEvent) + { - glXBindTexImageEXT = NULL; - glXReleaseTexImageEXT = NULL; - vdp_device = VDP_INVALID_HANDLE; @@ -1721,9 +2667,9 @@ diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp xbmc-f135 - m_DisplayState = VDPAU_OPEN; - m_mixerfield = VDP_VIDEO_MIXER_PICTURE_STRUCTURE_FRAME; - m_mixerstep = 0; -+//----------------------------------------------------------------------------- -+// CVDPAU -+//----------------------------------------------------------------------------- ++ m_vdpauConfig.vdpDevice = VDP_INVALID_HANDLE; ++ m_vdpauConfig.videoSurfaces = &m_videoSurfaces; ++ m_vdpauConfig.videoSurfaceSec = &m_videoSurfaceSec; - m_glPixmap = 0; - m_Pixmap = 0; @@ -1731,11 +2677,9 @@ diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp xbmc-f135 - glXBindTexImageEXT = (PFNGLXBINDTEXIMAGEEXTPROC)glXGetProcAddress((GLubyte *) "glXBindTexImageEXT"); - if (!glXReleaseTexImageEXT) - glXReleaseTexImageEXT = (PFNGLXRELEASETEXIMAGEEXTPROC)glXGetProcAddress((GLubyte *) "glXReleaseTexImageEXT"); -+CDecoder::CDecoder() : m_vdpauOutput(&m_inMsgEvent) -+{ -+ m_vdpauConfig.vdpDevice = VDP_INVALID_HANDLE; -+ m_vdpauConfig.videoSurfaces = &m_videoSurfaces; -+ m_vdpauConfig.videoSurfaceSec = &m_videoSurfaceSec; ++ m_vdpauConfigured = false; ++ m_DisplayState = VDPAU_OPEN; ++} - totalAvailableOutputSurfaces = 0; - outputSurface = presentSurface = VDP_INVALID_HANDLE; @@ -1788,16 +2732,14 @@ diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp xbmc-f135 - dl_vdp_device_create_x11 = NULL; - dl_vdp_get_proc_address = NULL; - dl_vdp_preemption_callback_register = NULL; -+ m_vdpauConfigured = false; -+ m_DisplayState = VDPAU_OPEN; - } - +-} +- -bool CVDPAU::Open(AVCodecContext* avctx, const enum PixelFormat, unsigned int surfaces) +bool CDecoder::Open(AVCodecContext* avctx, const enum PixelFormat, unsigned int surfaces) { if(avctx->coded_width == 0 || avctx->coded_height == 0) -@@ -157,6 +107,8 @@ +@@ -157,6 +106,8 @@ bool CVDPAU::Open(AVCodecContext* avctx, const enum PixelFormat, unsigned int su CLog::Log(LOGWARNING,"(VDPAU) no width/height available, can't init"); return false; } @@ -1806,7 +2748,7 @@ diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp xbmc-f135 if (!dl_handle) { -@@ -168,8 +120,6 @@ +@@ -168,8 +119,6 @@ bool CVDPAU::Open(AVCodecContext* avctx, const enum PixelFormat, unsigned int su error = "dlerror() returned NULL"; CLog::Log(LOGNOTICE,"(VDPAU) Unable to get handle to libvdpau: %s", error); @@ -1815,7 +2757,7 @@ diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp xbmc-f135 return false; } } -@@ -178,8 +128,9 @@ +@@ -178,8 +127,9 @@ bool CVDPAU::Open(AVCodecContext* avctx, const enum PixelFormat, unsigned int su return false; InitVDPAUProcs(); @@ -1826,7 +2768,7 @@ diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp xbmc-f135 { SpewHardwareAvailable(); -@@ -197,25 +148,23 @@ +@@ -197,25 +147,23 @@ bool CVDPAU::Open(AVCodecContext* avctx, const enum PixelFormat, unsigned int su /* attempt to create a decoder with this width/height, some sizes are not supported by hw */ VdpStatus vdp_st; @@ -1858,7 +2800,7 @@ diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp xbmc-f135 avctx->slice_flags=SLICE_FLAG_CODED_ORDER|SLICE_FLAG_ALLOW_FIELD; g_Windowing.Register(this); -@@ -224,17 +173,20 @@ +@@ -224,17 +172,20 @@ bool CVDPAU::Open(AVCodecContext* avctx, const enum PixelFormat, unsigned int su return false; } @@ -1881,7 +2823,7 @@ diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp xbmc-f135 while (!m_videoSurfaces.empty()) { -@@ -250,188 +202,111 @@ +@@ -250,188 +201,111 @@ void CVDPAU::Close() m_dllAvUtil.Unload(); } @@ -1915,22 +2857,20 @@ diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp xbmc-f135 - GLXFBConfig *fbConfigs; - fbConfigs = glXChooseFBConfig(m_Display, DefaultScreen(m_Display), doubleVisAttributes, &num); - if (fbConfigs==NULL) -- { ++ // check if we should do some pre-cleanup here ++ // a second decoder might need resources ++ if (m_vdpauConfigured == true) + { - CLog::Log(LOGERROR, "GLX Error: MakePixmap: No compatible framebuffers found"); - return false; - } - CLog::Log(LOGDEBUG, "Found %d fbconfigs.", num); - fbConfigIndex = 0; - CLog::Log(LOGDEBUG, "Using fbconfig index %d.", fbConfigIndex); -- -- m_glPixmap = glXCreatePixmap(m_Display, fbConfigs[fbConfigIndex], m_Pixmap, pixmapAttribs); -+ // check if we should do some pre-cleanup here -+ // a second decoder might need resources -+ if (m_vdpauConfigured == true) -+ { + CSingleLock lock(m_DecoderSection); + CLog::Log(LOGNOTICE,"CVDPAU::Release pre-cleanup"); -+ + +- m_glPixmap = glXCreatePixmap(m_Display, fbConfigs[fbConfigIndex], m_Pixmap, pixmapAttribs); + Message *reply; + if (m_vdpauOutput.m_controlPort.SendOutMessageSync(COutputControlProtocol::PRECLEANUP, + &reply, @@ -2129,7 +3069,7 @@ diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp xbmc-f135 state = m_DisplayState; } -@@ -445,16 +320,13 @@ +@@ -445,16 +319,13 @@ int CVDPAU::Check(AVCodecContext* avctx) } else { @@ -2148,7 +3088,7 @@ diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp xbmc-f135 FiniVDPAUOutput(); FiniVDPAUProcs(); -@@ -469,7 +341,7 @@ +@@ -469,7 +340,7 @@ int CVDPAU::Check(AVCodecContext* avctx) return 0; } @@ -2157,7 +3097,7 @@ diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp xbmc-f135 { if ((format >= PIX_FMT_VDPAU_H264) && (format <= PIX_FMT_VDPAU_VC1)) return true; #if (defined PIX_FMT_VDPAU_MPEG4_IN_AVUTIL) -@@ -478,91 +350,28 @@ +@@ -478,91 +349,28 @@ bool CVDPAU::IsVDPAUFormat(PixelFormat format) else return false; } @@ -2260,7 +3200,7 @@ diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp xbmc-f135 for(SInterlaceMapping* p = g_interlace_mapping; p->method != VS_INTERLACEMETHOD_NONE; p++) { if(p->method == method) -@@ -571,162 +380,12 @@ +@@ -571,162 +379,12 @@ bool CVDPAU::Supports(EINTERLACEMETHOD method) return false; } @@ -2426,7 +3366,7 @@ diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp xbmc-f135 { char* error; -@@ -736,151 +395,115 @@ +@@ -736,151 +394,115 @@ void CVDPAU::InitVDPAUProcs() if (error) { CLog::Log(LOGERROR,"(VDPAU) - %s in %s",error,__FUNCTION__); @@ -2590,7 +3530,15 @@ diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp xbmc-f135 -void CVDPAU::InitCSCMatrix(int Height) +void CDecoder::FiniVDPAUOutput() { -- VdpStatus vdp_st; ++ if (m_vdpauConfig.vdpDevice == VDP_INVALID_HANDLE || !m_vdpauConfigured) return; ++ ++ CLog::Log(LOGNOTICE, " (VDPAU) %s", __FUNCTION__); ++ ++ // uninit output ++ m_vdpauOutput.Dispose(); ++ m_vdpauConfigured = false; ++ + VdpStatus vdp_st; - m_Procamp.struct_version = VDP_PROCAMP_VERSION; - m_Procamp.brightness = 0.0; - m_Procamp.contrast = 1.0; @@ -2605,18 +3553,13 @@ diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp xbmc-f135 -void CVDPAU::FiniVDPAUOutput() -{ - FiniOutputMethod(); -- + - if (vdp_device == VDP_INVALID_HANDLE || !vdpauConfigured) return; -+ if (m_vdpauConfig.vdpDevice == VDP_INVALID_HANDLE || !m_vdpauConfigured) return; - - CLog::Log(LOGNOTICE, " (VDPAU) %s", __FUNCTION__); - -+ // uninit output -+ m_vdpauOutput.Dispose(); -+ m_vdpauConfigured = false; -+ - VdpStatus vdp_st; - +- +- CLog::Log(LOGNOTICE, " (VDPAU) %s", __FUNCTION__); +- +- VdpStatus vdp_st; +- - vdp_st = vdp_decoder_destroy(decoder); + vdp_st = m_vdpauConfig.vdpProcs.vdp_decoder_destroy(m_vdpauConfig.vdpDecoder); if (CheckStatus(vdp_st, __LINE__)) @@ -2638,7 +3581,7 @@ diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp xbmc-f135 render->surface = VDP_INVALID_HANDLE; } if (CheckStatus(vdp_st, __LINE__)) -@@ -888,8 +511,7 @@ +@@ -888,8 +510,7 @@ void CVDPAU::FiniVDPAUOutput() } } @@ -2648,7 +3591,7 @@ diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp xbmc-f135 , VdpDecoderProfile &vdp_decoder_profile , VdpChromaType &vdp_chroma_type) { -@@ -916,9 +538,9 @@ +@@ -916,9 +537,9 @@ void CVDPAU::ReadFormatOf( PixelFormat fmt vdp_chroma_type = VDP_CHROMA_TYPE_420; break; #if (defined PIX_FMT_VDPAU_MPEG4_IN_AVUTIL) && \ @@ -2660,7 +3603,7 @@ diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp xbmc-f135 vdp_chroma_type = VDP_CHROMA_TYPE_420; break; #endif -@@ -929,170 +551,78 @@ +@@ -929,170 +550,78 @@ void CVDPAU::ReadFormatOf( PixelFormat fmt } } @@ -2676,12 +3619,11 @@ diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp xbmc-f135 - vid_height = avctx->height; - surface_width = avctx->coded_width; - surface_height = avctx->coded_height; -- + - past[1] = past[0] = current = future = NULL; - CLog::Log(LOGNOTICE, " (VDPAU) screenWidth:%i vidWidth:%i surfaceWidth:%i",OutWidth,vid_width,surface_width); - CLog::Log(LOGNOTICE, " (VDPAU) screenHeight:%i vidHeight:%i surfaceHeight:%i",OutHeight,vid_height,surface_height); - ReadFormatOf(avctx->pix_fmt, vdp_decoder_profile, vdp_chroma_type); -+ + m_vdpauConfig.vidWidth = avctx->width; + m_vdpauConfig.vidHeight = avctx->height; + m_vdpauConfig.surfaceWidth = avctx->coded_width; @@ -2737,6 +3679,12 @@ diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp xbmc-f135 - vdp_st = vdp_presentation_queue_target_create_x11(vdp_device, - m_Pixmap, //x_window, - &vdp_flip_target); +- if (CheckStatus(vdp_st, __LINE__)) +- return false; +- +- vdp_st = vdp_presentation_queue_create(vdp_device, +- vdp_flip_target, +- &vdp_flip_queue); + m_vdpauConfig.surfaceWidth, + m_vdpauConfig.surfaceHeight, + m_vdpauConfig.maxReferences, @@ -2744,12 +3692,6 @@ diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp xbmc-f135 if (CheckStatus(vdp_st, __LINE__)) return false; -- vdp_st = vdp_presentation_queue_create(vdp_device, -- vdp_flip_target, -- &vdp_flip_queue); -- if (CheckStatus(vdp_st, __LINE__)) -- return false; -- - totalAvailableOutputSurfaces = 0; - - int tmpMaxOutputSurfaces = NUM_OUTPUT_SURFACES; @@ -2880,7 +3822,7 @@ diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp xbmc-f135 { VdpStatus rv; CLog::Log(LOGNOTICE,"VDPAU Decoder capabilities:"); -@@ -1102,7 +632,7 @@ +@@ -1102,7 +631,7 @@ void CVDPAU::SpewHardwareAvailable() //Copyright (c) 2008 Wladimir J. van der L { VdpBool is_supported = false; uint32_t max_level, max_macroblocks, max_width, max_height; @@ -2889,7 +3831,7 @@ diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp xbmc-f135 &is_supported, &max_level, &max_macroblocks, &max_width, &max_height); if(rv == VDP_STATUS_OK && is_supported) { -@@ -1111,13 +641,13 @@ +@@ -1111,13 +640,13 @@ void CVDPAU::SpewHardwareAvailable() //Copyright (c) 2008 Wladimir J. van der L } } CLog::Log(LOGNOTICE,"------------------------------------"); @@ -2906,7 +3848,7 @@ diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp xbmc-f135 } \ } while(false) -@@ -1141,7 +671,7 @@ +@@ -1141,7 +670,7 @@ void CVDPAU::SpewHardwareAvailable() //Copyright (c) 2008 Wladimir J. van der L } @@ -2915,7 +3857,7 @@ diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp xbmc-f135 { // find render state in queue bool found(false); -@@ -1168,34 +698,33 @@ +@@ -1168,34 +697,33 @@ bool CVDPAU::IsSurfaceValid(vdpau_render_state *render) return true; } @@ -2965,7 +3907,7 @@ diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp xbmc-f135 } } -@@ -1204,21 +733,22 @@ +@@ -1204,21 +732,22 @@ int CVDPAU::FFGetBuffer(AVCodecContext *avctx, AVFrame *pic) { // create a new surface VdpDecoderProfile profile; @@ -2991,7 +3933,7 @@ diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp xbmc-f135 avctx->coded_width, avctx->coded_height, &render->surface); -@@ -1239,18 +769,6 @@ +@@ -1239,18 +768,6 @@ int CVDPAU::FFGetBuffer(AVCodecContext *avctx, AVFrame *pic) pic->linesize[0] = pic->linesize[1] = pic->linesize[2] = 0; @@ -3010,7 +3952,7 @@ diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp xbmc-f135 pic->type= FF_BUFFER_TYPE_USER; render->state |= FF_VDPAU_STATE_USED_FOR_REFERENCE; -@@ -1258,15 +776,16 @@ +@@ -1258,15 +775,16 @@ int CVDPAU::FFGetBuffer(AVCodecContext *avctx, AVFrame *pic) return 0; } @@ -3030,7 +3972,7 @@ diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp xbmc-f135 render=(vdpau_render_state*)pic->data[0]; if(!render) -@@ -1275,6 +794,8 @@ +@@ -1275,6 +793,8 @@ void CVDPAU::FFReleaseBuffer(AVCodecContext *avctx, AVFrame *pic) return; } @@ -3039,7 +3981,7 @@ diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp xbmc-f135 for(i=0; i<4; i++) pic->data[i]= NULL; -@@ -1289,21 +810,18 @@ +@@ -1289,21 +809,18 @@ void CVDPAU::FFReleaseBuffer(AVCodecContext *avctx, AVFrame *pic) } @@ -3066,7 +4008,7 @@ diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp xbmc-f135 if(src->linesize[0] || src->linesize[1] || src->linesize[2] || offset[0] || offset[1] || offset[2]) -@@ -1333,59 +851,41 @@ +@@ -1333,59 +850,41 @@ void CVDPAU::FFDrawSlice(struct AVCodecContext *s, if(s->pix_fmt == PIX_FMT_VDPAU_H264) max_refs = render->info.h264.num_ref_frames; @@ -3103,7 +4045,7 @@ diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp xbmc-f135 - VdpStatus vdp_st; - VdpTime time; -+int CDecoder::Decode(AVCodecContext *avctx, AVFrame *pFrame, bool bSoftDrain, bool bHardDrain) ++int CDecoder::Decode(AVCodecContext *avctx, AVFrame *pFrame) +{ int result = Check(avctx); if (result) @@ -3141,7 +4083,7 @@ diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp xbmc-f135 if(pFrame) { // we have a new frame from decoder -@@ -1393,7 +893,10 @@ +@@ -1393,7 +892,10 @@ int CVDPAU::Decode(AVCodecContext *avctx, AVFrame *pFrame) if(!render) // old style ffmpeg gave data on plane 0 render = (vdpau_render_state*)pFrame->data[0]; if(!render) @@ -3152,7 +4094,7 @@ diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp xbmc-f135 // ffmpeg vc-1 decoder does not flush, make sure the data buffer is still valid if (!IsSurfaceValid(render)) -@@ -1402,258 +905,166 @@ +@@ -1402,258 +904,166 @@ int CVDPAU::Decode(AVCodecContext *avctx, AVFrame *pFrame) return VC_BUFFER; } @@ -3165,21 +4107,6 @@ diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp xbmc-f135 - past[1] = current; - current = future; - future = render; -- -- DVDVideoPicture DVDPic; -- memset(&DVDPic, 0, sizeof(DVDVideoPicture)); -- ((CDVDVideoCodecFFmpeg*)avctx->opaque)->GetPictureCommon(&DVDPic); -- m_DVDVideoPics.push(DVDPic); -- -- int pics = m_DVDVideoPics.size(); -- if (pics < 2) -- return VC_BUFFER; -- else if (pics > 2) -- { -- // this should not normally happen -- CLog::Log(LOGERROR, "CVDPAU::Decode - invalid number of pictures in queue"); -- while (pics-- != 2) -- m_DVDVideoPics.pop(); + // send frame to output for processing + CVdpauDecodedPicture pic; + memset(&pic.DVDPic, 0, sizeof(pic.DVDPic)); @@ -3187,17 +4114,29 @@ diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp xbmc-f135 + pic.render = render; + m_bufferStats.IncDecoded(); + m_vdpauOutput.m_dataPort.SendOutMessage(COutputDataProtocol::NEWFRAME, &pic, sizeof(pic)); -+ + +- DVDVideoPicture DVDPic; +- memset(&DVDPic, 0, sizeof(DVDVideoPicture)); +- ((CDVDVideoCodecFFmpeg*)avctx->opaque)->GetPictureCommon(&DVDPic); +- m_DVDVideoPics.push(DVDPic); + m_codecControl = pic.DVDPic.iFlags & (DVP_FLAG_DRAIN | DVP_FLAG_NO_POSTPROC); + } -+ + +- int pics = m_DVDVideoPics.size(); +- if (pics < 2) +- return VC_BUFFER; +- else if (pics > 2) + int retval = 0; + uint16_t decoded, processed, render; + Message *msg; + while (m_vdpauOutput.m_controlPort.ReceiveInMessage(&msg)) + { + if (msg->signal == COutputControlProtocol::ERROR) -+ { + { +- // this should not normally happen +- CLog::Log(LOGERROR, "CVDPAU::Decode - invalid number of pictures in queue"); +- while (pics-- != 2) +- m_DVDVideoPics.pop(); + m_DisplayState = VDPAU_ERROR; + retval |= VC_ERROR; } @@ -3316,16 +4255,19 @@ diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp xbmc-f135 - VdpVideoSurface futu_surfaces[1] = { VDP_INVALID_HANDLE }; - - if(m_mixerfield == VDP_VIDEO_MIXER_PICTURE_STRUCTURE_FRAME) -- { ++ if (!retval) + { - if (past[0]) - past_surfaces[1] = past[0]->surface; - if (past[1]) - past_surfaces[0] = past[1]->surface; - futu_surfaces[0] = future->surface; -- } ++ CLog::Log(LOGERROR, "VDPAU::%s - timed out waiting for output message", __FUNCTION__); ++ m_DisplayState = VDPAU_ERROR; ++ retval |= VC_ERROR; + } - else -+ if (!retval) - { +- { - if(m_mixerstep == 1) - { // first field - if (past[1]) @@ -3342,11 +4284,8 @@ diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp xbmc-f135 - past_surfaces[0] = current->surface; - futu_surfaces[0] = future->surface; - } -+ CLog::Log(LOGERROR, "VDPAU::%s - timed out waiting for output message", __FUNCTION__); -+ m_DisplayState = VDPAU_ERROR; -+ retval |= VC_ERROR; - } - +- } +- - vdp_st = vdp_presentation_queue_block_until_surface_idle(vdp_flip_queue,outputSurface,&time); - - VdpRect sourceRect = {0,0,vid_width, vid_height}; @@ -3367,7 +4306,7 @@ diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp xbmc-f135 - 0, - NULL); - CheckStatus(vdp_st, __LINE__); -- + - surfaceNum++; - if (surfaceNum >= totalAvailableOutputSurfaces) surfaceNum = 0; + return retval; @@ -3430,14 +4369,14 @@ diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp xbmc-f135 - if (m_DisplayState != VDPAU_OPEN) - return false; - } -+ CSingleLock lock(m_DecoderSection); - +- - *picture = m_DVDVideoPics.front(); - // if this is the first field of an interlaced frame, we'll need - // this same picture for the second field later - if (m_mixerstep != 1) - m_DVDVideoPics.pop(); -- ++ CSingleLock lock(m_DecoderSection); + - picture->format = RENDER_FMT_VDPAU; - picture->iFlags &= DVP_FLAG_DROPPED; - picture->iWidth = OutWidth; @@ -3447,14 +4386,13 @@ diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp xbmc-f135 + return; - if(m_mixerstep) -- { -- picture->iRepeatPicture = -0.5; -- if(m_mixerstep > 1) + Message *reply; + if (m_vdpauOutput.m_controlPort.SendOutMessageSync(COutputControlProtocol::FLUSH, + &reply, + 2000)) -+ { + { +- picture->iRepeatPicture = -0.5; +- if(m_mixerstep > 1) + bool success = reply->signal == COutputControlProtocol::ACC ? true : false; + reply->Release(); + if (!success) @@ -3525,7 +4463,7 @@ diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp xbmc-f135 if(m_DisplayState == VDPAU_OPEN) { -@@ -1671,4 +1082,2422 @@ +@@ -1671,4 +1081,2422 @@ bool CVDPAU::CheckStatus(VdpStatus vdp_st, int line) return false; } @@ -4218,10 +5156,10 @@ diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp xbmc-f135 + if (method == VS_INTERLACEMETHOD_AUTO) + { + int deint = -1; -+ if (m_config.outHeight >= 720) -+ deint = g_advancedSettings.m_videoVDPAUdeintHD; -+ else -+ deint = g_advancedSettings.m_videoVDPAUdeintSD; ++// if (m_config.outHeight >= 720) ++// deint = g_advancedSettings.m_videoVDPAUdeintHD; ++// else ++// deint = g_advancedSettings.m_videoVDPAUdeintSD; + + if (deint != -1) + { @@ -5948,15 +6886,17 @@ diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp xbmc-f135 +} + #endif -diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.h xbmc-f13566b.patch/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.h ---- xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.h 2012-10-08 09:19:29.000000000 +0200 -+++ xbmc-f13566b.patch/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.h 2012-10-08 17:13:46.935519496 +0200 -@@ -1,4 +1,3 @@ +diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.h b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.h +index 2f53edf..4d1559c 100644 +--- a/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.h ++++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.h +@@ -1,5 +1,3 @@ - - #pragma once +-#pragma once /* * Copyright (C) 2005-2012 Team XBMC -@@ -20,9 +19,30 @@ + * http://www.xbmc.org +@@ -20,9 +18,32 @@ * */ @@ -5977,6 +6917,8 @@ diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.h xbmc-f13566 + * - move to an actor based design in order to reduce the number + * of locks needed. + */ ++ ++#pragma once + #include "system_gl.h" @@ -5988,22 +6930,19 @@ diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.h xbmc-f13566 #include #include #define GLX_GLXEXT_PROTOTYPES -@@ -37,118 +57,31 @@ +@@ -37,118 +58,31 @@ #include "settings/VideoSettings.h" #include "guilib/DispResource.h" #include "threads/Event.h" -namespace Surface { class CSurface; } -+#include "threads/Thread.h" -+#include "utils/ActorProtocol.h" - +- -#define NUM_OUTPUT_SURFACES 4 -#define NUM_VIDEO_SURFACES_MPEG2 10 // (1 frame being decoded, 2 reference) -#define NUM_VIDEO_SURFACES_H264 32 // (1 frame being decoded, up to 16 references) -#define NUM_VIDEO_SURFACES_VC1 10 // (same as MPEG-2) -#define NUM_OUTPUT_SURFACES_FOR_FULLHD 2 -#define FULLHD_WIDTH 1920 -+using namespace Actor; - +- -class CVDPAU - : public CDVDVideoCodecFFmpeg::IHardwareDecoder - , public IDispResource @@ -6022,7 +6961,7 @@ diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.h xbmc-f13566 - uint32_t id; - uint32_t aux; /* optional extra parameter... */ - }; - +- - CVDPAU(); - virtual ~CVDPAU(); - @@ -6059,15 +6998,16 @@ diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.h xbmc-f13566 - void InitCSCMatrix(int Height); - bool CheckStatus(VdpStatus vdp_st, int line); - bool IsSurfaceValid(vdpau_render_state *render); -- ++#include "threads/Thread.h" ++#include "utils/ActorProtocol.h" + - void CheckFeatures(); - void SetColor(); - void SetNoiseReduction(); - void SetSharpness(); - void SetDeinterlacing(); - void SetHWUpscaling(); -+#define FULLHD_WIDTH 1920 -+#define MAX_PIC_Q_LENGTH 20 //for non-interop_yuv this controls the max length of the decoded pic to render completion Q ++using namespace Actor; - pictureAge picAge; - vdpau_render_state *past[2], *current, *future; @@ -6077,7 +7017,7 @@ diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.h xbmc-f13566 - int OutWidth, OutHeight; - bool upScale; - std::queue m_DVDVideoPics; -- + - static inline void ClearUsedForRender(vdpau_render_state **st) - { - if (*st) { @@ -6085,21 +7025,16 @@ diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.h xbmc-f13566 - *st = NULL; - } - } -+namespace VDPAU -+{ - +- - VdpProcamp m_Procamp; - VdpCSCMatrix m_CSCMatrix; - VdpDevice HasDevice() { return vdp_device != VDP_INVALID_HANDLE; }; - VdpChromaType vdp_chroma_type; -+/** -+ * VDPAU interface to driver -+ */ ++#define FULLHD_WIDTH 1920 ++#define MAX_PIC_Q_LENGTH 20 //for non-interop_yuv this controls the max length of the decoded pic to render completion Q -+struct VDPAU_procs ++namespace VDPAU +{ -+ VdpGetProcAddress * vdp_get_proc_address; -+ VdpDeviceDestroy * vdp_device_destroy; - // protected: - void InitVDPAUProcs(); @@ -6107,13 +7042,20 @@ diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.h xbmc-f13566 - void FiniVDPAUOutput(); - bool ConfigOutputMethod(AVCodecContext *avctx, AVFrame *pFrame); - bool FiniOutputMethod(); -- ++/** ++ * VDPAU interface to driver ++ */ + - VdpDevice vdp_device; - VdpGetProcAddress * vdp_get_proc_address; - VdpPresentationQueueTarget vdp_flip_target; - VdpPresentationQueue vdp_flip_queue; - VdpDeviceDestroy * vdp_device_destroy; -- ++struct VDPAU_procs ++{ ++ VdpGetProcAddress * vdp_get_proc_address; ++ VdpDeviceDestroy * vdp_device_destroy; + - VdpVideoSurfaceCreate * vdp_video_surface_create; - VdpVideoSurfaceDestroy * vdp_video_surface_destroy; - VdpVideoSurfacePutBitsYCbCr * vdp_video_surface_put_bits_y_cb_cr; @@ -6125,7 +7067,7 @@ diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.h xbmc-f13566 VdpOutputSurfacePutBitsYCbCr * vdp_output_surface_put_bits_y_cb_cr; VdpOutputSurfacePutBitsNative * vdp_output_surface_put_bits_native; -@@ -158,15 +91,15 @@ +@@ -158,15 +92,15 @@ class CVDPAU VdpOutputSurfaceRenderOutputSurface * vdp_output_surface_render_output_surface; VdpOutputSurfacePutBitsIndexed * vdp_output_surface_put_bits_indexed; @@ -6149,7 +7091,7 @@ diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.h xbmc-f13566 VdpPresentationQueueTargetDestroy * vdp_presentation_queue_target_destroy; VdpPresentationQueueCreate * vdp_presentation_queue_create; -@@ -179,64 +112,460 @@ +@@ -179,64 +113,459 @@ class CVDPAU VdpGetErrorString * vdp_get_error_string; @@ -6167,20 +7109,21 @@ diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.h xbmc-f13566 - VdpOutputSurface outputSurfaces[NUM_OUTPUT_SURFACES]; - VdpOutputSurface outputSurface; - VdpOutputSurface presentSurface; -- ++}; + - VdpDecoder decoder; - VdpVideoMixer videoMixer; - VdpRect outRect; - VdpRect outRectVid; -+}; ++//----------------------------------------------------------------------------- ++// VDPAU data structs ++//----------------------------------------------------------------------------- - static void* dl_handle; - VdpStatus (*dl_vdp_device_create_x11)(Display* display, int screen, VdpDevice* device, VdpGetProcAddress **get_proc_address); - VdpStatus (*dl_vdp_get_proc_address)(VdpDevice device, VdpFuncId function_id, void** function_pointer); - VdpStatus (*dl_vdp_preemption_callback_register)(VdpDevice device, VdpPreemptionCallback callback, void* context); -+//----------------------------------------------------------------------------- -+// VDPAU data structs -+//----------------------------------------------------------------------------- ++class CDecoder; - int surfaceNum; - int presentSurfaceNum; @@ -6191,8 +7134,6 @@ diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.h xbmc-f13566 - Display* m_Display; - bool vdpauConfigured; - uint32_t *m_BlackBar; -+class CDecoder; - +/** + * Buffer statistics used to control number of frames in queue + */ @@ -6231,7 +7172,7 @@ diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.h xbmc-f13566 + * The structure is sent to the internal classes CMixer and COutput + * for init. + */ -+ + +struct CVdpauConfig +{ + int surfaceWidth; @@ -6589,8 +7530,7 @@ diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.h xbmc-f13566 + virtual ~CDecoder(); + + virtual bool Open (AVCodecContext* avctx, const enum PixelFormat, unsigned int surfaces = 0); -+ virtual int Decode (AVCodecContext* avctx, AVFrame* frame) {return Decode(avctx, frame, false, false);}; -+ virtual int Decode (AVCodecContext* avctx, AVFrame* frame, bool bSoftDrain = false, bool bHardDrain = false); ++ virtual int Decode (AVCodecContext* avctx, AVFrame* frame); + virtual bool GetPicture(AVCodecContext* avctx, AVFrame* frame, DVDVideoPicture* picture); + virtual void Reset(); + virtual void Close(); @@ -6650,7 +7590,7 @@ diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.h xbmc-f13566 // OnLostDevice triggers transition from all states to LOST // internal errors trigger transition from OPEN to RESET -@@ -247,9 +576,24 @@ +@@ -247,9 +576,24 @@ class CVDPAU , VDPAU_LOST , VDPAU_ERROR } m_DisplayState; @@ -6679,9 +7619,6926 @@ diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.h xbmc-f13566 }; + +} -diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/XVBA.cpp xbmc-f13566b.patch/xbmc/cores/dvdplayer/DVDCodecs/Video/XVBA.cpp ---- xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/XVBA.cpp 1970-01-01 01:00:00.000000000 +0100 -+++ xbmc-f13566b.patch/xbmc/cores/dvdplayer/DVDCodecs/Video/XVBA.cpp 2012-10-08 17:13:47.125523289 +0200 +diff --git a/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp b/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp +index 10e2225..15a39fa 100644 +--- a/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp ++++ b/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp +@@ -1141,6 +1141,9 @@ int CDVDPlayerVideo::OutputPicture(const DVDVideoPicture* src, double pts) + case RENDER_FMT_VDPAU: + formatstr = "VDPAU"; + break; ++ case RENDER_FMT_VDPAU_420: ++ formatstr = "VDPAU_420"; ++ break; + case RENDER_FMT_DXVA: + formatstr = "DXVA"; + break; +diff --git a/xbmc/settings/AdvancedSettings.cpp b/xbmc/settings/AdvancedSettings.cpp +index 1d2202b..ad521a9 100644 +--- a/xbmc/settings/AdvancedSettings.cpp ++++ b/xbmc/settings/AdvancedSettings.cpp +@@ -98,7 +98,7 @@ void CAdvancedSettings::Initialize() + m_videoIgnoreSecondsAtStart = 3*60; + m_videoIgnorePercentAtEnd = 8.0f; + m_videoPlayCountMinimumPercent = 90.0f; +- m_videoVDPAUScaling = false; ++ m_videoVDPAUScaling = -1; + m_videoNonLinStretchRatio = 0.5f; + m_videoEnableHighQualityHwScalers = false; + m_videoAutoScaleMaxFps = 30.0f; +@@ -106,6 +106,8 @@ void CAdvancedSettings::Initialize() + m_videoAllowMpeg4VAAPI = false; + m_videoDisableBackgroundDeinterlace = false; + m_videoCaptureUseOcclusionQuery = -1; //-1 is auto detect ++ m_videoVDPAUtelecine = false; ++ m_videoVDPAUdeintSkipChromaHD = false; + m_DXVACheckCompatibility = false; + m_DXVACheckCompatibilityPresent = false; + m_DXVAForceProcessorRenderer = true; +@@ -489,7 +491,7 @@ void CAdvancedSettings::ParseSettingsFile(const CStdString &file) + XMLUtils::GetString(pElement,"cleandatetime", m_videoCleanDateTimeRegExp); + XMLUtils::GetString(pElement,"ppffmpegdeinterlacing",m_videoPPFFmpegDeint); + XMLUtils::GetString(pElement,"ppffmpegpostprocessing",m_videoPPFFmpegPostProc); +- XMLUtils::GetBoolean(pElement,"vdpauscaling",m_videoVDPAUScaling); ++ XMLUtils::GetInt(pElement,"vdpauscaling",m_videoVDPAUScaling); + XMLUtils::GetFloat(pElement, "nonlinearstretchratio", m_videoNonLinStretchRatio, 0.01f, 1.0f); + XMLUtils::GetBoolean(pElement,"enablehighqualityhwscalers", m_videoEnableHighQualityHwScalers); + XMLUtils::GetFloat(pElement,"autoscalemaxfps",m_videoAutoScaleMaxFps, 0.0f, 1000.0f); +@@ -497,6 +499,8 @@ void CAdvancedSettings::ParseSettingsFile(const CStdString &file) + XMLUtils::GetBoolean(pElement,"allowmpeg4vaapi",m_videoAllowMpeg4VAAPI); + XMLUtils::GetBoolean(pElement, "disablebackgrounddeinterlace", m_videoDisableBackgroundDeinterlace); + XMLUtils::GetInt(pElement, "useocclusionquery", m_videoCaptureUseOcclusionQuery, -1, 1); ++ XMLUtils::GetBoolean(pElement,"vdpauInvTelecine",m_videoVDPAUtelecine); ++ XMLUtils::GetBoolean(pElement,"vdpauHDdeintSkipChroma",m_videoVDPAUdeintSkipChromaHD); + + TiXmlElement* pAdjustRefreshrate = pElement->FirstChildElement("adjustrefreshrate"); + if (pAdjustRefreshrate) +diff --git a/xbmc/settings/AdvancedSettings.h b/xbmc/settings/AdvancedSettings.h +index 4befa28..53c27f7 100644 +--- a/xbmc/settings/AdvancedSettings.h ++++ b/xbmc/settings/AdvancedSettings.h +@@ -133,6 +133,8 @@ class CAdvancedSettings + int m_videoPercentSeekBackwardBig; + CStdString m_videoPPFFmpegDeint; + CStdString m_videoPPFFmpegPostProc; ++ bool m_videoVDPAUtelecine; ++ bool m_videoVDPAUdeintSkipChromaHD; + bool m_musicUseTimeSeeking; + int m_musicTimeSeekForward; + int m_musicTimeSeekBackward; +@@ -148,7 +150,7 @@ class CAdvancedSettings + CStdString m_audioHost; + bool m_audioApplyDrc; + +- bool m_videoVDPAUScaling; ++ int m_videoVDPAUScaling; + float m_videoNonLinStretchRatio; + bool m_videoEnableHighQualityHwScalers; + float m_videoAutoScaleMaxFps; +diff --git a/xbmc/settings/GUISettings.cpp b/xbmc/settings/GUISettings.cpp +index 44af36f..e65a4bf 100644 +--- a/xbmc/settings/GUISettings.cpp ++++ b/xbmc/settings/GUISettings.cpp +@@ -685,6 +685,8 @@ void CGUISettings::Initialize() + + #ifdef HAVE_LIBVDPAU + AddBool(vp, "videoplayer.usevdpau", 13425, true); ++ AddBool(vp, "videoplayer.usevdpauinterop", 13435, true); ++ AddBool(vp, "videoplayer.usevdpauinteropyuv", 13436, false); + #endif + #ifdef HAVE_LIBVA + AddBool(vp, "videoplayer.usevaapi", 13426, true); +diff --git a/xbmc/settings/GUIWindowSettingsCategory.cpp b/xbmc/settings/GUIWindowSettingsCategory.cpp +index 5ce74c6..de12326 100644 +--- a/xbmc/settings/GUIWindowSettingsCategory.cpp ++++ b/xbmc/settings/GUIWindowSettingsCategory.cpp +@@ -596,6 +596,40 @@ void CGUIWindowSettingsCategory::UpdateSettings() + pControl->SetEnabled(true); + } + } ++ else if (strSetting.Equals("videoplayer.usevdpauinteropyuv")) ++ { ++ bool hasInterop = g_guiSettings.GetBool("videoplayer.usevdpauinterop"); ++#ifndef GL_NV_vdpau_interop ++ hasInterop = false; ++#endif ++ CGUIControl *pControl = (CGUIControl *)GetControl(pSettingControl->GetID()); ++ if (pControl && hasInterop && glewIsSupported("GL_NV_vdpau_interop")) ++ { ++ pControl->SetEnabled(true); ++ } ++ else ++ { ++ pControl->SetEnabled(false); ++ g_guiSettings.SetBool("videoplayer.usevdpauinteropyuv",false); ++ } ++ } ++ else if (strSetting.Equals("videoplayer.usevdpauinterop")) ++ { ++ bool hasInterop = g_guiSettings.GetBool("videoplayer.usevdpau"); ++#ifndef GL_NV_vdpau_interop ++ hasInterop = false; ++#endif ++ CGUIControl *pControl = (CGUIControl *)GetControl(pSettingControl->GetID()); ++ if (pControl && hasInterop && glewIsSupported("GL_NV_vdpau_interop")) ++ { ++ pControl->SetEnabled(true); ++ } ++ else ++ { ++ pControl->SetEnabled(false); ++ g_guiSettings.SetBool("videoplayer.usevdpauinterop",false); ++ } ++ } + else + #endif + if (strSetting.Equals("videoscreen.resolution")) +diff --git a/xbmc/utils/ActorProtocol.cpp b/xbmc/utils/ActorProtocol.cpp +new file mode 100644 +index 0000000..e0cfd0e +--- /dev/null ++++ b/xbmc/utils/ActorProtocol.cpp +@@ -0,0 +1,253 @@ ++/* ++ * Copyright (C) 2005-2012 Team XBMC ++ * http://www.xbmc.org ++ * ++ * This Program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2, or (at your option) ++ * any later version. ++ * ++ * This Program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with XBMC; see the file COPYING. If not, see ++ * . ++ * ++ */ ++ ++#include "ActorProtocol.h" ++ ++using namespace Actor; ++ ++void Message::Release() ++{ ++ bool skip; ++ origin->Lock(); ++ skip = isSync ? !isSyncFini : false; ++ isSyncFini = true; ++ origin->Unlock(); ++ ++ if (skip) ++ return; ++ ++ // free data buffer ++ if (data != buffer) ++ delete [] data; ++ ++ // delete event in case of sync message ++ if (event) ++ delete event; ++ ++ origin->ReturnMessage(this); ++} ++ ++bool Message::Reply(int sig, void *data /* = NULL*/, int size /* = 0 */) ++{ ++ if (!isSync) ++ { ++ if (isOut) ++ return origin->SendInMessage(sig, data, size); ++ else ++ return origin->SendOutMessage(sig, data, size); ++ } ++ ++ origin->Lock(); ++ ++ if (!isSyncTimeout) ++ { ++ Message *msg = origin->GetMessage(); ++ msg->signal = sig; ++ msg->isOut = !isOut; ++ replyMessage = msg; ++ if (data) ++ { ++ if (size > MSG_INTERNAL_BUFFER_SIZE) ++ msg->data = new uint8_t[size]; ++ else ++ msg->data = msg->buffer; ++ memcpy(msg->data, data, size); ++ } ++ } ++ ++ origin->Unlock(); ++ ++ if (event) ++ event->Set(); ++ ++ return true; ++} ++ ++Protocol::~Protocol() ++{ ++ Message *msg; ++ Purge(); ++ while (!freeMessageQueue.empty()) ++ { ++ msg = freeMessageQueue.front(); ++ freeMessageQueue.pop(); ++ delete msg; ++ } ++} ++ ++Message *Protocol::GetMessage() ++{ ++ Message *msg; ++ ++ CSingleLock lock(criticalSection); ++ ++ if (!freeMessageQueue.empty()) ++ { ++ msg = freeMessageQueue.front(); ++ freeMessageQueue.pop(); ++ } ++ else ++ msg = new Message(); ++ ++ msg->isSync = false; ++ msg->isSyncFini = false; ++ msg->isSyncTimeout = false; ++ msg->event = NULL; ++ msg->data = NULL; ++ msg->payloadSize = 0; ++ msg->replyMessage = NULL; ++ msg->origin = this; ++ ++ return msg; ++} ++ ++void Protocol::ReturnMessage(Message *msg) ++{ ++ CSingleLock lock(criticalSection); ++ ++ freeMessageQueue.push(msg); ++} ++ ++bool Protocol::SendOutMessage(int signal, void *data /* = NULL */, int size /* = 0 */, Message *outMsg /* = NULL */) ++{ ++ Message *msg; ++ if (outMsg) ++ msg = outMsg; ++ else ++ msg = GetMessage(); ++ ++ msg->signal = signal; ++ msg->isOut = true; ++ ++ if (data) ++ { ++ if (size > MSG_INTERNAL_BUFFER_SIZE) ++ msg->data = new uint8_t[size]; ++ else ++ msg->data = msg->buffer; ++ memcpy(msg->data, data, size); ++ } ++ ++ { CSingleLock lock(criticalSection); ++ outMessages.push(msg); ++ } ++ containerOutEvent->Set(); ++ ++ return true; ++} ++ ++bool Protocol::SendInMessage(int signal, void *data /* = NULL */, int size /* = 0 */, Message *outMsg /* = NULL */) ++{ ++ Message *msg; ++ if (outMsg) ++ msg = outMsg; ++ else ++ msg = GetMessage(); ++ ++ msg->signal = signal; ++ msg->isOut = false; ++ ++ if (data) ++ { ++ if (size > MSG_INTERNAL_BUFFER_SIZE) ++ msg->data = new uint8_t[size]; ++ else ++ msg->data = msg->buffer; ++ memcpy(msg->data, data, size); ++ } ++ ++ { CSingleLock lock(criticalSection); ++ inMessages.push(msg); ++ } ++ containerInEvent->Set(); ++ ++ return true; ++} ++ ++ ++bool Protocol::SendOutMessageSync(int signal, Message **retMsg, int timeout, void *data /* = NULL */, int size /* = 0 */) ++{ ++ Message *msg = GetMessage(); ++ msg->isOut = true; ++ msg->isSync = true; ++ msg->event = new CEvent; ++ msg->event->Reset(); ++ SendOutMessage(signal, data, size, msg); ++ ++ if (!msg->event->WaitMSec(timeout)) ++ { ++ msg->origin->Lock(); ++ if (msg->replyMessage) ++ *retMsg = msg->replyMessage; ++ else ++ { ++ *retMsg = NULL; ++ msg->isSyncTimeout = true; ++ } ++ msg->origin->Unlock(); ++ } ++ else ++ *retMsg = msg->replyMessage; ++ ++ msg->Release(); ++ ++ if (*retMsg) ++ return true; ++ else ++ return false; ++} ++ ++bool Protocol::ReceiveOutMessage(Message **msg) ++{ ++ CSingleLock lock(criticalSection); ++ ++ if (outMessages.empty() || outDefered) ++ return false; ++ ++ *msg = outMessages.front(); ++ outMessages.pop(); ++ ++ return true; ++} ++ ++bool Protocol::ReceiveInMessage(Message **msg) ++{ ++ CSingleLock lock(criticalSection); ++ ++ if (inMessages.empty() || inDefered) ++ return false; ++ ++ *msg = inMessages.front(); ++ inMessages.pop(); ++ ++ return true; ++} ++ ++ ++void Protocol::Purge() ++{ ++ Message *msg; ++ ++ while (ReceiveInMessage(&msg)) ++ msg->Release(); ++ ++ while (ReceiveOutMessage(&msg)) ++ msg->Release(); ++} +diff --git a/xbmc/utils/ActorProtocol.h b/xbmc/utils/ActorProtocol.h +new file mode 100644 +index 0000000..e7108ac +--- /dev/null ++++ b/xbmc/utils/ActorProtocol.h +@@ -0,0 +1,87 @@ ++/* ++ * Copyright (C) 2005-2012 Team XBMC ++ * http://www.xbmc.org ++ * ++ * This Program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2, or (at your option) ++ * any later version. ++ * ++ * This Program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with XBMC; see the file COPYING. If not, see ++ * . ++ * ++ */ ++ ++#pragma once ++ ++#include "threads/Thread.h" ++#include "utils/log.h" ++#include ++#include "memory.h" ++ ++#define MSG_INTERNAL_BUFFER_SIZE 32 ++ ++namespace Actor ++{ ++ ++class Protocol; ++ ++class Message ++{ ++ friend class Protocol; ++public: ++ int signal; ++ bool isSync; ++ bool isSyncFini; ++ bool isOut; ++ bool isSyncTimeout; ++ int payloadSize; ++ uint8_t buffer[MSG_INTERNAL_BUFFER_SIZE]; ++ uint8_t *data; ++ Message *replyMessage; ++ Protocol *origin; ++ CEvent *event; ++ ++ void Release(); ++ bool Reply(int sig, void *data = NULL, int size = 0); ++ ++private: ++ Message() {isSync = false; data = NULL; event = NULL; replyMessage = NULL;}; ++}; ++ ++class Protocol ++{ ++public: ++ Protocol(std::string name, CEvent* inEvent, CEvent *outEvent) ++ : portName(name), inDefered(false), outDefered(false) {containerInEvent = inEvent; containerOutEvent = outEvent;}; ++ virtual ~Protocol(); ++ Message *GetMessage(); ++ void ReturnMessage(Message *msg); ++ bool SendOutMessage(int signal, void *data = NULL, int size = 0, Message *outMsg = NULL); ++ bool SendInMessage(int signal, void *data = NULL, int size = 0, Message *outMsg = NULL); ++ bool SendOutMessageSync(int signal, Message **retMsg, int timeout, void *data = NULL, int size = 0); ++ bool ReceiveOutMessage(Message **msg); ++ bool ReceiveInMessage(Message **msg); ++ void Purge(); ++ void DeferIn(bool value) {inDefered = value;}; ++ void DeferOut(bool value) {outDefered = value;}; ++ void Lock() {criticalSection.lock();}; ++ void Unlock() {criticalSection.unlock();}; ++ std::string portName; ++ ++protected: ++ CEvent *containerInEvent, *containerOutEvent; ++ CCriticalSection criticalSection; ++ std::queue outMessages; ++ std::queue inMessages; ++ std::queue freeMessageQueue; ++ bool inDefered, outDefered; ++}; ++ ++} +diff --git a/xbmc/utils/Makefile b/xbmc/utils/Makefile +index cbece38..24e2cce 100644 +--- a/xbmc/utils/Makefile ++++ b/xbmc/utils/Makefile +@@ -68,6 +68,7 @@ SRCS=AlarmClock.cpp \ + Weather.cpp \ + XBMCTinyXML.cpp \ + XMLUtils.cpp \ ++ ActorProtocol.cpp \ + + LIB=utils.a + +diff --git a/xbmc/video/dialogs/GUIDialogVideoSettings.cpp b/xbmc/video/dialogs/GUIDialogVideoSettings.cpp +index ac5f007..88e1375 100644 +--- a/xbmc/video/dialogs/GUIDialogVideoSettings.cpp ++++ b/xbmc/video/dialogs/GUIDialogVideoSettings.cpp +@@ -103,7 +103,7 @@ void CGUIDialogVideoSettings::CreateSettings() + entries.push_back(make_pair(VS_INTERLACEMETHOD_INVERSE_TELECINE , 16314)); + entries.push_back(make_pair(VS_INTERLACEMETHOD_VDPAU_TEMPORAL_SPATIAL , 16311)); + entries.push_back(make_pair(VS_INTERLACEMETHOD_VDPAU_TEMPORAL , 16310)); +- entries.push_back(make_pair(VS_INTERLACEMETHOD_VDPAU_BOB , 16021)); ++ entries.push_back(make_pair(VS_INTERLACEMETHOD_VDPAU_BOB , 16025)); + entries.push_back(make_pair(VS_INTERLACEMETHOD_VDPAU_TEMPORAL_SPATIAL_HALF, 16318)); + entries.push_back(make_pair(VS_INTERLACEMETHOD_VDPAU_TEMPORAL_HALF , 16317)); + entries.push_back(make_pair(VS_INTERLACEMETHOD_VDPAU_INVERSE_TELECINE , 16314)); +diff --git a/xbmc/windowing/X11/WinSystemX11.h b/xbmc/windowing/X11/WinSystemX11.h +index e7af3cb..2dd8a9f 100644 +--- a/xbmc/windowing/X11/WinSystemX11.h ++++ b/xbmc/windowing/X11/WinSystemX11.h +@@ -63,6 +63,7 @@ class CWinSystemX11 : public CWinSystemBase + // Local to WinSystemX11 only + Display* GetDisplay() { return m_dpy; } + GLXWindow GetWindow() { return m_glWindow; } ++ GLXContext GetGlxContext() { return m_glContext; } + + protected: + bool RefreshGlxContext(); +-- +1.7.10 + + +From 0aeae2a27144b65bf0d74d75f252b538996064f1 Mon Sep 17 00:00:00 2001 +From: xbmc +Date: Tue, 25 Sep 2012 12:14:15 +0200 +Subject: [PATCH 11/51] linuxrenderer: drop method RenderMultiPass + +--- + xbmc/cores/VideoRenderers/LinuxRendererGL.cpp | 9 ++------- + xbmc/cores/VideoRenderers/LinuxRendererGL.h | 1 - + 2 files changed, 2 insertions(+), 8 deletions(-) + +diff --git a/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp b/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp +index 090f1a5..a253883 100644 +--- a/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp ++++ b/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp +@@ -1205,7 +1205,8 @@ void CLinuxRendererGL::Render(DWORD flags, int renderBuffer) + break; + + case RQ_MULTIPASS: +- RenderMultiPass(renderBuffer, m_currentField); ++ RenderToFBO(renderBuffer, m_currentField); ++ RenderFromFBO(); + VerifyGLState(); + break; + } +@@ -1328,12 +1329,6 @@ void CLinuxRendererGL::RenderSinglePass(int index, int field) + VerifyGLState(); + } + +-void CLinuxRendererGL::RenderMultiPass(int index, int field) +-{ +- RenderToFBO(index, field); +- RenderFromFBO(); +-} +- + void CLinuxRendererGL::RenderToFBO(int index, int field) + { + YUVPLANES &planes = m_buffers[index].fields[field]; +diff --git a/xbmc/cores/VideoRenderers/LinuxRendererGL.h b/xbmc/cores/VideoRenderers/LinuxRendererGL.h +index 3218cd5..afc78c2 100644 +--- a/xbmc/cores/VideoRenderers/LinuxRendererGL.h ++++ b/xbmc/cores/VideoRenderers/LinuxRendererGL.h +@@ -218,7 +218,6 @@ class CLinuxRendererGL : public CBaseRenderer + void CalculateTextureSourceRects(int source, int num_planes); + + // renderers +- void RenderMultiPass(int renderBuffer, int field); // multi pass glsl renderer + void RenderToFBO(int renderBuffer, int field); + void RenderFromFBO(); + void RenderSinglePass(int renderBuffer, int field); // single pass glsl renderer +-- +1.7.10 + + +From 33c940cbae675818f89992bbd8d7b21bf64c0e0f Mon Sep 17 00:00:00 2001 +From: xbmc +Date: Tue, 25 Sep 2012 13:20:47 +0200 +Subject: [PATCH 12/51] linuxrenderer: implement progressive weave for vdpau + +--- + xbmc/cores/VideoRenderers/LinuxRendererGL.cpp | 55 ++++++++++++++++++------- + xbmc/cores/VideoRenderers/LinuxRendererGL.h | 4 +- + 2 files changed, 41 insertions(+), 18 deletions(-) + +diff --git a/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp b/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp +index a253883..61bb873 100644 +--- a/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp ++++ b/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp +@@ -689,18 +689,6 @@ void CLinuxRendererGL::RenderUpdate(bool clear, DWORD flags, DWORD alpha) + glDisable(GL_POLYGON_STIPPLE); + + } +- else if(m_format == RENDER_FMT_VDPAU_420 +- && !(flags & RENDER_FLAG_BOTH)) +- { +- glDisable(GL_BLEND); +- glColor4f(1.0f, 1.0f, 1.0f, 1.0f); +- Render(flags | RENDER_FLAG_TOP, index); +- +- glEnable(GL_BLEND); +- glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); +- glColor4f(1.0f, 1.0f, 1.0f, 128 / 255.0f); +- Render(flags | RENDER_FLAG_BOT , index); +- } + else + Render(flags, index); + +@@ -1200,13 +1188,21 @@ void CLinuxRendererGL::Render(DWORD flags, int renderBuffer) + { + case RQ_LOW: + case RQ_SINGLEPASS: +- RenderSinglePass(renderBuffer, m_currentField); ++ if (m_format == RENDER_FMT_VDPAU_420 && m_currentField == FIELD_FULL) ++ RenderProgressiveWeave(renderBuffer, m_currentField); ++ else ++ RenderSinglePass(renderBuffer, m_currentField); + VerifyGLState(); + break; + + case RQ_MULTIPASS: +- RenderToFBO(renderBuffer, m_currentField); +- RenderFromFBO(); ++ if (m_format == RENDER_FMT_VDPAU_420 && m_currentField == FIELD_FULL) ++ RenderProgressiveWeave(renderBuffer, m_currentField); ++ else ++ { ++ RenderToFBO(renderBuffer, m_currentField); ++ RenderFromFBO(); ++ } + VerifyGLState(); + break; + } +@@ -1329,7 +1325,7 @@ void CLinuxRendererGL::RenderSinglePass(int index, int field) + VerifyGLState(); + } + +-void CLinuxRendererGL::RenderToFBO(int index, int field) ++void CLinuxRendererGL::RenderToFBO(int index, int field, bool weave /*= false*/) + { + YUVPLANES &planes = m_buffers[index].fields[field]; + +@@ -1431,6 +1427,8 @@ void CLinuxRendererGL::RenderToFBO(int index, int field) + } + m_fbo.width *= planes[0].pixpertex_x; + m_fbo.height *= planes[0].pixpertex_y; ++ if (weave) ++ m_fbo.height *= 2; + + // 1st Pass to video frame size + glBegin(GL_QUADS); +@@ -1549,6 +1547,31 @@ void CLinuxRendererGL::RenderFromFBO() + VerifyGLState(); + } + ++void CLinuxRendererGL::RenderProgressiveWeave(int index, int field) ++{ ++ bool scaleUp = (int)m_sourceHeight < g_graphicsContext.GetHeight() || (int)m_sourceWidth < g_graphicsContext.GetWidth(); ++ ++ if (m_fbo.fbo.IsSupported() && (scaleUp || m_renderQuality == RQ_MULTIPASS)) ++ { ++ glEnable(GL_POLYGON_STIPPLE); ++ glPolygonStipple(stipple_weave); ++ RenderToFBO(index, FIELD_TOP, true); ++ glPolygonStipple(stipple_weave+4); ++ RenderToFBO(index, FIELD_BOT, true); ++ glDisable(GL_POLYGON_STIPPLE); ++ RenderFromFBO(); ++ } ++ else ++ { ++ glEnable(GL_POLYGON_STIPPLE); ++ glPolygonStipple(stipple_weave); ++ RenderSinglePass(index, FIELD_TOP); ++ glPolygonStipple(stipple_weave+4); ++ RenderSinglePass(index, FIELD_BOT); ++ glDisable(GL_POLYGON_STIPPLE); ++ } ++} ++ + void CLinuxRendererGL::RenderVDPAU(int index, int field) + { + #ifdef HAVE_LIBVDPAU +diff --git a/xbmc/cores/VideoRenderers/LinuxRendererGL.h b/xbmc/cores/VideoRenderers/LinuxRendererGL.h +index afc78c2..2fc34ae 100644 +--- a/xbmc/cores/VideoRenderers/LinuxRendererGL.h ++++ b/xbmc/cores/VideoRenderers/LinuxRendererGL.h +@@ -218,12 +218,12 @@ class CLinuxRendererGL : public CBaseRenderer + void CalculateTextureSourceRects(int source, int num_planes); + + // renderers +- void RenderToFBO(int renderBuffer, int field); ++ void RenderToFBO(int renderBuffer, int field, bool weave = false); + void RenderFromFBO(); + void RenderSinglePass(int renderBuffer, int field); // single pass glsl renderer + void RenderSoftware(int renderBuffer, int field); // single pass s/w yuv2rgb renderer + void RenderVDPAU(int renderBuffer, int field); // render using vdpau hardware +- void RenderVDPAUYV12(int renderBuffer, int field); // render using vdpau hardware ++ void RenderProgressiveWeave(int renderBuffer, int field); // render using vdpau hardware + void RenderVAAPI(int renderBuffer, int field); // render using vdpau hardware + + struct +-- +1.7.10 + + +From b575df365ae1e8410d12f107126dcf5e2819e38b Mon Sep 17 00:00:00 2001 +From: FernetMenta +Date: Thu, 5 Jul 2012 15:22:05 +0200 +Subject: [PATCH 13/51] X11: ditch SDL for video and window events + +--- + xbmc/Application.cpp | 2 +- + xbmc/system.h | 5 + + xbmc/windowing/Makefile | 1 + + xbmc/windowing/WinEvents.h | 4 + + xbmc/windowing/WinEventsX11.cpp | 765 +++++++++++++++++++++++++++++++++++ + xbmc/windowing/WinEventsX11.h | 57 +++ + xbmc/windowing/X11/WinSystemX11.cpp | 370 ++++++++++++----- + xbmc/windowing/X11/WinSystemX11.h | 9 +- + 8 files changed, 1112 insertions(+), 101 deletions(-) + create mode 100644 xbmc/windowing/WinEventsX11.cpp + create mode 100644 xbmc/windowing/WinEventsX11.h + +diff --git a/xbmc/Application.cpp b/xbmc/Application.cpp +index b240e94..df9b97b 100644 +--- a/xbmc/Application.cpp ++++ b/xbmc/Application.cpp +@@ -783,7 +783,7 @@ bool CApplication::CreateGUI() + + uint32_t sdlFlags = 0; + +-#if defined(HAS_SDL_OPENGL) || (HAS_GLES == 2) ++#if (defined(HAS_SDL_OPENGL) || (HAS_GLES == 2)) && !defined(HAS_GLX) + sdlFlags |= SDL_INIT_VIDEO; + #endif + +diff --git a/xbmc/system.h b/xbmc/system.h +index 4165c01..32584b1 100644 +--- a/xbmc/system.h ++++ b/xbmc/system.h +@@ -162,16 +162,21 @@ + #define HAS_GL + #ifdef HAVE_X11 + #define HAS_GLX ++#define HAS_X11_WIN_EVENTS + #endif + #ifdef HAVE_SDL + #define HAS_SDL + #ifndef HAS_SDL_OPENGL + #define HAS_SDL_OPENGL + #endif ++#ifndef HAVE_X11 + #define HAS_SDL_WIN_EVENTS ++#endif + #else ++#ifndef HAVE_X11 + #define HAS_LINUX_EVENTS + #endif ++#endif + #define HAS_LINUX_NETWORK + #define HAS_LIRC + #ifdef HAVE_LIBPULSE +diff --git a/xbmc/windowing/Makefile b/xbmc/windowing/Makefile +index f109bec..f981642 100644 +--- a/xbmc/windowing/Makefile ++++ b/xbmc/windowing/Makefile +@@ -1,6 +1,7 @@ + SRCS=WinEventsSDL.cpp \ + WinEventsLinux.cpp \ + WinSystem.cpp \ ++ WinEventsX11.cpp \ + + LIB=windowing.a + +diff --git a/xbmc/windowing/WinEvents.h b/xbmc/windowing/WinEvents.h +index 6d322a9..5a671cc 100644 +--- a/xbmc/windowing/WinEvents.h ++++ b/xbmc/windowing/WinEvents.h +@@ -58,6 +58,10 @@ class CWinEventsBase + #include "WinEventsSDL.h" + #define CWinEvents CWinEventsSDL + ++#elif defined(TARGET_LINUX) && defined(HAS_X11_WIN_EVENTS) ++#include "WinEventsX11.h" ++#define CWinEvents CWinEventsX11 ++ + #elif defined(TARGET_LINUX) && defined(HAS_LINUX_EVENTS) + #include "WinEventsLinux.h" + #define CWinEvents CWinEventsLinux +diff --git a/xbmc/windowing/WinEventsX11.cpp b/xbmc/windowing/WinEventsX11.cpp +new file mode 100644 +index 0000000..24477ae +--- /dev/null ++++ b/xbmc/windowing/WinEventsX11.cpp +@@ -0,0 +1,765 @@ ++/* ++* Copyright (C) 2005-2012 Team XBMC ++* http://www.xbmc.org ++* ++* This Program is free software; you can redistribute it and/or modify ++* it under the terms of the GNU General Public License as published by ++* the Free Software Foundation; either version 2, or (at your option) ++* any later version. ++* ++* This Program is distributed in the hope that it will be useful, ++* but WITHOUT ANY WARRANTY; without even the implied warranty of ++* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++* GNU General Public License for more details. ++* ++* You should have received a copy of the GNU General Public License ++* along with XBMC; see the file COPYING. If not, write to ++* the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. ++* http://www.gnu.org/copyleft/gpl.html ++* ++*/ ++ ++#include "system.h" ++ ++#ifdef HAS_X11_WIN_EVENTS ++ ++#include "WinEvents.h" ++#include "WinEventsX11.h" ++#include "Application.h" ++#include "ApplicationMessenger.h" ++#include ++#include "X11/WinSystemX11GL.h" ++#include "X11/keysymdef.h" ++#include "X11/XF86keysym.h" ++#include "utils/log.h" ++#include "guilib/GUIWindowManager.h" ++#include "input/MouseStat.h" ++ ++CWinEventsX11* CWinEventsX11::WinEvents = 0; ++ ++static uint32_t SymMappingsX11[][2] = ++{ ++ {XK_BackSpace, XBMCK_BACKSPACE} ++, {XK_Tab, XBMCK_TAB} ++, {XK_Clear, XBMCK_CLEAR} ++, {XK_Return, XBMCK_RETURN} ++, {XK_Pause, XBMCK_PAUSE} ++, {XK_Escape, XBMCK_ESCAPE} ++, {XK_Delete, XBMCK_DELETE} ++// multi-media keys ++, {XF86XK_Back, XBMCK_BROWSER_BACK} ++, {XF86XK_Forward, XBMCK_BROWSER_FORWARD} ++, {XF86XK_Refresh, XBMCK_BROWSER_REFRESH} ++, {XF86XK_Stop, XBMCK_BROWSER_STOP} ++, {XF86XK_Search, XBMCK_BROWSER_SEARCH} ++, {XF86XK_Favorites, XBMCK_BROWSER_FAVORITES} ++, {XF86XK_HomePage, XBMCK_BROWSER_HOME} ++, {XF86XK_AudioMute, XBMCK_VOLUME_MUTE} ++, {XF86XK_AudioLowerVolume, XBMCK_VOLUME_DOWN} ++, {XF86XK_AudioRaiseVolume, XBMCK_VOLUME_UP} ++, {XF86XK_AudioNext, XBMCK_MEDIA_NEXT_TRACK} ++, {XF86XK_AudioPrev, XBMCK_MEDIA_PREV_TRACK} ++, {XF86XK_AudioStop, XBMCK_MEDIA_STOP} ++, {XF86XK_AudioPause, XBMCK_MEDIA_PLAY_PAUSE} ++, {XF86XK_Mail, XBMCK_LAUNCH_MAIL} ++, {XF86XK_Select, XBMCK_LAUNCH_MEDIA_SELECT} ++, {XF86XK_Launch0, XBMCK_LAUNCH_APP1} ++, {XF86XK_Launch1, XBMCK_LAUNCH_APP2} ++, {XF86XK_WWW, XBMCK_LAUNCH_FILE_BROWSER} ++, {XF86XK_AudioMedia, XBMCK_LAUNCH_MEDIA_CENTER } ++ // Numeric keypad ++, {XK_KP_0, XBMCK_KP0} ++, {XK_KP_1, XBMCK_KP1} ++, {XK_KP_2, XBMCK_KP2} ++, {XK_KP_3, XBMCK_KP3} ++, {XK_KP_4, XBMCK_KP4} ++, {XK_KP_5, XBMCK_KP5} ++, {XK_KP_6, XBMCK_KP6} ++, {XK_KP_7, XBMCK_KP7} ++, {XK_KP_8, XBMCK_KP8} ++, {XK_KP_9, XBMCK_KP9} ++, {XK_KP_Separator, XBMCK_KP_PERIOD} ++, {XK_KP_Divide, XBMCK_KP_DIVIDE} ++, {XK_KP_Multiply, XBMCK_KP_MULTIPLY} ++, {XK_KP_Subtract, XBMCK_KP_MINUS} ++, {XK_KP_Add, XBMCK_KP_PLUS} ++, {XK_KP_Enter, XBMCK_KP_ENTER} ++, {XK_KP_Equal, XBMCK_KP_EQUALS} ++ // Arrows + Home/End pad ++, {XK_Up, XBMCK_UP} ++, {XK_Down, XBMCK_DOWN} ++, {XK_Right, XBMCK_RIGHT} ++, {XK_Left, XBMCK_LEFT} ++, {XK_Insert, XBMCK_INSERT} ++, {XK_Home, XBMCK_HOME} ++, {XK_End, XBMCK_END} ++, {XK_Page_Up, XBMCK_PAGEUP} ++, {XK_Page_Down, XBMCK_PAGEDOWN} ++ // Function keys ++, {XK_F1, XBMCK_F1} ++, {XK_F2, XBMCK_F2} ++, {XK_F3, XBMCK_F3} ++, {XK_F4, XBMCK_F4} ++, {XK_F5, XBMCK_F5} ++, {XK_F6, XBMCK_F6} ++, {XK_F7, XBMCK_F7} ++, {XK_F8, XBMCK_F8} ++, {XK_F9, XBMCK_F9} ++, {XK_F10, XBMCK_F10} ++, {XK_F11, XBMCK_F11} ++, {XK_F12, XBMCK_F12} ++, {XK_F13, XBMCK_F13} ++, {XK_F14, XBMCK_F14} ++, {XK_F15, XBMCK_F15} ++ // Key state modifier keys ++, {XK_Num_Lock, XBMCK_NUMLOCK} ++, {XK_Caps_Lock, XBMCK_CAPSLOCK} ++, {XK_Scroll_Lock, XBMCK_SCROLLOCK} ++, {XK_Shift_R, XBMCK_RSHIFT} ++, {XK_Shift_L, XBMCK_LSHIFT} ++, {XK_Control_R, XBMCK_RCTRL} ++, {XK_Control_L, XBMCK_LCTRL} ++, {XK_Alt_R, XBMCK_RALT} ++, {XK_Alt_L, XBMCK_LALT} ++, {XK_Meta_R, XBMCK_RMETA} ++, {XK_Meta_L, XBMCK_LMETA} ++, {XK_Super_L, XBMCK_LSUPER} ++, {XK_Super_R, XBMCK_RSUPER} ++, {XK_Mode_switch, XBMCK_MODE} ++, {XK_Multi_key, XBMCK_COMPOSE} ++ // Miscellaneous function keys ++, {XK_Help, XBMCK_HELP} ++, {XK_Print, XBMCK_PRINT} ++//, {0, XBMCK_SYSREQ} ++, {XK_Break, XBMCK_BREAK} ++, {XK_Menu, XBMCK_MENU} ++, {XF86XK_PowerOff, XBMCK_POWER} ++, {XK_EcuSign, XBMCK_EURO} ++, {XK_Undo, XBMCK_UNDO} ++ /* Media keys */ ++, {XF86XK_Eject, XBMCK_EJECT} ++, {XF86XK_Stop, XBMCK_STOP} ++, {XF86XK_AudioRecord, XBMCK_RECORD} ++, {XF86XK_AudioRewind, XBMCK_REWIND} ++, {XF86XK_Phone, XBMCK_PHONE} ++, {XF86XK_AudioPlay, XBMCK_PLAY} ++, {XF86XK_AudioRandomPlay, XBMCK_SHUFFLE} ++, {XF86XK_AudioForward, XBMCK_FASTFORWARD} ++}; ++ ++ ++CWinEventsX11::CWinEventsX11() ++{ ++ m_display = 0; ++ m_window = 0; ++ m_keybuf = 0; ++ m_utf16buf = 0; ++} ++ ++CWinEventsX11::~CWinEventsX11() ++{ ++ if (m_keybuf); ++ { ++ free(m_keybuf); ++ m_keybuf = 0; ++ } ++ ++ if (m_utf16buf) ++ { ++ free(m_utf16buf); ++ m_utf16buf = 0; ++ } ++ ++ if (m_xic) ++ { ++ XUnsetICFocus(m_xic); ++ XDestroyIC(m_xic); ++ m_xic = 0; ++ } ++ ++ if (m_xim) ++ { ++ XCloseIM(m_xim); ++ m_xim = 0; ++ } ++ ++ m_symLookupTable.clear(); ++} ++ ++bool CWinEventsX11::Init(Display *dpy, Window win) ++{ ++ if (WinEvents) ++ return true; ++ ++ WinEvents = new CWinEventsX11(); ++ WinEvents->m_display = dpy; ++ WinEvents->m_window = win; ++ WinEvents->m_keybuf = (char*)malloc(32*sizeof(char)); ++ WinEvents->m_utf16buf = (uint16_t*)malloc(32*sizeof(uint16_t)); ++ WinEvents->m_keymodState = 0; ++ WinEvents->m_wmDeleteMessage = XInternAtom(dpy, "WM_DELETE_WINDOW", False); ++ WinEvents->m_structureChanged = false; ++ memset(&(WinEvents->m_lastKey), 0, sizeof(XBMC_Event)); ++ ++ // open input method ++ char *old_locale = NULL, *old_modifiers = NULL; ++ char res_name[8]; ++ const char *p; ++ size_t n; ++ ++ // set resource name to xbmc, not used ++ strcpy(res_name, "xbmc"); ++ ++ // save current locale, this should be "C" ++ p = setlocale(LC_ALL, NULL); ++ if (p) ++ { ++ old_locale = (char*)malloc(strlen(p) +1); ++ strcpy(old_locale, p); ++ } ++ p = XSetLocaleModifiers(NULL); ++ if (p) ++ { ++ old_modifiers = (char*)malloc(strlen(p) +1); ++ strcpy(old_modifiers, p); ++ } ++ ++ // set users preferences and open input method ++ p = setlocale(LC_ALL, ""); ++ XSetLocaleModifiers(""); ++ WinEvents->m_xim = XOpenIM(WinEvents->m_display, NULL, res_name, res_name); ++ ++ // restore old locale ++ if (old_locale) ++ { ++ setlocale(LC_ALL, old_locale); ++ free(old_locale); ++ } ++ if (old_modifiers) ++ { ++ XSetLocaleModifiers(old_modifiers); ++ free(old_modifiers); ++ } ++ ++ WinEvents->m_xic = NULL; ++ if (WinEvents->m_xim) ++ { ++ WinEvents->m_xic = XCreateIC(WinEvents->m_xim, ++ XNClientWindow, WinEvents->m_window, ++ XNFocusWindow, WinEvents->m_window, ++ XNInputStyle, XIMPreeditNothing | XIMStatusNothing, ++ XNResourceName, res_name, ++ XNResourceClass, res_name, ++ NULL); ++ } ++ ++ if (!WinEvents->m_xic) ++ CLog::Log(LOGWARNING,"CWinEventsX11::Init - no input method found"); ++ ++ // build Keysym lookup table ++ for (unsigned int i = 0; i < sizeof(SymMappingsX11)/(2*sizeof(uint32_t)); ++i) ++ { ++ WinEvents->m_symLookupTable[SymMappingsX11[i][0]] = SymMappingsX11[i][1]; ++ } ++ ++ return true; ++} ++ ++void CWinEventsX11::Quit() ++{ ++ if (!WinEvents) ++ return; ++ ++ delete WinEvents; ++ WinEvents = 0; ++} ++ ++bool CWinEventsX11::HasStructureChanged() ++{ ++ if (!WinEvents) ++ return false; ++ ++ bool ret = WinEvents->m_structureChanged; ++ WinEvents->m_structureChanged = false; ++ return ret; ++} ++ ++bool CWinEventsX11::MessagePump() ++{ ++ if (!WinEvents) ++ return false; ++ ++ bool ret = false; ++ XEvent xevent; ++ unsigned long serial = 0; ++ ++ while (WinEvents && XPending(WinEvents->m_display)) ++ { ++ memset(&xevent, 0, sizeof (XEvent)); ++ XNextEvent(WinEvents->m_display, &xevent); ++ ++ // ignore events generated by auto-repeat ++ if (xevent.type == KeyRelease && XPending(WinEvents->m_display)) ++ { ++ XEvent peekevent; ++ XPeekEvent(WinEvents->m_display, &peekevent); ++ if ((peekevent.type == KeyPress) && ++ (peekevent.xkey.keycode == xevent.xkey.keycode) && ++ ((peekevent.xkey.time - xevent.xkey.time) < 2)) ++ { ++ XNextEvent(WinEvents->m_display, &peekevent); ++ continue; ++ } ++ } ++ ++ if (XFilterEvent(&xevent, None)) ++ continue; ++ ++ switch (xevent.type) ++ { ++ case MapNotify: ++ { ++ g_application.m_AppActive = true; ++ break; ++ } ++ ++ case UnmapNotify: ++ { ++ g_application.m_AppActive = false; ++ break; ++ } ++ ++ case FocusIn: ++ { ++ if (WinEvents->m_xic) ++ XSetICFocus(WinEvents->m_xic); ++ g_application.m_AppFocused = true; ++ if (serial == xevent.xfocus.serial) ++ break; ++ g_Windowing.NotifyAppFocusChange(g_application.m_AppFocused); ++ break; ++ } ++ ++ case FocusOut: ++ { ++ if (WinEvents->m_xic) ++ XUnsetICFocus(WinEvents->m_xic); ++ g_application.m_AppFocused = false; ++ g_Windowing.NotifyAppFocusChange(g_application.m_AppFocused); ++ serial = xevent.xfocus.serial; ++ break; ++ } ++ ++ case Expose: ++ { ++ g_windowManager.MarkDirty(); ++ break; ++ } ++ ++ case ConfigureNotify: ++ { ++ if (xevent.xconfigure.window != WinEvents->m_window) ++ break; ++ ++ WinEvents->m_structureChanged = true; ++ XBMC_Event newEvent; ++ memset(&newEvent, 0, sizeof(newEvent)); ++ newEvent.type = XBMC_VIDEORESIZE; ++ newEvent.resize.w = xevent.xconfigure.width; ++ newEvent.resize.h = xevent.xconfigure.height; ++ ret |= g_application.OnEvent(newEvent); ++ g_windowManager.MarkDirty(); ++ break; ++ } ++ ++ case ClientMessage: ++ { ++ if (xevent.xclient.data.l[0] == WinEvents->m_wmDeleteMessage) ++ if (!g_application.m_bStop) CApplicationMessenger::Get().Quit(); ++ break; ++ } ++ ++ case KeyPress: ++ { ++ XBMC_Event newEvent; ++ memset(&newEvent, 0, sizeof(newEvent)); ++ newEvent.type = XBMC_KEYDOWN; ++ KeySym xkeysym; ++ ++ // fallback if we have no IM ++ if (!WinEvents->m_xic) ++ { ++ static XComposeStatus state; ++ char keybuf[32]; ++ xkeysym = XLookupKeysym(&xevent.xkey, 0); ++ newEvent.key.keysym.sym = LookupXbmcKeySym(xkeysym); ++ newEvent.key.keysym.scancode = xevent.xkey.keycode; ++ newEvent.key.state = xevent.xkey.state; ++ newEvent.key.type = xevent.xkey.type; ++ if (XLookupString(&xevent.xkey, keybuf, sizeof(keybuf), NULL, &state)) ++ { ++ newEvent.key.keysym.unicode = keybuf[0]; ++ } ++ ret |= ProcessKey(newEvent, 500); ++ break; ++ } ++ ++ Status status; ++ int utf16size; ++ int utf16length; ++ int len; ++ len = Xutf8LookupString(WinEvents->m_xic, &xevent.xkey, ++ WinEvents->m_keybuf, sizeof(WinEvents->m_keybuf), ++ &xkeysym, &status); ++ if (status == XBufferOverflow) ++ { ++ WinEvents->m_keybuf = (char*)realloc(WinEvents->m_keybuf, len*sizeof(char)); ++ len = Xutf8LookupString(WinEvents->m_xic, &xevent.xkey, ++ WinEvents->m_keybuf, sizeof(WinEvents->m_keybuf), ++ &xkeysym, &status); ++ } ++ switch (status) ++ { ++ case XLookupNone: ++ break; ++ case XLookupChars: ++ case XLookupBoth: ++ { ++ if (len == 0) ++ break; ++ utf16size = len * sizeof(uint16_t); ++ if (utf16size > sizeof(WinEvents->m_utf16buf)) ++ { ++ WinEvents->m_utf16buf = (uint16_t *)realloc(WinEvents->m_utf16buf,utf16size); ++ if (WinEvents->m_utf16buf == NULL) ++ { ++ break; ++ } ++ } ++ utf16length = Utf8ToUnicode(WinEvents->m_keybuf, len, WinEvents->m_utf16buf, utf16size); ++ if (utf16length < 0) ++ { ++ break; ++ } ++ for (unsigned int i = 0; i < utf16length - 1; i++) ++ { ++ newEvent.key.keysym.sym = XBMCK_UNKNOWN; ++ newEvent.key.keysym.unicode = WinEvents->m_utf16buf[i]; ++ newEvent.key.state = xevent.xkey.state; ++ newEvent.key.type = xevent.xkey.type; ++ ret |= ProcessKey(newEvent, 500); ++ } ++ if (utf16length > 0) ++ { ++ newEvent.key.keysym.scancode = xevent.xkey.keycode; ++ xkeysym = XLookupKeysym(&xevent.xkey, 0); ++ newEvent.key.keysym.sym = LookupXbmcKeySym(xkeysym); ++ newEvent.key.keysym.unicode = WinEvents->m_utf16buf[utf16length - 1]; ++ newEvent.key.state = xevent.xkey.state; ++ newEvent.key.type = xevent.xkey.type; ++ ++ ret |= ProcessKey(newEvent, 500); ++ } ++ break; ++ } ++ ++ case XLookupKeySym: ++ { ++ newEvent.key.keysym.scancode = xevent.xkey.keycode; ++ newEvent.key.keysym.sym = LookupXbmcKeySym(xkeysym); ++ newEvent.key.state = xevent.xkey.state; ++ newEvent.key.type = xevent.xkey.type; ++ ret |= ProcessKey(newEvent, 500); ++ break; ++ } ++ ++ }// switch status ++ break; ++ } //KeyPress ++ ++ case KeyRelease: ++ { ++ XBMC_Event newEvent; ++ KeySym xkeysym; ++ memset(&newEvent, 0, sizeof(newEvent)); ++ newEvent.type = XBMC_KEYUP; ++ xkeysym = XLookupKeysym(&xevent.xkey, 0); ++ newEvent.key.keysym.scancode = xevent.xkey.keycode; ++ newEvent.key.keysym.sym = LookupXbmcKeySym(xkeysym); ++ newEvent.key.state = xevent.xkey.state; ++ newEvent.key.type = xevent.xkey.type; ++ ret |= ProcessKey(newEvent, 0); ++ break; ++ } ++ ++ // lose mouse coverage ++ case LeaveNotify: ++ { ++ g_Mouse.SetActive(false); ++ break; ++ } ++ ++ case MotionNotify: ++ { ++ XBMC_Event newEvent; ++ memset(&newEvent, 0, sizeof(newEvent)); ++ newEvent.type = XBMC_MOUSEMOTION; ++ newEvent.motion.xrel = (int16_t)xevent.xmotion.x_root; ++ newEvent.motion.yrel = (int16_t)xevent.xmotion.y_root; ++ newEvent.motion.x = (int16_t)xevent.xmotion.x; ++ newEvent.motion.y = (int16_t)xevent.xmotion.y; ++ ret |= g_application.OnEvent(newEvent); ++ break; ++ } ++ ++ case ButtonPress: ++ { ++ XBMC_Event newEvent; ++ memset(&newEvent, 0, sizeof(newEvent)); ++ newEvent.type = XBMC_MOUSEBUTTONDOWN; ++ newEvent.button.button = (unsigned char)xevent.xbutton.button; ++ newEvent.button.state = XBMC_PRESSED; ++ newEvent.button.x = (int16_t)xevent.xbutton.x; ++ newEvent.button.y = (int16_t)xevent.xbutton.y; ++ ret |= g_application.OnEvent(newEvent); ++ break; ++ } ++ ++ case ButtonRelease: ++ { ++ XBMC_Event newEvent; ++ memset(&newEvent, 0, sizeof(newEvent)); ++ newEvent.type = XBMC_MOUSEBUTTONUP; ++ newEvent.button.button = (unsigned char)xevent.xbutton.button; ++ newEvent.button.state = XBMC_RELEASED; ++ newEvent.button.x = (int16_t)xevent.xbutton.x; ++ newEvent.button.y = (int16_t)xevent.xbutton.y; ++ ret |= g_application.OnEvent(newEvent); ++ break; ++ } ++ ++ default: ++ { ++ break; ++ } ++ }// switch event.type ++ }// while ++ ++ ret |= ProcessKeyRepeat(); ++ ++ return ret; ++} ++ ++bool CWinEventsX11::ProcessKey(XBMC_Event &event, int repeatDelay) ++{ ++ if (event.type == XBMC_KEYDOWN) ++ { ++ // check key modifiers ++ switch(event.key.keysym.sym) ++ { ++ case XBMCK_LSHIFT: ++ WinEvents->m_keymodState |= XBMCKMOD_LSHIFT; ++ break; ++ case XBMCK_RSHIFT: ++ WinEvents->m_keymodState |= XBMCKMOD_RSHIFT; ++ break; ++ case XBMCK_LCTRL: ++ WinEvents->m_keymodState |= XBMCKMOD_LCTRL; ++ break; ++ case XBMCK_RCTRL: ++ WinEvents->m_keymodState |= XBMCKMOD_RCTRL; ++ break; ++ case XBMCK_LALT: ++ WinEvents->m_keymodState |= XBMCKMOD_LALT; ++ break; ++ case XBMCK_RALT: ++ WinEvents->m_keymodState |= XBMCKMOD_RCTRL; ++ break; ++ case XBMCK_LMETA: ++ WinEvents->m_keymodState |= XBMCKMOD_LMETA; ++ break; ++ case XBMCK_RMETA: ++ WinEvents->m_keymodState |= XBMCKMOD_RMETA; ++ break; ++ case XBMCK_MODE: ++ WinEvents->m_keymodState |= XBMCKMOD_MODE; ++ break; ++ default: ++ break; ++ } ++ event.key.keysym.mod = (XBMCMod)WinEvents->m_keymodState; ++ memcpy(&(WinEvents->m_lastKey), &event, sizeof(event)); ++ WinEvents->m_repeatKeyTimeout.Set(repeatDelay); ++ ++ bool ret = ProcessShortcuts(event); ++ if (ret) ++ return ret; ++ } ++ else if (event.type == XBMC_KEYUP) ++ { ++ switch(event.key.keysym.sym) ++ { ++ case XBMCK_LSHIFT: ++ WinEvents->m_keymodState &= ~XBMCKMOD_LSHIFT; ++ break; ++ case XBMCK_RSHIFT: ++ WinEvents->m_keymodState &= ~XBMCKMOD_RSHIFT; ++ break; ++ case XBMCK_LCTRL: ++ WinEvents->m_keymodState &= ~XBMCKMOD_LCTRL; ++ break; ++ case XBMCK_RCTRL: ++ WinEvents->m_keymodState &= ~XBMCKMOD_RCTRL; ++ break; ++ case XBMCK_LALT: ++ WinEvents->m_keymodState &= ~XBMCKMOD_LALT; ++ break; ++ case XBMCK_RALT: ++ WinEvents->m_keymodState &= ~XBMCKMOD_RCTRL; ++ break; ++ case XBMCK_LMETA: ++ WinEvents->m_keymodState &= ~XBMCKMOD_LMETA; ++ break; ++ case XBMCK_RMETA: ++ WinEvents->m_keymodState &= ~XBMCKMOD_RMETA; ++ break; ++ case XBMCK_MODE: ++ WinEvents->m_keymodState &= ~XBMCKMOD_MODE; ++ break; ++ default: ++ break; ++ } ++ event.key.keysym.mod = (XBMCMod)WinEvents->m_keymodState; ++ memset(&(WinEvents->m_lastKey), 0, sizeof(event)); ++ } ++ ++ return g_application.OnEvent(event); ++} ++ ++bool CWinEventsX11::ProcessShortcuts(XBMC_Event& event) ++{ ++ if (event.key.keysym.mod & XBMCKMOD_ALT) ++ { ++ switch(event.key.keysym.sym) ++ { ++ case XBMCK_TAB: // ALT+TAB to minimize/hide ++ g_application.Minimize(); ++ return true; ++ ++ default: ++ return false; ++ } ++ } ++ return false; ++} ++ ++bool CWinEventsX11::ProcessKeyRepeat() ++{ ++ if (WinEvents && (WinEvents->m_lastKey.type == XBMC_KEYDOWN)) ++ { ++ if (WinEvents->m_repeatKeyTimeout.IsTimePast()) ++ { ++ return ProcessKey(WinEvents->m_lastKey, 10); ++ } ++ } ++ return false; ++} ++ ++int CWinEventsX11::Utf8ToUnicode(const char *utf8, const int utf8Length, uint16_t *utf16, const int utf16MaxLength) ++{ ++ // p moves over the output buffer. max_ptr points to the next to the last slot of the buffer. ++ uint16_t *p = utf16; ++ uint16_t const *const maxPtr = utf16 + utf16MaxLength; ++ ++ // end_of_input points to the last byte of input as opposed to the next to the last byte. ++ char const *const endOfInput = utf8 + utf8Length - 1; ++ ++ while (utf8 <= endOfInput) ++ { ++ unsigned char const c = *utf8; ++ if (p >= maxPtr) ++ { ++ //No more output space. ++ return -1; ++ } ++ if (c < 0x80) ++ { ++ //One byte ASCII. ++ *p++ = c; ++ utf8 += 1; ++ } ++ else if (c < 0xC0) ++ { ++ // Follower byte without preceding leader bytes. ++ return -1; ++ } ++ // 11 bits ++ else if (c < 0xE0) ++ { ++ // Two byte sequence. We need one follower byte. ++ if (endOfInput - utf8 < 1 || (((utf8[1] ^ 0x80)) & 0xC0)) ++ { ++ return -1; ++ } ++ *p++ = (uint16_t)(((c & 0x1F) << 6) + (utf8[1] & 0x3F)); ++ utf8 += 2; ++ } ++ // 16 bis ++ else if (c < 0xF0) ++ { ++ // Three byte sequence. We need two follower byte. ++ if (endOfInput - utf8 < 2 || ((utf8[1] ^ 0x80) & 0xC0) || ((utf8[2] ^ 0x80) & 0xC0)) ++ { ++ return -1; ++ } ++ *p++ = (uint16_t)(((c & 0xF) << 12) + ((utf8[1] & 0x3F) << 6) + (utf8[2] & 0x3F)); ++ utf8 += 3; ++ } ++ // 21 bits ++ else if (c < 0xF8) ++ { ++ int plane; ++ // Four byte sequence. We need three follower bytes. ++ if (endOfInput - utf8 < 3 || ((utf8[1] ^ 0x80) & 0xC0) || ++ ((utf8[2] ^ 0x80) & 0xC0) || ((utf8[3] ^ 0x80) & 0xC0)) ++ { ++ return -1; ++ } ++ uint32_t unicode = ((c & 0x7) << 18) + ((utf8[1] & 0x3F) << 12) + ++ ((utf8[2] & 0x3F) << 6) + (utf8[3] & 0x3F); ++ utf8 += 4; ++ CLog::Log(LOGERROR, "CWinEventsX11::Utf8ToUnicode: 4 byte unicode not supported"); ++ } ++ // 26 bits ++ else if (c < 0xFC) ++ { ++ CLog::Log(LOGERROR, "CWinEventsX11::Utf8ToUnicode: 4 byte unicode not supported"); ++ utf8 += 5; ++ } ++ // 31 bit ++ else ++ { ++ CLog::Log(LOGERROR, "CWinEventsX11::Utf8ToUnicode: 4 byte unicode not supported"); ++ utf8 += 6; ++ } ++ } ++ return p - utf16; ++} ++ ++XBMCKey CWinEventsX11::LookupXbmcKeySym(KeySym keysym) ++{ ++ // try direct mapping first ++ std::map::iterator it; ++ it = WinEvents->m_symLookupTable.find(keysym); ++ if (it != WinEvents->m_symLookupTable.end()) ++ { ++ return (XBMCKey)(it->second); ++ } ++ ++ // try ascii mappings ++ if (keysym>>8 == 0x00) ++ return (XBMCKey)(keysym & 0xFF); ++ ++ return (XBMCKey)keysym; ++} ++#endif +diff --git a/xbmc/windowing/WinEventsX11.h b/xbmc/windowing/WinEventsX11.h +new file mode 100644 +index 0000000..e9b7553 +--- /dev/null ++++ b/xbmc/windowing/WinEventsX11.h +@@ -0,0 +1,57 @@ ++/* ++* Copyright (C) 2005-2012 Team XBMC ++* http://www.xbmc.org ++* ++* This Program is free software; you can redistribute it and/or modify ++* it under the terms of the GNU General Public License as published by ++* the Free Software Foundation; either version 2, or (at your option) ++* any later version. ++* ++* This Program is distributed in the hope that it will be useful, ++* but WITHOUT ANY WARRANTY; without even the implied warranty of ++* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++* GNU General Public License for more details. ++* ++* You should have received a copy of the GNU General Public License ++* along with XBMC; see the file COPYING. If not, write to ++* the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. ++* http://www.gnu.org/copyleft/gpl.html ++* ++*/ ++#pragma once ++ ++#include "WinEvents.h" ++#include ++#include "threads/SystemClock.h" ++#include ++ ++class CWinEventsX11 : public CWinEventsBase ++{ ++public: ++ CWinEventsX11(); ++ virtual ~CWinEventsX11(); ++ static bool Init(Display *dpy, Window win); ++ static void Quit(); ++ static bool HasStructureChanged(); ++ static bool MessagePump(); ++ ++protected: ++ static int Utf8ToUnicode(const char *utf8, const int utf8Length, uint16_t *utf16, const int utf16MaxLength); ++ static XBMCKey LookupXbmcKeySym(KeySym keysym); ++ static bool ProcessKey(XBMC_Event &event, int repeatDelay); ++ static bool ProcessKeyRepeat(); ++ static bool ProcessShortcuts(XBMC_Event& event); ++ static CWinEventsX11 *WinEvents; ++ Display *m_display; ++ Window m_window; ++ Atom m_wmDeleteMessage; ++ char *m_keybuf; ++ uint16_t *m_utf16buf; ++ XIM m_xim; ++ XIC m_xic; ++ XBMC_Event m_lastKey; ++ XbmcThreads::EndTime m_repeatKeyTimeout; ++ std::map m_symLookupTable; ++ int m_keymodState; ++ bool m_structureChanged; ++}; +diff --git a/xbmc/windowing/X11/WinSystemX11.cpp b/xbmc/windowing/X11/WinSystemX11.cpp +index a839709..76ef462 100644 +--- a/xbmc/windowing/X11/WinSystemX11.cpp ++++ b/xbmc/windowing/X11/WinSystemX11.cpp +@@ -22,7 +22,6 @@ + + #ifdef HAS_GLX + +-#include + #include "WinSystemX11.h" + #include "settings/Settings.h" + #include "guilib/Texture.h" +@@ -31,27 +30,30 @@ + #include "XRandR.h" + #include + #include "threads/SingleLock.h" +-#include + #include "cores/VideoRenderers/RenderManager.h" + #include "utils/TimeUtils.h" ++#include "settings/GUISettings.h" + + #if defined(HAS_XRANDR) + #include + #endif + ++#include "../WinEvents.h" ++#include "input/MouseStat.h" ++ + using namespace std; + + CWinSystemX11::CWinSystemX11() : CWinSystemBase() + { + m_eWindowSystem = WINDOW_SYSTEM_X11; + m_glContext = NULL; +- m_SDLSurface = NULL; + m_dpy = NULL; + m_glWindow = 0; +- m_wmWindow = 0; + m_bWasFullScreenBeforeMinimize = false; + m_minimized = false; ++ m_bIgnoreNextFocusMessage = false; + m_dpyLostTime = 0; ++ m_invisibleCursor = 0; + + XSetErrorHandler(XErrorHandler); + } +@@ -64,18 +66,6 @@ bool CWinSystemX11::InitWindowSystem() + { + if ((m_dpy = XOpenDisplay(NULL))) + { +- +- SDL_EnableUNICODE(1); +- // set repeat to 10ms to ensure repeat time < frame time +- // so that hold times can be reliably detected +- SDL_EnableKeyRepeat(SDL_DEFAULT_REPEAT_DELAY, 10); +- +- SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 8); +- SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 8); +- SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 8); +- SDL_GL_SetAttribute(SDL_GL_ALPHA_SIZE, 8); +- SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1); +- + return CWinSystemBase::InitWindowSystem(); + } + else +@@ -113,45 +103,37 @@ bool CWinSystemX11::DestroyWindowSystem() + + bool CWinSystemX11::CreateNewWindow(const CStdString& name, bool fullScreen, RESOLUTION_INFO& res, PHANDLE_EVENT_FUNC userFunction) + { +- RESOLUTION_INFO& desktop = g_settings.m_ResInfo[RES_DESKTOP]; +- +- if (fullScreen && +- (res.iWidth != desktop.iWidth || res.iHeight != desktop.iHeight || +- res.fRefreshRate != desktop.fRefreshRate || res.iScreen != desktop.iScreen)) +- { +- //on the first call to SDL_SetVideoMode, SDL stores the current displaymode +- //SDL restores the displaymode on SDL_QUIT(), if we change the displaymode +- //before the first call to SDL_SetVideoMode, SDL changes the displaymode back +- //to the wrong mode on exit +- +- CLog::Log(LOGINFO, "CWinSystemX11::CreateNewWindow initializing to desktop resolution first"); +- if (!SetFullScreen(true, desktop, false)) +- return false; +- } +- + if(!SetFullScreen(fullScreen, res, false)) + return false; + +- CBaseTexture* iconTexture = CTexture::LoadFromFile("special://xbmc/media/icon.png"); +- +- if (iconTexture) +- SDL_WM_SetIcon(SDL_CreateRGBSurfaceFrom(iconTexture->GetPixels(), iconTexture->GetWidth(), iconTexture->GetHeight(), 32, iconTexture->GetPitch(), 0xff0000, 0x00ff00, 0x0000ff, 0xff000000L), NULL); +- SDL_WM_SetCaption("XBMC Media Center", NULL); +- delete iconTexture; +- +- // register XRandR Events +-#if defined(HAS_XRANDR) +- int iReturn; +- XRRQueryExtension(m_dpy, &m_RREventBase, &iReturn); +- XRRSelectInput(m_dpy, m_wmWindow, RRScreenChangeNotifyMask); +-#endif +- + m_bWindowCreated = true; + return true; + } + + bool CWinSystemX11::DestroyWindow() + { ++ if (!m_glWindow) ++ return true; ++ ++ if (m_glContext) ++ glXMakeCurrent(m_dpy, None, NULL); ++ ++ if (m_invisibleCursor) ++ { ++ XUndefineCursor(m_dpy, m_glWindow); ++ XFreeCursor(m_dpy, m_invisibleCursor); ++ m_invisibleCursor = 0; ++ } ++ ++ CWinEvents::Quit(); ++ ++ XUnmapWindow(m_dpy, m_glWindow); ++ XSync(m_dpy,TRUE); ++ XUngrabKeyboard(m_dpy, CurrentTime); ++ XUngrabPointer(m_dpy, CurrentTime); ++ XDestroyWindow(m_dpy, m_glWindow); ++ m_glWindow = 0; ++ + return true; + } + +@@ -161,65 +143,105 @@ bool CWinSystemX11::ResizeWindow(int newWidth, int newHeight, int newLeft, int n + && m_nHeight == newHeight) + return true; + ++ if (!SetWindow(newWidth, newHeight, false)) ++ { ++ return false; ++ } ++ ++ RefreshGlxContext(); + m_nWidth = newWidth; + m_nHeight = newHeight; ++ m_bFullScreen = false; + +- int options = SDL_OPENGL; +- if (m_bFullScreen) +- options |= SDL_FULLSCREEN; +- else +- options |= SDL_RESIZABLE; ++ return false; ++} ++ ++void CWinSystemX11::RefreshWindow() ++{ ++ g_xrandr.Query(true); ++ XOutput out = g_xrandr.GetCurrentOutput(); ++ XMode mode = g_xrandr.GetCurrentMode(out.name); + +- if ((m_SDLSurface = SDL_SetVideoMode(m_nWidth, m_nHeight, 0, options))) ++ // only overwrite desktop resolution, if we are not in fullscreen mode ++ if (!g_graphicsContext.IsFullScreenVideo()) + { +- RefreshGlxContext(); +- return true; ++ CLog::Log(LOGDEBUG, "CWinSystemX11::RefreshWindow - store desktop resolution, width: %d, height: %d, hz: %2.2f", mode.w, mode.h, mode.hz); ++ UpdateDesktopResolution(g_settings.m_ResInfo[RES_DESKTOP], 0, mode.w, mode.h, mode.hz); ++ g_settings.m_ResInfo[RES_DESKTOP].strId = mode.id; ++ g_settings.m_ResInfo[RES_DESKTOP].strOutput = out.name; + } + +- return false; ++ RESOLUTION_INFO res; ++ unsigned int i; ++ bool found(false); ++ for (i = RES_DESKTOP; i < g_settings.m_ResInfo.size(); ++i) ++ { ++ if (g_settings.m_ResInfo[i].strId == mode.id) ++ { ++ found = true; ++ break; ++ } ++ } ++ ++ if (!found) ++ { ++ CLog::Log(LOGERROR, "CWinSystemX11::RefreshWindow - could not find resolution"); ++ return; ++ } ++ ++ if (g_graphicsContext.IsFullScreenRoot()) ++ g_graphicsContext.SetVideoResolution((RESOLUTION)i, true); ++ else ++ g_graphicsContext.SetVideoResolution(RES_WINDOW, true); + } + + bool CWinSystemX11::SetFullScreen(bool fullScreen, RESOLUTION_INFO& res, bool blankOtherDisplays) + { +- m_nWidth = res.iWidth; +- m_nHeight = res.iHeight; +- m_bFullScreen = fullScreen; + + #if defined(HAS_XRANDR) + XOutput out; + XMode mode; +- out.name = res.strOutput; +- mode.w = res.iWidth; +- mode.h = res.iHeight; +- mode.hz = res.fRefreshRate; +- mode.id = res.strId; ++ ++ if (fullScreen) ++ { ++ out.name = res.strOutput; ++ mode.w = res.iWidth; ++ mode.h = res.iHeight; ++ mode.hz = res.fRefreshRate; ++ mode.id = res.strId; ++ } ++ else ++ { ++ out.name = g_settings.m_ResInfo[RES_DESKTOP].strOutput; ++ mode.w = g_settings.m_ResInfo[RES_DESKTOP].iWidth; ++ mode.h = g_settings.m_ResInfo[RES_DESKTOP].iHeight; ++ mode.hz = g_settings.m_ResInfo[RES_DESKTOP].fRefreshRate; ++ mode.id = g_settings.m_ResInfo[RES_DESKTOP].strId; ++ } + +- if(m_bFullScreen) ++ XOutput currout = g_xrandr.GetCurrentOutput(); ++ XMode currmode = g_xrandr.GetCurrentMode(currout.name); ++ ++ // only call xrandr if mode changes ++ if (currout.name != out.name || currmode.w != mode.w || currmode.h != mode.h || ++ currmode.hz != mode.hz || currmode.id != mode.id) + { ++ CLog::Log(LOGNOTICE, "CWinSystemX11::SetFullScreen - calling xrandr"); + OnLostDevice(); + g_xrandr.SetMode(out, mode); + } +- else +- g_xrandr.RestoreState(); + #endif + +- int options = SDL_OPENGL; +- if (m_bFullScreen) +- options |= SDL_FULLSCREEN; +- else +- options |= SDL_RESIZABLE; +- +- if ((m_SDLSurface = SDL_SetVideoMode(m_nWidth, m_nHeight, 0, options))) +- { +- if ((m_SDLSurface->flags & SDL_OPENGL) != SDL_OPENGL) +- CLog::Log(LOGERROR, "CWinSystemX11::SetFullScreen SDL_OPENGL not set, SDL_GetError:%s", SDL_GetError()); ++ if (!SetWindow(res.iWidth, res.iHeight, fullScreen)) ++ return false; + +- RefreshGlxContext(); ++ RefreshGlxContext(); + +- return true; +- } ++ m_nWidth = res.iWidth; ++ m_nHeight = res.iHeight; ++ m_bFullScreen = fullScreen; + +- return false; ++ return true; + } + + void CWinSystemX11::UpdateResolutions() +@@ -321,17 +343,10 @@ bool CWinSystemX11::IsSuitableVisual(XVisualInfo *vInfo) + bool CWinSystemX11::RefreshGlxContext() + { + bool retVal = false; +- SDL_SysWMinfo info; +- SDL_VERSION(&info.version); +- if (SDL_GetWMInfo(&info) <= 0) +- { +- CLog::Log(LOGERROR, "Failed to get window manager info from SDL"); +- return false; +- } + +- if(m_glWindow == info.info.x11.window && m_glContext) ++ if (m_glContext) + { +- CLog::Log(LOGERROR, "GLX: Same window as before, refreshing context"); ++ CLog::Log(LOGDEBUG, "CWinSystemX11::RefreshGlxContext: refreshing context"); + glXMakeCurrent(m_dpy, None, NULL); + glXMakeCurrent(m_dpy, m_glWindow, m_glContext); + return true; +@@ -343,8 +358,6 @@ bool CWinSystemX11::RefreshGlxContext() + int availableVisuals = 0; + vMask.screen = DefaultScreen(m_dpy); + XWindowAttributes winAttr; +- m_glWindow = info.info.x11.window; +- m_wmWindow = info.info.x11.wmwindow; + + /* Assume a depth of 24 in case the below calls to XGetWindowAttributes() + or XGetVisualInfo() fail. That shouldn't happen unless something is +@@ -415,7 +428,10 @@ bool CWinSystemX11::RefreshGlxContext() + + void CWinSystemX11::ShowOSMouse(bool show) + { +- SDL_ShowCursor(show ? 1 : 0); ++ if (show) ++ XUndefineCursor(m_dpy,m_glWindow); ++ else if (m_invisibleCursor) ++ XDefineCursor(m_dpy,m_glWindow, m_invisibleCursor); + } + + void CWinSystemX11::ResetOSScreensaver() +@@ -429,8 +445,6 @@ void CWinSystemX11::ResetOSScreensaver() + { + m_screensaverReset.StartZero(); + XResetScreenSaver(m_dpy); +- //need to flush the output buffer, since we don't check for events on m_dpy +- XFlush(m_dpy); + } + } + else +@@ -446,13 +460,27 @@ void CWinSystemX11::NotifyAppActiveChange(bool bActivated) + + m_minimized = !bActivated; + } ++ ++void CWinSystemX11::NotifyAppFocusChange(bool bGaining) ++{ ++ if (bGaining && m_bWasFullScreenBeforeMinimize && !m_bIgnoreNextFocusMessage && ++ !g_graphicsContext.IsFullScreenRoot()) ++ g_graphicsContext.ToggleFullScreenRoot(); ++ if (!bGaining) ++ m_bIgnoreNextFocusMessage = false; ++} ++ + bool CWinSystemX11::Minimize() + { + m_bWasFullScreenBeforeMinimize = g_graphicsContext.IsFullScreenRoot(); + if (m_bWasFullScreenBeforeMinimize) ++ { ++ m_bIgnoreNextFocusMessage = true; + g_graphicsContext.ToggleFullScreenRoot(); ++ } ++ ++ XIconifyWindow(m_dpy, m_glWindow, DefaultScreen(m_dpy)); + +- SDL_WM_IconifyWindow(); + m_minimized = true; + return true; + } +@@ -462,13 +490,13 @@ bool CWinSystemX11::Restore() + } + bool CWinSystemX11::Hide() + { +- XUnmapWindow(m_dpy, m_wmWindow); ++ XUnmapWindow(m_dpy, m_glWindow); + XSync(m_dpy, False); + return true; + } + bool CWinSystemX11::Show(bool raise) + { +- XMapWindow(m_dpy, m_wmWindow); ++ XMapWindow(m_dpy, m_glWindow); + XSync(m_dpy, False); + m_minimized = false; + return true; +@@ -500,6 +528,7 @@ void CWinSystemX11::CheckDisplayEvents() + if (bGotEvent || bTimeout) + { + CLog::Log(LOGDEBUG, "%s - notify display reset event", __FUNCTION__); ++ RefreshWindow(); + + CSingleLock lock(m_resourceSection); + +@@ -558,4 +587,151 @@ bool CWinSystemX11::EnableFrameLimiter() + return m_minimized; + } + ++bool CWinSystemX11::SetWindow(int width, int height, bool fullscreen) ++{ ++ bool changeWindow = false; ++ bool changeSize = false; ++ bool mouseActive = false; ++ float mouseX, mouseY; ++ ++ if (m_glWindow && (m_bFullScreen != fullscreen)) ++ { ++ mouseActive = g_Mouse.IsActive(); ++ if (mouseActive) ++ { ++ Window root_return, child_return; ++ int root_x_return, root_y_return; ++ int win_x_return, win_y_return; ++ unsigned int mask_return; ++ bool isInWin = XQueryPointer(m_dpy, m_glWindow, &root_return, &child_return, ++ &root_x_return, &root_y_return, ++ &win_x_return, &win_y_return, ++ &mask_return); ++ if (isInWin) ++ { ++ mouseX = (float)win_x_return/m_nWidth; ++ mouseY = (float)win_y_return/m_nHeight; ++ g_Mouse.SetActive(false); ++ } ++ else ++ mouseActive = false; ++ } ++ DestroyWindow(); ++ } ++ ++ // create main window ++ if (!m_glWindow) ++ { ++ GLint att[] = ++ { ++ GLX_RGBA, ++ GLX_RED_SIZE, 8, ++ GLX_GREEN_SIZE, 8, ++ GLX_BLUE_SIZE, 8, ++ GLX_ALPHA_SIZE, 8, ++ GLX_DEPTH_SIZE, 24, ++ GLX_DOUBLEBUFFER, ++ None ++ }; ++ Colormap cmap; ++ XSetWindowAttributes swa; ++ XVisualInfo *vi; ++ ++ vi = glXChooseVisual(m_dpy, DefaultScreen(m_dpy), att); ++ cmap = XCreateColormap(m_dpy, RootWindow(m_dpy, vi->screen), vi->visual, AllocNone); ++ ++ int def_vis = (vi->visual == DefaultVisual(m_dpy, vi->screen)); ++ swa.override_redirect = fullscreen ? True : False; ++ swa.border_pixel = fullscreen ? 0 : 5; ++ swa.background_pixel = def_vis ? BlackPixel(m_dpy, vi->screen) : 0; ++ swa.colormap = cmap; ++ swa.background_pixel = def_vis ? BlackPixel(m_dpy, vi->screen) : 0; ++ swa.event_mask = FocusChangeMask | KeyPressMask | KeyReleaseMask | ++ ButtonPressMask | ButtonReleaseMask | PointerMotionMask | ++ PropertyChangeMask | StructureNotifyMask | KeymapStateMask | ++ EnterWindowMask | LeaveWindowMask | ExposureMask; ++ unsigned long mask = CWBackPixel | CWBorderPixel | CWColormap | CWOverrideRedirect | CWEventMask; ++ ++ m_glWindow = XCreateWindow(m_dpy, RootWindow(m_dpy, vi->screen), ++ 0, 0, width, height, 0, vi->depth, ++ InputOutput, vi->visual, ++ mask, &swa); ++ ++ // define invisible cursor ++ Pixmap bitmapNoData; ++ XColor black; ++ static char noData[] = { 0,0,0,0,0,0,0,0 }; ++ black.red = black.green = black.blue = 0; ++ ++ bitmapNoData = XCreateBitmapFromData(m_dpy, m_glWindow, noData, 8, 8); ++ m_invisibleCursor = XCreatePixmapCursor(m_dpy, bitmapNoData, bitmapNoData, ++ &black, &black, 0, 0); ++ XFreePixmap(m_dpy, bitmapNoData); ++ XDefineCursor(m_dpy,m_glWindow, m_invisibleCursor); ++ ++ //init X11 events ++ CWinEvents::Init(m_dpy, m_glWindow); ++ ++ changeWindow = true; ++ changeSize = true; ++ } ++ ++ if (!CWinEvents::HasStructureChanged() && ((width != m_nWidth) || (height != m_nHeight))) ++ { ++ changeSize = true; ++ } ++ ++ if (changeSize || changeWindow) ++ { ++ XResizeWindow(m_dpy, m_glWindow, width, height); ++ } ++ ++ if (changeWindow) ++ { ++ if (!fullscreen) ++ { ++ XWMHints wm_hints; ++ XClassHint class_hints; ++ XTextProperty windowName, iconName; ++ std::string titleString = "XBMC Media Center"; ++ char *title = (char*)titleString.c_str(); ++ ++ XStringListToTextProperty(&title, 1, &windowName); ++ XStringListToTextProperty(&title, 1, &iconName); ++ wm_hints.initial_state = NormalState; ++ wm_hints.input = True; ++ wm_hints.icon_pixmap = None; ++ wm_hints.flags = StateHint | IconPixmapHint | InputHint; ++ ++ XSetWMProperties(m_dpy, m_glWindow, &windowName, &iconName, ++ NULL, 0, NULL, &wm_hints, ++ NULL); ++ ++ // register interest in the delete window message ++ Atom wmDeleteMessage = XInternAtom(m_dpy, "WM_DELETE_WINDOW", False); ++ XSetWMProtocols(m_dpy, m_glWindow, &wmDeleteMessage, 1); ++ } ++ XMapRaised(m_dpy, m_glWindow); ++ XSync(m_dpy,TRUE); ++ ++ if (changeWindow && mouseActive) ++ { ++ XWarpPointer(m_dpy, None, m_glWindow, 0, 0, 0, 0, mouseX*width, mouseY*height); ++ } ++ ++ if (fullscreen) ++ { ++ int result = -1; ++ while (result != GrabSuccess) ++ { ++ result = XGrabPointer(m_dpy, m_glWindow, True, ButtonPressMask, GrabModeAsync, GrabModeAsync, m_glWindow, None, CurrentTime); ++ XbmcThreads::ThreadSleep(100); ++ } ++ XGrabKeyboard(m_dpy, m_glWindow, True, GrabModeAsync, GrabModeAsync, CurrentTime); ++ ++ } ++ } ++ return true; ++} ++ + #endif +diff --git a/xbmc/windowing/X11/WinSystemX11.h b/xbmc/windowing/X11/WinSystemX11.h +index 2dd8a9f..9616d17 100644 +--- a/xbmc/windowing/X11/WinSystemX11.h ++++ b/xbmc/windowing/X11/WinSystemX11.h +@@ -52,6 +52,7 @@ class CWinSystemX11 : public CWinSystemBase + virtual bool EnableFrameLimiter(); + + virtual void NotifyAppActiveChange(bool bActivated); ++ virtual void NotifyAppFocusChange(bool bGaining); + + virtual bool Minimize(); + virtual bool Restore() ; +@@ -64,19 +65,21 @@ class CWinSystemX11 : public CWinSystemBase + Display* GetDisplay() { return m_dpy; } + GLXWindow GetWindow() { return m_glWindow; } + GLXContext GetGlxContext() { return m_glContext; } ++ void RefreshWindow(); + + protected: + bool RefreshGlxContext(); + void CheckDisplayEvents(); + void OnLostDevice(); ++ bool SetWindow(int width, int height, bool fullscreen); + +- SDL_Surface* m_SDLSurface; ++ Window m_glWindow; + GLXContext m_glContext; +- GLXWindow m_glWindow; +- Window m_wmWindow; + Display* m_dpy; ++ Cursor m_invisibleCursor; + bool m_bWasFullScreenBeforeMinimize; + bool m_minimized; ++ bool m_bIgnoreNextFocusMessage; + int m_RREventBase; + CCriticalSection m_resourceSection; + std::vector m_resources; +-- +1.7.10 + + +From be2500400b4621859ce979a87c83937bf9d4bc80 Mon Sep 17 00:00:00 2001 +From: FernetMenta +Date: Thu, 5 Jul 2012 15:24:22 +0200 +Subject: [PATCH 14/51] X11: Add xbmc icon + +--- + xbmc/windowing/X11/WinSystemX11.cpp | 126 ++++++++++++++++++++++++++++++++++- + xbmc/windowing/X11/WinSystemX11.h | 2 + + 2 files changed, 127 insertions(+), 1 deletion(-) + +diff --git a/xbmc/windowing/X11/WinSystemX11.cpp b/xbmc/windowing/X11/WinSystemX11.cpp +index 76ef462..c854598 100644 +--- a/xbmc/windowing/X11/WinSystemX11.cpp ++++ b/xbmc/windowing/X11/WinSystemX11.cpp +@@ -134,6 +134,9 @@ bool CWinSystemX11::DestroyWindow() + XDestroyWindow(m_dpy, m_glWindow); + m_glWindow = 0; + ++ if (m_icon) ++ XFreePixmap(m_dpy, m_icon); ++ + return true; + } + +@@ -688,8 +691,10 @@ bool CWinSystemX11::SetWindow(int width, int height, bool fullscreen) + + if (changeWindow) + { ++ m_icon = None; + if (!fullscreen) + { ++ CreateIconPixmap(); + XWMHints wm_hints; + XClassHint class_hints; + XTextProperty windowName, iconName; +@@ -700,7 +705,7 @@ bool CWinSystemX11::SetWindow(int width, int height, bool fullscreen) + XStringListToTextProperty(&title, 1, &iconName); + wm_hints.initial_state = NormalState; + wm_hints.input = True; +- wm_hints.icon_pixmap = None; ++ wm_hints.icon_pixmap = m_icon; + wm_hints.flags = StateHint | IconPixmapHint | InputHint; + + XSetWMProperties(m_dpy, m_glWindow, &windowName, &iconName, +@@ -734,4 +739,123 @@ bool CWinSystemX11::SetWindow(int width, int height, bool fullscreen) + return true; + } + ++bool CWinSystemX11::CreateIconPixmap() ++{ ++ int depth; ++ XImage *img = NULL; ++ Visual *vis; ++ XWindowAttributes wndattribs; ++ XVisualInfo visInfo; ++ double rRatio; ++ double gRatio; ++ double bRatio; ++ int outIndex = 0; ++ int i,j; ++ int numBufBytes; ++ unsigned char *buf; ++ uint32_t *newBuf = 0; ++ size_t numNewBufBytes; ++ ++ // Get visual Info ++ XGetWindowAttributes(m_dpy, m_glWindow, &wndattribs); ++ visInfo.visualid = wndattribs.visual->visualid; ++ int nvisuals = 0; ++ XVisualInfo* visuals = XGetVisualInfo(m_dpy, VisualIDMask, &visInfo, &nvisuals); ++ if (nvisuals != 1) ++ { ++ CLog::Log(LOGERROR, "CWinSystemX11::CreateIconPixmap - could not find visual"); ++ return false; ++ } ++ visInfo = visuals[0]; ++ XFree(visuals); ++ ++ depth = visInfo.depth; ++ vis = visInfo.visual; ++ ++ if (depth < 15) ++ { ++ CLog::Log(LOGERROR, "CWinSystemX11::CreateIconPixmap - no suitable depth"); ++ return false; ++ } ++ ++ rRatio = vis->red_mask / 255.0; ++ gRatio = vis->green_mask / 255.0; ++ bRatio = vis->blue_mask / 255.0; ++ ++ CTexture iconTexture; ++ iconTexture.LoadFromFile("special://xbmc/media/icon.png"); ++ buf = iconTexture.GetPixels(); ++ ++ numBufBytes = iconTexture.GetWidth() * iconTexture.GetHeight() * 4; ++ ++ if (depth>=24) ++ numNewBufBytes = (4 * (iconTexture.GetWidth() * iconTexture.GetHeight())); ++ else ++ numNewBufBytes = (2 * (iconTexture.GetWidth() * iconTexture.GetHeight())); ++ ++ newBuf = (uint32_t*)malloc(numNewBufBytes); ++ if (!newBuf) ++ { ++ CLog::Log(LOGERROR, "CWinSystemX11::CreateIconPixmap - malloc failed"); ++ return false; ++ } ++ ++ for (i=0; ired_mask; ++ g &= vis->green_mask; ++ b &= vis->blue_mask; ++ newBuf[outIndex] = r | g | b; ++ ++outIndex; ++ } ++ } ++ img = XCreateImage(m_dpy, vis, depth,ZPixmap, 0, (char *)newBuf, ++ iconTexture.GetWidth(), iconTexture.GetHeight(), ++ (depth>=24)?32:16, 0); ++ if (!img) ++ { ++ CLog::Log(LOGERROR, "CWinSystemX11::CreateIconPixmap - could not create image"); ++ free(newBuf); ++ return false; ++ } ++ if (!XInitImage(img)) ++ { ++ CLog::Log(LOGERROR, "CWinSystemX11::CreateIconPixmap - init image failed"); ++ XDestroyImage(img); ++ return false; ++ } ++ ++ // set byte order ++ union ++ { ++ char c[sizeof(short)]; ++ short s; ++ } order; ++ order.s = 1; ++ if ((1 == order.c[0])) ++ { ++ img->byte_order = LSBFirst; ++ } ++ else ++ { ++ img->byte_order = MSBFirst; ++ } ++ ++ // create icon pixmap from image ++ m_icon = XCreatePixmap(m_dpy, m_glWindow, img->width, img->height, depth); ++ GC gc = XCreateGC(m_dpy, m_glWindow, 0, NULL); ++ XPutImage(m_dpy, m_icon, gc, img, 0, 0, 0, 0, img->width, img->height); ++ XFreeGC(m_dpy, gc); ++ XDestroyImage(img); // this also frees newBuf ++ ++ return true; ++} ++ + #endif +diff --git a/xbmc/windowing/X11/WinSystemX11.h b/xbmc/windowing/X11/WinSystemX11.h +index 9616d17..debf714 100644 +--- a/xbmc/windowing/X11/WinSystemX11.h ++++ b/xbmc/windowing/X11/WinSystemX11.h +@@ -77,6 +77,7 @@ class CWinSystemX11 : public CWinSystemBase + GLXContext m_glContext; + Display* m_dpy; + Cursor m_invisibleCursor; ++ Pixmap m_icon; + bool m_bWasFullScreenBeforeMinimize; + bool m_minimized; + bool m_bIgnoreNextFocusMessage; +@@ -88,6 +89,7 @@ class CWinSystemX11 : public CWinSystemBase + private: + bool IsSuitableVisual(XVisualInfo *vInfo); + static int XErrorHandler(Display* dpy, XErrorEvent* error); ++ bool CreateIconPixmap(); + + CStopWatch m_screensaverReset; + }; +-- +1.7.10 + + +From 03fa5d2152ba769038f6c1d9b7885c7848d98248 Mon Sep 17 00:00:00 2001 +From: xbmc +Date: Sun, 20 May 2012 14:11:26 +0200 +Subject: [PATCH 15/51] X11: add SDL joystick until we have a better solution + +--- + xbmc/windowing/WinEventsX11.cpp | 26 ++++++++++++++++++++++++++ + 1 file changed, 26 insertions(+) + +diff --git a/xbmc/windowing/WinEventsX11.cpp b/xbmc/windowing/WinEventsX11.cpp +index 24477ae..2ec86a8 100644 +--- a/xbmc/windowing/WinEventsX11.cpp ++++ b/xbmc/windowing/WinEventsX11.cpp +@@ -35,6 +35,10 @@ + #include "guilib/GUIWindowManager.h" + #include "input/MouseStat.h" + ++#ifdef HAS_SDL_JOYSTICK ++#include "input/SDLJoystick.h" ++#endif ++ + CWinEventsX11* CWinEventsX11::WinEvents = 0; + + static uint32_t SymMappingsX11[][2] = +@@ -547,6 +551,28 @@ bool CWinEventsX11::MessagePump() + + ret |= ProcessKeyRepeat(); + ++#ifdef HAS_SDL_JOYSTICK ++ SDL_Event event; ++ while (SDL_PollEvent(&event)) ++ { ++ switch(event.type) ++ { ++ case SDL_JOYBUTTONUP: ++ case SDL_JOYBUTTONDOWN: ++ case SDL_JOYAXISMOTION: ++ case SDL_JOYBALLMOTION: ++ case SDL_JOYHATMOTION: ++ g_Joystick.Update(event); ++ ret = true; ++ break; ++ ++ default: ++ break; ++ } ++ memset(&event, 0, sizeof(SDL_Event)); ++ } ++#endif ++ + return ret; + } + +-- +1.7.10 + + +From 77246aed9e48f4b8d6767fd26a54b260d952107f Mon Sep 17 00:00:00 2001 +From: Joakim Plate +Date: Thu, 5 Jul 2012 12:35:55 +0200 +Subject: [PATCH 16/51] X11: factor out code handling device reset + notification + +--- + xbmc/windowing/X11/WinSystemX11.cpp | 22 ++++++++++++++-------- + xbmc/windowing/X11/WinSystemX11.h | 1 + + 2 files changed, 15 insertions(+), 8 deletions(-) + +diff --git a/xbmc/windowing/X11/WinSystemX11.cpp b/xbmc/windowing/X11/WinSystemX11.cpp +index c854598..70557d0 100644 +--- a/xbmc/windowing/X11/WinSystemX11.cpp ++++ b/xbmc/windowing/X11/WinSystemX11.cpp +@@ -530,14 +530,7 @@ void CWinSystemX11::CheckDisplayEvents() + + if (bGotEvent || bTimeout) + { +- CLog::Log(LOGDEBUG, "%s - notify display reset event", __FUNCTION__); +- RefreshWindow(); +- +- CSingleLock lock(m_resourceSection); +- +- // tell any shared resources +- for (vector::iterator i = m_resources.begin(); i != m_resources.end(); i++) +- (*i)->OnResetDevice(); ++ NotifyXRREvent(); + + // reset fail safe timer + m_dpyLostTime = 0; +@@ -545,6 +538,19 @@ void CWinSystemX11::CheckDisplayEvents() + #endif + } + ++void CWinSystemX11::NotifyXRREvent() ++{ ++ CLog::Log(LOGDEBUG, "%s - notify display reset event", __FUNCTION__); ++ RefreshWindow(); ++ ++ CSingleLock lock(m_resourceSection); ++ ++ // tell any shared resources ++ for (vector::iterator i = m_resources.begin(); i != m_resources.end(); i++) ++ (*i)->OnResetDevice(); ++ ++} ++ + void CWinSystemX11::OnLostDevice() + { + CLog::Log(LOGDEBUG, "%s - notify display change event", __FUNCTION__); +diff --git a/xbmc/windowing/X11/WinSystemX11.h b/xbmc/windowing/X11/WinSystemX11.h +index debf714..8c28e3f 100644 +--- a/xbmc/windowing/X11/WinSystemX11.h ++++ b/xbmc/windowing/X11/WinSystemX11.h +@@ -66,6 +66,7 @@ class CWinSystemX11 : public CWinSystemBase + GLXWindow GetWindow() { return m_glWindow; } + GLXContext GetGlxContext() { return m_glContext; } + void RefreshWindow(); ++ void NotifyXRREvent(); + + protected: + bool RefreshGlxContext(); +-- +1.7.10 + + +From 81fd522c72272490abb9109b59dd0c5dd44c42a9 Mon Sep 17 00:00:00 2001 +From: FernetMenta +Date: Thu, 5 Jul 2012 15:02:00 +0200 +Subject: [PATCH 17/51] X11: move xrandr events to WinEventsX11 + +--- + xbmc/windowing/WinEventsX11.cpp | 42 +++++++++++++++++++++++++++++++++++ + xbmc/windowing/WinEventsX11.h | 5 +++++ + xbmc/windowing/X11/WinSystemX11.cpp | 6 ++++- + 3 files changed, 52 insertions(+), 1 deletion(-) + +diff --git a/xbmc/windowing/WinEventsX11.cpp b/xbmc/windowing/WinEventsX11.cpp +index 2ec86a8..5946a33 100644 +--- a/xbmc/windowing/WinEventsX11.cpp ++++ b/xbmc/windowing/WinEventsX11.cpp +@@ -35,6 +35,10 @@ + #include "guilib/GUIWindowManager.h" + #include "input/MouseStat.h" + ++#if defined(HAS_XRANDR) ++#include ++#endif ++ + #ifdef HAS_SDL_JOYSTICK + #include "input/SDLJoystick.h" + #endif +@@ -203,6 +207,7 @@ bool CWinEventsX11::Init(Display *dpy, Window win) + WinEvents->m_keymodState = 0; + WinEvents->m_wmDeleteMessage = XInternAtom(dpy, "WM_DELETE_WINDOW", False); + WinEvents->m_structureChanged = false; ++ WinEvents->m_xrrEventPending = false; + memset(&(WinEvents->m_lastKey), 0, sizeof(XBMC_Event)); + + // open input method +@@ -266,6 +271,13 @@ bool CWinEventsX11::Init(Display *dpy, Window win) + WinEvents->m_symLookupTable[SymMappingsX11[i][0]] = SymMappingsX11[i][1]; + } + ++ // register for xrandr events ++#if defined(HAS_XRANDR) ++ int iReturn; ++ XRRQueryExtension(WinEvents->m_display, &WinEvents->m_RREventBase, &iReturn); ++ XRRSelectInput(WinEvents->m_display, WinEvents->m_window, RRScreenChangeNotifyMask); ++#endif ++ + return true; + } + +@@ -288,6 +300,15 @@ bool CWinEventsX11::HasStructureChanged() + return ret; + } + ++void CWinEventsX11::SetXRRFailSafeTimer(int millis) ++{ ++ if (!WinEvents) ++ return; ++ ++ WinEvents->m_xrrFailSafeTimer.Set(millis); ++ WinEvents->m_xrrEventPending = true; ++} ++ + bool CWinEventsX11::MessagePump() + { + if (!WinEvents) +@@ -547,10 +568,31 @@ bool CWinEventsX11::MessagePump() + break; + } + }// switch event.type ++ ++#if defined(HAS_XRANDR) ++ if (WinEvents && (xevent.type == WinEvents->m_RREventBase + RRScreenChangeNotify)) ++ { ++ XRRUpdateConfiguration(&xevent); ++ if (xevent.xgeneric.serial != serial) ++ g_Windowing.NotifyXRREvent(); ++ WinEvents->m_xrrEventPending = false; ++ serial = xevent.xgeneric.serial; ++ } ++#endif ++ + }// while + + ret |= ProcessKeyRepeat(); + ++#if defined(HAS_XRANDR) ++ if (WinEvents && WinEvents->m_xrrEventPending && WinEvents->m_xrrFailSafeTimer.IsTimePast()) ++ { ++ CLog::Log(LOGERROR,"CWinEventsX11::MessagePump - missed XRR Events"); ++ g_Windowing.NotifyXRREvent(); ++ WinEvents->m_xrrEventPending = false; ++ } ++#endif ++ + #ifdef HAS_SDL_JOYSTICK + SDL_Event event; + while (SDL_PollEvent(&event)) +diff --git a/xbmc/windowing/WinEventsX11.h b/xbmc/windowing/WinEventsX11.h +index e9b7553..6100933 100644 +--- a/xbmc/windowing/WinEventsX11.h ++++ b/xbmc/windowing/WinEventsX11.h +@@ -33,6 +33,8 @@ class CWinEventsX11 : public CWinEventsBase + static bool Init(Display *dpy, Window win); + static void Quit(); + static bool HasStructureChanged(); ++ static void PendingResize(int width, int height); ++ static void SetXRRFailSafeTimer(int millis); + static bool MessagePump(); + + protected: +@@ -54,4 +56,7 @@ class CWinEventsX11 : public CWinEventsBase + std::map m_symLookupTable; + int m_keymodState; + bool m_structureChanged; ++ int m_RREventBase; ++ XbmcThreads::EndTime m_xrrFailSafeTimer; ++ bool m_xrrEventPending; + }; +diff --git a/xbmc/windowing/X11/WinSystemX11.cpp b/xbmc/windowing/X11/WinSystemX11.cpp +index 70557d0..1cce843 100644 +--- a/xbmc/windowing/X11/WinSystemX11.cpp ++++ b/xbmc/windowing/X11/WinSystemX11.cpp +@@ -507,7 +507,7 @@ bool CWinSystemX11::Show(bool raise) + + void CWinSystemX11::CheckDisplayEvents() + { +-#if defined(HAS_XRANDR) ++#if defined(HAS_XRANDR) && defined(HAS_SDL_VIDEO_X11) + bool bGotEvent(false); + bool bTimeout(false); + XEvent Event; +@@ -563,8 +563,12 @@ void CWinSystemX11::OnLostDevice() + (*i)->OnLostDevice(); + } + ++#if defined(HAS_SDL_VIDEO_X11) + // fail safe timer + m_dpyLostTime = CurrentHostCounter(); ++#else ++ CWinEvents::SetXRRFailSafeTimer(3000); ++#endif + } + + void CWinSystemX11::Register(IDispResource *resource) +-- +1.7.10 + + +From cbcf832b573230feac635ca557fc11a1d699c152 Mon Sep 17 00:00:00 2001 +From: FernetMenta +Date: Thu, 12 Apr 2012 15:43:56 +0200 +Subject: [PATCH 18/51] xrandr: remove method RestoreState + +--- + xbmc/windowing/X11/WinSystemX11.cpp | 13 +++++++++++-- + xbmc/windowing/X11/XRandR.cpp | 19 ------------------- + xbmc/windowing/X11/XRandR.h | 1 - + 3 files changed, 11 insertions(+), 22 deletions(-) + +diff --git a/xbmc/windowing/X11/WinSystemX11.cpp b/xbmc/windowing/X11/WinSystemX11.cpp +index 1cce843..e13ffa4 100644 +--- a/xbmc/windowing/X11/WinSystemX11.cpp ++++ b/xbmc/windowing/X11/WinSystemX11.cpp +@@ -77,9 +77,18 @@ bool CWinSystemX11::InitWindowSystem() + bool CWinSystemX11::DestroyWindowSystem() + { + #if defined(HAS_XRANDR) +- //restore videomode on exit ++ //restore desktop resolution on exit + if (m_bFullScreen) +- g_xrandr.RestoreState(); ++ { ++ XOutput out; ++ XMode mode; ++ out.name = g_settings.m_ResInfo[RES_DESKTOP].strOutput; ++ mode.w = g_settings.m_ResInfo[RES_DESKTOP].iWidth; ++ mode.h = g_settings.m_ResInfo[RES_DESKTOP].iHeight; ++ mode.hz = g_settings.m_ResInfo[RES_DESKTOP].fRefreshRate; ++ mode.id = g_settings.m_ResInfo[RES_DESKTOP].strId; ++ g_xrandr.SetMode(out, mode); ++ } + #endif + + if (m_dpy) +diff --git a/xbmc/windowing/X11/XRandR.cpp b/xbmc/windowing/X11/XRandR.cpp +index d8e9161..59755a6 100644 +--- a/xbmc/windowing/X11/XRandR.cpp ++++ b/xbmc/windowing/X11/XRandR.cpp +@@ -139,25 +139,6 @@ void CXRandR::SaveState() + Query(true); + } + +-void CXRandR::RestoreState() +-{ +- vector::iterator outiter; +- for (outiter=m_current.begin() ; outiter!=m_current.end() ; outiter++) +- { +- vector modes = (*outiter).modes; +- vector::iterator modeiter; +- for (modeiter=modes.begin() ; modeiter!=modes.end() ; modeiter++) +- { +- XMode mode = *modeiter; +- if (mode.isCurrent) +- { +- SetMode(*outiter, mode); +- return; +- } +- } +- } +-} +- + bool CXRandR::SetMode(XOutput output, XMode mode) + { + if ((output.name == m_currentOutput && mode.id == m_currentMode) || (output.name == "" && mode.id == "")) +diff --git a/xbmc/windowing/X11/XRandR.h b/xbmc/windowing/X11/XRandR.h +index 2a269d0..5b64633 100644 +--- a/xbmc/windowing/X11/XRandR.h ++++ b/xbmc/windowing/X11/XRandR.h +@@ -99,7 +99,6 @@ class CXRandR + bool SetMode(XOutput output, XMode mode); + void LoadCustomModeLinesToAllOutputs(void); + void SaveState(); +- void RestoreState(); + //bool Has1080i(); + //bool Has1080p(); + //bool Has720p(); +-- +1.7.10 + + +From a8a9f857f14cac13c001344aab95fcf6d881cf30 Mon Sep 17 00:00:00 2001 +From: xbmc +Date: Sun, 20 May 2012 13:17:10 +0200 +Subject: [PATCH 19/51] xrandr: observe orientation + +--- + xbmc/windowing/X11/WinSystemX11.cpp | 61 +++++++++++++++++++++++++++++++++-- + xbmc/windowing/X11/WinSystemX11.h | 2 ++ + xbmc/windowing/X11/XRandR.cpp | 7 ++++ + xbmc/windowing/X11/XRandR.h | 1 + + 4 files changed, 68 insertions(+), 3 deletions(-) + +diff --git a/xbmc/windowing/X11/WinSystemX11.cpp b/xbmc/windowing/X11/WinSystemX11.cpp +index e13ffa4..6b0aa92 100644 +--- a/xbmc/windowing/X11/WinSystemX11.cpp ++++ b/xbmc/windowing/X11/WinSystemX11.cpp +@@ -170,15 +170,24 @@ bool CWinSystemX11::ResizeWindow(int newWidth, int newHeight, int newLeft, int n + + void CWinSystemX11::RefreshWindow() + { +- g_xrandr.Query(true); ++ if (!g_xrandr.Query(true)) ++ { ++ CLog::Log(LOGERROR, "WinSystemX11::RefreshWindow - failed to query xrandr"); ++ return; ++ } + XOutput out = g_xrandr.GetCurrentOutput(); + XMode mode = g_xrandr.GetCurrentMode(out.name); + ++ RotateResolutions(); ++ + // only overwrite desktop resolution, if we are not in fullscreen mode + if (!g_graphicsContext.IsFullScreenVideo()) + { + CLog::Log(LOGDEBUG, "CWinSystemX11::RefreshWindow - store desktop resolution, width: %d, height: %d, hz: %2.2f", mode.w, mode.h, mode.hz); +- UpdateDesktopResolution(g_settings.m_ResInfo[RES_DESKTOP], 0, mode.w, mode.h, mode.hz); ++ if (!out.isRotated) ++ UpdateDesktopResolution(g_settings.m_ResInfo[RES_DESKTOP], 0, mode.w, mode.h, mode.hz); ++ else ++ UpdateDesktopResolution(g_settings.m_ResInfo[RES_DESKTOP], 0, mode.h, mode.w, mode.hz); + g_settings.m_ResInfo[RES_DESKTOP].strId = mode.id; + g_settings.m_ResInfo[RES_DESKTOP].strOutput = out.name; + } +@@ -234,6 +243,14 @@ bool CWinSystemX11::SetFullScreen(bool fullScreen, RESOLUTION_INFO& res, bool bl + XOutput currout = g_xrandr.GetCurrentOutput(); + XMode currmode = g_xrandr.GetCurrentMode(currout.name); + ++ // flip h/w when rotated ++ if (m_bIsRotated) ++ { ++ int w = mode.w; ++ mode.w = mode.h; ++ mode.h = w; ++ } ++ + // only call xrandr if mode changes + if (currout.name != out.name || currmode.w != mode.w || currmode.h != mode.h || + currmode.hz != mode.hz || currmode.id != mode.id) +@@ -266,7 +283,11 @@ void CWinSystemX11::UpdateResolutions() + { + XOutput out = g_xrandr.GetCurrentOutput(); + XMode mode = g_xrandr.GetCurrentMode(out.name); +- UpdateDesktopResolution(g_settings.m_ResInfo[RES_DESKTOP], 0, mode.w, mode.h, mode.hz); ++ m_bIsRotated = out.isRotated; ++ if (!m_bIsRotated) ++ UpdateDesktopResolution(g_settings.m_ResInfo[RES_DESKTOP], 0, mode.w, mode.h, mode.hz); ++ else ++ UpdateDesktopResolution(g_settings.m_ResInfo[RES_DESKTOP], 0, mode.h, mode.w, mode.hz); + g_settings.m_ResInfo[RES_DESKTOP].strId = mode.id; + g_settings.m_ResInfo[RES_DESKTOP].strOutput = out.name; + } +@@ -305,6 +326,16 @@ void CWinSystemX11::UpdateResolutions() + res.iHeight = mode.h; + res.iScreenWidth = mode.w; + res.iScreenHeight = mode.h; ++ if (!m_bIsRotated) ++ { ++ res.iWidth = mode.w; ++ res.iHeight = mode.h; ++ } ++ else ++ { ++ res.iWidth = mode.h; ++ res.iHeight = mode.w; ++ } + if (mode.h>0 && mode.w>0 && out.hmm>0 && out.wmm>0) + res.fPixelRatio = ((float)out.wmm/(float)mode.w) / (((float)out.hmm/(float)mode.h)); + else +@@ -332,6 +363,30 @@ void CWinSystemX11::UpdateResolutions() + + } + ++void CWinSystemX11::RotateResolutions() ++{ ++#if defined(HAS_XRANDR) ++ XOutput out = g_xrandr.GetCurrentOutput(); ++ if (out.isRotated == m_bIsRotated) ++ return; ++ ++ for (unsigned int i = 0; i < g_settings.m_ResInfo.size(); ++i) ++ { ++ int width = g_settings.m_ResInfo[i].iWidth; ++ g_settings.m_ResInfo[i].iWidth = g_settings.m_ResInfo[i].iHeight; ++ g_settings.m_ResInfo[i].iHeight = width; ++ } ++ // update desktop resolution ++// int h = g_settings.m_ResInfo[RES_DESKTOP].iHeight; ++// int w = g_settings.m_ResInfo[RES_DESKTOP].iWidth; ++// float hz = g_settings.m_ResInfo[RES_DESKTOP].fRefreshRate; ++// UpdateDesktopResolution(g_settings.m_ResInfo[RES_DESKTOP], 0, w, h, hz); ++ ++ m_bIsRotated = out.isRotated; ++ ++#endif ++} ++ + bool CWinSystemX11::IsSuitableVisual(XVisualInfo *vInfo) + { + int value; +diff --git a/xbmc/windowing/X11/WinSystemX11.h b/xbmc/windowing/X11/WinSystemX11.h +index 8c28e3f..93cf5db 100644 +--- a/xbmc/windowing/X11/WinSystemX11.h ++++ b/xbmc/windowing/X11/WinSystemX11.h +@@ -73,12 +73,14 @@ class CWinSystemX11 : public CWinSystemBase + void CheckDisplayEvents(); + void OnLostDevice(); + bool SetWindow(int width, int height, bool fullscreen); ++ void RotateResolutions(); + + Window m_glWindow; + GLXContext m_glContext; + Display* m_dpy; + Cursor m_invisibleCursor; + Pixmap m_icon; ++ bool m_bIsRotated; + bool m_bWasFullScreenBeforeMinimize; + bool m_minimized; + bool m_bIgnoreNextFocusMessage; +diff --git a/xbmc/windowing/X11/XRandR.cpp b/xbmc/windowing/X11/XRandR.cpp +index 59755a6..45aeb71 100644 +--- a/xbmc/windowing/X11/XRandR.cpp ++++ b/xbmc/windowing/X11/XRandR.cpp +@@ -98,6 +98,13 @@ bool CXRandR::Query(bool force) + xoutput.y = (output->Attribute("y") != NULL ? atoi(output->Attribute("y")) : 0); + xoutput.wmm = (output->Attribute("wmm") != NULL ? atoi(output->Attribute("wmm")) : 0); + xoutput.hmm = (output->Attribute("hmm") != NULL ? atoi(output->Attribute("hmm")) : 0); ++ if (output->Attribute("rotation") != NULL ++ && (strcasecmp(output->Attribute("rotation"), "left") == 0 || strcasecmp(output->Attribute("rotation"), "right") == 0)) ++ { ++ xoutput.isRotated = true; ++ } ++ else ++ xoutput.isRotated = false; + + if (!xoutput.isConnected) + continue; +diff --git a/xbmc/windowing/X11/XRandR.h b/xbmc/windowing/X11/XRandR.h +index 5b64633..618bd68 100644 +--- a/xbmc/windowing/X11/XRandR.h ++++ b/xbmc/windowing/X11/XRandR.h +@@ -86,6 +86,7 @@ class XOutput + int wmm; + int hmm; + std::vector modes; ++ bool isRotated; + }; + + class CXRandR +-- +1.7.10 + + +From 29b15da8eeef8e21eca12821be4488f12d965232 Mon Sep 17 00:00:00 2001 +From: FernetMenta +Date: Thu, 5 Jul 2012 11:54:15 +0200 +Subject: [PATCH 20/51] xrandr: allow getting info for multiple screen's + +Refactored by: Joakim Plate +--- + xbmc/windowing/X11/XRandR.cpp | 65 ++++++++++++++++++++++++++++++++--------- + xbmc/windowing/X11/XRandR.h | 8 +++-- + 2 files changed, 57 insertions(+), 16 deletions(-) + +diff --git a/xbmc/windowing/X11/XRandR.cpp b/xbmc/windowing/X11/XRandR.cpp +index 45aeb71..cc933b9 100644 +--- a/xbmc/windowing/X11/XRandR.cpp ++++ b/xbmc/windowing/X11/XRandR.cpp +@@ -39,6 +39,7 @@ + CXRandR::CXRandR(bool query) + { + m_bInit = false; ++ m_numScreens = 1; + if (query) + Query(); + } +@@ -55,11 +56,21 @@ bool CXRandR::Query(bool force) + return false; + + m_outputs.clear(); +- m_current.clear(); ++ // query all screens ++ for(unsigned int screennum=0; screennumValue(), "screen") != 0) ++ if (strcasecmp(pRootElement->Value(), "screen") != screennum) + { + // TODO ERROR + return false; +@@ -92,6 +103,7 @@ bool CXRandR::Query(bool force) + xoutput.name.TrimLeft(" \n\r\t"); + xoutput.name.TrimRight(" \n\r\t"); + xoutput.isConnected = (strcasecmp(output->Attribute("connected"), "true") == 0); ++ xoutput.screen = screennum; + xoutput.w = (output->Attribute("w") != NULL ? atoi(output->Attribute("w")) : 0); + xoutput.h = (output->Attribute("h") != NULL ? atoi(output->Attribute("h")) : 0); + xoutput.x = (output->Attribute("x") != NULL ? atoi(output->Attribute("x")) : 0); +@@ -123,7 +135,6 @@ bool CXRandR::Query(bool force) + xoutput.modes.push_back(xmode); + if (xmode.isCurrent) + { +- m_current.push_back(xoutput); + hascurrent = true; + } + } +@@ -247,17 +258,6 @@ bool CXRandR::SetMode(XOutput output, XMode mode) + return true; + } + +-XOutput CXRandR::GetCurrentOutput() +-{ +- Query(); +- for (unsigned int j = 0; j < m_outputs.size(); j++) +- { +- if(m_outputs[j].isConnected) +- return m_outputs[j]; +- } +- XOutput empty; +- return empty; +-} + XMode CXRandR::GetCurrentMode(CStdString outputName) + { + Query(); +@@ -331,6 +331,43 @@ void CXRandR::LoadCustomModeLinesToAllOutputs(void) + } + } + ++void CXRandR::SetNumScreens(unsigned int num) ++{ ++ m_numScreens = num; ++ m_bInit = false; ++} ++ ++bool CXRandR::IsOutputConnected(CStdString name) ++{ ++ bool result = false; ++ Query(); ++ ++ for (unsigned int i = 0; i < m_outputs.size(); ++i) ++ { ++ if (m_outputs[i].name == name) ++ { ++ result = true; ++ break; ++ } ++ } ++ return result; ++} ++ ++XOutput* CXRandR::GetOutput(CStdString outputName) ++{ ++ XOutput *result = 0; ++ Query(); ++ for (unsigned int i = 0; i < m_outputs.size(); ++i) ++ { ++ if (m_outputs[i].name == outputName) ++ { ++ result = &m_outputs[i]; ++ break; ++ } ++ } ++ return result; ++} ++ + CXRandR g_xrandr; + + #endif // HAS_XRANDR +diff --git a/xbmc/windowing/X11/XRandR.h b/xbmc/windowing/X11/XRandR.h +index 618bd68..0824af5 100644 +--- a/xbmc/windowing/X11/XRandR.h ++++ b/xbmc/windowing/X11/XRandR.h +@@ -79,6 +79,7 @@ class XOutput + } + CStdString name; + bool isConnected; ++ int screen; + int w; + int h; + int x; +@@ -94,12 +95,15 @@ class CXRandR + public: + CXRandR(bool query=false); + bool Query(bool force=false); ++ bool Query(bool force, int screennum); + std::vector GetModes(void); +- XOutput GetCurrentOutput(); + XMode GetCurrentMode(CStdString outputName); ++ XOutput *GetOutput(CStdString outputName); + bool SetMode(XOutput output, XMode mode); + void LoadCustomModeLinesToAllOutputs(void); + void SaveState(); ++ void SetNumScreens(unsigned int num); ++ bool IsOutputConnected(CStdString name); + //bool Has1080i(); + //bool Has1080p(); + //bool Has720p(); +@@ -107,10 +111,10 @@ class CXRandR + + private: + bool m_bInit; +- std::vector m_current; + std::vector m_outputs; + CStdString m_currentOutput; + CStdString m_currentMode; ++ unsigned int m_numScreens; + }; + + extern CXRandR g_xrandr; +-- +1.7.10 + + +From ba43f1d2c74a9799ee2dc971682392c9c54edf3d Mon Sep 17 00:00:00 2001 +From: FernetMenta +Date: Thu, 5 Jul 2012 11:44:00 +0200 +Subject: [PATCH 21/51] X11: fix multi-head setups + +--- + language/English/strings.po | 4 +- + xbmc/rendering/gl/RenderSystemGL.h | 1 + + xbmc/settings/GUISettings.cpp | 5 + + xbmc/settings/GUIWindowSettingsCategory.cpp | 60 +++++- + xbmc/settings/GUIWindowSettingsCategory.h | 1 + + xbmc/windowing/WinEventsX11.cpp | 7 + + xbmc/windowing/X11/WinSystemX11.cpp | 262 ++++++++++++++++----------- + xbmc/windowing/X11/WinSystemX11.h | 10 +- + 8 files changed, 235 insertions(+), 115 deletions(-) + +diff --git a/language/English/strings.po b/language/English/strings.po +index c677a03..6bb31f9 100644 +--- a/language/English/strings.po ++++ b/language/English/strings.po +@@ -850,7 +850,9 @@ msgctxt "#245" + msgid "Sizing: (%i,%i)->(%i,%i) (Zoom x%2.2f) AR:%2.2f:1 (Pixels: %2.2f:1) (VShift: %2.2f)" + msgstr "" + +-#empty string with id 246 ++msgctxt "#246" ++msgid "Monitor" ++msgstr "" + + msgctxt "#247" + msgid "Scripts" +diff --git a/xbmc/rendering/gl/RenderSystemGL.h b/xbmc/rendering/gl/RenderSystemGL.h +index efe5493..85d780d 100644 +--- a/xbmc/rendering/gl/RenderSystemGL.h ++++ b/xbmc/rendering/gl/RenderSystemGL.h +@@ -44,6 +44,7 @@ class CRenderSystemGL : public CRenderSystemBase + virtual bool IsExtSupported(const char* extension); + + virtual void SetVSync(bool vsync); ++ virtual void ResetVSync() { m_bVsyncInit = false; } + + virtual void SetViewPort(CRect& viewPort); + virtual void GetViewPort(CRect& viewPort); +diff --git a/xbmc/settings/GUISettings.cpp b/xbmc/settings/GUISettings.cpp +index e65a4bf..228722c 100644 +--- a/xbmc/settings/GUISettings.cpp ++++ b/xbmc/settings/GUISettings.cpp +@@ -392,11 +392,16 @@ void CGUISettings::Initialize() + AddGroup(SETTINGS_SYSTEM, 13000); + CSettingsCategory* vs = AddCategory(SETTINGS_SYSTEM, "videoscreen", 21373); + ++#if defined(HAS_GLX) ++ AddString(vs, "videoscreen.monitor", 246, "", SPIN_CONTROL_TEXT); ++#endif ++ + // this setting would ideally not be saved, as its value is systematically derived from videoscreen.screenmode. + // contains a DISPLAYMODE + #if !defined(TARGET_DARWIN_IOS_ATV2) && !defined(TARGET_RASPBERRY_PI) + AddInt(vs, "videoscreen.screen", 240, 0, -1, 1, 32, SPIN_CONTROL_TEXT); + #endif ++ + // this setting would ideally not be saved, as its value is systematically derived from videoscreen.screenmode. + // contains an index to the g_settings.m_ResInfo array. the only meaningful fields are iScreen, iWidth, iHeight. + #if defined(TARGET_DARWIN) +diff --git a/xbmc/settings/GUIWindowSettingsCategory.cpp b/xbmc/settings/GUIWindowSettingsCategory.cpp +index de12326..fe6ef8f 100644 +--- a/xbmc/settings/GUIWindowSettingsCategory.cpp ++++ b/xbmc/settings/GUIWindowSettingsCategory.cpp +@@ -528,6 +528,12 @@ void CGUIWindowSettingsCategory::CreateSettings() + FillInRefreshRates(strSetting, g_guiSettings.GetResolution(), false); + continue; + } ++ else if (strSetting.Equals("videoscreen.monitor")) ++ { ++ AddSetting(pSetting, group->GetWidth(), iControlID); ++ FillInMonitors(strSetting); ++ continue; ++ } + else if (strSetting.Equals("lookandfeel.skintheme")) + { + AddSetting(pSetting, group->GetWidth(), iControlID); +@@ -1489,6 +1495,20 @@ void CGUIWindowSettingsCategory::OnSettingChanged(CBaseSettingControl *pSettingC + // Cascade + FillInResolutions("videoscreen.resolution", mode, RES_DESKTOP, true); + } ++ else if (strSetting.Equals("videoscreen.monitor")) ++ { ++ CSettingString *pSettingString = (CSettingString *)pSettingControl->GetSetting(); ++ CGUISpinControlEx *pControl = (CGUISpinControlEx *)GetControl(pSettingControl->GetID()); ++ CStdString currentMonitor = pControl->GetCurrentLabel(); ++ if (!g_Windowing.IsCurrentOutput(currentMonitor)) ++ { ++ g_guiSettings.SetString("videoscreen.monitor", currentMonitor); ++ g_Windowing.UpdateResolutions(); ++ DisplayMode mode = g_guiSettings.GetInt("videoscreen.screen"); ++ // Cascade ++ FillInResolutions("videoscreen.resolution", mode, RES_DESKTOP, true); ++ } ++ } + else if (strSetting.Equals("videoscreen.resolution")) + { + RESOLUTION nextRes = (RESOLUTION) g_guiSettings.GetInt("videoscreen.resolution"); +@@ -2407,11 +2427,15 @@ DisplayMode CGUIWindowSettingsCategory::FillInScreens(CStdString strSetting, RES + if (g_advancedSettings.m_canWindowed) + pControl->AddLabel(g_localizeStrings.Get(242), -1); + ++#if !defined(HAS_GLX) + for (int idx = 0; idx < g_Windowing.GetNumScreens(); idx++) + { + strScreen.Format(g_localizeStrings.Get(241), g_settings.m_ResInfo[RES_DESKTOP + idx].iScreen + 1); + pControl->AddLabel(strScreen, g_settings.m_ResInfo[RES_DESKTOP + idx].iScreen); + } ++#else ++ pControl->AddLabel(g_localizeStrings.Get(244), 0); ++#endif + pControl->SetValue(mode); + g_guiSettings.SetInt("videoscreen.screen", mode); + } +@@ -2419,6 +2443,36 @@ DisplayMode CGUIWindowSettingsCategory::FillInScreens(CStdString strSetting, RES + return mode; + } + ++void CGUIWindowSettingsCategory::FillInMonitors(CStdString strSetting) ++{ ++ // we expect "videoscreen.monitor" but it might be hidden on some platforms, ++ // so check that we actually have a visable control. ++ CBaseSettingControl *control = GetSetting(strSetting); ++ if (control) ++ { ++ control->SetDelayed(); ++ CGUISpinControlEx *pControl = (CGUISpinControlEx *)GetControl(control->GetID()); ++ pControl->Clear(); ++ ++ std::vector monitors; ++ g_Windowing.GetConnectedOutputs(&monitors); ++ ++ int currentMonitor = 0; ++ for (unsigned int i=0; iAddLabel(monitors[i], i); ++ } ++ ++ pControl->SetValue(currentMonitor); ++ g_guiSettings.SetString("videoscreen.monitor", g_settings.m_ResInfo[RES_DESKTOP].strOutput); ++ } ++} ++ ++ + void CGUIWindowSettingsCategory::FillInResolutions(CStdString strSetting, DisplayMode mode, RESOLUTION res, bool UserChange) + { + CBaseSettingControl *control = GetSetting(strSetting); +@@ -2547,13 +2601,15 @@ void CGUIWindowSettingsCategory::OnRefreshRateChanged(RESOLUTION nextRes) + RESOLUTION lastRes = g_graphicsContext.GetVideoResolution(); + bool cancelled = false; + ++ bool outputChanged = !g_Windowing.IsCurrentOutput(g_guiSettings.GetString("videoscreen.monitor")); ++ + g_guiSettings.SetResolution(nextRes); +- g_graphicsContext.SetVideoResolution(nextRes); ++ g_graphicsContext.SetVideoResolution(nextRes, outputChanged); + + if (!CGUIDialogYesNo::ShowAndGetInput(13110, 13111, 20022, 20022, -1, -1, cancelled, 10000)) + { + g_guiSettings.SetResolution(lastRes); +- g_graphicsContext.SetVideoResolution(lastRes); ++ g_graphicsContext.SetVideoResolution(lastRes, outputChanged); + + DisplayMode mode = FillInScreens("videoscreen.screen", lastRes); + FillInResolutions("videoscreen.resolution", mode, lastRes, false); +diff --git a/xbmc/settings/GUIWindowSettingsCategory.h b/xbmc/settings/GUIWindowSettingsCategory.h +index 4a57322..82103cc 100644 +--- a/xbmc/settings/GUIWindowSettingsCategory.h ++++ b/xbmc/settings/GUIWindowSettingsCategory.h +@@ -49,6 +49,7 @@ class CGUIWindowSettingsCategory : + void FillInSoundSkins(CSetting *pSetting); + void FillInLanguages(CSetting *pSetting, const std::vector &languages = std::vector(), const std::vector &languageKeys = std::vector()); + DisplayMode FillInScreens(CStdString strSetting, RESOLUTION res); ++ void FillInMonitors(CStdString strSetting); + void FillInResolutions(CStdString strSetting, DisplayMode mode, RESOLUTION res, bool UserChange); + void FillInRefreshRates(CStdString strSetting, RESOLUTION res, bool UserChange); + void OnRefreshRateChanged(RESOLUTION resolution); +diff --git a/xbmc/windowing/WinEventsX11.cpp b/xbmc/windowing/WinEventsX11.cpp +index 5946a33..6c22358 100644 +--- a/xbmc/windowing/WinEventsX11.cpp ++++ b/xbmc/windowing/WinEventsX11.cpp +@@ -517,9 +517,16 @@ bool CWinEventsX11::MessagePump() + break; + } + ++ case EnterNotify: ++ { ++ g_Windowing.NotifyMouseCoverage(true); ++ break; ++ } ++ + // lose mouse coverage + case LeaveNotify: + { ++ g_Windowing.NotifyMouseCoverage(false); + g_Mouse.SetActive(false); + break; + } +diff --git a/xbmc/windowing/X11/WinSystemX11.cpp b/xbmc/windowing/X11/WinSystemX11.cpp +index 6b0aa92..5f913f1 100644 +--- a/xbmc/windowing/X11/WinSystemX11.cpp ++++ b/xbmc/windowing/X11/WinSystemX11.cpp +@@ -33,6 +33,7 @@ + #include "cores/VideoRenderers/RenderManager.h" + #include "utils/TimeUtils.h" + #include "settings/GUISettings.h" ++#include "windowing/WindowingFactory.h" + + #if defined(HAS_XRANDR) + #include +@@ -54,6 +55,7 @@ + m_bIgnoreNextFocusMessage = false; + m_dpyLostTime = 0; + m_invisibleCursor = 0; ++ m_bIsInternalXrr = false; + + XSetErrorHandler(XErrorHandler); + } +@@ -66,7 +68,8 @@ bool CWinSystemX11::InitWindowSystem() + { + if ((m_dpy = XOpenDisplay(NULL))) + { +- return CWinSystemBase::InitWindowSystem(); ++ bool ret = CWinSystemBase::InitWindowSystem(); ++ return ret; + } + else + CLog::Log(LOGERROR, "GLX Error: No Display found"); +@@ -103,6 +106,8 @@ bool CWinSystemX11::DestroyWindowSystem() + + //we don't call XCloseDisplay() here, since ati keeps a pointer to our m_dpy + //so instead we just let m_dpy die on exit ++ // i have seen core dumps on ATI if the display is not closed here ++ XCloseDisplay(m_dpy); + } + + // m_SDLSurface is free()'d by SDL_Quit(). +@@ -125,7 +130,10 @@ bool CWinSystemX11::DestroyWindow() + return true; + + if (m_glContext) ++ { ++ glFinish(); + glXMakeCurrent(m_dpy, None, NULL); ++ } + + if (m_invisibleCursor) + { +@@ -155,7 +163,7 @@ bool CWinSystemX11::ResizeWindow(int newWidth, int newHeight, int newLeft, int n + && m_nHeight == newHeight) + return true; + +- if (!SetWindow(newWidth, newHeight, false)) ++ if (!SetWindow(newWidth, newHeight, false, g_guiSettings.GetString("videoscreen.monitor"))) + { + return false; + } +@@ -164,58 +172,11 @@ bool CWinSystemX11::ResizeWindow(int newWidth, int newHeight, int newLeft, int n + m_nWidth = newWidth; + m_nHeight = newHeight; + m_bFullScreen = false; ++ m_currentOutput = g_guiSettings.GetString("videoscreen.monitor"); + + return false; + } + +-void CWinSystemX11::RefreshWindow() +-{ +- if (!g_xrandr.Query(true)) +- { +- CLog::Log(LOGERROR, "WinSystemX11::RefreshWindow - failed to query xrandr"); +- return; +- } +- XOutput out = g_xrandr.GetCurrentOutput(); +- XMode mode = g_xrandr.GetCurrentMode(out.name); +- +- RotateResolutions(); +- +- // only overwrite desktop resolution, if we are not in fullscreen mode +- if (!g_graphicsContext.IsFullScreenVideo()) +- { +- CLog::Log(LOGDEBUG, "CWinSystemX11::RefreshWindow - store desktop resolution, width: %d, height: %d, hz: %2.2f", mode.w, mode.h, mode.hz); +- if (!out.isRotated) +- UpdateDesktopResolution(g_settings.m_ResInfo[RES_DESKTOP], 0, mode.w, mode.h, mode.hz); +- else +- UpdateDesktopResolution(g_settings.m_ResInfo[RES_DESKTOP], 0, mode.h, mode.w, mode.hz); +- g_settings.m_ResInfo[RES_DESKTOP].strId = mode.id; +- g_settings.m_ResInfo[RES_DESKTOP].strOutput = out.name; +- } +- +- RESOLUTION_INFO res; +- unsigned int i; +- bool found(false); +- for (i = RES_DESKTOP; i < g_settings.m_ResInfo.size(); ++i) +- { +- if (g_settings.m_ResInfo[i].strId == mode.id) +- { +- found = true; +- break; +- } +- } +- +- if (!found) +- { +- CLog::Log(LOGERROR, "CWinSystemX11::RefreshWindow - could not find resolution"); +- return; +- } +- +- if (g_graphicsContext.IsFullScreenRoot()) +- g_graphicsContext.SetVideoResolution((RESOLUTION)i, true); +- else +- g_graphicsContext.SetVideoResolution(RES_WINDOW, true); +-} +- + bool CWinSystemX11::SetFullScreen(bool fullScreen, RESOLUTION_INFO& res, bool blankOtherDisplays) + { + +@@ -240,8 +201,7 @@ bool CWinSystemX11::SetFullScreen(bool fullScreen, RESOLUTION_INFO& res, bool bl + mode.id = g_settings.m_ResInfo[RES_DESKTOP].strId; + } + +- XOutput currout = g_xrandr.GetCurrentOutput(); +- XMode currmode = g_xrandr.GetCurrentMode(currout.name); ++ XMode currmode = g_xrandr.GetCurrentMode(out.name); + + // flip h/w when rotated + if (m_bIsRotated) +@@ -252,16 +212,17 @@ bool CWinSystemX11::SetFullScreen(bool fullScreen, RESOLUTION_INFO& res, bool bl + } + + // only call xrandr if mode changes +- if (currout.name != out.name || currmode.w != mode.w || currmode.h != mode.h || ++ if (currmode.w != mode.w || currmode.h != mode.h || + currmode.hz != mode.hz || currmode.id != mode.id) + { + CLog::Log(LOGNOTICE, "CWinSystemX11::SetFullScreen - calling xrandr"); + OnLostDevice(); ++ m_bIsInternalXrr = true; + g_xrandr.SetMode(out, mode); + } + #endif + +- if (!SetWindow(res.iWidth, res.iHeight, fullScreen)) ++ if (!SetWindow(res.iWidth, res.iHeight, fullScreen, g_guiSettings.GetString("videoscreen.monitor"))) + return false; + + RefreshGlxContext(); +@@ -269,6 +230,7 @@ bool CWinSystemX11::SetFullScreen(bool fullScreen, RESOLUTION_INFO& res, bool bl + m_nWidth = res.iWidth; + m_nHeight = res.iHeight; + m_bFullScreen = fullScreen; ++ m_currentOutput = g_guiSettings.GetString("videoscreen.monitor"); + + return true; + } +@@ -277,19 +239,30 @@ void CWinSystemX11::UpdateResolutions() + { + CWinSystemBase::UpdateResolutions(); + +- + #if defined(HAS_XRANDR) +- if(g_xrandr.Query()) +- { +- XOutput out = g_xrandr.GetCurrentOutput(); +- XMode mode = g_xrandr.GetCurrentMode(out.name); +- m_bIsRotated = out.isRotated; ++ CStdString currentMonitor; ++ int numScreens = XScreenCount(m_dpy); ++ g_xrandr.SetNumScreens(numScreens); ++ if(g_xrandr.Query(true)) ++ { ++ currentMonitor = g_guiSettings.GetString("videoscreen.monitor"); ++ // check if the monitor is connected ++ XOutput *out = g_xrandr.GetOutput(currentMonitor); ++ if (!out) ++ { ++ // choose first output ++ currentMonitor = g_xrandr.GetModes()[0].name; ++ out = g_xrandr.GetOutput(currentMonitor); ++ g_guiSettings.SetString("videoscreen.monitor", currentMonitor); ++ } ++ XMode mode = g_xrandr.GetCurrentMode(currentMonitor); ++ m_bIsRotated = out->isRotated; + if (!m_bIsRotated) +- UpdateDesktopResolution(g_settings.m_ResInfo[RES_DESKTOP], 0, mode.w, mode.h, mode.hz); ++ UpdateDesktopResolution(g_settings.m_ResInfo[RES_DESKTOP], out->screen, mode.w, mode.h, mode.hz); + else +- UpdateDesktopResolution(g_settings.m_ResInfo[RES_DESKTOP], 0, mode.h, mode.w, mode.hz); ++ UpdateDesktopResolution(g_settings.m_ResInfo[RES_DESKTOP], out->screen, mode.h, mode.w, mode.hz); + g_settings.m_ResInfo[RES_DESKTOP].strId = mode.id; +- g_settings.m_ResInfo[RES_DESKTOP].strOutput = out.name; ++ g_settings.m_ResInfo[RES_DESKTOP].strOutput = currentMonitor; + } + else + #endif +@@ -300,23 +273,26 @@ void CWinSystemX11::UpdateResolutions() + UpdateDesktopResolution(g_settings.m_ResInfo[RES_DESKTOP], 0, w, h, 0.0); + } + +- + #if defined(HAS_XRANDR) + ++ // erase previous stored modes ++ if (g_settings.m_ResInfo.size() > RES_CUSTOM) ++ { ++ std::vector::iterator firstCustom = g_settings.m_ResInfo.begin()+RES_CUSTOM; ++ g_settings.m_ResInfo.erase(firstCustom, g_settings.m_ResInfo.end()); ++ } ++ + CLog::Log(LOGINFO, "Available videomodes (xrandr):"); +- vector::iterator outiter; +- vector outs; +- outs = g_xrandr.GetModes(); +- CLog::Log(LOGINFO, "Number of connected outputs: %"PRIdS"", outs.size()); ++ ++ XOutput *out = g_xrandr.GetOutput(currentMonitor); + string modename = ""; + +- for (outiter = outs.begin() ; outiter != outs.end() ; outiter++) ++ if (out != NULL) + { +- XOutput out = *outiter; + vector::iterator modeiter; +- CLog::Log(LOGINFO, "Output '%s' has %"PRIdS" modes", out.name.c_str(), out.modes.size()); ++ CLog::Log(LOGINFO, "Output '%s' has %"PRIdS" modes", out->name.c_str(), out->modes.size()); + +- for (modeiter = out.modes.begin() ; modeiter!=out.modes.end() ; modeiter++) ++ for (modeiter = out->modes.begin() ; modeiter!=out->modes.end() ; modeiter++) + { + XMode mode = *modeiter; + CLog::Log(LOGINFO, "ID:%s Name:%s Refresh:%f Width:%d Height:%d", +@@ -336,15 +312,15 @@ void CWinSystemX11::UpdateResolutions() + res.iWidth = mode.h; + res.iHeight = mode.w; + } +- if (mode.h>0 && mode.w>0 && out.hmm>0 && out.wmm>0) +- res.fPixelRatio = ((float)out.wmm/(float)mode.w) / (((float)out.hmm/(float)mode.h)); ++ if (mode.h>0 && mode.w>0 && out->hmm>0 && out->wmm>0) ++ res.fPixelRatio = ((float)out->wmm/(float)mode.w) / (((float)out->hmm/(float)mode.h)); + else + res.fPixelRatio = 1.0f; + + CLog::Log(LOGINFO, "Pixel Ratio: %f", res.fPixelRatio); + +- res.strMode.Format("%s: %s @ %.2fHz", out.name.c_str(), mode.name.c_str(), mode.hz); +- res.strOutput = out.name; ++ res.strMode.Format("%s: %s @ %.2fHz", out->name.c_str(), mode.name.c_str(), mode.hz); ++ res.strOutput = out->name; + res.strId = mode.id; + res.iSubtitles = (int)(0.95*mode.h); + res.fRefreshRate = mode.hz; +@@ -363,28 +339,19 @@ void CWinSystemX11::UpdateResolutions() + + } + +-void CWinSystemX11::RotateResolutions() ++void CWinSystemX11::GetConnectedOutputs(std::vector *outputs) + { +-#if defined(HAS_XRANDR) +- XOutput out = g_xrandr.GetCurrentOutput(); +- if (out.isRotated == m_bIsRotated) +- return; +- +- for (unsigned int i = 0; i < g_settings.m_ResInfo.size(); ++i) ++ vector outs; ++ outs = g_xrandr.GetModes(); ++ for(unsigned int i=0; ipush_back(outs[i].name); + } +- // update desktop resolution +-// int h = g_settings.m_ResInfo[RES_DESKTOP].iHeight; +-// int w = g_settings.m_ResInfo[RES_DESKTOP].iWidth; +-// float hz = g_settings.m_ResInfo[RES_DESKTOP].fRefreshRate; +-// UpdateDesktopResolution(g_settings.m_ResInfo[RES_DESKTOP], 0, w, h, hz); +- +- m_bIsRotated = out.isRotated; ++} + +-#endif ++bool CWinSystemX11::IsCurrentOutput(CStdString output) ++{ ++ return m_currentOutput.Equals(output); + } + + bool CWinSystemX11::IsSuitableVisual(XVisualInfo *vInfo) +@@ -414,8 +381,11 @@ bool CWinSystemX11::RefreshGlxContext() + if (m_glContext) + { + CLog::Log(LOGDEBUG, "CWinSystemX11::RefreshGlxContext: refreshing context"); ++ glFinish(); + glXMakeCurrent(m_dpy, None, NULL); + glXMakeCurrent(m_dpy, m_glWindow, m_glContext); ++ XSync(m_dpy, FALSE); ++ g_Windowing.ResetVSync(); + return true; + } + +@@ -481,6 +451,8 @@ bool CWinSystemX11::RefreshGlxContext() + { + // make this context current + glXMakeCurrent(m_dpy, m_glWindow, m_glContext); ++ g_Windowing.ResetVSync(); ++ XSync(m_dpy, False); + retVal = true; + } + else +@@ -522,24 +494,53 @@ void CWinSystemX11::ResetOSScreensaver() + + void CWinSystemX11::NotifyAppActiveChange(bool bActivated) + { +- if (bActivated && m_bWasFullScreenBeforeMinimize && !g_graphicsContext.IsFullScreenRoot()) ++ if (bActivated && m_bWasFullScreenBeforeMinimize && !m_bFullScreen) ++ { + g_graphicsContext.ToggleFullScreenRoot(); + ++ m_bWasFullScreenBeforeMinimize = false; ++ } + m_minimized = !bActivated; + } + + void CWinSystemX11::NotifyAppFocusChange(bool bGaining) + { + if (bGaining && m_bWasFullScreenBeforeMinimize && !m_bIgnoreNextFocusMessage && +- !g_graphicsContext.IsFullScreenRoot()) ++ !m_bFullScreen) ++ { ++ m_bWasFullScreenBeforeMinimize = false; + g_graphicsContext.ToggleFullScreenRoot(); ++ m_minimized = false; ++ } + if (!bGaining) + m_bIgnoreNextFocusMessage = false; + } + ++void CWinSystemX11::NotifyMouseCoverage(bool covered) ++{ ++ if (!m_bFullScreen) ++ return; ++ ++ if (covered) ++ { ++ int result = -1; ++ while (result != GrabSuccess && result != AlreadyGrabbed) ++ { ++ result = XGrabPointer(m_dpy, m_glWindow, True, ButtonPressMask, GrabModeAsync, GrabModeAsync, None, None, CurrentTime); ++ XbmcThreads::ThreadSleep(100); ++ } ++ XGrabKeyboard(m_dpy, m_glWindow, True, GrabModeAsync, GrabModeAsync, CurrentTime); ++ } ++ else ++ { ++ XUngrabKeyboard(m_dpy, CurrentTime); ++ XUngrabPointer(m_dpy, CurrentTime); ++ } ++} ++ + bool CWinSystemX11::Minimize() + { +- m_bWasFullScreenBeforeMinimize = g_graphicsContext.IsFullScreenRoot(); ++ m_bWasFullScreenBeforeMinimize = m_bFullScreen; + if (m_bWasFullScreenBeforeMinimize) + { + m_bIgnoreNextFocusMessage = true; +@@ -605,13 +606,46 @@ void CWinSystemX11::CheckDisplayEvents() + void CWinSystemX11::NotifyXRREvent() + { + CLog::Log(LOGDEBUG, "%s - notify display reset event", __FUNCTION__); +- RefreshWindow(); ++ m_windowDirty = true; + +- CSingleLock lock(m_resourceSection); ++ // if external event update resolutions ++ if (!m_bIsInternalXrr) ++ { ++ UpdateResolutions(); ++ } ++ else if (!g_xrandr.Query(true)) ++ { ++ CLog::Log(LOGERROR, "WinSystemX11::RefreshWindow - failed to query xrandr"); ++ return; ++ } ++ m_bIsInternalXrr = false; + +- // tell any shared resources +- for (vector::iterator i = m_resources.begin(); i != m_resources.end(); i++) +- (*i)->OnResetDevice(); ++ CStdString currentOutput = g_guiSettings.GetString("videoscreen.monitor"); ++ XOutput *out = g_xrandr.GetOutput(currentOutput); ++ XMode mode = g_xrandr.GetCurrentMode(currentOutput); ++ ++ RESOLUTION_INFO res; ++ unsigned int i; ++ bool found(false); ++ for (i = RES_DESKTOP; i < g_settings.m_ResInfo.size(); ++i) ++ { ++ if (g_settings.m_ResInfo[i].strId == mode.id) ++ { ++ found = true; ++ break; ++ } ++ } ++ ++ if (!found) ++ { ++ CLog::Log(LOGERROR, "CWinSystemX11::RefreshWindow - could not find resolution"); ++ i = RES_DESKTOP; ++ } ++ ++ if (g_graphicsContext.IsFullScreenRoot()) ++ g_graphicsContext.SetVideoResolution((RESOLUTION)i, true); ++ else ++ g_graphicsContext.SetVideoResolution(RES_WINDOW, true); + + } + +@@ -664,14 +698,14 @@ bool CWinSystemX11::EnableFrameLimiter() + return m_minimized; + } + +-bool CWinSystemX11::SetWindow(int width, int height, bool fullscreen) ++bool CWinSystemX11::SetWindow(int width, int height, bool fullscreen, const CStdString &output) + { + bool changeWindow = false; + bool changeSize = false; + bool mouseActive = false; + float mouseX, mouseY; + +- if (m_glWindow && (m_bFullScreen != fullscreen)) ++ if (m_glWindow && ((m_bFullScreen != fullscreen) || !m_currentOutput.Equals(output) || m_windowDirty)) + { + mouseActive = g_Mouse.IsActive(); + if (mouseActive) +@@ -693,6 +727,7 @@ bool CWinSystemX11::SetWindow(int width, int height, bool fullscreen) + else + mouseActive = false; + } ++ OnLostDevice(); + DestroyWindow(); + } + +@@ -714,7 +749,11 @@ bool CWinSystemX11::SetWindow(int width, int height, bool fullscreen) + XSetWindowAttributes swa; + XVisualInfo *vi; + +- vi = glXChooseVisual(m_dpy, DefaultScreen(m_dpy), att); ++ XOutput *out = g_xrandr.GetOutput(output); ++ if (!out) ++ out = g_xrandr.GetOutput(m_currentOutput); ++ m_nScreen = out->screen; ++ vi = glXChooseVisual(m_dpy, m_nScreen, att); + cmap = XCreateColormap(m_dpy, RootWindow(m_dpy, vi->screen), vi->visual, AllocNone); + + int def_vis = (vi->visual == DefaultVisual(m_dpy, vi->screen)); +@@ -730,7 +769,7 @@ bool CWinSystemX11::SetWindow(int width, int height, bool fullscreen) + unsigned long mask = CWBackPixel | CWBorderPixel | CWColormap | CWOverrideRedirect | CWEventMask; + + m_glWindow = XCreateWindow(m_dpy, RootWindow(m_dpy, vi->screen), +- 0, 0, width, height, 0, vi->depth, ++ out->x, out->y, width, height, 0, vi->depth, + InputOutput, vi->visual, + mask, &swa); + +@@ -801,14 +840,19 @@ bool CWinSystemX11::SetWindow(int width, int height, bool fullscreen) + if (fullscreen) + { + int result = -1; +- while (result != GrabSuccess) ++ while (result != GrabSuccess && result != AlreadyGrabbed) + { +- result = XGrabPointer(m_dpy, m_glWindow, True, ButtonPressMask, GrabModeAsync, GrabModeAsync, m_glWindow, None, CurrentTime); ++ result = XGrabPointer(m_dpy, m_glWindow, True, ButtonPressMask, GrabModeAsync, GrabModeAsync, None, None, CurrentTime); + XbmcThreads::ThreadSleep(100); + } + XGrabKeyboard(m_dpy, m_glWindow, True, GrabModeAsync, GrabModeAsync, CurrentTime); +- + } ++ CSingleLock lock(m_resourceSection); ++ // tell any shared resources ++ for (vector::iterator i = m_resources.begin(); i != m_resources.end(); i++) ++ (*i)->OnResetDevice(); ++ ++ m_windowDirty = false; + } + return true; + } +diff --git a/xbmc/windowing/X11/WinSystemX11.h b/xbmc/windowing/X11/WinSystemX11.h +index 93cf5db..71034fc 100644 +--- a/xbmc/windowing/X11/WinSystemX11.h ++++ b/xbmc/windowing/X11/WinSystemX11.h +@@ -65,15 +65,16 @@ class CWinSystemX11 : public CWinSystemBase + Display* GetDisplay() { return m_dpy; } + GLXWindow GetWindow() { return m_glWindow; } + GLXContext GetGlxContext() { return m_glContext; } +- void RefreshWindow(); + void NotifyXRREvent(); ++ void GetConnectedOutputs(std::vector *outputs); ++ bool IsCurrentOutput(CStdString output); ++ void NotifyMouseCoverage(bool covered); + + protected: + bool RefreshGlxContext(); + void CheckDisplayEvents(); + void OnLostDevice(); +- bool SetWindow(int width, int height, bool fullscreen); +- void RotateResolutions(); ++ bool SetWindow(int width, int height, bool fullscreen, const CStdString &output); + + Window m_glWindow; + GLXContext m_glContext; +@@ -88,6 +89,9 @@ class CWinSystemX11 : public CWinSystemBase + CCriticalSection m_resourceSection; + std::vector m_resources; + uint64_t m_dpyLostTime; ++ CStdString m_currentOutput; ++ bool m_windowDirty; ++ bool m_bIsInternalXrr; + + private: + bool IsSuitableVisual(XVisualInfo *vInfo); +-- +1.7.10 + + +From 866c4bb6a597d42c74307d800c1ca96deccf174c Mon Sep 17 00:00:00 2001 +From: FernetMenta +Date: Thu, 5 Jul 2012 11:36:32 +0200 +Subject: [PATCH 22/51] X11: remove all DefaultScreen and RootWindow macros + +--- + xbmc/windowing/X11/WinSystemX11.cpp | 6 +++--- + xbmc/windowing/X11/WinSystemX11.h | 1 + + xbmc/windowing/X11/WinSystemX11GL.cpp | 2 +- + 3 files changed, 5 insertions(+), 4 deletions(-) + +diff --git a/xbmc/windowing/X11/WinSystemX11.cpp b/xbmc/windowing/X11/WinSystemX11.cpp +index 5f913f1..af1307c 100644 +--- a/xbmc/windowing/X11/WinSystemX11.cpp ++++ b/xbmc/windowing/X11/WinSystemX11.cpp +@@ -267,7 +267,7 @@ void CWinSystemX11::UpdateResolutions() + else + #endif + { +- int x11screen = DefaultScreen(m_dpy); ++ int x11screen = m_nScreen; + int w = DisplayWidth(m_dpy, x11screen); + int h = DisplayHeight(m_dpy, x11screen); + UpdateDesktopResolution(g_settings.m_ResInfo[RES_DESKTOP], 0, w, h, 0.0); +@@ -393,7 +393,7 @@ bool CWinSystemX11::RefreshGlxContext() + XVisualInfo *visuals; + XVisualInfo *vInfo = NULL; + int availableVisuals = 0; +- vMask.screen = DefaultScreen(m_dpy); ++ vMask.screen = m_nScreen; + XWindowAttributes winAttr; + + /* Assume a depth of 24 in case the below calls to XGetWindowAttributes() +@@ -547,7 +547,7 @@ bool CWinSystemX11::Minimize() + g_graphicsContext.ToggleFullScreenRoot(); + } + +- XIconifyWindow(m_dpy, m_glWindow, DefaultScreen(m_dpy)); ++ XIconifyWindow(m_dpy, m_glWindow, m_nScreen); + + m_minimized = true; + return true; +diff --git a/xbmc/windowing/X11/WinSystemX11.h b/xbmc/windowing/X11/WinSystemX11.h +index 71034fc..3bb4b8e 100644 +--- a/xbmc/windowing/X11/WinSystemX11.h ++++ b/xbmc/windowing/X11/WinSystemX11.h +@@ -47,6 +47,7 @@ class CWinSystemX11 : public CWinSystemBase + virtual bool SetFullScreen(bool fullScreen, RESOLUTION_INFO& res, bool blankOtherDisplays); + virtual void UpdateResolutions(); + virtual int GetNumScreens() { return 1; } ++ virtual int GetCurrentScreen() { return m_nScreen; } + virtual void ShowOSMouse(bool show); + virtual void ResetOSScreensaver(); + virtual bool EnableFrameLimiter(); +diff --git a/xbmc/windowing/X11/WinSystemX11GL.cpp b/xbmc/windowing/X11/WinSystemX11GL.cpp +index f858f88..d192697 100644 +--- a/xbmc/windowing/X11/WinSystemX11GL.cpp ++++ b/xbmc/windowing/X11/WinSystemX11GL.cpp +@@ -203,7 +203,7 @@ bool CWinSystemX11GL::CreateNewWindow(const CStdString& name, bool fullScreen, R + return false; + + m_glxext = " "; +- m_glxext += (const char*)glXQueryExtensionsString(m_dpy, DefaultScreen(m_dpy)); ++ m_glxext += (const char*)glXQueryExtensionsString(m_dpy, m_nScreen); + m_glxext += " "; + + CLog::Log(LOGDEBUG, "GLX_EXTENSIONS:%s", m_glxext.c_str()); +-- +1.7.10 + + +From 8d788ffc064f3450a3c88fe1a27ec8313e84fd45 Mon Sep 17 00:00:00 2001 +From: FernetMenta +Date: Thu, 5 Jul 2012 11:45:22 +0200 +Subject: [PATCH 23/51] X11: remove all DefaultScreen and RootWindow macros + (VideoRefClock) + +Note this is on a separate display connection. +--- + xbmc/video/VideoReferenceClock.cpp | 15 ++++++++------- + 1 file changed, 8 insertions(+), 7 deletions(-) + +diff --git a/xbmc/video/VideoReferenceClock.cpp b/xbmc/video/VideoReferenceClock.cpp +index 68f2aa0..7ce41d8 100644 +--- a/xbmc/video/VideoReferenceClock.cpp ++++ b/xbmc/video/VideoReferenceClock.cpp +@@ -270,7 +270,7 @@ bool CVideoReferenceClock::SetupGLX() + } + + bool ExtensionFound = false; +- istringstream Extensions(glXQueryExtensionsString(m_Dpy, DefaultScreen(m_Dpy))); ++ istringstream Extensions(glXQueryExtensionsString(m_Dpy, g_Windowing.GetCurrentScreen())); + string ExtensionStr; + + while (!ExtensionFound) +@@ -297,7 +297,7 @@ bool CVideoReferenceClock::SetupGLX() + m_bIsATI = true; + } + +- m_vInfo = glXChooseVisual(m_Dpy, DefaultScreen(m_Dpy), singleBufferAttributes); ++ m_vInfo = glXChooseVisual(m_Dpy, g_Windowing.GetCurrentScreen(), singleBufferAttributes); + if (!m_vInfo) + { + CLog::Log(LOGDEBUG, "CVideoReferenceClock: glXChooseVisual returned NULL"); +@@ -308,15 +308,16 @@ bool CVideoReferenceClock::SetupGLX() + { + Swa.border_pixel = 0; + Swa.event_mask = StructureNotifyMask; +- Swa.colormap = XCreateColormap(m_Dpy, RootWindow(m_Dpy, m_vInfo->screen), m_vInfo->visual, AllocNone ); ++ Swa.colormap = XCreateColormap(m_Dpy, g_Windowing.GetWindow(), m_vInfo->visual, AllocNone ); + SwaMask = CWBorderPixel | CWColormap | CWEventMask; + +- m_Window = XCreateWindow(m_Dpy, RootWindow(m_Dpy, m_vInfo->screen), 0, 0, 256, 256, 0, ++ m_Window = XCreateWindow(m_Dpy, g_Windowing.GetWindow(), 0, 0, 256, 256, 0, + m_vInfo->depth, InputOutput, m_vInfo->visual, SwaMask, &Swa); + } + else + { +- m_pixmap = XCreatePixmap(m_Dpy, DefaultRootWindow(m_Dpy), 256, 256, m_vInfo->depth); ++ Window window = g_Windowing.GetWindow(); ++ m_pixmap = XCreatePixmap(m_Dpy, window, 256, 256, m_vInfo->depth); + if (!m_pixmap) + { + CLog::Log(LOGDEBUG, "CVideoReferenceClock: unable to create pixmap"); +@@ -383,7 +384,7 @@ bool CVideoReferenceClock::SetupGLX() + + //set up receiving of RandR events, we'll get one when the refreshrate changes + XRRQueryExtension(m_Dpy, &m_RREventBase, &ReturnV); +- XRRSelectInput(m_Dpy, RootWindow(m_Dpy, m_vInfo->screen), RRScreenChangeNotifyMask); ++ XRRSelectInput(m_Dpy, g_Windowing.GetWindow(), RRScreenChangeNotifyMask); + + UpdateRefreshrate(true); //forced refreshrate update + m_MissedVblanks = 0; +@@ -518,7 +519,7 @@ int CVideoReferenceClock::GetRandRRate() + int RefreshRate; + XRRScreenConfiguration *CurrInfo; + +- CurrInfo = XRRGetScreenInfo(m_Dpy, RootWindow(m_Dpy, m_vInfo->screen)); ++ CurrInfo = XRRGetScreenInfo(m_Dpy, g_Windowing.GetWindow()); + RefreshRate = XRRConfigCurrentRate(CurrInfo); + XRRFreeScreenConfigInfo(CurrInfo); + +-- +1.7.10 + + +From fbb333bc31a4960846bb232db1c0d18918623291 Mon Sep 17 00:00:00 2001 +From: xbmc +Date: Wed, 20 Jun 2012 17:37:11 +0200 +Subject: [PATCH 24/51] X11: recreate gl context after output has changed + +--- + xbmc/windowing/X11/WinSystemX11.cpp | 24 ++++++++++++++---------- + xbmc/windowing/X11/WinSystemX11.h | 1 + + xbmc/windowing/X11/WinSystemX11GL.cpp | 9 +++++++++ + 3 files changed, 24 insertions(+), 10 deletions(-) + +diff --git a/xbmc/windowing/X11/WinSystemX11.cpp b/xbmc/windowing/X11/WinSystemX11.cpp +index af1307c..d3d15e2 100644 +--- a/xbmc/windowing/X11/WinSystemX11.cpp ++++ b/xbmc/windowing/X11/WinSystemX11.cpp +@@ -168,7 +168,6 @@ bool CWinSystemX11::ResizeWindow(int newWidth, int newHeight, int newLeft, int n + return false; + } + +- RefreshGlxContext(); + m_nWidth = newWidth; + m_nHeight = newHeight; + m_bFullScreen = false; +@@ -219,14 +218,13 @@ bool CWinSystemX11::SetFullScreen(bool fullScreen, RESOLUTION_INFO& res, bool bl + OnLostDevice(); + m_bIsInternalXrr = true; + g_xrandr.SetMode(out, mode); ++ return true; + } + #endif + + if (!SetWindow(res.iWidth, res.iHeight, fullScreen, g_guiSettings.GetString("videoscreen.monitor"))) + return false; + +- RefreshGlxContext(); +- + m_nWidth = res.iWidth; + m_nHeight = res.iHeight; + m_bFullScreen = fullScreen; +@@ -381,11 +379,8 @@ bool CWinSystemX11::RefreshGlxContext() + if (m_glContext) + { + CLog::Log(LOGDEBUG, "CWinSystemX11::RefreshGlxContext: refreshing context"); +- glFinish(); + glXMakeCurrent(m_dpy, None, NULL); + glXMakeCurrent(m_dpy, m_glWindow, m_glContext); +- XSync(m_dpy, FALSE); +- g_Windowing.ResetVSync(); + return true; + } + +@@ -445,14 +440,14 @@ bool CWinSystemX11::RefreshGlxContext() + { + glXMakeCurrent(m_dpy, None, NULL); + glXDestroyContext(m_dpy, m_glContext); ++ XSync(m_dpy, FALSE); ++ m_newGlContext = true; + } + + if ((m_glContext = glXCreateContext(m_dpy, vInfo, NULL, True))) + { + // make this context current + glXMakeCurrent(m_dpy, m_glWindow, m_glContext); +- g_Windowing.ResetVSync(); +- XSync(m_dpy, False); + retVal = true; + } + else +@@ -729,6 +724,7 @@ bool CWinSystemX11::SetWindow(int width, int height, bool fullscreen, const CStd + } + OnLostDevice(); + DestroyWindow(); ++ m_windowDirty = true; + } + + // create main window +@@ -847,13 +843,21 @@ bool CWinSystemX11::SetWindow(int width, int height, bool fullscreen, const CStd + } + XGrabKeyboard(m_dpy, m_glWindow, True, GrabModeAsync, GrabModeAsync, CurrentTime); + } ++ ++ CDirtyRegionList dr; ++ RefreshGlxContext(); ++ XSync(m_dpy, FALSE); ++ g_graphicsContext.Clear(0); ++ g_graphicsContext.Flip(dr); ++ g_Windowing.ResetVSync(); ++ m_windowDirty = false; ++ + CSingleLock lock(m_resourceSection); + // tell any shared resources + for (vector::iterator i = m_resources.begin(); i != m_resources.end(); i++) + (*i)->OnResetDevice(); +- +- m_windowDirty = false; + } ++ + return true; + } + +diff --git a/xbmc/windowing/X11/WinSystemX11.h b/xbmc/windowing/X11/WinSystemX11.h +index 3bb4b8e..cc28f56 100644 +--- a/xbmc/windowing/X11/WinSystemX11.h ++++ b/xbmc/windowing/X11/WinSystemX11.h +@@ -93,6 +93,7 @@ class CWinSystemX11 : public CWinSystemBase + CStdString m_currentOutput; + bool m_windowDirty; + bool m_bIsInternalXrr; ++ bool m_newGlContext; + + private: + bool IsSuitableVisual(XVisualInfo *vInfo); +diff --git a/xbmc/windowing/X11/WinSystemX11GL.cpp b/xbmc/windowing/X11/WinSystemX11GL.cpp +index d192697..0f2d1d2 100644 +--- a/xbmc/windowing/X11/WinSystemX11GL.cpp ++++ b/xbmc/windowing/X11/WinSystemX11GL.cpp +@@ -23,6 +23,7 @@ + + #include "WinSystemX11GL.h" + #include "utils/log.h" ++#include "Application.h" + + CWinSystemX11GL::CWinSystemX11GL() + { +@@ -245,17 +246,25 @@ bool CWinSystemX11GL::CreateNewWindow(const CStdString& name, bool fullScreen, R + + bool CWinSystemX11GL::ResizeWindow(int newWidth, int newHeight, int newLeft, int newTop) + { ++ m_newGlContext = false; + CWinSystemX11::ResizeWindow(newWidth, newHeight, newLeft, newTop); + CRenderSystemGL::ResetRenderSystem(newWidth, newHeight, false, 0); + ++ if (m_newGlContext) ++ g_application.ReloadSkin(); ++ + return true; + } + + bool CWinSystemX11GL::SetFullScreen(bool fullScreen, RESOLUTION_INFO& res, bool blankOtherDisplays) + { ++ m_newGlContext = false; + CWinSystemX11::SetFullScreen(fullScreen, res, blankOtherDisplays); + CRenderSystemGL::ResetRenderSystem(res.iWidth, res.iHeight, fullScreen, res.fRefreshRate); + ++ if (m_newGlContext) ++ g_application.ReloadSkin(); ++ + return true; + } + +-- +1.7.10 + + +From 14e3083d6ce3fc0561993e9fe4f503da8caa9682 Mon Sep 17 00:00:00 2001 +From: FernetMenta +Date: Thu, 5 Jul 2012 12:06:25 +0200 +Subject: [PATCH 25/51] X11: hook video reference clock in windowing + +--- + xbmc/video/VideoReferenceClock.cpp | 71 ++++++++++++++++++++++++++---------- + xbmc/video/VideoReferenceClock.h | 13 ++++++- + 2 files changed, 63 insertions(+), 21 deletions(-) + +diff --git a/xbmc/video/VideoReferenceClock.cpp b/xbmc/video/VideoReferenceClock.cpp +index 7ce41d8..31ee27b 100644 +--- a/xbmc/video/VideoReferenceClock.cpp ++++ b/xbmc/video/VideoReferenceClock.cpp +@@ -135,12 +135,23 @@ + m_Context = NULL; + m_pixmap = None; + m_glPixmap = None; +- m_RREventBase = 0; + m_UseNvSettings = true; + m_bIsATI = false; + #endif + } + ++CVideoReferenceClock::~CVideoReferenceClock() ++{ ++#if defined(HAS_GLX) ++ // some ATI voodoo, if we don't close the display, we crash on exit ++ if (m_Dpy) ++ { ++ XCloseDisplay(m_Dpy); ++ m_Dpy = NULL; ++ } ++#endif ++} ++ + void CVideoReferenceClock::Process() + { + bool SetupSuccess = false; +@@ -151,6 +162,10 @@ void CVideoReferenceClock::Process() + m_D3dCallback.Reset(); + g_Windowing.Register(&m_D3dCallback); + #endif ++#if defined(HAS_GLX) && defined(HAS_XRANDR) ++ g_Windowing.Register(this); ++ m_xrrEvent = false; ++#endif + + while(!m_bStop) + { +@@ -211,6 +226,16 @@ void CVideoReferenceClock::Process() + //clean up the vblank clock + #if defined(HAS_GLX) && defined(HAS_XRANDR) + CleanupGLX(); ++ if (m_xrrEvent) ++ { ++ m_releaseEvent.Set(); ++ while (!m_bStop) ++ { ++ if (m_resetEvent.WaitMSec(100)) ++ break; ++ } ++ m_xrrEvent = false; ++ } + #elif defined(_WIN32) && defined(HAS_DX) + CleanupD3D(); + #elif defined(TARGET_DARWIN) +@@ -222,6 +247,9 @@ void CVideoReferenceClock::Process() + #if defined(_WIN32) && defined(HAS_DX) + g_Windowing.Unregister(&m_D3dCallback); + #endif ++#if defined(HAS_GLX) ++ g_Windowing.Unregister(this); ++#endif + } + + bool CVideoReferenceClock::WaitStarted(int MSecs) +@@ -231,6 +259,24 @@ bool CVideoReferenceClock::WaitStarted(int MSecs) + } + + #if defined(HAS_GLX) && defined(HAS_XRANDR) ++ ++void CVideoReferenceClock::OnLostDevice() ++{ ++ if (!m_xrrEvent) ++ { ++ m_releaseEvent.Reset(); ++ m_resetEvent.Reset(); ++ m_xrrEvent = true; ++ m_releaseEvent.Wait(); ++ } ++} ++ ++void CVideoReferenceClock::OnResetDevice() ++{ ++ m_xrrEvent = false; ++ m_resetEvent.Set(); ++} ++ + bool CVideoReferenceClock::SetupGLX() + { + int singleBufferAttributes[] = { +@@ -382,10 +428,6 @@ bool CVideoReferenceClock::SetupGLX() + return false; + } + +- //set up receiving of RandR events, we'll get one when the refreshrate changes +- XRRQueryExtension(m_Dpy, &m_RREventBase, &ReturnV); +- XRRSelectInput(m_Dpy, g_Windowing.GetWindow(), RRScreenChangeNotifyMask); +- + UpdateRefreshrate(true); //forced refreshrate update + m_MissedVblanks = 0; + +@@ -586,6 +628,9 @@ void CVideoReferenceClock::RunGLX() + + while(!m_bStop) + { ++ if (m_xrrEvent) ++ return; ++ + //wait for the next vblank + if (!m_bIsATI) + { +@@ -649,7 +694,6 @@ void CVideoReferenceClock::RunGLX() + UpdateClock((int)(VblankCount - PrevVblankCount), true); + SingleLock.Leave(); + SendVblankSignal(); +- UpdateRefreshrate(); + IsReset = false; + } + else if (!m_bStop) +@@ -1186,23 +1230,10 @@ bool CVideoReferenceClock::UpdateRefreshrate(bool Forced /*= false*/) + + #if defined(HAS_GLX) && defined(HAS_XRANDR) + +- //check for RandR events +- bool GotEvent = Forced || m_RefreshChanged == 2; +- XEvent Event; +- while (XCheckTypedEvent(m_Dpy, m_RREventBase + RRScreenChangeNotify, &Event)) +- { +- if (Event.type == m_RREventBase + RRScreenChangeNotify) +- { +- CLog::Log(LOGDEBUG, "CVideoReferenceClock: Received RandR event %i", Event.type); +- GotEvent = true; +- } +- XRRUpdateConfiguration(&Event); +- } +- + if (!Forced) + m_RefreshChanged = 0; + +- if (!GotEvent) //refreshrate did not change ++ if (!Forced) //refreshrate did not change + return false; + + //the refreshrate can be wrong on nvidia drivers, so read it from nvidia-settings when it's available +diff --git a/xbmc/video/VideoReferenceClock.h b/xbmc/video/VideoReferenceClock.h +index dcc4f09..7eb6317 100644 +--- a/xbmc/video/VideoReferenceClock.h ++++ b/xbmc/video/VideoReferenceClock.h +@@ -30,6 +30,7 @@ + #include + #include + #include ++ #include "guilib/DispResource.h" + #elif defined(_WIN32) && defined(HAS_DX) + #include + #include "guilib/D3DResource.h" +@@ -56,9 +57,13 @@ class CD3DCallback : public ID3DResource + #endif + + class CVideoReferenceClock : public CThread ++#if defined(HAS_GLX) && defined(HAS_XRANDR) ++ ,public IDispResource ++#endif + { + public: + CVideoReferenceClock(); ++ virtual ~CVideoReferenceClock(); + + int64_t GetTime(bool interpolated = true); + int64_t GetFrequency(); +@@ -75,6 +80,11 @@ class CVideoReferenceClock : public CThread + void VblankHandler(int64_t nowtime, double fps); + #endif + ++#if defined(HAS_GLX) && defined(HAS_XRANDR) ++ virtual void OnLostDevice(); ++ virtual void OnResetDevice(); ++#endif ++ + private: + void Process(); + bool UpdateRefreshrate(bool Forced = false); +@@ -121,7 +131,8 @@ class CVideoReferenceClock : public CThread + GLXContext m_Context; + Pixmap m_pixmap; + GLXPixmap m_glPixmap; +- int m_RREventBase; ++ bool m_xrrEvent; ++ CEvent m_releaseEvent, m_resetEvent; + + bool m_UseNvSettings; + bool m_bIsATI; +-- +1.7.10 + + +From e15135e7afd0303308b0012fe0bada6245c06941 Mon Sep 17 00:00:00 2001 +From: xbmc +Date: Thu, 21 Jun 2012 17:26:51 +0200 +Subject: [PATCH 26/51] X11: fix video calibrations + +--- + xbmc/settings/Settings.cpp | 1 + + xbmc/windowing/WinSystem.h | 1 + + xbmc/windowing/X11/WinSystemX11.cpp | 36 ++++++++++++++++++++++++++++++++++- + xbmc/windowing/X11/WinSystemX11.h | 1 + + 4 files changed, 38 insertions(+), 1 deletion(-) + +diff --git a/xbmc/settings/Settings.cpp b/xbmc/settings/Settings.cpp +index b04e7f9..ee334fe 100644 +--- a/xbmc/settings/Settings.cpp ++++ b/xbmc/settings/Settings.cpp +@@ -55,6 +55,7 @@ + #include "filesystem/File.h" + #include "filesystem/DirectoryCache.h" + #include "DatabaseManager.h" ++#include "windowing/WindowingFactory.h" + + using namespace std; + using namespace XFILE; +diff --git a/xbmc/windowing/WinSystem.h b/xbmc/windowing/WinSystem.h +index 05c5eda..852d085 100644 +--- a/xbmc/windowing/WinSystem.h ++++ b/xbmc/windowing/WinSystem.h +@@ -100,6 +100,7 @@ class CWinSystemBase + std::vector ScreenResolutions(int screen); + std::vector RefreshRates(int screen, int width, int height, uint32_t dwFlags); + REFRESHRATE DefaultRefreshRate(int screen, std::vector rates); ++ virtual bool HasCalibration(const RESOLUTION_INFO &resInfo) { return true; }; + + protected: + void UpdateDesktopResolution(RESOLUTION_INFO& newRes, int screen, int width, int height, float refreshRate, uint32_t dwFlags = 0); +diff --git a/xbmc/windowing/X11/WinSystemX11.cpp b/xbmc/windowing/X11/WinSystemX11.cpp +index d3d15e2..487b324 100644 +--- a/xbmc/windowing/X11/WinSystemX11.cpp ++++ b/xbmc/windowing/X11/WinSystemX11.cpp +@@ -320,7 +320,7 @@ void CWinSystemX11::UpdateResolutions() + res.strMode.Format("%s: %s @ %.2fHz", out->name.c_str(), mode.name.c_str(), mode.hz); + res.strOutput = out->name; + res.strId = mode.id; +- res.iSubtitles = (int)(0.95*mode.h); ++ res.iSubtitles = (int)(0.965*mode.h); + res.fRefreshRate = mode.hz; + res.bFullScreen = true; + +@@ -333,8 +333,42 @@ void CWinSystemX11::UpdateResolutions() + g_settings.m_ResInfo.push_back(res); + } + } ++ g_settings.ApplyCalibrations(); + #endif ++} ++ ++bool CWinSystemX11::HasCalibration(const RESOLUTION_INFO &resInfo) ++{ ++ XOutput *out = g_xrandr.GetOutput(m_currentOutput); ++ ++ // keep calibrations done on a not connected output ++ if (!out->name.Equals(resInfo.strOutput)) ++ return true; ++ ++ // keep calibrations not updated with resolution data ++ if (resInfo.iWidth == 0) ++ return true; ++ ++ float fPixRatio; ++ if (resInfo.iHeight>0 && resInfo.iWidth>0 && out->hmm>0 && out->wmm>0) ++ fPixRatio = ((float)out->wmm/(float)resInfo.iWidth) / (((float)out->hmm/(float)resInfo.iHeight)); ++ else ++ fPixRatio = 1.0f; + ++ if (resInfo.Overscan.left != 0) ++ return true; ++ if (resInfo.Overscan.top != 0) ++ return true; ++ if (resInfo.Overscan.right != resInfo.iWidth) ++ return true; ++ if (resInfo.Overscan.bottom != resInfo.iHeight) ++ return true; ++ if (resInfo.fPixelRatio != fPixRatio) ++ return true; ++ if (resInfo.iSubtitles != (int)(0.965*resInfo.iHeight)) ++ return true; ++ ++ return false; + } + + void CWinSystemX11::GetConnectedOutputs(std::vector *outputs) +diff --git a/xbmc/windowing/X11/WinSystemX11.h b/xbmc/windowing/X11/WinSystemX11.h +index cc28f56..c046c86 100644 +--- a/xbmc/windowing/X11/WinSystemX11.h ++++ b/xbmc/windowing/X11/WinSystemX11.h +@@ -61,6 +61,7 @@ class CWinSystemX11 : public CWinSystemBase + virtual bool Show(bool raise = true); + virtual void Register(IDispResource *resource); + virtual void Unregister(IDispResource *resource); ++ virtual bool HasCalibration(const RESOLUTION_INFO &resInfo); + + // Local to WinSystemX11 only + Display* GetDisplay() { return m_dpy; } +-- +1.7.10 + + +From 2449c0fa15a3e77c5b8820ce878f751c77682dea Mon Sep 17 00:00:00 2001 +From: FernetMenta +Date: Thu, 5 Jul 2012 12:00:26 +0200 +Subject: [PATCH 27/51] X11: deactivate screen saver on startup + +--- + xbmc/windowing/X11/WinSystemX11.cpp | 29 +++++++++++++++++++++++++++++ + xbmc/windowing/X11/WinSystemX11.h | 1 + + 2 files changed, 30 insertions(+) + +diff --git a/xbmc/windowing/X11/WinSystemX11.cpp b/xbmc/windowing/X11/WinSystemX11.cpp +index 487b324..b3e7ab5 100644 +--- a/xbmc/windowing/X11/WinSystemX11.cpp ++++ b/xbmc/windowing/X11/WinSystemX11.cpp +@@ -521,6 +521,33 @@ void CWinSystemX11::ResetOSScreensaver() + } + } + ++void CWinSystemX11::EnableSystemScreenSaver(bool bEnable) ++{ ++ if (!m_dpy) ++ return; ++ ++ if (bEnable) ++ XForceScreenSaver(m_dpy, ScreenSaverActive); ++ else ++ { ++ Window root_return, child_return; ++ int root_x_return, root_y_return; ++ int win_x_return, win_y_return; ++ unsigned int mask_return; ++ bool isInWin = XQueryPointer(m_dpy, RootWindow(m_dpy, m_nScreen), &root_return, &child_return, ++ &root_x_return, &root_y_return, ++ &win_x_return, &win_y_return, ++ &mask_return); ++ ++ XWarpPointer(m_dpy, None, RootWindow(m_dpy, m_nScreen), 0, 0, 0, 0, root_x_return+300, root_y_return+300); ++ XSync(m_dpy, FALSE); ++ XWarpPointer(m_dpy, None, RootWindow(m_dpy, m_nScreen), 0, 0, 0, 0, 0, 0); ++ XSync(m_dpy, FALSE); ++ XWarpPointer(m_dpy, None, RootWindow(m_dpy, m_nScreen), 0, 0, 0, 0, root_x_return, root_y_return); ++ XSync(m_dpy, FALSE); ++ } ++} ++ + void CWinSystemX11::NotifyAppActiveChange(bool bActivated) + { + if (bActivated && m_bWasFullScreenBeforeMinimize && !m_bFullScreen) +@@ -764,6 +791,8 @@ bool CWinSystemX11::SetWindow(int width, int height, bool fullscreen, const CStd + // create main window + if (!m_glWindow) + { ++ EnableSystemScreenSaver(false); ++ + GLint att[] = + { + GLX_RGBA, +diff --git a/xbmc/windowing/X11/WinSystemX11.h b/xbmc/windowing/X11/WinSystemX11.h +index c046c86..e953d2d 100644 +--- a/xbmc/windowing/X11/WinSystemX11.h ++++ b/xbmc/windowing/X11/WinSystemX11.h +@@ -51,6 +51,7 @@ class CWinSystemX11 : public CWinSystemBase + virtual void ShowOSMouse(bool show); + virtual void ResetOSScreensaver(); + virtual bool EnableFrameLimiter(); ++ virtual void EnableSystemScreenSaver(bool bEnable); + + virtual void NotifyAppActiveChange(bool bActivated); + virtual void NotifyAppFocusChange(bool bGaining); +-- +1.7.10 + + +From 73a813d0faf70477bef2f35eb986ad8ed37701c8 Mon Sep 17 00:00:00 2001 +From: FernetMenta +Date: Thu, 5 Jul 2012 12:10:09 +0200 +Subject: [PATCH 28/51] X11: change method of going full-screen + +--- + xbmc/windowing/X11/WinSystemX11.cpp | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +diff --git a/xbmc/windowing/X11/WinSystemX11.cpp b/xbmc/windowing/X11/WinSystemX11.cpp +index b3e7ab5..91f92c1 100644 +--- a/xbmc/windowing/X11/WinSystemX11.cpp ++++ b/xbmc/windowing/X11/WinSystemX11.cpp +@@ -34,6 +34,7 @@ + #include "utils/TimeUtils.h" + #include "settings/GUISettings.h" + #include "windowing/WindowingFactory.h" ++#include + + #if defined(HAS_XRANDR) + #include +@@ -816,7 +817,7 @@ bool CWinSystemX11::SetWindow(int width, int height, bool fullscreen, const CStd + cmap = XCreateColormap(m_dpy, RootWindow(m_dpy, vi->screen), vi->visual, AllocNone); + + int def_vis = (vi->visual == DefaultVisual(m_dpy, vi->screen)); +- swa.override_redirect = fullscreen ? True : False; ++ swa.override_redirect = False; + swa.border_pixel = fullscreen ? 0 : 5; + swa.background_pixel = def_vis ? BlackPixel(m_dpy, vi->screen) : 0; + swa.colormap = cmap; +@@ -832,6 +833,12 @@ bool CWinSystemX11::SetWindow(int width, int height, bool fullscreen, const CStd + InputOutput, vi->visual, + mask, &swa); + ++ if (fullscreen) ++ { ++ Atom fs = XInternAtom(m_dpy, "_NET_WM_STATE_FULLSCREEN", True); ++ XChangeProperty(m_dpy, m_glWindow, XInternAtom(m_dpy, "_NET_WM_STATE", True), XA_ATOM, 32, PropModeReplace, (unsigned char *) &fs, 1); ++ } ++ + // define invisible cursor + Pixmap bitmapNoData; + XColor black; +-- +1.7.10 + + +From 20bd50445164e0203eff0b7ca5561e0da9056bb2 Mon Sep 17 00:00:00 2001 +From: xbmc +Date: Thu, 28 Jun 2012 19:12:39 +0200 +Subject: [PATCH 29/51] X11: reset key repeat and key modifier on focus lost + and gain + +--- + xbmc/windowing/WinEventsX11.cpp | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/xbmc/windowing/WinEventsX11.cpp b/xbmc/windowing/WinEventsX11.cpp +index 6c22358..d86205d 100644 +--- a/xbmc/windowing/WinEventsX11.cpp ++++ b/xbmc/windowing/WinEventsX11.cpp +@@ -359,6 +359,8 @@ bool CWinEventsX11::MessagePump() + if (WinEvents->m_xic) + XSetICFocus(WinEvents->m_xic); + g_application.m_AppFocused = true; ++ memset(&(WinEvents->m_lastKey), 0, sizeof(XBMC_Event)); ++ WinEvents->m_keymodState = 0; + if (serial == xevent.xfocus.serial) + break; + g_Windowing.NotifyAppFocusChange(g_application.m_AppFocused); +@@ -370,6 +372,7 @@ bool CWinEventsX11::MessagePump() + if (WinEvents->m_xic) + XUnsetICFocus(WinEvents->m_xic); + g_application.m_AppFocused = false; ++ memset(&(WinEvents->m_lastKey), 0, sizeof(XBMC_Event)); + g_Windowing.NotifyAppFocusChange(g_application.m_AppFocused); + serial = xevent.xfocus.serial; + break; +-- +1.7.10 + + +From 4d912cef9b53615d7066a4dcebc313f0503d968a Mon Sep 17 00:00:00 2001 +From: Joakim Plate +Date: Thu, 5 Jul 2012 14:18:46 +0200 +Subject: [PATCH 30/51] X11: replace custom utf8 to unicode with charset + convertor (squash to x11 events) + +--- + xbmc/windowing/WinEventsX11.cpp | 119 ++++----------------------------------- + xbmc/windowing/WinEventsX11.h | 2 - + 2 files changed, 11 insertions(+), 110 deletions(-) + +diff --git a/xbmc/windowing/WinEventsX11.cpp b/xbmc/windowing/WinEventsX11.cpp +index d86205d..76702e6 100644 +--- a/xbmc/windowing/WinEventsX11.cpp ++++ b/xbmc/windowing/WinEventsX11.cpp +@@ -32,6 +32,7 @@ + #include "X11/keysymdef.h" + #include "X11/XF86keysym.h" + #include "utils/log.h" ++#include "utils/CharsetConverter.h" + #include "guilib/GUIWindowManager.h" + #include "input/MouseStat.h" + +@@ -161,7 +162,6 @@ + m_display = 0; + m_window = 0; + m_keybuf = 0; +- m_utf16buf = 0; + } + + CWinEventsX11::~CWinEventsX11() +@@ -172,12 +172,6 @@ + m_keybuf = 0; + } + +- if (m_utf16buf) +- { +- free(m_utf16buf); +- m_utf16buf = 0; +- } +- + if (m_xic) + { + XUnsetICFocus(m_xic); +@@ -203,7 +197,6 @@ bool CWinEventsX11::Init(Display *dpy, Window win) + WinEvents->m_display = dpy; + WinEvents->m_window = win; + WinEvents->m_keybuf = (char*)malloc(32*sizeof(char)); +- WinEvents->m_utf16buf = (uint16_t*)malloc(32*sizeof(uint16_t)); + WinEvents->m_keymodState = 0; + WinEvents->m_wmDeleteMessage = XInternAtom(dpy, "WM_DELETE_WINDOW", False); + WinEvents->m_structureChanged = false; +@@ -433,8 +426,6 @@ bool CWinEventsX11::MessagePump() + } + + Status status; +- int utf16size; +- int utf16length; + int len; + len = Xutf8LookupString(WinEvents->m_xic, &xevent.xkey, + WinEvents->m_keybuf, sizeof(WinEvents->m_keybuf), +@@ -453,36 +444,29 @@ bool CWinEventsX11::MessagePump() + case XLookupChars: + case XLookupBoth: + { +- if (len == 0) +- break; +- utf16size = len * sizeof(uint16_t); +- if (utf16size > sizeof(WinEvents->m_utf16buf)) +- { +- WinEvents->m_utf16buf = (uint16_t *)realloc(WinEvents->m_utf16buf,utf16size); +- if (WinEvents->m_utf16buf == NULL) +- { +- break; +- } +- } +- utf16length = Utf8ToUnicode(WinEvents->m_keybuf, len, WinEvents->m_utf16buf, utf16size); +- if (utf16length < 0) ++ CStdString data(WinEvents->m_keybuf, len); ++ CStdStringW keys; ++ g_charsetConverter.utf8ToW(data, keys, false); ++ ++ if (keys.length() == 0) + { + break; + } +- for (unsigned int i = 0; i < utf16length - 1; i++) ++ ++ for (unsigned int i = 0; i < keys.length() - 1; i++) + { + newEvent.key.keysym.sym = XBMCK_UNKNOWN; +- newEvent.key.keysym.unicode = WinEvents->m_utf16buf[i]; ++ newEvent.key.keysym.unicode = keys[i]; + newEvent.key.state = xevent.xkey.state; + newEvent.key.type = xevent.xkey.type; + ret |= ProcessKey(newEvent, 500); + } +- if (utf16length > 0) ++ if (keys.length() > 0) + { + newEvent.key.keysym.scancode = xevent.xkey.keycode; + xkeysym = XLookupKeysym(&xevent.xkey, 0); + newEvent.key.keysym.sym = LookupXbmcKeySym(xkeysym); +- newEvent.key.keysym.unicode = WinEvents->m_utf16buf[utf16length - 1]; ++ newEvent.key.keysym.unicode = keys[keys.length() - 1]; + newEvent.key.state = xevent.xkey.state; + newEvent.key.type = xevent.xkey.type; + +@@ -743,87 +727,6 @@ bool CWinEventsX11::ProcessKeyRepeat() + return false; + } + +-int CWinEventsX11::Utf8ToUnicode(const char *utf8, const int utf8Length, uint16_t *utf16, const int utf16MaxLength) +-{ +- // p moves over the output buffer. max_ptr points to the next to the last slot of the buffer. +- uint16_t *p = utf16; +- uint16_t const *const maxPtr = utf16 + utf16MaxLength; +- +- // end_of_input points to the last byte of input as opposed to the next to the last byte. +- char const *const endOfInput = utf8 + utf8Length - 1; +- +- while (utf8 <= endOfInput) +- { +- unsigned char const c = *utf8; +- if (p >= maxPtr) +- { +- //No more output space. +- return -1; +- } +- if (c < 0x80) +- { +- //One byte ASCII. +- *p++ = c; +- utf8 += 1; +- } +- else if (c < 0xC0) +- { +- // Follower byte without preceding leader bytes. +- return -1; +- } +- // 11 bits +- else if (c < 0xE0) +- { +- // Two byte sequence. We need one follower byte. +- if (endOfInput - utf8 < 1 || (((utf8[1] ^ 0x80)) & 0xC0)) +- { +- return -1; +- } +- *p++ = (uint16_t)(((c & 0x1F) << 6) + (utf8[1] & 0x3F)); +- utf8 += 2; +- } +- // 16 bis +- else if (c < 0xF0) +- { +- // Three byte sequence. We need two follower byte. +- if (endOfInput - utf8 < 2 || ((utf8[1] ^ 0x80) & 0xC0) || ((utf8[2] ^ 0x80) & 0xC0)) +- { +- return -1; +- } +- *p++ = (uint16_t)(((c & 0xF) << 12) + ((utf8[1] & 0x3F) << 6) + (utf8[2] & 0x3F)); +- utf8 += 3; +- } +- // 21 bits +- else if (c < 0xF8) +- { +- int plane; +- // Four byte sequence. We need three follower bytes. +- if (endOfInput - utf8 < 3 || ((utf8[1] ^ 0x80) & 0xC0) || +- ((utf8[2] ^ 0x80) & 0xC0) || ((utf8[3] ^ 0x80) & 0xC0)) +- { +- return -1; +- } +- uint32_t unicode = ((c & 0x7) << 18) + ((utf8[1] & 0x3F) << 12) + +- ((utf8[2] & 0x3F) << 6) + (utf8[3] & 0x3F); +- utf8 += 4; +- CLog::Log(LOGERROR, "CWinEventsX11::Utf8ToUnicode: 4 byte unicode not supported"); +- } +- // 26 bits +- else if (c < 0xFC) +- { +- CLog::Log(LOGERROR, "CWinEventsX11::Utf8ToUnicode: 4 byte unicode not supported"); +- utf8 += 5; +- } +- // 31 bit +- else +- { +- CLog::Log(LOGERROR, "CWinEventsX11::Utf8ToUnicode: 4 byte unicode not supported"); +- utf8 += 6; +- } +- } +- return p - utf16; +-} +- + XBMCKey CWinEventsX11::LookupXbmcKeySym(KeySym keysym) + { + // try direct mapping first +diff --git a/xbmc/windowing/WinEventsX11.h b/xbmc/windowing/WinEventsX11.h +index 6100933..72955ad 100644 +--- a/xbmc/windowing/WinEventsX11.h ++++ b/xbmc/windowing/WinEventsX11.h +@@ -38,7 +38,6 @@ class CWinEventsX11 : public CWinEventsBase + static bool MessagePump(); + + protected: +- static int Utf8ToUnicode(const char *utf8, const int utf8Length, uint16_t *utf16, const int utf16MaxLength); + static XBMCKey LookupXbmcKeySym(KeySym keysym); + static bool ProcessKey(XBMC_Event &event, int repeatDelay); + static bool ProcessKeyRepeat(); +@@ -48,7 +47,6 @@ class CWinEventsX11 : public CWinEventsBase + Window m_window; + Atom m_wmDeleteMessage; + char *m_keybuf; +- uint16_t *m_utf16buf; + XIM m_xim; + XIC m_xic; + XBMC_Event m_lastKey; +-- +1.7.10 + + +From 425f8e903140a8591e6fb331ae6a5e5c1dc9e144 Mon Sep 17 00:00:00 2001 +From: Joakim Plate +Date: Thu, 5 Jul 2012 14:23:54 +0200 +Subject: [PATCH 31/51] X11: fixed invalid usage of sizeof() (squash into x11 + changes) + +--- + xbmc/windowing/WinEventsX11.cpp | 11 +++++++---- + xbmc/windowing/WinEventsX11.h | 1 + + 2 files changed, 8 insertions(+), 4 deletions(-) + +diff --git a/xbmc/windowing/WinEventsX11.cpp b/xbmc/windowing/WinEventsX11.cpp +index 76702e6..c31877e 100644 +--- a/xbmc/windowing/WinEventsX11.cpp ++++ b/xbmc/windowing/WinEventsX11.cpp +@@ -162,6 +162,7 @@ + m_display = 0; + m_window = 0; + m_keybuf = 0; ++ m_keybuf_len = 0; + } + + CWinEventsX11::~CWinEventsX11() +@@ -196,7 +197,8 @@ bool CWinEventsX11::Init(Display *dpy, Window win) + WinEvents = new CWinEventsX11(); + WinEvents->m_display = dpy; + WinEvents->m_window = win; +- WinEvents->m_keybuf = (char*)malloc(32*sizeof(char)); ++ WinEvents->m_keybuf_len = 32*sizeof(char); ++ WinEvents->m_keybuf = (char*)malloc(WinEvents->m_keybuf_len); + WinEvents->m_keymodState = 0; + WinEvents->m_wmDeleteMessage = XInternAtom(dpy, "WM_DELETE_WINDOW", False); + WinEvents->m_structureChanged = false; +@@ -428,13 +430,14 @@ bool CWinEventsX11::MessagePump() + Status status; + int len; + len = Xutf8LookupString(WinEvents->m_xic, &xevent.xkey, +- WinEvents->m_keybuf, sizeof(WinEvents->m_keybuf), ++ WinEvents->m_keybuf, WinEvents->m_keybuf_len, + &xkeysym, &status); + if (status == XBufferOverflow) + { +- WinEvents->m_keybuf = (char*)realloc(WinEvents->m_keybuf, len*sizeof(char)); ++ WinEvents->m_keybuf_len = len; ++ WinEvents->m_keybuf = (char*)realloc(WinEvents->m_keybuf, WinEvents->m_keybuf_len); + len = Xutf8LookupString(WinEvents->m_xic, &xevent.xkey, +- WinEvents->m_keybuf, sizeof(WinEvents->m_keybuf), ++ WinEvents->m_keybuf, WinEvents->m_keybuf_len, + &xkeysym, &status); + } + switch (status) +diff --git a/xbmc/windowing/WinEventsX11.h b/xbmc/windowing/WinEventsX11.h +index 72955ad..102a076 100644 +--- a/xbmc/windowing/WinEventsX11.h ++++ b/xbmc/windowing/WinEventsX11.h +@@ -47,6 +47,7 @@ class CWinEventsX11 : public CWinEventsBase + Window m_window; + Atom m_wmDeleteMessage; + char *m_keybuf; ++ size_t m_keybuf_len; + XIM m_xim; + XIC m_xic; + XBMC_Event m_lastKey; +-- +1.7.10 + + +From 32522e44d6d938d91614cbd86d5179781ec1c27a Mon Sep 17 00:00:00 2001 +From: xbmc +Date: Sat, 9 Jun 2012 18:23:53 +0200 +Subject: [PATCH 32/51] add missing keys to xbmc keytable + +--- + xbmc/input/XBMC_keytable.cpp | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/xbmc/input/XBMC_keytable.cpp b/xbmc/input/XBMC_keytable.cpp +index dbc28a7..0ab6e78 100644 +--- a/xbmc/input/XBMC_keytable.cpp ++++ b/xbmc/input/XBMC_keytable.cpp +@@ -179,6 +179,8 @@ + , { XBMCK_LAUNCH_APP2, 0, 0, XBMCVK_LAUNCH_APP2, "launch_app2_pc_icon" } + , { XBMCK_LAUNCH_FILE_BROWSER, 0, 0, XBMCVK_LAUNCH_FILE_BROWSER, "launch_file_browser" } + , { XBMCK_LAUNCH_MEDIA_CENTER, 0, 0, XBMCVK_LAUNCH_MEDIA_CENTER, "launch_media_center" } ++, { XBMCK_PLAY, 0, 0, XBMCVK_MEDIA_PLAY_PAUSE, "play_pause" } ++, { XBMCK_STOP, 0, 0, XBMCVK_MEDIA_STOP, "stop" } + + // Function keys + , { XBMCK_F1, 0, 0, XBMCVK_F1, "f1"} +-- +1.7.10 + + +From 88639e2b75eee6ea4f4128d53cea0c4192953789 Mon Sep 17 00:00:00 2001 +From: xbmc +Date: Fri, 16 Mar 2012 15:57:51 +0100 +Subject: [PATCH 33/51] videorefclock: temp deactivate of nv settings + +--- + xbmc/video/VideoReferenceClock.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/xbmc/video/VideoReferenceClock.cpp b/xbmc/video/VideoReferenceClock.cpp +index 31ee27b..ae2908a 100644 +--- a/xbmc/video/VideoReferenceClock.cpp ++++ b/xbmc/video/VideoReferenceClock.cpp +@@ -135,7 +135,7 @@ + m_Context = NULL; + m_pixmap = None; + m_glPixmap = None; +- m_UseNvSettings = true; ++ m_UseNvSettings = false; + m_bIsATI = false; + #endif + } +-- +1.7.10 + + +From 60c42673038b612043443fdd66417b3242245db4 Mon Sep 17 00:00:00 2001 +From: xbmc +Date: Mon, 20 Aug 2012 09:09:09 +0200 +Subject: [PATCH 34/51] videorefclock: ask graphics context for refresh rate + +--- + xbmc/video/VideoReferenceClock.cpp | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/xbmc/video/VideoReferenceClock.cpp b/xbmc/video/VideoReferenceClock.cpp +index ae2908a..db7a98c 100644 +--- a/xbmc/video/VideoReferenceClock.cpp ++++ b/xbmc/video/VideoReferenceClock.cpp +@@ -30,6 +30,7 @@ + #include + #include + #include "windowing/WindowingFactory.h" ++ #include "guilib/GraphicContext.h" + #define NVSETTINGSCMD "nvidia-settings -nt -q RefreshRate3" + #elif defined(TARGET_DARWIN_OSX) + #include +@@ -1254,7 +1255,7 @@ bool CVideoReferenceClock::UpdateRefreshrate(bool Forced /*= false*/) + } + + CSingleLock SingleLock(m_CritSection); +- m_RefreshRate = GetRandRRate(); ++ m_RefreshRate = MathUtils::round_int(g_graphicsContext.GetFPS()); + + CLog::Log(LOGDEBUG, "CVideoReferenceClock: Detected refreshrate: %i hertz", (int)m_RefreshRate); + +-- +1.7.10 + + +From de7bb15157d13390e293b687b84016c2042c5204 Mon Sep 17 00:00:00 2001 +From: xbmc +Date: Mon, 9 Jul 2012 14:00:18 +0200 +Subject: [PATCH 35/51] X11: fix icon texture after + cc5ed3c2474084ebc0373a3046410e6f766e03f4 + +--- + xbmc/windowing/X11/WinSystemX11.cpp | 43 +++++++++++++++++++++-------------- + 1 file changed, 26 insertions(+), 17 deletions(-) + +diff --git a/xbmc/windowing/X11/WinSystemX11.cpp b/xbmc/windowing/X11/WinSystemX11.cpp +index 91f92c1..174ccef 100644 +--- a/xbmc/windowing/X11/WinSystemX11.cpp ++++ b/xbmc/windowing/X11/WinSystemX11.cpp +@@ -874,22 +874,24 @@ bool CWinSystemX11::SetWindow(int width, int height, bool fullscreen, const CStd + if (!fullscreen) + { + CreateIconPixmap(); +- XWMHints wm_hints; +- XClassHint class_hints; ++ XWMHints *wm_hints; + XTextProperty windowName, iconName; + std::string titleString = "XBMC Media Center"; + char *title = (char*)titleString.c_str(); + + XStringListToTextProperty(&title, 1, &windowName); + XStringListToTextProperty(&title, 1, &iconName); +- wm_hints.initial_state = NormalState; +- wm_hints.input = True; +- wm_hints.icon_pixmap = m_icon; +- wm_hints.flags = StateHint | IconPixmapHint | InputHint; + ++ wm_hints = XAllocWMHints(); ++ wm_hints->initial_state = NormalState; ++ wm_hints->icon_pixmap = m_icon; ++ wm_hints->flags = StateHint | IconPixmapHint; ++ ++ XSync(m_dpy,False); + XSetWMProperties(m_dpy, m_glWindow, &windowName, &iconName, +- NULL, 0, NULL, &wm_hints, ++ NULL, 0, NULL, wm_hints, + NULL); ++ XFree(wm_hints); + + // register interest in the delete window message + Atom wmDeleteMessage = XInternAtom(m_dpy, "WM_DELETE_WINDOW", False); +@@ -974,16 +976,21 @@ bool CWinSystemX11::CreateIconPixmap() + gRatio = vis->green_mask / 255.0; + bRatio = vis->blue_mask / 255.0; + +- CTexture iconTexture; +- iconTexture.LoadFromFile("special://xbmc/media/icon.png"); +- buf = iconTexture.GetPixels(); ++ CBaseTexture *iconTexture = CBaseTexture::LoadFromFile("special://xbmc/media/icon.png"); ++ ++ if (!iconTexture) ++ return false; + +- numBufBytes = iconTexture.GetWidth() * iconTexture.GetHeight() * 4; ++ buf = iconTexture->GetPixels(); ++ ++ numBufBytes = iconTexture->GetWidth() * iconTexture->GetHeight() * 4; ++ int wid = iconTexture->GetWidth(); ++ int hi = iconTexture->GetHeight(); + + if (depth>=24) +- numNewBufBytes = (4 * (iconTexture.GetWidth() * iconTexture.GetHeight())); ++ numNewBufBytes = (4 * (iconTexture->GetWidth() * iconTexture->GetHeight())); + else +- numNewBufBytes = (2 * (iconTexture.GetWidth() * iconTexture.GetHeight())); ++ numNewBufBytes = (2 * (iconTexture->GetWidth() * iconTexture->GetHeight())); + + newBuf = (uint32_t*)malloc(numNewBufBytes); + if (!newBuf) +@@ -992,11 +999,11 @@ bool CWinSystemX11::CreateIconPixmap() + return false; + } + +- for (i=0; iGetHeight();++i) + { +- for (j=0; jGetWidth();++j) + { +- unsigned int pos = i*iconTexture.GetPitch()+j*4; ++ unsigned int pos = i*iconTexture->GetPitch()+j*4; + unsigned int r, g, b; + r = (buf[pos+2] * rRatio); + g = (buf[pos+1] * gRatio); +@@ -1009,7 +1016,7 @@ bool CWinSystemX11::CreateIconPixmap() + } + } + img = XCreateImage(m_dpy, vis, depth,ZPixmap, 0, (char *)newBuf, +- iconTexture.GetWidth(), iconTexture.GetHeight(), ++ iconTexture->GetWidth(), iconTexture->GetHeight(), + (depth>=24)?32:16, 0); + if (!img) + { +@@ -1047,6 +1054,8 @@ bool CWinSystemX11::CreateIconPixmap() + XFreeGC(m_dpy, gc); + XDestroyImage(img); // this also frees newBuf + ++ delete iconTexture; ++ + return true; + } + +-- +1.7.10 + + +From 5a44aeb5a8b2d3bf180f57514e14ac63814a598d Mon Sep 17 00:00:00 2001 +From: xbmc +Date: Tue, 10 Jul 2012 11:14:12 +0200 +Subject: [PATCH 36/51] X11: check for window manager + +--- + xbmc/windowing/X11/WinSystemX11.cpp | 74 ++++++++++++++++++++++++++++++++++- + xbmc/windowing/X11/WinSystemX11.h | 1 + + 2 files changed, 73 insertions(+), 2 deletions(-) + +diff --git a/xbmc/windowing/X11/WinSystemX11.cpp b/xbmc/windowing/X11/WinSystemX11.cpp +index 174ccef..4f1ae26 100644 +--- a/xbmc/windowing/X11/WinSystemX11.cpp ++++ b/xbmc/windowing/X11/WinSystemX11.cpp +@@ -816,8 +816,10 @@ bool CWinSystemX11::SetWindow(int width, int height, bool fullscreen, const CStd + vi = glXChooseVisual(m_dpy, m_nScreen, att); + cmap = XCreateColormap(m_dpy, RootWindow(m_dpy, vi->screen), vi->visual, AllocNone); + ++ bool hasWM = HasWindowManager(); ++ + int def_vis = (vi->visual == DefaultVisual(m_dpy, vi->screen)); +- swa.override_redirect = False; ++ swa.override_redirect = hasWM ? False : True; + swa.border_pixel = fullscreen ? 0 : 5; + swa.background_pixel = def_vis ? BlackPixel(m_dpy, vi->screen) : 0; + swa.colormap = cmap; +@@ -833,7 +835,7 @@ bool CWinSystemX11::SetWindow(int width, int height, bool fullscreen, const CStd + InputOutput, vi->visual, + mask, &swa); + +- if (fullscreen) ++ if (fullscreen && hasWM) + { + Atom fs = XInternAtom(m_dpy, "_NET_WM_STATE_FULLSCREEN", True); + XChangeProperty(m_dpy, m_glWindow, XInternAtom(m_dpy, "_NET_WM_STATE", True), XA_ATOM, 32, PropModeReplace, (unsigned char *) &fs, 1); +@@ -1059,4 +1061,72 @@ bool CWinSystemX11::CreateIconPixmap() + return true; + } + ++bool CWinSystemX11::HasWindowManager() ++{ ++ Window wm_check; ++ unsigned char *data; ++ int status, real_format; ++ Atom real_type, prop; ++ unsigned long items_read, items_left, i; ++ char req = 0; ++ ++ prop = XInternAtom(m_dpy, "_NET_SUPPORTING_WM_CHECK", True); ++ if (prop == None) ++ return false; ++ status = XGetWindowProperty(m_dpy, DefaultRootWindow(m_dpy), prop, ++ 0L, 1L, False, XA_WINDOW, &real_type, &real_format, ++ &items_read, &items_left, &data); ++ if(status != Success || ! items_read) ++ { ++ if(status == Success) ++ XFree(data); ++ return false; ++ } ++ ++ wm_check = ((Window*)data)[0]; ++ XFree(data); ++ ++ status = XGetWindowProperty(m_dpy, wm_check, prop, ++ 0L, 1L, False, XA_WINDOW, &real_type, &real_format, ++ &items_read, &items_left, &data); ++ ++ if(status != Success || !items_read) ++ { ++ if(status == Success) ++ XFree(data); ++ return false; ++ } ++ ++ if(wm_check != ((Window*)data)[0]) ++ { ++ XFree(data); ++ return false; ++ } ++ ++ XFree(data); ++ ++ prop = XInternAtom(m_dpy, "_NET_WM_NAME", True); ++ if (prop == None) ++ { ++ CLog::Log(LOGDEBUG,"Window Manager Name: "); ++ return true; ++ } ++ ++ status = XGetWindowProperty(m_dpy, wm_check, prop, ++ 0L, (~0L), False, AnyPropertyType, &real_type, &real_format, ++ &items_read, &items_left, &data); ++ ++ if(status == Success && items_read) ++ { ++ CLog::Log(LOGDEBUG,"Window Manager Name: %s", data); ++ } ++ else ++ CLog::Log(LOGDEBUG,"Window Manager Name: "); ++ ++ if(status == Success) ++ XFree(data); ++ ++ return true; ++} ++ + #endif +diff --git a/xbmc/windowing/X11/WinSystemX11.h b/xbmc/windowing/X11/WinSystemX11.h +index e953d2d..0b7c10a 100644 +--- a/xbmc/windowing/X11/WinSystemX11.h ++++ b/xbmc/windowing/X11/WinSystemX11.h +@@ -101,6 +101,7 @@ class CWinSystemX11 : public CWinSystemBase + bool IsSuitableVisual(XVisualInfo *vInfo); + static int XErrorHandler(Display* dpy, XErrorEvent* error); + bool CreateIconPixmap(); ++ bool HasWindowManager(); + + CStopWatch m_screensaverReset; + }; +-- +1.7.10 + + +From 9310ca1d0bc6d54d546246ea720c7fabc82d0251 Mon Sep 17 00:00:00 2001 +From: xbmc +Date: Thu, 12 Jul 2012 11:11:47 +0200 +Subject: [PATCH 37/51] X11: dont set window on xrandr if no mode available + +--- + xbmc/windowing/X11/WinSystemX11.cpp | 11 ++++++----- + 1 file changed, 6 insertions(+), 5 deletions(-) + +diff --git a/xbmc/windowing/X11/WinSystemX11.cpp b/xbmc/windowing/X11/WinSystemX11.cpp +index 4f1ae26..c11ea89 100644 +--- a/xbmc/windowing/X11/WinSystemX11.cpp ++++ b/xbmc/windowing/X11/WinSystemX11.cpp +@@ -665,16 +665,17 @@ void CWinSystemX11::NotifyXRREvent() + CLog::Log(LOGDEBUG, "%s - notify display reset event", __FUNCTION__); + m_windowDirty = true; + ++ if (!g_xrandr.Query(true)) ++ { ++ CLog::Log(LOGERROR, "WinSystemX11::RefreshWindow - failed to query xrandr"); ++ return; ++ } ++ + // if external event update resolutions + if (!m_bIsInternalXrr) + { + UpdateResolutions(); + } +- else if (!g_xrandr.Query(true)) +- { +- CLog::Log(LOGERROR, "WinSystemX11::RefreshWindow - failed to query xrandr"); +- return; +- } + m_bIsInternalXrr = false; + + CStdString currentOutput = g_guiSettings.GetString("videoscreen.monitor"); +-- +1.7.10 + + +From 7e006cec1098d01629d077f314e5929728658a22 Mon Sep 17 00:00:00 2001 +From: xbmc +Date: Thu, 26 Jul 2012 09:34:28 +0200 +Subject: [PATCH 38/51] X11: fix crash after a resolution change on startup + +--- + xbmc/windowing/X11/WinSystemX11.cpp | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/xbmc/windowing/X11/WinSystemX11.cpp b/xbmc/windowing/X11/WinSystemX11.cpp +index c11ea89..0bd72d4 100644 +--- a/xbmc/windowing/X11/WinSystemX11.cpp ++++ b/xbmc/windowing/X11/WinSystemX11.cpp +@@ -219,7 +219,8 @@ bool CWinSystemX11::SetFullScreen(bool fullScreen, RESOLUTION_INFO& res, bool bl + OnLostDevice(); + m_bIsInternalXrr = true; + g_xrandr.SetMode(out, mode); +- return true; ++ if (m_glWindow) ++ return true; + } + #endif + +-- +1.7.10 + + +From 8da8661d1e34e55c01189a408180e6f4a4b3725d Mon Sep 17 00:00:00 2001 +From: xbmc +Date: Sat, 15 Sep 2012 18:27:29 +0200 +Subject: [PATCH 39/51] X11: lock graphics context in NotifyXRREvent + +--- + xbmc/windowing/X11/WinSystemX11.cpp | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/xbmc/windowing/X11/WinSystemX11.cpp b/xbmc/windowing/X11/WinSystemX11.cpp +index 0bd72d4..ef83133 100644 +--- a/xbmc/windowing/X11/WinSystemX11.cpp ++++ b/xbmc/windowing/X11/WinSystemX11.cpp +@@ -666,6 +666,8 @@ void CWinSystemX11::NotifyXRREvent() + CLog::Log(LOGDEBUG, "%s - notify display reset event", __FUNCTION__); + m_windowDirty = true; + ++ CSingleLock lock(g_graphicsContext); ++ + if (!g_xrandr.Query(true)) + { + CLog::Log(LOGERROR, "WinSystemX11::RefreshWindow - failed to query xrandr"); +-- +1.7.10 + + +From bdd7fa045efd1d7fd1bc0a7f7acc34d71cb7b3b8 Mon Sep 17 00:00:00 2001 +From: xbmc +Date: Thu, 26 Jul 2012 15:43:24 +0200 +Subject: [PATCH 40/51] move deleting gl textures to TextureManager, fixes + asic hang on AMD + +--- + xbmc/Application.cpp | 4 ++-- + xbmc/guilib/GUIFontTTFGL.cpp | 3 ++- + xbmc/guilib/TextureManager.cpp | 13 +++++++++++++ + xbmc/guilib/TextureManager.h | 2 ++ + 4 files changed, 19 insertions(+), 3 deletions(-) + +diff --git a/xbmc/Application.cpp b/xbmc/Application.cpp +index df9b97b..cb5f3de 100644 +--- a/xbmc/Application.cpp ++++ b/xbmc/Application.cpp +@@ -2299,8 +2299,6 @@ void CApplication::Render() + + g_Windowing.EndRender(); + +- g_TextureManager.FreeUnusedTextures(); +- + // reset our info cache - we do this at the end of Render so that it is + // fresh for the next process(), or after a windowclose animation (where process() + // isn't called) +@@ -2338,6 +2336,8 @@ void CApplication::Render() + } + CTimeUtils::UpdateFrameTime(flip); + ++ g_TextureManager.FreeUnusedTextures(); ++ + g_renderManager.UpdateResolution(); + g_renderManager.ManageCaptures(); + } +diff --git a/xbmc/guilib/GUIFontTTFGL.cpp b/xbmc/guilib/GUIFontTTFGL.cpp +index 47553dd..88b9894 100644 +--- a/xbmc/guilib/GUIFontTTFGL.cpp ++++ b/xbmc/guilib/GUIFontTTFGL.cpp +@@ -23,6 +23,7 @@ + #include "GUIFontTTFGL.h" + #include "GUIFontManager.h" + #include "Texture.h" ++#include "TextureManager.h" + #include "GraphicContext.h" + #include "gui3d.h" + #include "utils/log.h" +@@ -234,7 +235,7 @@ void CGUIFontTTFGL::DeleteHardwareTexture() + if (m_bTextureLoaded) + { + if (glIsTexture(m_nTexture)) +- glDeleteTextures(1, (GLuint*) &m_nTexture); ++ g_TextureManager.ReleaseHwTexture(m_nTexture); + m_bTextureLoaded = false; + } + } +diff --git a/xbmc/guilib/TextureManager.cpp b/xbmc/guilib/TextureManager.cpp +index 94d6d7d..c0dc4c8 100644 +--- a/xbmc/guilib/TextureManager.cpp ++++ b/xbmc/guilib/TextureManager.cpp +@@ -459,6 +459,19 @@ void CGUITextureManager::FreeUnusedTextures() + for (ivecTextures i = m_unusedTextures.begin(); i != m_unusedTextures.end(); ++i) + delete *i; + m_unusedTextures.clear(); ++ ++#if defined(HAS_GL) || defined(HAS_GLES) ++ for (unsigned int i = 0; i < m_unusedHwTextures.size(); ++i) ++ { ++ glDeleteTextures(1, (GLuint*) &m_unusedHwTextures[i]); ++ } ++#endif ++ m_unusedHwTextures.clear(); ++} ++ ++void CGUITextureManager::ReleaseHwTexture(unsigned int texture) ++{ ++ m_unusedHwTextures.push_back(texture); + } + + void CGUITextureManager::Cleanup() +diff --git a/xbmc/guilib/TextureManager.h b/xbmc/guilib/TextureManager.h +index 35c3532..b70d5b4 100644 +--- a/xbmc/guilib/TextureManager.h ++++ b/xbmc/guilib/TextureManager.h +@@ -123,9 +123,11 @@ class CGUITextureManager + void RemoveTexturePath(const CStdString &texturePath); ///< Remove a path from the paths to check when loading media + + void FreeUnusedTextures(); ///< Free textures (called from app thread only) ++ void ReleaseHwTexture(unsigned int texture); + protected: + std::vector m_vecTextures; + std::vector m_unusedTextures; ++ std::vector m_unusedHwTextures; + typedef std::vector::iterator ivecTextures; + // we have 2 texture bundles (one for the base textures, one for the theme) + CTextureBundle m_TexBundle[2]; +-- +1.7.10 + + +From 1ccb43d1952d8f1b9fcaee7ee71b5788f10cf6b3 Mon Sep 17 00:00:00 2001 +From: Rainer Hochecker +Date: Sat, 8 Oct 2011 16:45:13 +0200 +Subject: [PATCH 41/51] ffmpeg: add xvba hwaccel + +--- + lib/ffmpeg/configure | 8 ++ + lib/ffmpeg/libavcodec/Makefile | 7 +- + lib/ffmpeg/libavcodec/allcodecs.c | 4 + + lib/ffmpeg/libavcodec/h264.c | 1 + + lib/ffmpeg/libavcodec/mpegvideo.c | 1 + + lib/ffmpeg/libavcodec/xvba.c | 66 ++++++++++++ + lib/ffmpeg/libavcodec/xvba.h | 71 ++++++++++++ + lib/ffmpeg/libavcodec/xvba_h264.c | 189 ++++++++++++++++++++++++++++++++ + lib/ffmpeg/libavcodec/xvba_internal.h | 24 +++++ + lib/ffmpeg/libavcodec/xvba_mpeg2.c | 52 +++++++++ + lib/ffmpeg/libavcodec/xvba_vc1.c | 190 +++++++++++++++++++++++++++++++++ + lib/ffmpeg/libavcodec/xvmc_internal.h | 4 +- + lib/ffmpeg/libavutil/pixdesc.c | 6 ++ + lib/ffmpeg/libavutil/pixfmt.h | 1 + + 14 files changed, 622 insertions(+), 2 deletions(-) + create mode 100644 lib/ffmpeg/libavcodec/xvba.c + create mode 100644 lib/ffmpeg/libavcodec/xvba.h + create mode 100644 lib/ffmpeg/libavcodec/xvba_h264.c + create mode 100644 lib/ffmpeg/libavcodec/xvba_internal.h + create mode 100644 lib/ffmpeg/libavcodec/xvba_mpeg2.c + create mode 100644 lib/ffmpeg/libavcodec/xvba_vc1.c + +diff --git a/lib/ffmpeg/configure b/lib/ffmpeg/configure +index c06005b..157cfd3 100755 +--- a/lib/ffmpeg/configure ++++ b/lib/ffmpeg/configure +@@ -113,6 +113,7 @@ Configuration options: + --enable-vdpau enable VDPAU code [autodetect] + --disable-dxva2 disable DXVA2 code + --disable-vda disable VDA code ++ --disable-xvba disable XVBA code + --enable-runtime-cpudetect detect cpu capabilities at runtime (bigger binary) + --enable-hardcoded-tables use hardcoded tables instead of runtime generation + --disable-safe-bitstream-reader +@@ -1084,6 +1085,7 @@ CONFIG_LIST=" + vaapi + vda + vdpau ++ xvba + version3 + x11grab + zlib +@@ -1423,6 +1425,7 @@ h264_dxva2_hwaccel_select="dxva2 h264_decoder" + h264_vaapi_hwaccel_select="vaapi h264_decoder" + h264_vda_hwaccel_deps="VideoDecodeAcceleration_VDADecoder_h pthreads" + h264_vda_hwaccel_select="vda h264_decoder" ++h264_xvba_hwaccel_select="xvba h264_decoder" + h264_vdpau_decoder_select="vdpau h264_decoder" + imc_decoder_select="fft mdct sinewin" + jpegls_decoder_select="golomb" +@@ -1459,6 +1462,7 @@ mpeg4_crystalhd_decoder_select="crystalhd" + mpeg4_decoder_select="h263_decoder mpeg4video_parser" + mpeg4_encoder_select="h263_encoder" + mpeg4_vaapi_hwaccel_select="vaapi mpeg4_decoder" ++mpeg2_xvba_hwaccel_select="xvba mpeg2video_decoder" + mpeg4_vdpau_decoder_select="vdpau mpeg4_decoder" + msmpeg4_crystalhd_decoder_select="crystalhd" + msmpeg4v1_decoder_select="h263_decoder" +@@ -1501,6 +1505,7 @@ vc1_decoder_select="h263_decoder h264chroma" + vc1_dxva2_hwaccel_deps="dxva2api_h" + vc1_dxva2_hwaccel_select="dxva2 vc1_decoder" + vc1_vaapi_hwaccel_select="vaapi vc1_decoder" ++vc1_xvba_hwaccel_select="xvba vc1_decoder" + vc1_vdpau_decoder_select="vdpau vc1_decoder" + vc1image_decoder_select="vc1_decoder" + vorbis_decoder_select="mdct" +@@ -1525,6 +1530,7 @@ wmv3_dxva2_hwaccel_select="vc1_dxva2_hwaccel" + wmv3_vaapi_hwaccel_select="vc1_vaapi_hwaccel" + wmv3_vdpau_decoder_select="vc1_vdpau_decoder" + wmv3image_decoder_select="wmv3_decoder" ++wmv3_xvba_hwaccel_select="vc1_xvba_hwaccel" + zlib_decoder_select="zlib" + zlib_encoder_select="zlib" + zmbv_decoder_select="zlib" +@@ -1533,6 +1539,7 @@ zmbv_encoder_select="zlib" + crystalhd_deps="libcrystalhd_libcrystalhd_if_h" + vaapi_deps="va_va_h" + vda_deps="VideoDecodeAcceleration_VDADecoder_h pthreads" ++xvba_deps="amd_amdxvba_h" + vdpau_deps="vdpau_vdpau_h vdpau_vdpau_x11_h" + + # parsers +@@ -3062,6 +3069,7 @@ check_header sys/select.h + check_header termios.h + check_header vdpau/vdpau.h + check_header vdpau/vdpau_x11.h ++check_header amd/amdxvba.h + check_cpp_condition vdpau/vdpau.h "defined(VDP_DECODER_PROFILE_MPEG4_PART2_SP)" && enable vdpau_mpeg4_support + + check_header X11/extensions/XvMClib.h +diff --git a/lib/ffmpeg/libavcodec/Makefile b/lib/ffmpeg/libavcodec/Makefile +index 972cc59..fc441bf 100644 +--- a/lib/ffmpeg/libavcodec/Makefile ++++ b/lib/ffmpeg/libavcodec/Makefile +@@ -3,7 +3,7 @@ include $(SUBDIR)../config.mak + NAME = avcodec + FFLIBS = avutil + +-HEADERS = avcodec.h avfft.h dxva2.h opt.h vaapi.h vda.h vdpau.h version.h xvmc.h ++HEADERS = avcodec.h avfft.h dxva2.h opt.h vaapi.h vda.h vdpau.h version.h xvmc.h xvba.h + + OBJS = allcodecs.o \ + audioconvert.o \ +@@ -51,6 +51,7 @@ OBJS-$(CONFIG_SINEWIN) += sinewin.o + OBJS-$(CONFIG_VAAPI) += vaapi.o + OBJS-$(CONFIG_VDA) += vda.o + OBJS-$(CONFIG_VDPAU) += vdpau.o ++OBJS-$(CONFIG_XVBA) += xvba.o + + # decoders/encoders/hardware accelerators + OBJS-$(CONFIG_A64MULTI_ENCODER) += a64multienc.o elbg.o +@@ -201,6 +202,7 @@ OBJS-$(CONFIG_H264_DECODER) += h264.o \ + OBJS-$(CONFIG_H264_DXVA2_HWACCEL) += dxva2_h264.o + OBJS-$(CONFIG_H264_VAAPI_HWACCEL) += vaapi_h264.o + OBJS-$(CONFIG_H264_VDA_HWACCEL) += vda_h264.o ++OBJS-$(CONFIG_H264_XVBA_HWACCEL) += xvba_h264.o + OBJS-$(CONFIG_HUFFYUV_DECODER) += huffyuv.o + OBJS-$(CONFIG_HUFFYUV_ENCODER) += huffyuv.o + OBJS-$(CONFIG_IDCIN_DECODER) += idcinvideo.o +@@ -284,6 +286,7 @@ OBJS-$(CONFIG_MPEG1VIDEO_ENCODER) += mpeg12enc.o mpegvideo_enc.o \ + mpegvideo.o error_resilience.o + OBJS-$(CONFIG_MPEG2_DXVA2_HWACCEL) += dxva2_mpeg2.o + OBJS-$(CONFIG_MPEG2_VAAPI_HWACCEL) += vaapi_mpeg2.o ++OBJS-$(CONFIG_MPEG2_XVBA_HWACCEL) += xvba_mpeg2.o + OBJS-$(CONFIG_MPEG2VIDEO_DECODER) += mpeg12.o mpeg12data.o \ + mpegvideo.o error_resilience.o + OBJS-$(CONFIG_MPEG2VIDEO_ENCODER) += mpeg12enc.o mpegvideo_enc.o \ +@@ -431,6 +434,7 @@ OBJS-$(CONFIG_VC1_DECODER) += vc1dec.o vc1.o vc1data.o vc1dsp.o \ + intrax8.o intrax8dsp.o + OBJS-$(CONFIG_VC1_DXVA2_HWACCEL) += dxva2_vc1.o + OBJS-$(CONFIG_VC1_VAAPI_HWACCEL) += vaapi_vc1.o ++OBJS-$(CONFIG_VC1_XVBA_HWACCEL) += xvba_vc1.o + OBJS-$(CONFIG_VCR1_DECODER) += vcr1.o + OBJS-$(CONFIG_VCR1_ENCODER) += vcr1.o + OBJS-$(CONFIG_VMDAUDIO_DECODER) += vmdav.o +@@ -732,6 +736,7 @@ SKIPHEADERS-$(CONFIG_LIBDIRAC) += libdirac.h + SKIPHEADERS-$(CONFIG_LIBSCHROEDINGER) += libschroedinger.h + SKIPHEADERS-$(CONFIG_VAAPI) += vaapi_internal.h + SKIPHEADERS-$(CONFIG_VDA) += vda_internal.h ++SKIPHEADERS-$(CONFIG_XVBA) += xvba_internal.h + SKIPHEADERS-$(CONFIG_VDPAU) += vdpau.h + SKIPHEADERS-$(CONFIG_XVMC) += xvmc.h + SKIPHEADERS-$(HAVE_W32THREADS) += w32pthreads.h +diff --git a/lib/ffmpeg/libavcodec/allcodecs.c b/lib/ffmpeg/libavcodec/allcodecs.c +index 32f3f52..0ff178e 100644 +--- a/lib/ffmpeg/libavcodec/allcodecs.c ++++ b/lib/ffmpeg/libavcodec/allcodecs.c +@@ -59,14 +59,18 @@ void avcodec_register_all(void) + REGISTER_HWACCEL (H264_VAAPI, h264_vaapi); + REGISTER_HWACCEL (H264_VDA, h264_vda); + REGISTER_HWACCEL (MPEG1_VDPAU, mpeg1_vdpau); ++ REGISTER_HWACCEL (H264_XVBA, h264_xvba); + REGISTER_HWACCEL (MPEG2_DXVA2, mpeg2_dxva2); + REGISTER_HWACCEL (MPEG2_VAAPI, mpeg2_vaapi); + REGISTER_HWACCEL (MPEG2_VDPAU, mpeg2_vdpau); + REGISTER_HWACCEL (MPEG4_VAAPI, mpeg4_vaapi); ++ REGISTER_HWACCEL (MPEG2_XVBA, mpeg2_xvba); + REGISTER_HWACCEL (VC1_DXVA2, vc1_dxva2); + REGISTER_HWACCEL (VC1_VAAPI, vc1_vaapi); ++ REGISTER_HWACCEL (VC1_XVBA, vc1_xvba); + REGISTER_HWACCEL (WMV3_DXVA2, wmv3_dxva2); + REGISTER_HWACCEL (WMV3_VAAPI, wmv3_vaapi); ++ REGISTER_HWACCEL (WMV3_XVBA, wmv3_xvba); + + /* video codecs */ + REGISTER_ENCODER (A64MULTI, a64multi); +diff --git a/lib/ffmpeg/libavcodec/h264.c b/lib/ffmpeg/libavcodec/h264.c +index c4785db..e9e7546 100644 +--- a/lib/ffmpeg/libavcodec/h264.c ++++ b/lib/ffmpeg/libavcodec/h264.c +@@ -60,6 +60,7 @@ + PIX_FMT_DXVA2_VLD, + PIX_FMT_VAAPI_VLD, + PIX_FMT_VDA_VLD, ++ PIX_FMT_XVBA_VLD, + PIX_FMT_YUVJ420P, + PIX_FMT_NONE + }; +diff --git a/lib/ffmpeg/libavcodec/mpegvideo.c b/lib/ffmpeg/libavcodec/mpegvideo.c +index 04c149a..b22b631 100644 +--- a/lib/ffmpeg/libavcodec/mpegvideo.c ++++ b/lib/ffmpeg/libavcodec/mpegvideo.c +@@ -136,6 +136,7 @@ static void dct_unquantize_h263_inter_c(MpegEncContext *s, + PIX_FMT_DXVA2_VLD, + PIX_FMT_VAAPI_VLD, + PIX_FMT_VDA_VLD, ++ PIX_FMT_XVBA_VLD, + PIX_FMT_YUV420P, + PIX_FMT_NONE + }; +diff --git a/lib/ffmpeg/libavcodec/xvba.c b/lib/ffmpeg/libavcodec/xvba.c +new file mode 100644 +index 0000000..be29e5d +--- /dev/null ++++ b/lib/ffmpeg/libavcodec/xvba.c +@@ -0,0 +1,66 @@ ++/* ++ * HW decode acceleration for MPEG-2, H.264 and VC-1 ++ * ++ * Copyright (C) 2005-2011 Team XBMC ++ * ++ * This file is part of FFmpeg. ++ * ++ * FFmpeg is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU Lesser General Public ++ * License as published by the Free Software Foundation; either ++ * version 2.1 of the License, or (at your option) any later version. ++ * ++ * FFmpeg is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ * Lesser General Public License for more details. ++ * ++ * You should have received a copy of the GNU Lesser General Public ++ * License along with FFmpeg; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA ++ */ ++ ++ ++/** ++ * \addtogroup XVBA_Decoding ++ * ++ * @{ ++ */ ++ ++#include ++#include "xvba.h" ++#include "xvba_internal.h" ++#include "avcodec.h" ++ ++int ff_xvba_translate_profile(int profile) { ++ ++ if (profile == 66) ++ return 1; ++ else if (profile == 77) ++ return 2; ++ else if (profile == 100) ++ return 3; ++ else if (profile == 0) ++ return 4; ++ else if (profile == 1) ++ return 5; ++ else if (profile == 3) ++ return 6; ++ else ++ return -1; ++} ++ ++void ff_xvba_add_slice_data(struct xvba_render_state *render, const uint8_t *buffer, uint32_t size) { ++ ++ render->buffers = av_fast_realloc( ++ render->buffers, ++ &render->buffers_alllocated, ++ sizeof(struct xvba_bitstream_buffers)*(render->num_slices + 1) ++ ); ++ ++ render->buffers[render->num_slices].buffer = buffer; ++ render->buffers[render->num_slices].size = size; ++ ++ render->num_slices++; ++} ++ +diff --git a/lib/ffmpeg/libavcodec/xvba.h b/lib/ffmpeg/libavcodec/xvba.h +new file mode 100644 +index 0000000..9f9ff0c +--- /dev/null ++++ b/lib/ffmpeg/libavcodec/xvba.h +@@ -0,0 +1,71 @@ ++/* ++ * HW decode acceleration for MPEG-2, H.264 and VC-1 ++ * ++ * Copyright (C) 2005-2011 Team XBMC ++ * ++ * This file is part of FFmpeg. ++ * ++ * FFmpeg is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU Lesser General Public ++ * License as published by the Free Software Foundation; either ++ * version 2.1 of the License, or (at your option) any later version. ++ * ++ * FFmpeg is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ * Lesser General Public License for more details. ++ * ++ * You should have received a copy of the GNU Lesser General Public ++ * License along with FFmpeg; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA ++ */ ++ ++#ifndef AVCODEC_XVBA_H ++#define AVCODEC_XVBA_H ++ ++#include ++#include ++#include ++ ++ ++/** ++ * \defgroup XVBA_Decoding VA API Decoding ++ * \ingroup Decoder ++ * @{ ++ */ ++ ++/** \brief The videoSurface is used for rendering. */ ++#define FF_XVBA_STATE_USED_FOR_RENDER 1 ++ ++/** ++ * \brief The videoSurface is needed for reference/prediction. ++ * The codec manipulates this. ++ */ ++#define FF_XVBA_STATE_USED_FOR_REFERENCE 2 ++ ++/** ++ * \brief The videoSurface holds a decoded frame. ++ * The codec manipulates this. ++ */ ++#define FF_XVBA_STATE_DECODED 4 ++ ++/* @} */ ++ ++struct xvba_bitstream_buffers ++{ ++ const void *buffer; ++ unsigned int size; ++}; ++ ++struct xvba_render_state { ++ ++ int state; ///< Holds FF_XVBA_STATE_* values. ++ void *surface; ++ XVBAPictureDescriptor *picture_descriptor; ++ XVBAQuantMatrixAvc *iq_matrix; ++ unsigned int num_slices; ++ struct xvba_bitstream_buffers *buffers; ++ uint32_t buffers_alllocated; ++}; ++ ++#endif /* AVCODEC_XVBA_H */ +diff --git a/lib/ffmpeg/libavcodec/xvba_h264.c b/lib/ffmpeg/libavcodec/xvba_h264.c +new file mode 100644 +index 0000000..a077442 +--- /dev/null ++++ b/lib/ffmpeg/libavcodec/xvba_h264.c +@@ -0,0 +1,189 @@ ++/* ++ * H.264 HW decode acceleration through XVBA ++ * ++ * Copyright (C) 2005-2011 Team XBMC ++ * ++ * This file is part of FFmpeg. ++ * ++ * FFmpeg is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU Lesser General Public ++ * License as published by the Free Software Foundation; either ++ * version 2.1 of the License, or (at your option) any later version. ++ * ++ * FFmpeg is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ * Lesser General Public License for more details. ++ * ++ * You should have received a copy of the GNU Lesser General Public ++ * License along with FFmpeg; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA ++ */ ++ ++#include "xvba.h" ++#include "xvba_internal.h" ++#include "h264.h" ++#include ++ ++/** @file ++ * This file implements the glue code between FFmpeg's and XvBA API's ++ * structures for H.264 decoding. ++ */ ++ ++ ++/** Initialize and start decoding a frame with XVBA. */ ++static int start_frame(AVCodecContext *avctx, ++ av_unused const uint8_t *buffer, ++ av_unused uint32_t size) ++{ ++ H264Context * const h = avctx->priv_data; ++ MpegEncContext * const s = &h->s; ++ struct xvba_render_state *render; ++ XVBAPictureDescriptor *pic_descriptor; ++ int i; ++ ++ render = (struct xvba_render_state *)s->current_picture_ptr->f.data[0]; ++ assert(render); ++ ++ if (render->picture_descriptor == 0) ++ return -1; ++ ++ pic_descriptor = render->picture_descriptor; ++ ++ for (i = 0; i < 2; ++i) { ++ int foc = s->current_picture_ptr->field_poc[i]; ++ if (foc == INT_MAX) ++ foc = 0; ++ pic_descriptor->avc_curr_field_order_cnt_list[i] = foc; ++ } ++ ++ pic_descriptor->avc_frame_num = h->frame_num; ++ ++ render->num_slices = 0; ++ ++ return 0; ++} ++ ++/** End a hardware decoding based frame. */ ++static int end_frame(AVCodecContext *avctx) ++{ ++ H264Context * const h = avctx->priv_data; ++ MpegEncContext * const s = &h->s; ++ struct xvba_render_state *render; ++ XVBAPictureDescriptor *pic_descriptor; ++ XVBAQuantMatrixAvc *iq_matrix; ++ ++ render = (struct xvba_render_state *)s->current_picture_ptr->f.data[0]; ++ assert(render); ++ ++ if (render->picture_descriptor == 0 || render->iq_matrix == 0) ++ return -1; ++ ++ pic_descriptor = render->picture_descriptor; ++ iq_matrix = render->iq_matrix; ++ ++ av_dlog(avctx, "end_frame()\n"); ++ ++ /* Fill in Picture Parameters*/ ++ pic_descriptor->profile = ff_xvba_translate_profile(avctx->profile); ++ pic_descriptor->level = avctx->level; ++ pic_descriptor->width_in_mb = s->mb_width; ++ pic_descriptor->height_in_mb = s->mb_height; ++ pic_descriptor->picture_structure = s->picture_structure; ++ pic_descriptor->chroma_format = s->chroma_format ? s->chroma_format : 1; ++ pic_descriptor->avc_intra_flag = (h->slice_type == AV_PICTURE_TYPE_I) ? 1 : 0; ++ pic_descriptor->avc_reference = (s->current_picture_ptr->f.reference & 3) ? 1 : 0; ++ ++ pic_descriptor->avc_bit_depth_luma_minus8 = h->sps.bit_depth_luma - 8; ++ pic_descriptor->avc_bit_depth_chroma_minus8 = h->sps.bit_depth_chroma - 8; ++ pic_descriptor->avc_log2_max_frame_num_minus4 = h->sps.log2_max_frame_num -4; ++ pic_descriptor->avc_pic_order_cnt_type = h->sps.poc_type; ++ pic_descriptor->avc_log2_max_pic_order_cnt_lsb_minus4 = h->sps.log2_max_poc_lsb - 4; ++ pic_descriptor->avc_num_ref_frames = h->sps.ref_frame_count; ++ pic_descriptor->avc_reserved_8bit = 0; ++ ++ /* Set correct level */ ++ if (pic_descriptor->level == 41) { ++ const unsigned int mbw = pic_descriptor->width_in_mb; ++ const unsigned int mbh = pic_descriptor->height_in_mb; ++ const unsigned int max_ref_frames = 12288 * 1024 / (mbw * mbh * 384); ++ const unsigned int num_ref_frames = pic_descriptor->avc_num_ref_frames; ++ if (max_ref_frames < num_ref_frames) ++ pic_descriptor->level = 51; ++ } ++ ++ pic_descriptor->avc_num_slice_groups_minus1 = h->pps.slice_group_count - 1; ++ pic_descriptor->avc_num_ref_idx_l0_active_minus1 = h->pps.ref_count[0] - 1; ++ pic_descriptor->avc_num_ref_idx_l1_active_minus1 = h->pps.ref_count[1] - 1; ++ ++ pic_descriptor->avc_pic_init_qp_minus26 = h->pps.init_qp - 26; ++ pic_descriptor->avc_pic_init_qs_minus26 = h->pps.init_qs - 26; ++ pic_descriptor->avc_chroma_qp_index_offset = h->pps.chroma_qp_index_offset[0]; ++ pic_descriptor->avc_second_chroma_qp_index_offset = h->pps.chroma_qp_index_offset[1]; ++ pic_descriptor->avc_slice_group_change_rate_minus1 = 0; // not implemented in ffmpeg ++ pic_descriptor->avc_reserved_16bit = 0; // must be 0 ++ memset(pic_descriptor->avc_field_order_cnt_list,0,sizeof(pic_descriptor->avc_field_order_cnt_list)); // must be 0 ++ memset(pic_descriptor->avc_slice_group_map,0,sizeof(pic_descriptor->avc_slice_group_map)); // must be 0 ++ ++ // sps ++ pic_descriptor->sps_info.avc.delta_pic_always_zero_flag = h->sps.delta_pic_order_always_zero_flag; ++ pic_descriptor->sps_info.avc.direct_8x8_inference_flag = h->sps.direct_8x8_inference_flag; ++ pic_descriptor->sps_info.avc.frame_mbs_only_flag = h->sps.frame_mbs_only_flag; ++ pic_descriptor->sps_info.avc.gaps_in_frame_num_value_allowed_flag = h->sps.gaps_in_frame_num_allowed_flag; ++ pic_descriptor->sps_info.avc.mb_adaptive_frame_field_flag = h->sps.mb_aff; ++ pic_descriptor->sps_info.avc.residual_colour_transform_flag = h->sps.residual_color_transform_flag; ++ pic_descriptor->sps_info.avc.xvba_avc_sps_reserved = 0; ++ ++ // pps ++ pic_descriptor->pps_info.avc.entropy_coding_mode_flag = h->pps.cabac; ++ pic_descriptor->pps_info.avc.pic_order_present_flag = h->pps.pic_order_present; ++ pic_descriptor->pps_info.avc.weighted_pred_flag = h->pps.weighted_pred; ++ pic_descriptor->pps_info.avc.weighted_bipred_idc = h->pps.weighted_bipred_idc; ++ pic_descriptor->pps_info.avc.deblocking_filter_control_present_flag = h->pps.deblocking_filter_parameters_present; ++ pic_descriptor->pps_info.avc.constrained_intra_pred_flag = h->pps.constrained_intra_pred; ++ pic_descriptor->pps_info.avc.redundant_pic_cnt_present_flag = h->pps.redundant_pic_cnt_present; ++ pic_descriptor->pps_info.avc.transform_8x8_mode_flag = h->pps.transform_8x8_mode; ++ pic_descriptor->pps_info.avc.xvba_avc_pps_reserved = 0; // must be 0 ++ ++ memcpy(iq_matrix->bScalingLists4x4, h->pps.scaling_matrix4, sizeof(iq_matrix->bScalingLists4x4)); ++ memcpy(iq_matrix->bScalingLists8x8[0], h->pps.scaling_matrix8[0], sizeof(iq_matrix->bScalingLists8x8[0])); ++ memcpy(iq_matrix->bScalingLists8x8[1], h->pps.scaling_matrix8[3], sizeof(iq_matrix->bScalingLists8x8[0])); ++ ++ // Wait for an I-frame before start decoding. Workaround for ATI UVD and UVD+ GPUs ++ if (!h->got_first_iframe) { ++ if (h->slice_type != AV_PICTURE_TYPE_I && h->slice_type != AV_PICTURE_TYPE_SI) ++ return -1; ++ h->got_first_iframe = 1; ++ } ++ ++ ff_draw_horiz_band(s, 0, s->avctx->height); ++ ++ return 0; ++} ++ ++/** Decode the given H.264 slice with XVBA. */ ++static int decode_slice(AVCodecContext *avctx, ++ const uint8_t *buffer, ++ uint32_t size) ++{ ++ H264Context * const h = avctx->priv_data; ++ MpegEncContext * const s = &h->s; ++ struct xvba_render_state *render; ++ ++ render = (struct xvba_render_state *)s->current_picture_ptr->f.data[0]; ++ assert(render); ++ ++ ff_xvba_add_slice_data(render, buffer, size); ++ ++ return 0; ++} ++ ++AVHWAccel ff_h264_xvba_hwaccel = { ++ .name = "h264_xvba", ++ .type = AVMEDIA_TYPE_VIDEO, ++ .id = CODEC_ID_H264, ++ .pix_fmt = PIX_FMT_XVBA_VLD, ++ .start_frame = start_frame, ++ .end_frame = end_frame, ++ .decode_slice = decode_slice, ++}; +diff --git a/lib/ffmpeg/libavcodec/xvba_internal.h b/lib/ffmpeg/libavcodec/xvba_internal.h +new file mode 100644 +index 0000000..9653f85 +--- /dev/null ++++ b/lib/ffmpeg/libavcodec/xvba_internal.h +@@ -0,0 +1,24 @@ ++/* ++ * HW decode acceleration for MPEG-2, H.264 and VC-1 ++ * ++ * Copyright (C) 2005-2011 Team XBMC ++ * ++ * This file is part of FFmpeg. ++ * ++ * FFmpeg is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU Lesser General Public ++ * License as published by the Free Software Foundation; either ++ * version 2.1 of the License, or (at your option) any later version. ++ * ++ * FFmpeg is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ * Lesser General Public License for more details. ++ * ++ * You should have received a copy of the GNU Lesser General Public ++ * License along with FFmpeg; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA ++ */ ++ ++int ff_xvba_translate_profile(int profile); ++void ff_xvba_add_slice_data(struct xvba_render_state *render, const uint8_t *buffer, uint32_t size); +diff --git a/lib/ffmpeg/libavcodec/xvba_mpeg2.c b/lib/ffmpeg/libavcodec/xvba_mpeg2.c +new file mode 100644 +index 0000000..552ef95 +--- /dev/null ++++ b/lib/ffmpeg/libavcodec/xvba_mpeg2.c +@@ -0,0 +1,52 @@ ++/* ++ * MPEG-2 HW decode acceleration through XVBA ++ * ++ * Copyright (C) 2005-2011 Team XBMC ++ * ++ * This file is part of FFmpeg. ++ * ++ * FFmpeg is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU Lesser General Public ++ * License as published by the Free Software Foundation; either ++ * version 2.1 of the License, or (at your option) any later version. ++ * ++ * FFmpeg is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ * Lesser General Public License for more details. ++ * ++ * You should have received a copy of the GNU Lesser General Public ++ * License along with FFmpeg; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA ++ */ ++ ++#include "dsputil.h" ++ ++static int start_frame(AVCodecContext *avctx, av_unused const uint8_t *buffer, av_unused uint32_t size) ++{ ++ struct MpegEncContext * const s = avctx->priv_data; ++ return 0; ++} ++ ++static int end_frame(AVCodecContext *avctx) ++{ ++ return 0; ++} ++ ++static int decode_slice(AVCodecContext *avctx, const uint8_t *buffer, uint32_t size) ++{ ++ struct MpegEncContext * const s = avctx->priv_data; ++ return 0; ++} ++ ++AVHWAccel ff_mpeg2_xvba_hwaccel = { ++ .name = "mpeg2_xvba", ++ .type = AVMEDIA_TYPE_VIDEO, ++ .id = CODEC_ID_MPEG2VIDEO, ++ .pix_fmt = PIX_FMT_XVBA_VLD, ++ .capabilities = 0, ++ .start_frame = start_frame, ++ .end_frame = end_frame, ++ .decode_slice = decode_slice, ++ .priv_data_size = 0, ++}; +diff --git a/lib/ffmpeg/libavcodec/xvba_vc1.c b/lib/ffmpeg/libavcodec/xvba_vc1.c +new file mode 100644 +index 0000000..7315b62 +--- /dev/null ++++ b/lib/ffmpeg/libavcodec/xvba_vc1.c +@@ -0,0 +1,190 @@ ++/* ++ * VC-1 HW decode acceleration through XVBA ++ * ++ * Copyright (C) 2005-2011 Team XBMC ++ * ++ * This file is part of FFmpeg. ++ * ++ * FFmpeg is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU Lesser General Public ++ * License as published by the Free Software Foundation; either ++ * version 2.1 of the License, or (at your option) any later version. ++ * ++ * FFmpeg is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ * Lesser General Public License for more details. ++ * ++ * You should have received a copy of the GNU Lesser General Public ++ * License along with FFmpeg; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA ++ */ ++ ++#include "xvba.h" ++#include "xvba_internal.h" ++#include "vc1.h" ++#include "vc1data.h" ++#include ++ ++ ++/** @file ++ * Implement structures of ffmpeg <-> XvBA ++ */ ++ ++/* Initialize and start decoding a frame with XvBA */ ++static int start_frame(AVCodecContext *avctx, ++ av_unused const uint8_t *buffer, ++ av_unused uint32_t size) ++{ ++ VC1Context * const v = avctx->priv_data; ++ MpegEncContext * const s = &v->s; ++ struct xvba_render_state *render; ++ ++ render = (struct xvba_render_state *)s->current_picture_ptr->f.data[0]; ++ assert(render); ++ ++ render->num_slices = 0; ++ return 0; ++} ++ ++/* End a hardware decoding based frame */ ++static int end_frame(AVCodecContext *avctx) ++{ ++ VC1Context* const v = avctx->priv_data; ++ MpegEncContext* const s = &v->s; ++ struct xvba_render_state *render, *last, *next; ++ XVBAPictureDescriptor *pic_descriptor; ++ ++ render = (struct xvba_render_state *)s->current_picture_ptr->f.data[0]; ++ assert(render); ++ ++ if (render->picture_descriptor == 0) ++ return -1; ++ ++ pic_descriptor = render->picture_descriptor; ++ ++ av_dlog(avctx, "xvba_vc1_end_frame()\n"); ++ ++ memset(pic_descriptor, 0, sizeof(*pic_descriptor)); ++ ++ /* Fill in Parameters - for reference see AMD sdk documentation */ ++ pic_descriptor->profile = ff_xvba_translate_profile(v->profile); ++ pic_descriptor->level = v->level; ++ //done like in va-driver and vaapi ++ if (v->profile == PROFILE_ADVANCED) { ++ pic_descriptor->width_in_mb = s->avctx->coded_width; ++ pic_descriptor->height_in_mb = s->avctx->coded_height; ++ } else { ++ pic_descriptor->width_in_mb = s->mb_width; ++ pic_descriptor->height_in_mb = s->mb_height; ++ } ++ pic_descriptor->picture_structure = s->picture_structure; ++ // xvba-video set this to 1 only 4:2:0 supported ++ // doc says: if not set, choose 1 - we try this ++ pic_descriptor->chroma_format = 1; ++ pic_descriptor->avc_intra_flag = s->pict_type == AV_PICTURE_TYPE_I || v->bi_type == 1; ++ pic_descriptor->avc_reference = (s->current_picture_ptr->f.reference & 3) ? 1 : 0; ++ ++ // VC-1 explicit parameters see page 30 of sdk ++ // sps_info ++ pic_descriptor->sps_info.vc1.postprocflag = v->postprocflag; ++ ++ // done as in vaapi ++ pic_descriptor->sps_info.vc1.pulldown = v->broadcast; ++ pic_descriptor->sps_info.vc1.interlace = v->interlace; ++ pic_descriptor->sps_info.vc1.tfcntrflag = v->tfcntrflag; ++ pic_descriptor->sps_info.vc1.finterpflag = v->finterpflag; ++ pic_descriptor->sps_info.vc1.reserved = 1; ++ // eventually check if this makes sense together with interlace ++ pic_descriptor->sps_info.vc1.psf = v->psf; ++ // what about if it is a frame (page 31) ++ // looked at xvba-driver ++ pic_descriptor->sps_info.vc1.second_field = !s->first_field; ++ pic_descriptor->sps_info.vc1.xvba_vc1_sps_reserved = 0; ++ ++ // VC-1 explicit parameters see page 30 of sdk ++ // pps_info ++ pic_descriptor->pps_info.vc1.panscan_flag = v->panscanflag; ++ pic_descriptor->pps_info.vc1.refdist_flag = v->refdist_flag; ++ pic_descriptor->pps_info.vc1.loopfilter = s->loop_filter; ++ pic_descriptor->pps_info.vc1.fastuvmc = v->fastuvmc; ++ pic_descriptor->pps_info.vc1.extended_mv = v->extended_mv; ++ pic_descriptor->pps_info.vc1.dquant = v->dquant; ++ pic_descriptor->pps_info.vc1.vstransform = v->vstransform; ++ pic_descriptor->pps_info.vc1.overlap = v->overlap; ++ pic_descriptor->pps_info.vc1.quantizer = v->quantizer_mode; ++ pic_descriptor->pps_info.vc1.extended_dmv = v->extended_dmv; ++ pic_descriptor->pps_info.vc1.maxbframes = s->avctx->max_b_frames; ++ pic_descriptor->pps_info.vc1.rangered = (pic_descriptor->profile == PROFILE_SIMPLE) ? 0 : v->rangered; ++ pic_descriptor->pps_info.vc1.syncmarker = (pic_descriptor->profile == PROFILE_SIMPLE) ? 0 : s->resync_marker; ++ pic_descriptor->pps_info.vc1.multires = v->multires; ++ pic_descriptor->pps_info.vc1.reserved = 1; ++ pic_descriptor->pps_info.vc1.range_mapy_flag = v->range_mapy_flag; ++ pic_descriptor->pps_info.vc1.range_mapy = v->range_mapy; ++ pic_descriptor->pps_info.vc1.range_mapuv_flag = v->range_mapuv_flag; ++ pic_descriptor->pps_info.vc1.range_mapuv = v->range_mapuv; ++ pic_descriptor->pps_info.vc1.xvba_vc1_pps_reserved = 0; ++ ++ pic_descriptor->past_surface = 0; ++ pic_descriptor->future_surface = 0; ++ switch (s->pict_type) { ++ case AV_PICTURE_TYPE_B: ++ next = (struct xvba_render_state *)s->next_picture.f.data[0]; ++ assert(next); ++ if (next) ++ pic_descriptor->past_surface = next->surface; ++ // fall-through ++ case AV_PICTURE_TYPE_P: ++ last = (struct xvba_render_state *)s->last_picture.f.data[0]; ++ assert(last); ++ if (last) ++ pic_descriptor->future_surface = last->surface; ++ break; ++ } ++ ++ ff_draw_horiz_band(s, 0, s->avctx->height); ++ ++ return 0; ++} ++ ++static int decode_slice(AVCodecContext *avctx, const uint8_t *buffer, uint32_t size) ++{ ++ VC1Context* const v = avctx->priv_data; ++ MpegEncContext* const s = &v->s; ++ struct xvba_render_state *render; ++ ++ render = (struct xvba_render_state *)s->current_picture_ptr->f.data[0]; ++ assert(render); ++ ++ if (avctx->codec_id == CODEC_ID_VC1 && ++ size >= 4 && IS_MARKER(AV_RB32(buffer))) { ++ buffer += 4; ++ size -= 4; ++ } ++ ++ ff_xvba_add_slice_data(render, buffer, size); ++ ++ return 0; ++} ++ ++#if CONFIG_WMV3_XVBA_HWACCEL ++AVHWAccel ff_wmv3_xvba_hwaccel = { ++ .name = "wmv3_xvba", ++ .type = AVMEDIA_TYPE_VIDEO, ++ .id = CODEC_ID_WMV3, ++ .pix_fmt = PIX_FMT_XVBA_VLD, ++ .start_frame = start_frame, ++ .end_frame = end_frame, ++ .decode_slice = decode_slice, ++}; ++#endif ++ ++AVHWAccel ff_vc1_xvba_hwaccel = { ++ .name = "vc1_xvba", ++ .type = AVMEDIA_TYPE_VIDEO, ++ .id = CODEC_ID_VC1, ++ .pix_fmt = PIX_FMT_XVBA_VLD, ++ .start_frame = start_frame, ++ .end_frame = end_frame, ++ .decode_slice = decode_slice, ++}; +diff --git a/lib/ffmpeg/libavcodec/xvmc_internal.h b/lib/ffmpeg/libavcodec/xvmc_internal.h +index 04197ce..d925eb1 100644 +--- a/lib/ffmpeg/libavcodec/xvmc_internal.h ++++ b/lib/ffmpeg/libavcodec/xvmc_internal.h +@@ -1,5 +1,7 @@ + /* +- * XVideo Motion Compensation internal functions ++ * HW decode acceleration for MPEG-2, H.264 and VC-1 ++ * ++ * Copyright (C) 2005-2011 Team XBMC + * + * This file is part of FFmpeg. + * +diff --git a/lib/ffmpeg/libavutil/pixdesc.c b/lib/ffmpeg/libavutil/pixdesc.c +index e73fbfe..5abbd14 100644 +--- a/lib/ffmpeg/libavutil/pixdesc.c ++++ b/lib/ffmpeg/libavutil/pixdesc.c +@@ -874,6 +874,12 @@ void av_write_image_line(const uint16_t *src, uint8_t *data[4], const int linesi + .log2_chroma_h = 1, + .flags = PIX_FMT_HWACCEL, + }, ++ [PIX_FMT_XVBA_VLD] = { ++ .name = "xvba_vld", ++ .log2_chroma_w = 1, ++ .log2_chroma_h = 1, ++ .flags = PIX_FMT_HWACCEL, ++ }, + [PIX_FMT_YUV420P9LE] = { + .name = "yuv420p9le", + .nb_components = 3, +diff --git a/lib/ffmpeg/libavutil/pixfmt.h b/lib/ffmpeg/libavutil/pixfmt.h +index f0d9c01..0f8cf7b 100644 +--- a/lib/ffmpeg/libavutil/pixfmt.h ++++ b/lib/ffmpeg/libavutil/pixfmt.h +@@ -129,6 +129,7 @@ enum PixelFormat { + PIX_FMT_YUV444P16BE, ///< planar YUV 4:4:4, 48bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian + PIX_FMT_VDPAU_MPEG4, ///< MPEG4 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers + PIX_FMT_DXVA2_VLD, ///< HW decoding through DXVA2, Picture.data[3] contains a LPDIRECT3DSURFACE9 pointer ++ PIX_FMT_XVBA_VLD, ///< HW decoding through DXVA2, Picture.data[3] contains a vaapi_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers + + PIX_FMT_RGB444LE, ///< packed RGB 4:4:4, 16bpp, (msb)4A 4R 4G 4B(lsb), little-endian, most significant bits to 0 + PIX_FMT_RGB444BE, ///< packed RGB 4:4:4, 16bpp, (msb)4A 4R 4G 4B(lsb), big-endian, most significant bits to 0 +-- +1.7.10 + + +From 53f2efa03f40251dccebbcfc9926490cf8b23965 Mon Sep 17 00:00:00 2001 +From: xbmc +Date: Thu, 12 Apr 2012 12:09:31 +0200 +Subject: [PATCH 42/51] xvba: add decoder + +--- + configure.in | 48 + + language/English/strings.po | 12 +- + xbmc/cores/VideoRenderers/LinuxRendererGL.cpp | 218 +- + xbmc/cores/VideoRenderers/LinuxRendererGL.h | 15 +- + xbmc/cores/VideoRenderers/RenderFormats.h | 1 + + xbmc/cores/VideoRenderers/RenderManager.cpp | 9 +- + .../dvdplayer/DVDCodecs/Video/DVDVideoCodec.h | 4 + + .../DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp | 16 + + xbmc/cores/dvdplayer/DVDCodecs/Video/Makefile.in | 4 + + xbmc/cores/dvdplayer/DVDCodecs/Video/XVBA.cpp | 2354 ++++++++++++++++++++ + xbmc/cores/dvdplayer/DVDCodecs/Video/XVBA.h | 382 ++++ + xbmc/cores/dvdplayer/DVDPlayerVideo.cpp | 3 + + xbmc/settings/GUISettings.cpp | 3 + + xbmc/settings/VideoSettings.h | 2 + + xbmc/video/dialogs/GUIDialogVideoSettings.cpp | 1 + + 15 files changed, 3064 insertions(+), 8 deletions(-) + create mode 100644 xbmc/cores/dvdplayer/DVDCodecs/Video/XVBA.cpp + create mode 100644 xbmc/cores/dvdplayer/DVDCodecs/Video/XVBA.h + +diff --git a/configure.in b/configure.in +index bd2f6f4..25b0a72 100644 +--- a/configure.in ++++ b/configure.in +@@ -124,6 +124,8 @@ vaapi_not_found="== Could not find libva. VAAPI support disabled. ==" + vaapi_disabled="== VAAPI support manually disabled. ==" + crystalhd_not_found="== Could not find libcrystalhd. CrystalHD support disabled. ==" + crystalhd_disabled="== CrystalHD support manually disabled. ==" ++xvba_not_found="== Could not find amdxvba.h. XVBA support disabled. ==" ++xvba_disabled="== XVBA support manually disabled. ==" + vdadecoder_enabled="== VDADecoder support enabled. ==" + vdadecoder_disabled="== VDADecoder support manually disabled. ==" + vtbdecoder_enabled="== VTBDecoder support enabled. ==" +@@ -247,6 +249,12 @@ AC_ARG_ENABLE([crystalhd], + [enable CrystalHD decoding (default is auto)])], + [use_crystalhd=$enableval], + [use_crystalhd=auto]) ++ ++AC_ARG_ENABLE([xvba], ++ [AS_HELP_STRING([--enable-xvba], ++ [enable XVBA decoding (default is auto)])], ++ [use_xvba=$enableval], ++ [use_xvba=auto]) + + AC_ARG_ENABLE([vdadecoder], + [AS_HELP_STRING([--enable-vdadecoder], +@@ -1718,6 +1726,38 @@ else + USE_CRYSTALHD=0 + fi + ++# XVBA ++if test "x$use_xvba" != "xno"; then ++ if test "$host_vendor" = "apple" ; then ++ if test "x$use_xvba" = "xyes"; then ++ AC_MSG_ERROR([XVBA not supported on this platform]) ++ else ++ use_xvba="no" ++ AC_MSG_NOTICE($xvba_disabled) ++ fi ++ USE_XVBA=0 ++ else ++ initial_val=$use_xvba ++ AC_CHECK_HEADER([amd/amdxvba.h],, use_xvba=no, [#include ]) ++ ++ if test "x$use_xvba" = "xno"; then ++ if test "x$initial_val" = "xyes"; then ++ AC_MSG_ERROR($xvba_not_found) ++ else ++ AC_MSG_RESULT($xvba_not_found) ++ fi ++ USE_XVBA=0 ++ else ++ AC_DEFINE([HAVE_LIBXVBA], [1], [Define to 1 if you have the 'xvba' header (amdxvba.h)]) ++ USE_XVBA=1 ++ fi ++ fi ++else ++ AC_MSG_NOTICE($xvba_disabled) ++ USE_XVBA=0 ++fi ++ ++ + # VDADecoder + if test "x$use_vdadecoder" != "xno"; then + if test "$host_vendor" = "apple" ; then +@@ -1929,6 +1969,12 @@ else + final_message="$final_message\n CrystalHD:\tNo" + fi + ++if test "x$use_xvba" != "xno"; then ++ final_message="$final_message\n XVBA:\t\tYes" ++else ++ final_message="$final_message\n XVBA:\t\tNo" ++fi ++ + if test "x$use_vdadecoder" != "xno"; then + final_message="$final_message\n VDADecoder:\tYes" + else +@@ -2403,6 +2449,7 @@ AC_SUBST(USE_OPENGLES) + AC_SUBST(USE_VDPAU) + AC_SUBST(USE_VAAPI) + AC_SUBST(USE_CRYSTALHD) ++AC_SUBST(USE_XVBA) + AC_SUBST(USE_LIBSMBCLIENT) + AC_SUBST(USE_LIBNFS) + AC_SUBST(USE_LIBAFPCLIENT) +@@ -2586,6 +2633,7 @@ XB_CONFIG_MODULE([lib/ffmpeg], [ + `if test "x$use_vdpau" != "xno"; then echo --enable-vdpau; else echo --disable-vdpau; fi` \ + `if test "x$use_vaapi" != "xno"; then echo --enable-vaapi; else echo --disable-vaapi; fi` \ + `if test "$use_optimizations" != "no"; then echo --enable-optimizations; else echo --disable-optimizations; fi` \ ++ `if test "x$use_xvba" != "xno"; then echo --enable-xvba; else echo --disable-xvba; fi` \ + --enable-protocol=http \ + --enable-pthreads \ + --enable-runtime-cpudetect \ +diff --git a/language/English/strings.po b/language/English/strings.po +index 6bb31f9..387c624 100644 +--- a/language/English/strings.po ++++ b/language/English/strings.po +@@ -4855,7 +4855,11 @@ msgctxt "#13436" + msgid "Allow Vdpau OpenGL interop YUV" + msgstr "" + +-#empty strings from id 13437 to 13499 ++msgctxt "#13437" ++msgid "Allow hardware acceleration (XVBA)" ++msgstr "" ++ ++#empty strings from id 13438 to 13499 + + msgctxt "#13500" + msgid "A/V sync method" +@@ -6071,7 +6075,11 @@ msgctxt "#16325" + msgid "VDPAU - Bob" + msgstr "" + +-#empty strings from id 16326 to 16399 ++msgctxt "#16326" ++msgid "XVBA" ++msgstr "" ++ ++#empty strings from id 16327 to 16399 + + msgctxt "#16400" + msgid "Post-processing" +diff --git a/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp b/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp +index 61bb873..71c7353 100644 +--- a/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp ++++ b/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp +@@ -63,6 +63,9 @@ + VA_MICRO_VERSION == 0 && VA_SDS_VERSION < 5))) + + #endif ++#ifdef HAVE_LIBXVBA ++#include "cores/dvdplayer/DVDCodecs/Video/XVBA.h" ++#endif + + #ifdef TARGET_DARWIN + #include "osx/CocoaInterface.h" +@@ -129,6 +132,9 @@ + #ifdef HAVE_LIBVDPAU + vdpau = NULL; + #endif ++#ifdef HAVE_LIBXVBA ++ xvba = NULL; ++#endif + } + + CLinuxRendererGL::YUVBUFFER::~YUVBUFFER() +@@ -604,6 +610,9 @@ void CLinuxRendererGL::ReleaseBuffer(int idx) + #ifdef HAVE_LIBVDPAU + SAFE_RELEASE(buf.vdpau); + #endif ++#ifdef HAVE_LIBXVBA ++ SAFE_RELEASE(buf.xvba); ++#endif + #ifdef HAVE_LIBVA + buf.vaapi.surface.reset(); + #endif +@@ -879,7 +888,7 @@ void CLinuxRendererGL::UpdateVideoFilter() + case VS_SCALINGMETHOD_LINEAR: + SetTextureFilter(m_scalingMethod == VS_SCALINGMETHOD_NEAREST ? GL_NEAREST : GL_LINEAR); + m_renderQuality = RQ_SINGLEPASS; +- if (((m_renderMethod & RENDER_VDPAU) || (m_renderMethod & RENDER_VAAPI)) && m_nonLinStretch) ++ if (((m_renderMethod & RENDER_VDPAU) || (m_renderMethod & RENDER_VAAPI) || (m_renderMethod & RENDER_XVBA)) && m_nonLinStretch) + { + m_pVideoFilterShader = new StretchFilterShader(); + if (!m_pVideoFilterShader->CompileAndLink()) +@@ -965,6 +974,11 @@ void CLinuxRendererGL::LoadShaders(int field) + CLog::Log(LOGNOTICE, "GL: Using CVBREF render method"); + m_renderMethod = RENDER_CVREF; + } ++ else if (m_format == RENDER_FMT_XVBA) ++ { ++ CLog::Log(LOGNOTICE, "GL: Using XVBA render method"); ++ m_renderMethod = RENDER_XVBA; ++ } + else + { + int requestedMethod = g_guiSettings.GetInt("videoplayer.rendermethod"); +@@ -1113,6 +1127,12 @@ void CLinuxRendererGL::LoadShaders(int field) + m_textureCreate = &CLinuxRendererGL::CreateCVRefTexture; + m_textureDelete = &CLinuxRendererGL::DeleteCVRefTexture; + } ++ else if (m_format == RENDER_FMT_XVBA) ++ { ++ m_textureUpload = &CLinuxRendererGL::UploadXVBATexture; ++ m_textureCreate = &CLinuxRendererGL::CreateXVBATexture; ++ m_textureDelete = &CLinuxRendererGL::DeleteXVBATexture; ++ } + else + { + // setup default YV12 texture handlers +@@ -1225,6 +1245,13 @@ void CLinuxRendererGL::Render(DWORD flags, int renderBuffer) + RenderVAAPI(renderBuffer, m_currentField); + } + #endif ++#ifdef HAVE_LIBXVBA ++ else if (m_renderMethod & RENDER_XVBA) ++ { ++ UpdateVideoFilter(); ++ RenderXVBA(renderBuffer, m_currentField); ++ } ++#endif + else + { + // RENDER_CVREF uses the same render as the default case +@@ -1732,6 +1759,77 @@ void CLinuxRendererGL::RenderVAAPI(int index, int field) + #endif + } + ++void CLinuxRendererGL::RenderXVBA(int index, int field) ++{ ++#ifdef HAVE_LIBXVBA ++ YUVPLANE &plane = m_buffers[index].fields[0][1]; ++ ++ glEnable(m_textureTarget); ++ glActiveTextureARB(GL_TEXTURE0); ++ ++ glBindTexture(m_textureTarget, plane.id); ++ ++ // Try some clamping or wrapping ++ glTexParameteri(m_textureTarget, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); ++ glTexParameteri(m_textureTarget, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); ++ ++ if (m_pVideoFilterShader) ++ { ++ GLint filter; ++ if (!m_pVideoFilterShader->GetTextureFilter(filter)) ++ filter = m_scalingMethod == VS_SCALINGMETHOD_NEAREST ? GL_NEAREST : GL_LINEAR; ++ ++ glTexParameteri(m_textureTarget, GL_TEXTURE_MAG_FILTER, filter); ++ glTexParameteri(m_textureTarget, GL_TEXTURE_MIN_FILTER, filter); ++ m_pVideoFilterShader->SetSourceTexture(0); ++ m_pVideoFilterShader->SetWidth(m_sourceWidth); ++ m_pVideoFilterShader->SetHeight(m_sourceHeight); ++ ++ //disable non-linear stretch when a dvd menu is shown, parts of the menu are rendered through the overlay renderer ++ //having non-linear stretch on breaks the alignment ++ if (g_application.m_pPlayer && g_application.m_pPlayer->IsInMenu()) ++ m_pVideoFilterShader->SetNonLinStretch(1.0); ++ else ++ m_pVideoFilterShader->SetNonLinStretch(pow(g_settings.m_fPixelRatio, g_advancedSettings.m_videoNonLinStretchRatio)); ++ ++ m_pVideoFilterShader->Enable(); ++ } ++ else ++ { ++ GLint filter = m_scalingMethod == VS_SCALINGMETHOD_NEAREST ? GL_NEAREST : GL_LINEAR; ++ glTexParameteri(m_textureTarget, GL_TEXTURE_MAG_FILTER, filter); ++ glTexParameteri(m_textureTarget, GL_TEXTURE_MIN_FILTER, filter); ++ } ++ ++ glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); ++ VerifyGLState(); ++ ++ glBegin(GL_QUADS); ++ if (m_textureTarget==GL_TEXTURE_2D) ++ { ++ glTexCoord2f(plane.rect.x1, plane.rect.y1); glVertex2f(m_destRect.x1, m_destRect.y1); ++ glTexCoord2f(plane.rect.x2, plane.rect.y1); glVertex2f(m_destRect.x2, m_destRect.y1); ++ glTexCoord2f(plane.rect.x2, plane.rect.y2); glVertex2f(m_destRect.x2, m_destRect.y2); ++ glTexCoord2f(plane.rect.x1, plane.rect.y2); glVertex2f(m_destRect.x1, m_destRect.y2); ++ } ++ else ++ { ++ glTexCoord2f(m_destRect.x1, m_destRect.y1); glVertex4f(m_destRect.x1, m_destRect.y1, 0.0f, 0.0f); ++ glTexCoord2f(m_destRect.x2, m_destRect.y1); glVertex4f(m_destRect.x2, m_destRect.y1, 1.0f, 0.0f); ++ glTexCoord2f(m_destRect.x2, m_destRect.y2); glVertex4f(m_destRect.x2, m_destRect.y2, 1.0f, 1.0f); ++ glTexCoord2f(m_destRect.x1, m_destRect.y2); glVertex4f(m_destRect.x1, m_destRect.y2, 0.0f, 1.0f); ++ } ++ glEnd(); ++ VerifyGLState(); ++ ++ if (m_pVideoFilterShader) ++ m_pVideoFilterShader->Disable(); ++ ++ glBindTexture (m_textureTarget, 0); ++ glDisable(m_textureTarget); ++#endif ++} ++ + void CLinuxRendererGL::RenderSoftware(int index, int field) + { + // used for textues uploaded from rgba or CVPixelBuffers. +@@ -2787,6 +2885,93 @@ bool CLinuxRendererGL::CreateCVRefTexture(int index) + return true; + } + ++void CLinuxRendererGL::DeleteXVBATexture(int index) ++{ ++#ifdef HAVE_LIBXVBA ++ YUVPLANE &plane = m_buffers[index].fields[0][0]; ++ YUVFIELDS &fields = m_buffers[index].fields; ++ ++ SAFE_RELEASE(m_buffers[index].xvba); ++ ++ if(plane.id && glIsTexture(plane.id)) ++ glDeleteTextures(1, &plane.id); ++ plane.id = 0; ++ fields[0][1].id = 0; ++#endif ++} ++ ++bool CLinuxRendererGL::CreateXVBATexture(int index) ++{ ++#ifdef HAVE_LIBXVBA ++ YV12Image &im = m_buffers[index].image; ++ YUVFIELDS &fields = m_buffers[index].fields; ++ YUVPLANE &plane = fields[0][0]; ++ ++ DeleteXVBATexture(index); ++ ++ memset(&im , 0, sizeof(im)); ++ memset(&fields, 0, sizeof(fields)); ++ ++ glGenTextures(1, &plane.id); ++ ++ m_eventTexturesDone[index]->Set(); ++#endif ++ return true; ++} ++ ++void CLinuxRendererGL::UploadXVBATexture(int index) ++{ ++#ifdef HAVE_LIBXVBA ++ XVBA::CXvbaRenderPicture *xvba = m_buffers[index].xvba; ++ YV12Image &im = m_buffers[index].image; ++ ++ YUVFIELDS &fields = m_buffers[index].fields; ++ YUVPLANE &plane = fields[0][1]; ++ ++ if (!xvba) ++ { ++ fields[0][1].id = fields[0][0].id; ++ m_eventTexturesDone[index]->Set(); ++ CLog::Log(LOGWARNING,"CLinuxRendererGL::UploadXVBATexture no xvba texture, index: %d", index); ++ return; ++ } ++// xvba->Transfer(); ++ ++ fields[0][1].id = xvba->texture; ++ ++ im.height = xvba->texHeight; ++ im.width = xvba->texWidth; ++ ++ plane.texwidth = xvba->texWidth; ++ plane.texheight = xvba->texHeight; ++ plane.pixpertex_x = 1; ++ plane.pixpertex_y = 1; ++ ++ plane.rect = m_sourceRect; ++ plane.width = im.width; ++ plane.height = im.height; ++ ++ plane.height /= plane.pixpertex_y; ++ plane.rect.y1 /= plane.pixpertex_y; ++ plane.rect.y2 /= plane.pixpertex_y; ++ plane.width /= plane.pixpertex_x; ++ plane.rect.x1 /= plane.pixpertex_x; ++ plane.rect.x2 /= plane.pixpertex_x; ++ ++ if (m_textureTarget == GL_TEXTURE_2D) ++ { ++ plane.height /= plane.texheight; ++ plane.rect.y1 /= plane.texheight; ++ plane.rect.y2 /= plane.texheight; ++ plane.width /= plane.texwidth; ++ plane.rect.x1 /= plane.texwidth; ++ plane.rect.x2 /= plane.texwidth; ++ } ++ ++ m_eventTexturesDone[index]->Set(); ++#endif ++} ++ + void CLinuxRendererGL::UploadYUV422PackedTexture(int source) + { + YUVBUFFER& buf = m_buffers[source]; +@@ -3372,6 +3557,9 @@ bool CLinuxRendererGL::Supports(ERENDERFEATURE feature) + if (m_renderMethod & RENDER_VAAPI) + return false; + ++ if (m_renderMethod & RENDER_XVBA) ++ return false; ++ + return (m_renderMethod & RENDER_GLSL) + || (m_renderMethod & RENDER_ARB) + || ((m_renderMethod & RENDER_SW) && glewIsSupported("GL_ARB_imaging") == GL_TRUE); +@@ -3385,6 +3573,9 @@ bool CLinuxRendererGL::Supports(ERENDERFEATURE feature) + if (m_renderMethod & RENDER_VAAPI) + return false; + ++ if (m_renderMethod & RENDER_XVBA) ++ return false; ++ + return (m_renderMethod & RENDER_GLSL) + || (m_renderMethod & RENDER_ARB) + || ((m_renderMethod & RENDER_SW) && glewIsSupported("GL_ARB_imaging") == GL_TRUE); +@@ -3408,7 +3599,8 @@ bool CLinuxRendererGL::Supports(ERENDERFEATURE feature) + if (feature == RENDERFEATURE_NONLINSTRETCH) + { + if (((m_renderMethod & RENDER_GLSL) && !(m_renderMethod & RENDER_POT)) || +- (m_renderMethod & RENDER_VDPAU) || (m_renderMethod & RENDER_VAAPI)) ++ (m_renderMethod & RENDER_VDPAU) || (m_renderMethod & RENDER_VAAPI) || ++ (m_renderMethod & RENDER_XVBA)) + return true; + } + +@@ -3480,6 +3672,16 @@ bool CLinuxRendererGL::Supports(EINTERLACEMETHOD method) + return false; + } + ++ if(m_renderMethod & RENDER_XVBA) ++ { ++#ifdef HAVE_LIBXVBA ++ XVBA::CXvbaRenderPicture *xvba = m_buffers[m_iYV12RenderBuffer].xvba; ++ if(xvba) ++ return xvba->xvba->Supports(method); ++#endif ++ return false; ++ } ++ + #ifdef TARGET_DARWIN + // YADIF too slow for HD but we have no methods to fall back + // to something that works so just turn it off. +@@ -3522,7 +3724,7 @@ bool CLinuxRendererGL::Supports(ESCALINGMETHOD method) + || method == VS_SCALINGMETHOD_LANCZOS3) + { + if ((glewIsSupported("GL_EXT_framebuffer_object") && (m_renderMethod & RENDER_GLSL)) || +- (m_renderMethod & RENDER_VDPAU) || (m_renderMethod & RENDER_VAAPI)) ++ (m_renderMethod & RENDER_VDPAU) || (m_renderMethod & RENDER_VAAPI) || (m_renderMethod & RENDER_XVBA)) + { + // spline36 and lanczos3 are only allowed through advancedsettings.xml + if(method != VS_SCALINGMETHOD_SPLINE36 +@@ -3614,4 +3816,14 @@ void CLinuxRendererGL::AddProcessor(struct __CVBuffer *cvBufferRef, int index) + } + #endif + ++#ifdef HAVE_LIBXVBA ++void CLinuxRendererGL::AddProcessor(XVBA::CXvbaRenderPicture* xvba, int index) ++{ ++ YUVBUFFER &buf = m_buffers[index]; ++ XVBA::CXvbaRenderPicture *pic = xvba->Acquire(); ++ SAFE_RELEASE(buf.xvba); ++ buf.xvba = pic; ++} ++#endif ++ + #endif +diff --git a/xbmc/cores/VideoRenderers/LinuxRendererGL.h b/xbmc/cores/VideoRenderers/LinuxRendererGL.h +index 2fc34ae..e76624b 100644 +--- a/xbmc/cores/VideoRenderers/LinuxRendererGL.h ++++ b/xbmc/cores/VideoRenderers/LinuxRendererGL.h +@@ -43,6 +43,8 @@ + namespace Shaders { class BaseVideoFilterShader; } + namespace VAAPI { struct CHolder; } + namespace VDPAU { class CVdpauRenderPicture; } ++namespace XVBA { class CXvbaRenderPicture; } ++ + + #define NUM_BUFFERS 10 + +@@ -90,6 +92,7 @@ enum RenderMethod + RENDER_POT=0x10, + RENDER_VAAPI=0x20, + RENDER_CVREF = 0x40, ++ RENDER_XVBA=0x80, + }; + + enum RenderQuality +@@ -151,7 +154,9 @@ class CLinuxRendererGL : public CBaseRenderer + #ifdef TARGET_DARWIN + virtual void AddProcessor(struct __CVBuffer *cvBufferRef, int index); + #endif +- ++#ifdef HAVE_LIBXVBA ++ virtual void AddProcessor(XVBA::CXvbaRenderPicture* xvba, int index); ++#endif + virtual void RenderUpdate(bool clear, DWORD flags = 0, DWORD alpha = 255); + + // Feature support +@@ -210,6 +215,10 @@ class CLinuxRendererGL : public CBaseRenderer + void DeleteYUV422PackedTexture(int index); + bool CreateYUV422PackedTexture(int index); + ++ void UploadXVBATexture(int index); ++ void DeleteXVBATexture(int index); ++ bool CreateXVBATexture(int index); ++ + void UploadRGBTexture(int index); + void ToRGBFrame(YV12Image* im, unsigned flipIndexPlane, unsigned flipIndexBuf); + void ToRGBFields(YV12Image* im, unsigned flipIndexPlaneTop, unsigned flipIndexPlaneBot, unsigned flipIndexBuf); +@@ -225,6 +234,7 @@ class CLinuxRendererGL : public CBaseRenderer + void RenderVDPAU(int renderBuffer, int field); // render using vdpau hardware + void RenderProgressiveWeave(int renderBuffer, int field); // render using vdpau hardware + void RenderVAAPI(int renderBuffer, int field); // render using vdpau hardware ++ void RenderXVBA(int renderBuffer, int field); // render using xvba hardware + + struct + { +@@ -292,6 +302,9 @@ class CLinuxRendererGL : public CBaseRenderer + #ifdef TARGET_DARWIN_OSX + struct __CVBuffer *cvBufferRef; + #endif ++#ifdef HAVE_LIBXVBA ++ XVBA::CXvbaRenderPicture *xvba; ++#endif + }; + + typedef YUVBUFFER YUVBUFFERS[NUM_BUFFERS]; +diff --git a/xbmc/cores/VideoRenderers/RenderFormats.h b/xbmc/cores/VideoRenderers/RenderFormats.h +index 0262c60..a727d94 100644 +--- a/xbmc/cores/VideoRenderers/RenderFormats.h ++++ b/xbmc/cores/VideoRenderers/RenderFormats.h +@@ -35,6 +35,7 @@ enum ERenderFormat { + RENDER_FMT_OMXEGL, + RENDER_FMT_CVBREF, + RENDER_FMT_BYPASS, ++ RENDER_FMT_XVBA, + }; + + #endif +diff --git a/xbmc/cores/VideoRenderers/RenderManager.cpp b/xbmc/cores/VideoRenderers/RenderManager.cpp +index a521680..0506823 100644 +--- a/xbmc/cores/VideoRenderers/RenderManager.cpp ++++ b/xbmc/cores/VideoRenderers/RenderManager.cpp +@@ -250,8 +250,9 @@ bool CXBMCRenderManager::Configure(unsigned int width, unsigned int height, unsi + + // check if decoder supports buffering + m_bCodecSupportsBuffering = false; +- if (format == RENDER_FMT_VDPAU || +- format == RENDER_FMT_VDPAU_420) ++ if (format == RENDER_FMT_VDPAU ++ || format == RENDER_FMT_VDPAU_420 ++ || format == RENDER_FMT_XVBA) + m_bCodecSupportsBuffering = true; + + bool result = m_pRenderer->Configure(width, height, d_width, d_height, fps, flags, format, extended_format, orientation); +@@ -873,6 +874,10 @@ int CXBMCRenderManager::AddVideoPicture(DVDVideoPicture& pic) + else if(pic.format == RENDER_FMT_VAAPI) + m_pRenderer->AddProcessor(*pic.vaapi, index); + #endif ++#ifdef HAVE_LIBXVBA ++ else if(pic.format == RENDER_FMT_XVBA) ++ m_pRenderer->AddProcessor(pic.xvba, index); ++#endif + m_pRenderer->ReleaseImage(index, false); + + return index; +diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodec.h b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodec.h +index 98d8f89..76d3575 100644 +--- a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodec.h ++++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodec.h +@@ -35,6 +35,7 @@ + namespace DXVA { class CSurfaceContext; } + namespace VAAPI { struct CHolder; } + namespace VDPAU { class CVdpauRenderPicture; } ++namespace XVBA { class CXvbaRenderPicture; } + class COpenMax; + class COpenMaxVideo; + struct OpenMaxVideoBuffer; +@@ -60,6 +61,9 @@ struct DVDVideoPicture + struct { + VAAPI::CHolder* vaapi; + }; ++ struct { ++ XVBA::CXvbaRenderPicture* xvba; ++ }; + + struct { + COpenMax *openMax; +diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp +index a6e42e5..b3252ec 100644 +--- a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp ++++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp +@@ -56,6 +56,9 @@ + #ifdef HAVE_LIBVA + #include "VAAPI.h" + #endif ++#ifdef HAVE_LIBXVBA ++#include "XVBA.h" ++#endif + + using namespace boost; + +@@ -100,6 +103,19 @@ enum PixelFormat CDVDVideoCodecFFmpeg::GetFormat( struct AVCodecContext * avctx + dec->Release(); + } + #endif ++#ifdef HAVE_LIBXVBA ++ if(*cur == PIX_FMT_XVBA_VLD && g_guiSettings.GetBool("videoplayer.usexvba")) ++ { ++ XVBA::CDecoder* dec = new XVBA::CDecoder(); ++ if(dec->Open(avctx, *cur, ctx->m_uSurfacesCount)) ++ { ++ ctx->SetHardware(dec); ++ return *cur; ++ } ++ else ++ dec->Release(); ++ } ++#endif + #ifdef HAVE_LIBVA + // mpeg4 vaapi decoding is disabled + if(*cur == PIX_FMT_VAAPI_VLD && g_guiSettings.GetBool("videoplayer.usevaapi") +diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/Makefile.in b/xbmc/cores/dvdplayer/DVDCodecs/Video/Makefile.in +index 176ceff..c58422b 100644 +--- a/xbmc/cores/dvdplayer/DVDCodecs/Video/Makefile.in ++++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/Makefile.in +@@ -14,6 +14,10 @@ ifeq (@USE_CRYSTALHD@,1) + SRCS += CrystalHD.cpp + SRCS += DVDVideoCodecCrystalHD.cpp + endif ++ifeq (@USE_XVBA@,1) ++SRCS+= XVBA.cpp \ ++ ++endif + ifeq (@USE_VDA@,1) + SRCS += DVDVideoCodecVDA.cpp + endif +diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/XVBA.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/XVBA.cpp +new file mode 100644 +index 0000000..e8e376a +--- /dev/null ++++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/XVBA.cpp @@ -0,0 +1,2354 @@ +/* + * Copyright (C) 2005-2011 Team XBMC @@ -8480,7 +16337,7 @@ diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/XVBA.cpp xbmc-f1356 +void COutput::Process() +{ + Message *msg; -+ Protocol *port = NULL; ++ Protocol *port; + bool gotMsg; + + m_state = O_TOP_UNCONFIGURED; @@ -9037,9 +16894,11 @@ diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/XVBA.cpp xbmc-f1356 +} + +#endif -diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/XVBA.h xbmc-f13566b.patch/xbmc/cores/dvdplayer/DVDCodecs/Video/XVBA.h ---- xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/XVBA.h 1970-01-01 01:00:00.000000000 +0100 -+++ xbmc-f13566b.patch/xbmc/cores/dvdplayer/DVDCodecs/Video/XVBA.h 2012-10-08 17:13:47.126523309 +0200 +diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/XVBA.h b/xbmc/cores/dvdplayer/DVDCodecs/Video/XVBA.h +new file mode 100644 +index 0000000..f38444c +--- /dev/null ++++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/XVBA.h @@ -0,0 +1,382 @@ +/* + * Copyright (C) 2005-2011 Team XBMC @@ -9423,9 +17282,126 @@ diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDCodecs/Video/XVBA.h xbmc-f13566b +}; + +} -diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp xbmc-f13566b.patch/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp ---- xbmc-f13566b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp 2012-10-08 09:19:29.000000000 +0200 -+++ xbmc-f13566b.patch/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp 2012-10-08 17:13:47.067522129 +0200 +diff --git a/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp b/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp +index 15a39fa..e5e71f3 100644 +--- a/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp ++++ b/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp +@@ -1162,6 +1162,9 @@ int CDVDPlayerVideo::OutputPicture(const DVDVideoPicture* src, double pts) + case RENDER_FMT_NONE: + formatstr = "NONE"; + break; ++ case RENDER_FMT_XVBA: ++ formatstr = "XVBA"; ++ break; + } + + if(m_bAllowFullscreen) +diff --git a/xbmc/settings/GUISettings.cpp b/xbmc/settings/GUISettings.cpp +index 228722c..72ed57c 100644 +--- a/xbmc/settings/GUISettings.cpp ++++ b/xbmc/settings/GUISettings.cpp +@@ -696,6 +696,9 @@ void CGUISettings::Initialize() + #ifdef HAVE_LIBVA + AddBool(vp, "videoplayer.usevaapi", 13426, true); + #endif ++#ifdef HAVE_LIBXVBA ++ AddBool(vp, "videoplayer.usexvba", 13437, true); ++#endif + #ifdef HAS_DX + AddBool(g_sysinfo.IsVistaOrHigher() ? vp: NULL, "videoplayer.usedxva2", 13427, g_sysinfo.IsVistaOrHigher() ? true : false); + #endif +diff --git a/xbmc/settings/VideoSettings.h b/xbmc/settings/VideoSettings.h +index f8093b2..f54a837 100644 +--- a/xbmc/settings/VideoSettings.h ++++ b/xbmc/settings/VideoSettings.h +@@ -65,6 +65,8 @@ enum EINTERLACEMETHOD + VS_INTERLACEMETHOD_SW_BLEND = 20, + VS_INTERLACEMETHOD_AUTO_ION = 21, + ++ VS_INTERLACEMETHOD_XVBA = 22, ++ + VS_INTERLACEMETHOD_MAX // do not use and keep as last enum value. + }; + +diff --git a/xbmc/video/dialogs/GUIDialogVideoSettings.cpp b/xbmc/video/dialogs/GUIDialogVideoSettings.cpp +index 88e1375..5c2ee52 100644 +--- a/xbmc/video/dialogs/GUIDialogVideoSettings.cpp ++++ b/xbmc/video/dialogs/GUIDialogVideoSettings.cpp +@@ -110,6 +110,7 @@ void CGUIDialogVideoSettings::CreateSettings() + entries.push_back(make_pair(VS_INTERLACEMETHOD_DXVA_BOB , 16320)); + entries.push_back(make_pair(VS_INTERLACEMETHOD_DXVA_BEST , 16321)); + entries.push_back(make_pair(VS_INTERLACEMETHOD_AUTO_ION , 16325)); ++ entries.push_back(make_pair(VS_INTERLACEMETHOD_XVBA , 16326)); + + /* remove unsupported methods */ + for(vector >::iterator it = entries.begin(); it != entries.end();) +-- +1.7.10 + + +From 76a4de3b58579ff5b07e9d309826b8891b7b1cdf Mon Sep 17 00:00:00 2001 +From: xbmc +Date: Thu, 23 Aug 2012 19:39:49 +0200 +Subject: [PATCH 43/51] ffmpeg: add av_find_default_stream_index to interface + +--- + lib/DllAvFormat.h | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/lib/DllAvFormat.h b/lib/DllAvFormat.h +index 9bda3f3..bf31fcb 100644 +--- a/lib/DllAvFormat.h ++++ b/lib/DllAvFormat.h +@@ -98,6 +98,7 @@ class DllAvFormatInterface + virtual int avformat_write_header (AVFormatContext *s, AVDictionary **options)=0; + virtual int av_write_trailer(AVFormatContext *s)=0; + virtual int av_write_frame (AVFormatContext *s, AVPacket *pkt)=0; ++ virtual int av_find_default_stream_index(AVFormatContext *s)=0; + }; + + #if (defined USE_EXTERNAL_FFMPEG) || (defined TARGET_DARWIN) +@@ -153,6 +154,7 @@ class DllAvFormat : public DllDynamic, DllAvFormatInterface + virtual int avformat_write_header (AVFormatContext *s, AVDictionary **options) { return ::avformat_write_header (s, options); } + virtual int av_write_trailer(AVFormatContext *s) { return ::av_write_trailer(s); } + virtual int av_write_frame (AVFormatContext *s, AVPacket *pkt) { return ::av_write_frame(s, pkt); } ++ virtual int av_find_default_stream_index(AVFormatContext *s) { return ::av_find_default_stream_index(s); } + + // DLL faking. + virtual bool ResolveExports() { return true; } +@@ -209,6 +211,7 @@ class DllAvFormat : public DllDynamic, DllAvFormatInterface + DEFINE_METHOD2(int, avformat_write_header , (AVFormatContext *p1, AVDictionary **p2)) + DEFINE_METHOD1(int, av_write_trailer, (AVFormatContext *p1)) + DEFINE_METHOD2(int, av_write_frame , (AVFormatContext *p1, AVPacket *p2)) ++ DEFINE_METHOD1(int, av_find_default_stream_index, (AVFormatContext *p1)) + BEGIN_METHOD_RESOLVE() + RESOLVE_METHOD_RENAME(av_register_all, av_register_all_dont_call) + RESOLVE_METHOD(av_find_input_format) +@@ -243,6 +246,7 @@ class DllAvFormat : public DllDynamic, DllAvFormatInterface + RESOLVE_METHOD(avformat_write_header) + RESOLVE_METHOD(av_write_trailer) + RESOLVE_METHOD(av_write_frame) ++ RESOLVE_METHOD(av_find_default_stream_index) + END_METHOD_RESOLVE() + + /* dependencies of libavformat */ +-- +1.7.10 + + +From 7da887f7c1e5bf495ed31688ddca6fb5f76f56aa Mon Sep 17 00:00:00 2001 +From: xbmc +Date: Mon, 20 Aug 2012 16:06:39 +0200 +Subject: [PATCH 44/51] dvdplayer: observe pts counter overflow + +--- + .../cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp | 198 +++++++++++++++++++- + xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.h | 4 + + 2 files changed, 201 insertions(+), 1 deletion(-) + +diff --git a/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp +index 7c0ab03..f91be3c 100644 +--- a/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp ++++ b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp @@ -18,13 +18,13 @@ * */ @@ -9441,7 +17417,7 @@ diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp xbmc #ifdef _LINUX #include "stdint.h" #endif -@@ -495,6 +495,9 @@ +@@ -495,6 +495,9 @@ bool CDVDDemuxFFmpeg::Open(CDVDInputStream* pInput) AddStream(i); } @@ -9451,7 +17427,7 @@ diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp xbmc return true; } -@@ -605,6 +608,12 @@ +@@ -605,6 +608,12 @@ double CDVDDemuxFFmpeg::ConvertTimestamp(int64_t pts, int den, int num) if (pts == (int64_t)AV_NOPTS_VALUE) return DVD_NOPTS_VALUE; @@ -9464,7 +17440,7 @@ diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp xbmc // do calculations in floats as they can easily overflow otherwise // we don't care for having a completly exact timestamp anyway double timestamp = (double)pts * num / den; -@@ -729,6 +738,24 @@ +@@ -729,6 +738,24 @@ DemuxPacket* CDVDDemuxFFmpeg::Read() pkt.pts = AV_NOPTS_VALUE; } @@ -9489,7 +17465,7 @@ diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp xbmc // copy contents into our own packet pPacket->iSize = pkt.size; -@@ -845,10 +872,20 @@ +@@ -845,10 +872,20 @@ bool CDVDDemuxFFmpeg::SeekTime(int time, bool backwords, double *startpts) int ret; { CSingleLock lock(m_critSection); @@ -9510,7 +17486,7 @@ diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp xbmc } if(m_iCurrentPts == DVD_NOPTS_VALUE) -@@ -867,6 +904,165 @@ +@@ -867,6 +904,165 @@ bool CDVDDemuxFFmpeg::SeekTime(int time, bool backwords, double *startpts) return (ret >= 0); } @@ -9676,10 +17652,11 @@ diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp xbmc bool CDVDDemuxFFmpeg::SeekByte(int64_t pos) { g_demuxer.set(this); -diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.h xbmc-f13566b.patch/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.h ---- xbmc-f13566b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.h 2012-10-08 09:19:29.000000000 +0200 -+++ xbmc-f13566b.patch/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.h 2012-10-08 17:13:47.067522129 +0200 -@@ -97,6 +97,7 @@ +diff --git a/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.h b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.h +index 2b5f2e8..e0acf29 100644 +--- a/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.h ++++ b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.h +@@ -97,6 +97,7 @@ class CDVDDemuxFFmpeg : public CDVDDemux DemuxPacket* Read(); bool SeekTime(int time, bool backwords = false, double* startpts = NULL); @@ -9687,7 +17664,7 @@ diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.h xbmc-f bool SeekByte(int64_t pos); int GetStreamLength(); CDemuxStream* GetStream(int iStreamId); -@@ -141,5 +142,8 @@ +@@ -141,5 +142,8 @@ class CDVDDemuxFFmpeg : public CDVDDemux XbmcThreads::EndTime m_timeout; CDVDInputStream* m_pInput; @@ -9696,607 +17673,25 @@ diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.h xbmc-f + int64_t m_iStartTime, m_iMaxTime, m_iEndTime; }; -diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDPlayerAudio.cpp xbmc-f13566b.patch/xbmc/cores/dvdplayer/DVDPlayerAudio.cpp ---- xbmc-f13566b/xbmc/cores/dvdplayer/DVDPlayerAudio.cpp 2012-10-08 09:19:29.000000000 +0200 -+++ xbmc-f13566b.patch/xbmc/cores/dvdplayer/DVDPlayerAudio.cpp 2012-10-08 17:13:47.092522629 +0200 -@@ -45,61 +45,6 @@ - - using namespace std; - --CPTSOutputQueue::CPTSOutputQueue() --{ -- Flush(); --} -- --void CPTSOutputQueue::Add(double pts, double delay, double duration) --{ -- CSingleLock lock(m_sync); -- -- TPTSItem item; -- item.pts = pts; -- item.timestamp = CDVDClock::GetAbsoluteClock() + delay; -- item.duration = duration; -- -- // first one is applied directly -- if(m_queue.empty() && m_current.pts == DVD_NOPTS_VALUE) -- m_current = item; -- else -- m_queue.push(item); -- -- // call function to make sure the queue -- // doesn't grow should nobody call it -- Current(); --} --void CPTSOutputQueue::Flush() --{ -- CSingleLock lock(m_sync); -- -- while( !m_queue.empty() ) m_queue.pop(); -- m_current.pts = DVD_NOPTS_VALUE; -- m_current.timestamp = 0.0; -- m_current.duration = 0.0; --} -- --double CPTSOutputQueue::Current() --{ -- CSingleLock lock(m_sync); -- -- if(!m_queue.empty() && m_current.pts == DVD_NOPTS_VALUE) -- { -- m_current = m_queue.front(); -- m_queue.pop(); -- } -- -- while( !m_queue.empty() && CDVDClock::GetAbsoluteClock() >= m_queue.front().timestamp ) -- { -- m_current = m_queue.front(); -- m_queue.pop(); -- } -- -- if( m_current.timestamp == 0 ) return m_current.pts; -- -- return m_current.pts + min(m_current.duration, (CDVDClock::GetAbsoluteClock() - m_current.timestamp)); --} -- - void CPTSInputQueue::Add(int64_t bytes, double pts) - { - CSingleLock lock(m_sync); -@@ -152,7 +97,6 @@ - CDVDStreamInfo m_hints; - }; - -- - CDVDPlayerAudio::CDVDPlayerAudio(CDVDClock* pClock, CDVDMessageQueue& parent) - : CThread("CDVDPlayerAudio") - , m_messageQueue("audio") -@@ -172,21 +116,17 @@ - m_synctype = SYNC_DISCON; - m_setsynctype = SYNC_DISCON; - m_prevsynctype = -1; -- m_error = 0; -- m_errorbuff = 0; -- m_errorcount = 0; - m_syncclock = true; - m_integral = 0; - m_skipdupcount = 0; - m_prevskipped = false; - m_maxspeedadjust = 0.0; - -- m_errortime = 0; -- m_freq = CurrentHostFrequency(); -- - m_messageQueue.SetMaxDataSize(6 * 1024 * 1024); - m_messageQueue.SetMaxTimeSize(8.0); - g_dvdPerformanceCounter.EnableAudioQueue(&m_messageQueue); -+ -+ m_syncError.Reset(); - } - - CDVDPlayerAudio::~CDVDPlayerAudio() -@@ -250,17 +190,15 @@ - m_setsynctype = g_guiSettings.GetInt("videoplayer.synctype"); - m_prevsynctype = -1; - -- m_error = 0; -- m_errorbuff = 0; -- m_errorcount = 0; - m_integral = 0; - m_skipdupcount = 0; - m_prevskipped = false; - m_syncclock = true; -- m_errortime = CurrentHostCounter(); - m_silence = false; - - m_maxspeedadjust = g_guiSettings.GetFloat("videoplayer.maxspeedadjust"); -+ -+ m_syncError.Reset(); - } - - void CDVDPlayerAudio::CloseStream(bool bWaitForBuffers) -@@ -298,9 +236,6 @@ - delete m_pAudioCodec; - m_pAudioCodec = NULL; - } -- -- // flush any remaining pts values -- m_ptsOutput.Flush(); - } - - // decode one audio frame and returns its uncompressed size -@@ -449,12 +384,11 @@ - m_audioClock = pMsgGeneralResync->m_timestamp; - - m_ptsInput.Flush(); -- m_ptsOutput.Flush(); -- m_ptsOutput.Add(m_audioClock, m_dvdAudio.GetDelay(), 0); -+ m_dvdAudio.SetPlayingPts(m_audioClock); - if (pMsgGeneralResync->m_clock) - { - CLog::Log(LOGDEBUG, "CDVDPlayerAudio - CDVDMsg::GENERAL_RESYNC(%f, 1)", m_audioClock); -- m_pClock->Discontinuity(m_ptsOutput.Current()); -+ m_pClock->Discontinuity(m_dvdAudio.GetPlayingPts()); - } - else - CLog::Log(LOGDEBUG, "CDVDPlayerAudio - CDVDMsg::GENERAL_RESYNC(%f, 0)", m_audioClock); -@@ -469,7 +403,6 @@ - else if (pMsg->IsType(CDVDMsg::GENERAL_FLUSH)) - { - m_dvdAudio.Flush(); -- m_ptsOutput.Flush(); - m_ptsInput.Flush(); - m_syncclock = true; - m_stalled = true; -@@ -515,7 +448,6 @@ - } - else - { -- m_ptsOutput.Flush(); - m_syncclock = true; - if (m_speed != DVD_PLAYSPEED_PAUSE) - m_dvdAudio.Flush(); -@@ -654,15 +586,6 @@ - m_stalled = false; - } - -- // store the delay for this pts value so we can calculate the current playing -- if(packetadded) -- { -- if(m_speed == DVD_PLAYSPEED_PAUSE) -- m_ptsOutput.Add(audioframe.pts, m_dvdAudio.GetDelay() - audioframe.duration, 0); -- else -- m_ptsOutput.Add(audioframe.pts, m_dvdAudio.GetDelay() - audioframe.duration, audioframe.duration); -- } -- - // signal to our parent that we have initialized - if(m_started == false) - { -@@ -670,7 +593,7 @@ - m_messageParent.Put(new CDVDMsgInt(CDVDMsg::PLAYER_STARTED, DVDPLAYER_AUDIO)); - } - -- if( m_ptsOutput.Current() == DVD_NOPTS_VALUE ) -+ if( m_dvdAudio.GetPlayingPts() == DVD_NOPTS_VALUE ) - continue; - - if( m_speed != DVD_PLAYSPEED_NORMAL ) -@@ -712,7 +635,7 @@ - void CDVDPlayerAudio::HandleSyncError(double duration) - { - double clock = m_pClock->GetClock(); -- double error = m_ptsOutput.Current() - clock; -+ double error = m_dvdAudio.GetPlayingPts() - clock; - int64_t now; - - if( fabs(error) > DVD_MSEC_TO_TIME(100) || m_syncclock ) -@@ -721,41 +644,29 @@ - if(m_speed == DVD_PLAYSPEED_NORMAL) - CLog::Log(LOGDEBUG, "CDVDPlayerAudio:: Discontinuity - was:%f, should be:%f, error:%f", clock, clock+error, error); - -- m_errorbuff = 0; -- m_errorcount = 0; - m_skipdupcount = 0; -- m_error = 0; - m_syncclock = false; -- m_errortime = CurrentHostCounter(); -- -+ m_syncError.Reset(); - return; - } - - if (m_speed != DVD_PLAYSPEED_NORMAL) - { -- m_errorbuff = 0; -- m_errorcount = 0; - m_integral = 0; - m_skipdupcount = 0; -- m_error = 0; -- m_errortime = CurrentHostCounter(); -+ m_syncError.Reset(); - return; - } - -- m_errorbuff += error; -- m_errorcount++; -+ m_syncError.AddCurrent(error); - - //check if measured error for 1 second - now = CurrentHostCounter(); -- if ((now - m_errortime) >= m_freq) -+ if ((now - m_syncError.m_errortime) >= m_syncError.m_freq * 2) - { -- m_errortime = now; -- m_error = m_errorbuff / m_errorcount; -+ m_syncError.CalcAverage(now); - -- m_errorbuff = 0; -- m_errorcount = 0; -- -- if (m_synctype == SYNC_DISCON) -+ if (m_synctype == SYNC_DISCON || ((m_synctype == SYNC_SKIPDUP) && m_syncError.m_histErrorCount < 0)) - { - double limit, error; - if (g_VideoReferenceClock.GetRefreshRate(&limit) > 0) -@@ -765,15 +676,15 @@ - - //make error a multiple of limit, rounded towards zero, - //so it won't interfere with the sync methods in CXBMCRenderManager::WaitPresentTime -- if (m_error > 0.0) -- error = limit * floor(m_error / limit); -+ if (m_syncError.m_error > 0.0) -+ error = limit * floor(m_syncError.m_error / limit); - else -- error = limit * ceil(m_error / limit); -+ error = limit * ceil(m_syncError.m_error / limit); - } - else - { - limit = DVD_MSEC_TO_TIME(10); -- error = m_error; -+ error = m_syncError.m_error; - } - - if (fabs(error) > limit - 0.001) -@@ -782,14 +693,18 @@ - if(m_speed == DVD_PLAYSPEED_NORMAL) - CLog::Log(LOGDEBUG, "CDVDPlayerAudio:: Discontinuity - was:%f, should be:%f, error:%f", clock, clock+error, error); - } -+ -+ m_syncError.m_histErrorCount = 0; - } -- else if (m_synctype == SYNC_SKIPDUP && m_skipdupcount == 0 && fabs(m_error) > DVD_MSEC_TO_TIME(10)) -+ else if (m_synctype == SYNC_SKIPDUP && m_skipdupcount == 0 && -+ fabs(m_syncError.m_error) > DVD_MSEC_TO_TIME(10) && -+ m_syncError.m_histErrorCount > 10) - { - //check how many packets to skip/duplicate -- m_skipdupcount = (int)(m_error / duration); -+ m_skipdupcount = (int)(m_syncError.m_error / duration); - //if less than one frame off, see if it's more than two thirds of a frame, so we can get better in sync -- if (m_skipdupcount == 0 && fabs(m_error) > duration / 3 * 2) -- m_skipdupcount = (int)(m_error / (duration / 3 * 2)); -+ if (m_skipdupcount == 0 && fabs(m_syncError.m_error) > duration / 3 * 2) -+ m_skipdupcount = (int)(m_syncError.m_error / (duration / 3 * 2)); - - if (m_skipdupcount > 0) - CLog::Log(LOGDEBUG, "CDVDPlayerAudio:: Duplicating %i packet(s) of %.2f ms duration", -@@ -797,14 +712,16 @@ - else if (m_skipdupcount < 0) - CLog::Log(LOGDEBUG, "CDVDPlayerAudio:: Skipping %i packet(s) of %.2f ms duration ", - m_skipdupcount * -1, duration / DVD_TIME_BASE * 1000.0); -+ -+ m_syncError.m_histErrorCount = 0; - } - else if (m_synctype == SYNC_RESAMPLE) - { - //reset the integral on big errors, failsafe -- if (fabs(m_error) > DVD_TIME_BASE) -+ if (fabs(m_syncError.m_error) > DVD_TIME_BASE) - m_integral = 0; -- else if (fabs(m_error) > DVD_MSEC_TO_TIME(5)) -- m_integral += m_error / DVD_TIME_BASE / INTEGRAL; -+ else if (fabs(m_syncError.m_error) > DVD_MSEC_TO_TIME(5)) -+ m_integral += m_syncError.m_error / DVD_TIME_BASE / INTEGRAL; - } - } - } -@@ -842,13 +759,13 @@ - double proportional = 0.0, proportionaldiv; - - //on big errors use more proportional -- if (fabs(m_error / DVD_TIME_BASE) > 0.0) -+ if (fabs(m_syncError.m_error / DVD_TIME_BASE) > 0.0) - { -- proportionaldiv = PROPORTIONAL * (PROPREF / fabs(m_error / DVD_TIME_BASE)); -+ proportionaldiv = PROPORTIONAL * (PROPREF / fabs(m_syncError.m_error / DVD_TIME_BASE)); - if (proportionaldiv < PROPDIVMIN) proportionaldiv = PROPDIVMIN; - else if (proportionaldiv > PROPDIVMAX) proportionaldiv = PROPDIVMAX; - -- proportional = m_error / DVD_TIME_BASE / proportionaldiv; -+ proportional = m_syncError.m_error / DVD_TIME_BASE / proportionaldiv; - } - - m_resampleratio = 1.0 / g_VideoReferenceClock.GetSpeed() + proportional + m_integral; -@@ -940,3 +857,44 @@ - { - return m_pAudioCodec && m_pAudioCodec->NeedPassthrough(); - } -+ -+void CDVDPlayerAudio::SyncError::Reset() -+{ -+ m_error = 0; -+ m_errorbuff = 0; -+ m_errorcount = 0; -+ m_errortime = 0; -+ m_freq = CurrentHostFrequency(); -+ m_histError = 0; -+ m_histErrorCount = 0; -+} -+ -+void CDVDPlayerAudio::SyncError::AddCurrent(double error) -+{ -+ m_errorbuff += error; -+ m_errorcount++; -+} -+ -+void CDVDPlayerAudio::SyncError::CalcAverage(int64_t time) -+{ -+ m_errortime = time; -+ m_error = m_errorbuff / m_errorcount; -+ m_errorbuff = 0; -+ m_errorcount = 0; -+ -+ if (m_histErrorCount <= 0) -+ { -+ m_histError = m_error; -+ m_histErrorCount = 1; -+ } -+ else -+ { -+ if (fabs(m_error-m_histError) < DVD_MSEC_TO_TIME(20)) -+ m_histErrorCount++; -+ else -+ { -+ CLog::Log(LOGDEBUG, "CDVDPlayerAudio::SyncError - error variance: %d ms", DVD_TIME_TO_MSEC(m_error-m_histError)); -+ m_histErrorCount = -1; -+ } -+ } -+} -diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDPlayerAudio.h xbmc-f13566b.patch/xbmc/cores/dvdplayer/DVDPlayerAudio.h ---- xbmc-f13566b/xbmc/cores/dvdplayer/DVDPlayerAudio.h 2012-10-08 09:19:29.000000000 +0200 -+++ xbmc-f13566b.patch/xbmc/cores/dvdplayer/DVDPlayerAudio.h 2012-10-08 17:13:47.072522229 +0200 -@@ -63,21 +63,6 @@ - bool passthrough; - } DVDAudioFrame; - --class CPTSOutputQueue --{ --private: -- typedef struct {double pts; double timestamp; double duration;} TPTSItem; -- TPTSItem m_current; -- std::queue m_queue; -- CCriticalSection m_sync; -- --public: -- CPTSOutputQueue(); -- void Add(double pts, double delay, double duration); -- void Flush(); -- double Current(); --}; -- - class CPTSInputQueue - { - private: -@@ -131,7 +116,7 @@ - CPTSOutputQueue m_ptsOutput; - CPTSInputQueue m_ptsInput; - -- double GetCurrentPts() { return m_ptsOutput.Current(); } -+ double GetCurrentPts() { return m_dvdAudio.GetPlayingPts(); } - - bool IsStalled() { return m_stalled; } - bool IsPassthrough() const; -@@ -188,6 +173,21 @@ - } - } m_decode; - -+ struct SyncError -+ { -+ void Reset(); -+ void AddCurrent(double error); -+ void CalcAverage(int64_t time); -+ double m_error; //last average error -+ int64_t m_errortime; //timestamp of last time we measured -+ int64_t m_freq; -+ double m_errorbuff; //place to store average errors -+ int m_errorcount;//number of errors stored -+ -+ double m_histError; -+ int m_histErrorCount; -+ } m_syncError; -+ - CDVDAudio m_dvdAudio; // audio output device - CDVDClock* m_pClock; // dvd master clock - CDVDAudioCodec* m_pAudioCodec; // audio codec -@@ -207,15 +207,9 @@ - int m_setsynctype; - int m_prevsynctype; //so we can print to the log - -- double m_error; //last average error -- -- int64_t m_errortime; //timestamp of last time we measured -- int64_t m_freq; -- - void SetSyncType(bool passthrough); - void HandleSyncError(double duration); -- double m_errorbuff; //place to store average errors -- int m_errorcount;//number of errors stored -+ - bool m_syncclock; - - double m_integral; //integral correction for resampler -diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDPlayer.cpp xbmc-f13566b.patch/xbmc/cores/dvdplayer/DVDPlayer.cpp ---- xbmc-f13566b/xbmc/cores/dvdplayer/DVDPlayer.cpp 2012-10-08 09:19:29.000000000 +0200 -+++ xbmc-f13566b.patch/xbmc/cores/dvdplayer/DVDPlayer.cpp 2012-10-08 17:13:46.929519376 +0200 -@@ -462,7 +462,7 @@ - m_ready.Reset(); - - #if defined(HAS_VIDEO_PLAYBACK) -- g_renderManager.PreInit(); -+ g_renderManager.PreInit(&m_clock); - #endif - - Create(); -@@ -1557,7 +1557,7 @@ - - } - else if (m_CurrentVideo.id >= 0 -- && m_CurrentVideo.inited == true -+ && (m_CurrentVideo.inited == true || GetPlaySpeed() < 0) // allow rewind at end of file - && m_SpeedState.lastpts != m_dvdPlayerVideo.GetCurrentPts() - && m_SpeedState.lasttime != GetTime()) - { -@@ -2184,6 +2184,12 @@ - if (speed != DVD_PLAYSPEED_PAUSE && m_playSpeed != DVD_PLAYSPEED_PAUSE && speed != m_playSpeed) - m_callback.OnPlayBackSpeedChanged(speed / DVD_PLAYSPEED_NORMAL); - -+ // do a seek after rewind, clock is not in sync with current pts -+ if (m_playSpeed < 0 && speed >= 0) -+ { -+ m_messenger.Put(new CDVDMsgPlayerSeek(GetTime(), true, true, true)); -+ } -+ - // if playspeed is different then DVD_PLAYSPEED_NORMAL or DVD_PLAYSPEED_PAUSE - // audioplayer, stops outputing audio to audiorendere, but still tries to - // sleep an correct amount for each packet -diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp xbmc-f13566b.patch/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp ---- xbmc-f13566b/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp 2012-10-08 09:19:29.000000000 +0200 -+++ xbmc-f13566b.patch/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp 2012-10-08 17:13:47.109522969 +0200 -@@ -261,6 +261,7 @@ - m_stalled = m_messageQueue.GetPacketCount(CDVDMsg::DEMUXER_PACKET) == 0; - m_started = false; - m_codecname = m_pVideoCodec->GetName(); -+ g_renderManager.EnableBuffering(false); - } - - void CDVDPlayerVideo::CloseStream(bool bWaitForBuffers) -@@ -325,8 +326,10 @@ - - int iDropped = 0; //frames dropped in a row - bool bRequestDrop = false; -+ int iDropDirective; - - m_videoStats.Start(); -+ m_droppingStats.Reset(); - - while (!m_bStop) - { -@@ -436,6 +439,8 @@ - picture.iFlags &= ~DVP_FLAG_ALLOCATED; - m_packets.clear(); - m_started = false; -+ m_droppingStats.Reset(); -+ g_renderManager.EnableBuffering(false); - } - else if (pMsg->IsType(CDVDMsg::GENERAL_FLUSH)) // private message sent by (CDVDPlayerVideo::Flush()) - { -@@ -448,6 +453,8 @@ - //we need to recalculate the framerate - //TODO: this needs to be set on a streamchange instead - ResetFrameRateCalc(); -+ m_droppingStats.Reset(); -+ g_renderManager.EnableBuffering(false); - - m_stalled = true; - m_started = false; -@@ -465,6 +472,7 @@ - m_speed = static_cast(pMsg)->m_value; - if(m_speed == DVD_PLAYSPEED_PAUSE) - m_iNrOfPicturesNotToSkip = 0; -+ m_droppingStats.Reset(); - } - else if (pMsg->IsType(CDVDMsg::PLAYER_STARTED)) - { -@@ -499,6 +507,28 @@ - m_iNrOfPicturesNotToSkip = 1; - } - -+ bRequestDrop = false; -+ iDropDirective = CalcDropRequirement(pts); -+ if (iDropDirective & EOS_VERYLATE) -+ { -+ if (m_bAllowDrop) -+ { -+ m_pullupCorrection.Flush(); -+ bRequestDrop = true; -+ } -+ } -+ int codecControl = 0; -+ if (iDropDirective & EOS_BUFFER_LEVEL) -+ codecControl |= DVP_FLAG_DRAIN; -+ if (m_speed > DVD_PLAYSPEED_NORMAL) -+ codecControl |= DVP_FLAG_NO_POSTPROC; -+ m_pVideoCodec->SetCodecControl(codecControl); -+ if (iDropDirective & EOS_DROPPED) -+ { -+ m_iDroppedFrames++; -+ iDropped++; -+ } -+ - #ifdef PROFILE - bRequestDrop = false; - #else -@@ -508,6 +538,7 @@ - bRequestDrop = false; - m_iDroppedRequest = 0; - m_iLateFrames = 0; -+ m_droppingStats.m_requestOutputDrop = false; - } - #endif - -@@ -555,15 +586,8 @@ - } - - m_videoStats.AddSampleBytes(pPacket->iSize); -- // assume decoder dropped a picture if it didn't give us any -- // picture from a demux packet, this should be reasonable -- // for libavformat as a demuxer as it normally packetizes -- // pictures when they come from demuxer -- if(bRequestDrop && !bPacketDrop && (iDecoderState & VC_BUFFER) && !(iDecoderState & VC_PICTURE)) -- { -- m_iDroppedFrames++; -- iDropped++; -- } -+ -+ bRequestDrop = false; - - // loop while no error - while (!m_bStop) -@@ -586,6 +610,8 @@ - - m_pVideoCodec->Reset(); - m_packets.clear(); -+ picture.iFlags &= ~DVP_FLAG_ALLOCATED; -+ g_renderManager.DiscardBuffer(); - break; - } - -@@ -695,11 +721,15 @@ - CDVDCodecUtils::FreePicture(pTempYUVPackedPicture); - #endif - -+ if (!m_bFpsInvalid) -+ frametime = (double)DVD_TIME_BASE/m_fFrameRate; -+ - if(m_started == false) - { - m_codecname = m_pVideoCodec->GetName(); - m_started = true; - m_messageParent.Put(new CDVDMsgInt(CDVDMsg::PLAYER_STARTED, DVDPLAYER_VIDEO)); -+ g_renderManager.EnableBuffering(true); - } - - // guess next frame pts. iDuration is always valid -@@ -1004,7 +1034,7 @@ +-- +1.7.10 + + +From f2240ae82c6059986204676c7a257f2b232748fe Mon Sep 17 00:00:00 2001 +From: xbmc +Date: Tue, 2 Oct 2012 13:02:10 +0200 +Subject: [PATCH 45/51] dvdplayer: avoid short screen flicker caused by + unnecessary reconfigure of renderer + +--- + xbmc/cores/dvdplayer/DVDPlayerVideo.cpp | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp b/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp +index e5e71f3..8b02d81 100644 +--- a/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp ++++ b/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp +@@ -1033,7 +1033,7 @@ int CDVDPlayerVideo::OutputPicture(const DVDVideoPicture* src, double pts) || m_output.height != pPicture->iHeight || m_output.dwidth != pPicture->iDisplayWidth || m_output.dheight != pPicture->iDisplayHeight @@ -10305,27 +17700,7 @@ diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp xbmc-f13566b.pat || m_output.color_format != (unsigned int)pPicture->format || m_output.extended_format != pPicture->extended_format || ( m_output.color_matrix != pPicture->color_matrix && pPicture->color_matrix != 0 ) // don't reconfigure on unspecified -@@ -1112,6 +1142,9 @@ - case RENDER_FMT_VDPAU: - formatstr = "VDPAU"; - break; -+ case RENDER_FMT_VDPAU_420: -+ formatstr = "VDPAU_420"; -+ break; - case RENDER_FMT_DXVA: - formatstr = "DXVA"; - break; -@@ -1130,6 +1163,9 @@ - case RENDER_FMT_NONE: - formatstr = "NONE"; - break; -+ case RENDER_FMT_XVBA: -+ formatstr = "XVBA"; -+ break; - } - - if(m_bAllowFullscreen) -@@ -1149,7 +1185,7 @@ +@@ -1184,7 +1184,7 @@ int CDVDPlayerVideo::OutputPicture(const DVDVideoPicture* src, double pts) m_output.height = pPicture->iHeight; m_output.dwidth = pPicture->iDisplayWidth; m_output.dheight = pPicture->iDisplayHeight; @@ -10334,5274 +17709,171 @@ diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp xbmc-f13566b.pat m_output.color_format = pPicture->format; m_output.extended_format = pPicture->extended_format; m_output.color_matrix = pPicture->color_matrix; -@@ -1221,67 +1257,47 @@ - iSleepTime = iFrameSleep; - else - iSleepTime = iFrameSleep + (iClockSleep - iFrameSleep) / m_autosync; -+// -+//#ifdef PROFILE /* during profiling, try to play as fast as possible */ -+// iSleepTime = 0; -+//#endif -+// -+// // present the current pts of this frame to user, and include the actual -+// // presentation delay, to allow him to adjust for it -+// if( m_stalled ) -+// m_iCurrentPts = DVD_NOPTS_VALUE; -+// else -+// m_iCurrentPts = pts - max(0.0, iSleepTime); -+// -+// // timestamp when we think next picture should be displayed based on current duration -+// m_FlipTimeStamp = iCurrentClock; -+// m_FlipTimeStamp += max(0.0, iSleepTime); -+// m_FlipTimeStamp += iFrameDuration; -+ -+ if ((m_droppingStats.m_requestOutputDrop && !(pPicture->iFlags & DVP_FLAG_NOSKIP)) -+ || (pPicture->iFlags & DVP_FLAG_DROPPED)) -+ { -+ m_droppingStats.AddOutputDropGain(pts, 1/m_fFrameRate); -+ m_droppingStats.m_requestOutputDrop = false; -+ CLog::Log(LOGDEBUG,"%s - dropped in output", __FUNCTION__); -+ return result | EOS_DROPPED; -+ } +-- +1.7.10 + + +From a801128de524e77863cd06a1393c09a489f62056 Mon Sep 17 00:00:00 2001 +From: xbmc +Date: Sat, 16 Jun 2012 12:46:30 +0200 +Subject: [PATCH 46/51] xvba: do not use vaapi if xvba is present + +--- + xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI.cpp | 9 +++++++++ + 1 file changed, 9 insertions(+) + +diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI.cpp +index e605e6a..5dad5b9 100644 +--- a/xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI.cpp ++++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI.cpp +@@ -261,6 +261,15 @@ void CDecoder::Close() --#ifdef PROFILE /* during profiling, try to play as fast as possible */ -- iSleepTime = 0; --#endif -- -- // present the current pts of this frame to user, and include the actual -- // presentation delay, to allow him to adjust for it -- if( m_stalled ) -- m_iCurrentPts = DVD_NOPTS_VALUE; -- else -- m_iCurrentPts = pts - max(0.0, iSleepTime); -- -- // timestamp when we think next picture should be displayed based on current duration -- m_FlipTimeStamp = iCurrentClock; -- m_FlipTimeStamp += max(0.0, iSleepTime); -- m_FlipTimeStamp += iFrameDuration; -- -- if (iSleepTime <= 0 && m_speed) -- m_iLateFrames++; -- else -- m_iLateFrames = 0; -- -- // ask decoder to drop frames next round, as we are very late -- if(m_iLateFrames > 10) -+ if( m_speed < 0 ) - { -- if (!(pPicture->iFlags & DVP_FLAG_NOSKIP)) -+ double decoderPts = m_droppingStats.m_lastDecoderPts; -+ double renderPts = m_droppingStats.m_lastRenderPts; -+ if (pts > renderPts) - { -- //if we're calculating the framerate, -- //don't drop frames until we've calculated a stable framerate -- if (m_bAllowDrop || m_speed != DVD_PLAYSPEED_NORMAL) -- { -- result |= EOS_VERYLATE; -- m_pullupCorrection.Flush(); //dropped frames mess up the pattern, so just flush it -- } -- -- //if we requested 5 drops in a row and we're still late, drop on output -- //this keeps a/v sync if the decoder can't drop, or we're still calculating the framerate -- if (m_iDroppedRequest > 5) -+ if (decoderPts >= renderPts) - { -- m_iDroppedRequest--; //decrease so we only drop half the frames -- return result | EOS_DROPPED; -+ Sleep(200); - } -- m_iDroppedRequest++; -- } -- } -- else -- { -- m_iDroppedRequest = 0; -- } -- -- if( m_speed < 0 ) -- { -- if( iClockSleep < -DVD_MSEC_TO_TIME(200) -- && !(pPicture->iFlags & DVP_FLAG_NOSKIP) ) - return result | EOS_DROPPED; -+ } - } - -- if( (pPicture->iFlags & DVP_FLAG_DROPPED) ) -- return result | EOS_DROPPED; -- -- if( m_speed != DVD_PLAYSPEED_NORMAL && limited ) -+ if( m_speed != DVD_PLAYSPEED_NORMAL && m_speed >= 0 && limited ) - { - // calculate frame dropping pattern to render at this speed - // we do that by deciding if this or next frame is closest -@@ -1317,6 +1333,16 @@ - mDisplayField = FS_BOT; - } - -+ int buffer = g_renderManager.WaitForBuffer(m_bStop); -+ while (buffer < 0 && !CThread::m_bStop && -+ CDVDClock::GetAbsoluteClock(false) < iCurrentClock + iSleepTime + DVD_MSEC_TO_TIME(500) ) -+ { -+ Sleep(1); -+ buffer = g_renderManager.WaitForBuffer(m_bStop); -+ } -+ if (buffer < 0) -+ return EOS_DROPPED; -+ - ProcessOverlays(pPicture, pts); - AutoCrop(pPicture); - -@@ -1333,7 +1359,7 @@ - if (index < 0) - return EOS_DROPPED; - -- g_renderManager.FlipPage(CThread::m_bStop, (iCurrentClock + iSleepTime) / DVD_TIME_BASE, -1, mDisplayField); -+ g_renderManager.FlipPage(CThread::m_bStop, pts, -1, mDisplayField, m_speed); - - return result; - #else -@@ -1552,6 +1578,22 @@ - g_advancedSettings.m_videoFpsDetect == 0; - } - -+double CDVDPlayerVideo::GetCurrentPts() -+{ -+ double iSleepTime, iRenderPts; -+ int iBufferLevel; -+ -+ // get render stats -+ g_renderManager.GetStats(iSleepTime, iRenderPts, iBufferLevel); -+ -+ if( m_stalled ) -+ iRenderPts = DVD_NOPTS_VALUE; -+ else -+ iRenderPts = iRenderPts - max(0.0, iSleepTime); -+ -+ return iRenderPts; -+} -+ - #define MAXFRAMERATEDIFF 0.01 - #define MAXFRAMESERR 1000 - -@@ -1576,7 +1618,7 @@ - double frameduration = m_pullupCorrection.GetFrameDuration(); - - if (frameduration == DVD_NOPTS_VALUE || -- (g_advancedSettings.m_videoFpsDetect == 1 && m_pullupCorrection.GetPatternLength() > 1)) -+ (g_advancedSettings.m_videoFpsDetect == 1 && (m_pullupCorrection.GetPatternLength() > 1 && !m_bFpsInvalid))) - { - //reset the stored framerates if no good framerate was detected - m_fStableFrameRate = 0.0; -@@ -1632,3 +1674,152 @@ - m_iFrameRateCount = 0; - } - } -+ -+int CDVDPlayerVideo::CalcDropRequirement(double pts) -+{ -+ int result = 0; -+ double iSleepTime; -+ double iDecoderPts, iRenderPts; -+ double iInterval; -+ int interlaced; -+ double iGain; -+ double iLateness; -+ bool bNewFrame; -+ int iSkippedDeint = 0; -+ int iBufferLevel; -+ -+ // get decoder stats -+ if (!m_pVideoCodec->GetPts(iDecoderPts, iSkippedDeint, interlaced)) -+ iDecoderPts = pts; -+ if (iDecoderPts == DVD_NOPTS_VALUE) -+ iDecoderPts = pts; -+ -+ // get render stats -+ g_renderManager.GetStats(iSleepTime, iRenderPts, iBufferLevel); -+ -+ if (iBufferLevel < 0) -+ result |= EOS_BUFFER_LEVEL; -+ else if (iBufferLevel < 2) -+ { -+ result |= EOS_BUFFER_LEVEL; -+ CLog::Log(LOGDEBUG,"CDVDPlayerVideo::CalcDropRequirement - hurry: %d", iBufferLevel); -+ } -+ -+ bNewFrame = iDecoderPts != m_droppingStats.m_lastDecoderPts; -+ -+ if (interlaced) -+ iInterval = 2/m_fFrameRate*(double)DVD_TIME_BASE; -+ else -+ iInterval = 1/m_fFrameRate*(double)DVD_TIME_BASE; -+ -+ -+ m_FlipTimeStamp = m_pClock->GetAbsoluteClock() + max(0.0, iSleepTime) + iInterval; -+ -+ if( m_stalled ) -+ m_iCurrentPts = DVD_NOPTS_VALUE; -+ else -+ m_iCurrentPts = iRenderPts - max(0.0, iSleepTime); -+ -+ -+ if (m_droppingStats.m_lastDecoderPts > 0 -+ && bNewFrame -+ && m_bAllowDrop -+ && m_droppingStats.m_dropRequests > 0) -+ { -+ iGain = (iDecoderPts - m_droppingStats.m_lastDecoderPts - iInterval)/(double)DVD_TIME_BASE; -+ if (iSkippedDeint) -+ { -+ CDroppingStats::CGain gain; -+ gain.gain = 1/m_fFrameRate; -+ gain.pts = iDecoderPts; -+ m_droppingStats.m_gain.push_back(gain); -+ m_droppingStats.m_totalGain += gain.gain; -+ result |= EOS_DROPPED; -+ m_droppingStats.m_dropRequests = 0; -+ CLog::Log(LOGDEBUG,"CDVDPlayerVideo::CalcDropRequirement - dropped de-interlacing cycle, Sleeptime: %f, Bufferlevel: %d", iSleepTime, iBufferLevel); -+ } -+ else if (iGain > 1/m_fFrameRate) -+ { -+ CDroppingStats::CGain gain; -+ gain.gain = iGain; -+ gain.pts = iDecoderPts; -+ m_droppingStats.m_gain.push_back(gain); -+ m_droppingStats.m_totalGain += iGain; -+ result |= EOS_DROPPED; -+ m_droppingStats.m_dropRequests = 0; -+ CLog::Log(LOGDEBUG,"CDVDPlayerVideo::CalcDropRequirement - dropped in decoder, Sleeptime: %f, Bufferlevel: %d, Gain: %f", iSleepTime, iBufferLevel, iGain); -+ } -+ -+ } -+ m_droppingStats.m_lastDecoderPts = iDecoderPts; -+ -+ // subtract gains -+ while (!m_droppingStats.m_gain.empty() && -+ iRenderPts >= m_droppingStats.m_gain.front().pts) -+ { -+ m_droppingStats.m_totalGain -= m_droppingStats.m_gain.front().gain; -+ m_droppingStats.m_gain.pop_front(); -+ } -+ -+// if (iSleepTime < 0) -+// { -+// CLog::Log(LOGNOTICE,"----- sleep: %f, gain :%f", -+// iSleepTime, m_droppingStats.m_totalGain); -+// } -+ -+ // calculate lateness -+ iLateness = iSleepTime + m_droppingStats.m_totalGain; -+ if (iLateness < 0 && m_speed) -+ { -+ if (bNewFrame) -+ m_droppingStats.m_lateFrames++; -+ -+ // if lateness is smaller than frametime, we observe this state -+ // for 10 cycles -+ if (m_droppingStats.m_lateFrames > 10 || iLateness < -2/m_fFrameRate) -+ { -+ // is frame allowed to skip -+ if (m_iNrOfPicturesNotToSkip <= 0) -+ { -+ result |= EOS_VERYLATE; -+ -+ // drop in output -+ if (m_droppingStats.m_dropRequests > 7 && g_graphicsContext.IsFullScreenVideo()) -+ { -+ m_droppingStats.m_dropRequests--; //decrease so we only drop half the frames -+ m_droppingStats.m_requestOutputDrop = true; -+ } -+ else if (bNewFrame) -+ m_droppingStats.m_dropRequests++; -+ } -+ } -+ } -+ else -+ { -+ m_droppingStats.m_dropRequests = 0; -+ m_droppingStats.m_lateFrames = 0; -+ m_droppingStats.m_requestOutputDrop = false; -+ } -+ m_droppingStats.m_lastRenderPts = iRenderPts; -+ return result; -+} -+ -+void CDroppingStats::Reset() -+{ -+ m_gain.clear(); -+ m_totalGain = 0; -+ m_lastDecoderPts = 0; -+ m_lastRenderPts = 0; -+ m_lateFrames = 0; -+ m_dropRequests = 0; -+ m_requestOutputDrop = false; -+} -+ -+void CDroppingStats::AddOutputDropGain(double pts, double frametime) -+{ -+ CDroppingStats::CGain gain; -+ gain.gain = frametime; -+ gain.pts = pts; -+ m_gain.push_back(gain); -+ m_totalGain += frametime; -+} -diff -Naur xbmc-f13566b/xbmc/cores/dvdplayer/DVDPlayerVideo.h xbmc-f13566b.patch/xbmc/cores/dvdplayer/DVDPlayerVideo.h ---- xbmc-f13566b/xbmc/cores/dvdplayer/DVDPlayerVideo.h 2012-10-08 09:19:29.000000000 +0200 -+++ xbmc-f13566b.patch/xbmc/cores/dvdplayer/DVDPlayerVideo.h 2012-10-08 17:13:47.069522169 +0200 -@@ -37,6 +37,26 @@ - - #define VIDEO_PICTURE_QUEUE_SIZE 1 - -+class CDroppingStats -+{ -+public: -+ void Reset(); -+ void AddOutputDropGain(double pts, double frametime); -+ struct CGain -+ { -+ double gain; -+ double pts; -+ }; -+ std::deque m_gain; -+ double m_totalGain; -+ double m_lastDecoderPts; -+ double m_lastRenderPts; -+ unsigned int m_lateFrames; -+ unsigned int m_dropRequests; -+ bool m_requestOutputDrop; -+}; -+ -+ - class CDVDPlayerVideo : public CThread + bool CDecoder::Open(AVCodecContext *avctx, enum PixelFormat fmt, unsigned int surfaces) { - public: -@@ -88,7 +108,7 @@ - - bool InitializedOutputDevice(); - -- double GetCurrentPts() { return m_iCurrentPts; } -+ double GetCurrentPts(); - int GetPullupCorrection() { return m_pullupCorrection.GetPatternLength(); } - - double GetOutputDelay(); /* returns the expected delay, from that a packet is put in queue */ -@@ -110,6 +130,7 @@ - #define EOS_ABORT 1 - #define EOS_DROPPED 2 - #define EOS_VERYLATE 4 -+#define EOS_BUFFER_LEVEL 8 - - void AutoCrop(DVDVideoPicture* pPicture); - void AutoCrop(DVDVideoPicture *pPicture, RECT &crop); -@@ -135,6 +156,7 @@ - - void ResetFrameRateCalc(); - void CalcFrameRate(); -+ int CalcDropRequirement(double pts); - - double m_fFrameRate; //framerate of the video currently playing - bool m_bCalcFrameRate; //if we should calculate the framerate from the timestamps -@@ -195,5 +217,7 @@ - CPullupCorrection m_pullupCorrection; - - std::list m_packets; -+ -+ CDroppingStats m_droppingStats; - }; - -diff -Naur xbmc-f13566b/xbmc/cores/VideoRenderers/BaseRenderer.h xbmc-f13566b.patch/xbmc/cores/VideoRenderers/BaseRenderer.h ---- xbmc-f13566b/xbmc/cores/VideoRenderers/BaseRenderer.h 2012-10-08 09:19:30.000000000 +0200 -+++ xbmc-f13566b.patch/xbmc/cores/VideoRenderers/BaseRenderer.h 2012-10-08 17:13:46.897518737 +0200 -@@ -74,10 +74,13 @@ - void GetVideoRect(CRect &source, CRect &dest); - float GetAspectRatio() const; - -- virtual bool AddVideoPicture(DVDVideoPicture* picture) { return false; } -+ virtual bool AddVideoPicture(DVDVideoPicture* picture, int index) { return false; } - virtual void Flush() {}; - - virtual unsigned int GetProcessorSize() { return 0; } -+ virtual unsigned int GetMaxProcessorSize() { return 0; } -+ virtual void SetProcessorSize(int numBuffers) { } -+ virtual void ReleaseBuffer(int idx) { } - - virtual bool Supports(ERENDERFEATURE feature) { return false; } - -diff -Naur xbmc-f13566b/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp xbmc-f13566b.patch/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp ---- xbmc-f13566b/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp 2012-10-08 09:19:30.000000000 +0200 -+++ xbmc-f13566b.patch/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp 2012-10-08 17:13:47.096522709 +0200 -@@ -63,6 +63,9 @@ - VA_MICRO_VERSION == 0 && VA_SDS_VERSION < 5))) - - #endif +#ifdef HAVE_LIBXVBA -+#include "cores/dvdplayer/DVDCodecs/Video/XVBA.h" -+#endif - - #ifdef TARGET_DARWIN - #include "osx/CocoaInterface.h" -@@ -129,6 +132,9 @@ - #ifdef HAVE_LIBVDPAU - vdpau = NULL; - #endif -+#ifdef HAVE_LIBXVBA -+ xvba = NULL; -+#endif - } - - CLinuxRendererGL::YUVBUFFER::~YUVBUFFER() -@@ -238,7 +244,7 @@ - - void CLinuxRendererGL::ManageTextures() - { -- m_NumYV12Buffers = 2; -+ // m_NumYV12Buffers = 2; - //m_iYV12RenderBuffer = 0; - return; - } -@@ -256,6 +262,12 @@ - else - CLog::Log(LOGNOTICE,"Using GL_TEXTURE_2D"); - -+ // function pointer for texture might change in -+ // call to LoadShaders -+ glFinish(); -+ for (int i = 0 ; i < NUM_BUFFERS ; i++) -+ (this->*m_textureDelete)(i); -+ - // create the yuv textures - LoadShaders(); - -@@ -593,6 +605,25 @@ - - glFinish(); - m_bValidated = false; -+ m_iYV12RenderBuffer = 0; -+} -+ -+void CLinuxRendererGL::ReleaseBuffer(int idx) -+{ -+ YUVBUFFER &buf = m_buffers[idx]; -+#ifdef HAVE_LIBVDPAU -+ SAFE_RELEASE(buf.vdpau); -+#endif -+#ifdef HAVE_LIBXVBA -+ SAFE_RELEASE(buf.xvba); -+#endif -+#ifdef HAVE_LIBVA -+ buf.vaapi.surface.reset(); -+#endif -+#ifdef TARGET_DARWIN -+ if (buf.cvBufferRef) -+ CVBufferRelease(buf.cvBufferRef); -+#endif - } - - void CLinuxRendererGL::Update(bool bPauseDrawing) -@@ -673,6 +704,18 @@ - glDisable(GL_POLYGON_STIPPLE); - - } -+ else if(m_format == RENDER_FMT_VDPAU_420 -+ && !(flags & (RENDER_FLAG_TOP | RENDER_FLAG_BOT))) ++ std::string Vendor = g_Windowing.GetRenderVendor(); ++ std::transform(Vendor.begin(), Vendor.end(), Vendor.begin(), ::tolower); ++ if (Vendor.compare(0, 3, "ati") == 0) + { -+ glDisable(GL_BLEND); -+ glColor4f(1.0f, 1.0f, 1.0f, 1.0f); -+ Render(flags | RENDER_FLAG_TOP, index); -+ -+ glEnable(GL_BLEND); -+ glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); -+ glColor4f(1.0f, 1.0f, 1.0f, 128 / 255.0f); -+ Render(flags | RENDER_FLAG_BOT , index); -+ } - else - Render(flags, index); - -@@ -753,11 +796,6 @@ - - m_buffers[m_iYV12RenderBuffer].flipindex = ++m_flipindex; - --#ifdef HAVE_LIBVDPAU -- if((m_renderMethod & RENDER_VDPAU) && m_buffers[m_iYV12RenderBuffer].vdpau) -- m_buffers[m_iYV12RenderBuffer].vdpau->Present(); --#endif -- - return; - } - -@@ -772,7 +810,6 @@ - m_resolution = RES_DESKTOP; - - m_iYV12RenderBuffer = 0; -- m_NumYV12Buffers = 2; - - m_formats.push_back(RENDER_FMT_YUV420P); - GLint size; -@@ -869,7 +906,7 @@ - case VS_SCALINGMETHOD_LINEAR: - SetTextureFilter(m_scalingMethod == VS_SCALINGMETHOD_NEAREST ? GL_NEAREST : GL_LINEAR); - m_renderQuality = RQ_SINGLEPASS; -- if (((m_renderMethod & RENDER_VDPAU) || (m_renderMethod & RENDER_VAAPI)) && m_nonLinStretch) -+ if (((m_renderMethod & RENDER_VDPAU) || (m_renderMethod & RENDER_VAAPI) || (m_renderMethod & RENDER_XVBA)) && m_nonLinStretch) - { - m_pVideoFilterShader = new StretchFilterShader(); - if (!m_pVideoFilterShader->CompileAndLink()) -@@ -955,6 +992,11 @@ - CLog::Log(LOGNOTICE, "GL: Using CVBREF render method"); - m_renderMethod = RENDER_CVREF; - } -+ else if (m_format == RENDER_FMT_XVBA) -+ { -+ CLog::Log(LOGNOTICE, "GL: Using XVBA render method"); -+ m_renderMethod = RENDER_XVBA; -+ } - else - { - int requestedMethod = g_guiSettings.GetInt("videoplayer.rendermethod"); -@@ -1085,6 +1127,12 @@ - m_textureCreate = &CLinuxRendererGL::CreateVDPAUTexture; - m_textureDelete = &CLinuxRendererGL::DeleteVDPAUTexture; - } -+ else if (m_format == RENDER_FMT_VDPAU_420) -+ { -+ m_textureUpload = &CLinuxRendererGL::UploadVDPAUTexture420; -+ m_textureCreate = &CLinuxRendererGL::CreateVDPAUTexture420; -+ m_textureDelete = &CLinuxRendererGL::DeleteVDPAUTexture420; -+ } - else if (m_format == RENDER_FMT_VAAPI) - { - m_textureUpload = &CLinuxRendererGL::UploadVAAPITexture; -@@ -1097,6 +1145,12 @@ - m_textureCreate = &CLinuxRendererGL::CreateCVRefTexture; - m_textureDelete = &CLinuxRendererGL::DeleteCVRefTexture; - } -+ else if (m_format == RENDER_FMT_XVBA) -+ { -+ m_textureUpload = &CLinuxRendererGL::UploadXVBATexture; -+ m_textureCreate = &CLinuxRendererGL::CreateXVBATexture; -+ m_textureDelete = &CLinuxRendererGL::DeleteXVBATexture; -+ } - else - { - // setup default YV12 texture handlers -@@ -1160,7 +1214,10 @@ - m_currentField = FIELD_FULL; - - // call texture load function -+ m_skipRender = false; - (this->*m_textureUpload)(renderBuffer); -+ if (m_skipRender) -+ return; - - if (m_renderMethod & RENDER_GLSL) - { -@@ -1197,6 +1254,13 @@ - RenderVAAPI(renderBuffer, m_currentField); - } - #endif -+#ifdef HAVE_LIBXVBA -+ else if (m_renderMethod & RENDER_XVBA) -+ { -+ UpdateVideoFilter(); -+ RenderXVBA(renderBuffer, m_currentField); ++ return false; + } +#endif - else ++ + VAEntrypoint entrypoint = VAEntrypointVLD; + VAProfile profile; + +-- +1.7.10 + + +From e815a4bf8abeba3e17bea45d30effa22d037c192 Mon Sep 17 00:00:00 2001 +From: xbmc +Date: Thu, 11 Oct 2012 12:05:50 +0200 +Subject: [PATCH 47/51] vdpau: advanced settings for auto deinterlacing + +--- + xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp | 8 ++++---- + xbmc/settings/AdvancedSettings.cpp | 4 ++++ + xbmc/settings/AdvancedSettings.h | 2 ++ + 3 files changed, 10 insertions(+), 4 deletions(-) + +diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp +index 235f565..d95797b 100644 +--- a/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp ++++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp +@@ -1770,10 +1770,10 @@ EINTERLACEMETHOD CMixer::GetDeinterlacingMethod(bool log /* = false */) + if (method == VS_INTERLACEMETHOD_AUTO) { - // RENDER_CVREF uses the same render as the default case -@@ -1500,17 +1564,12 @@ - void CLinuxRendererGL::RenderVDPAU(int index, int field) - { - #ifdef HAVE_LIBVDPAU -- YUVPLANE &plane = m_buffers[index].fields[field][0]; -- CVDPAU *vdpau = m_buffers[m_iYV12RenderBuffer].vdpau; -- -- if (!vdpau) -- return; -+ YUVPLANE &plane = m_buffers[index].fields[0][1]; - - glEnable(m_textureTarget); - glActiveTextureARB(GL_TEXTURE0); -- glBindTexture(m_textureTarget, plane.id); - -- vdpau->BindPixmap(); -+ glBindTexture(m_textureTarget, plane.id); - - // Try some clamping or wrapping - glTexParameteri(m_textureTarget, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); -@@ -1568,8 +1627,6 @@ - if (m_pVideoFilterShader) - m_pVideoFilterShader->Disable(); - -- vdpau->ReleasePixmap(); -- - glBindTexture (m_textureTarget, 0); - glDisable(m_textureTarget); - #endif -@@ -1664,6 +1721,77 @@ - #endif - } - -+void CLinuxRendererGL::RenderXVBA(int index, int field) -+{ -+#ifdef HAVE_LIBXVBA -+ YUVPLANE &plane = m_buffers[index].fields[0][1]; -+ -+ glEnable(m_textureTarget); -+ glActiveTextureARB(GL_TEXTURE0); -+ -+ glBindTexture(m_textureTarget, plane.id); -+ -+ // Try some clamping or wrapping -+ glTexParameteri(m_textureTarget, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); -+ glTexParameteri(m_textureTarget, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); -+ -+ if (m_pVideoFilterShader) -+ { -+ GLint filter; -+ if (!m_pVideoFilterShader->GetTextureFilter(filter)) -+ filter = m_scalingMethod == VS_SCALINGMETHOD_NEAREST ? GL_NEAREST : GL_LINEAR; -+ -+ glTexParameteri(m_textureTarget, GL_TEXTURE_MAG_FILTER, filter); -+ glTexParameteri(m_textureTarget, GL_TEXTURE_MIN_FILTER, filter); -+ m_pVideoFilterShader->SetSourceTexture(0); -+ m_pVideoFilterShader->SetWidth(m_sourceWidth); -+ m_pVideoFilterShader->SetHeight(m_sourceHeight); -+ -+ //disable non-linear stretch when a dvd menu is shown, parts of the menu are rendered through the overlay renderer -+ //having non-linear stretch on breaks the alignment -+ if (g_application.m_pPlayer && g_application.m_pPlayer->IsInMenu()) -+ m_pVideoFilterShader->SetNonLinStretch(1.0); + int deint = -1; +-// if (m_config.outHeight >= 720) +-// deint = g_advancedSettings.m_videoVDPAUdeintHD; +-// else +-// deint = g_advancedSettings.m_videoVDPAUdeintSD; ++ if (m_config.outHeight >= 720) ++ deint = g_advancedSettings.m_videoVDPAUdeintHD; + else -+ m_pVideoFilterShader->SetNonLinStretch(pow(g_settings.m_fPixelRatio, g_advancedSettings.m_videoNonLinStretchRatio)); -+ -+ m_pVideoFilterShader->Enable(); -+ } -+ else -+ { -+ GLint filter = m_scalingMethod == VS_SCALINGMETHOD_NEAREST ? GL_NEAREST : GL_LINEAR; -+ glTexParameteri(m_textureTarget, GL_TEXTURE_MAG_FILTER, filter); -+ glTexParameteri(m_textureTarget, GL_TEXTURE_MIN_FILTER, filter); -+ } -+ -+ glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); -+ VerifyGLState(); -+ -+ glBegin(GL_QUADS); -+ if (m_textureTarget==GL_TEXTURE_2D) -+ { -+ glTexCoord2f(plane.rect.x1, plane.rect.y1); glVertex2f(m_destRect.x1, m_destRect.y1); -+ glTexCoord2f(plane.rect.x2, plane.rect.y1); glVertex2f(m_destRect.x2, m_destRect.y1); -+ glTexCoord2f(plane.rect.x2, plane.rect.y2); glVertex2f(m_destRect.x2, m_destRect.y2); -+ glTexCoord2f(plane.rect.x1, plane.rect.y2); glVertex2f(m_destRect.x1, m_destRect.y2); -+ } -+ else -+ { -+ glTexCoord2f(m_destRect.x1, m_destRect.y1); glVertex4f(m_destRect.x1, m_destRect.y1, 0.0f, 0.0f); -+ glTexCoord2f(m_destRect.x2, m_destRect.y1); glVertex4f(m_destRect.x2, m_destRect.y1, 1.0f, 0.0f); -+ glTexCoord2f(m_destRect.x2, m_destRect.y2); glVertex4f(m_destRect.x2, m_destRect.y2, 1.0f, 1.0f); -+ glTexCoord2f(m_destRect.x1, m_destRect.y2); glVertex4f(m_destRect.x1, m_destRect.y2, 0.0f, 1.0f); -+ } -+ glEnd(); -+ VerifyGLState(); -+ -+ if (m_pVideoFilterShader) -+ m_pVideoFilterShader->Disable(); -+ -+ glBindTexture (m_textureTarget, 0); -+ glDisable(m_textureTarget); -+#endif -+} -+ - void CLinuxRendererGL::RenderSoftware(int index, int field) - { - // used for textues uploaded from rgba or CVPixelBuffers. -@@ -2253,12 +2381,14 @@ - { - #ifdef HAVE_LIBVDPAU - YUVPLANE &plane = m_buffers[index].fields[0][0]; -+ YUVFIELDS &fields = m_buffers[index].fields; ++ deint = g_advancedSettings.m_videoVDPAUdeintSD; - SAFE_RELEASE(m_buffers[index].vdpau); - - if(plane.id && glIsTexture(plane.id)) - glDeleteTextures(1, &plane.id); - plane.id = 0; -+ fields[0][1].id = 0; - #endif - } - -@@ -2292,11 +2422,152 @@ - void CLinuxRendererGL::UploadVDPAUTexture(int index) - { - #ifdef HAVE_LIBVDPAU -+ VDPAU::CVdpauRenderPicture *vdpau = m_buffers[index].vdpau; -+ -+ unsigned int flipindex = m_buffers[index].flipindex; -+ YUVFIELDS &fields = m_buffers[index].fields; -+ YUVPLANE &plane = fields[0][0]; -+ -+ if (!vdpau || !vdpau->valid) -+ { -+ m_eventTexturesDone[index]->Set(); -+ m_skipRender = true; -+ return; -+ } -+ -+ fields[0][1].id = vdpau->texture[0]; -+ -+ m_eventTexturesDone[index]->Set(); -+#endif -+} -+ -+void CLinuxRendererGL::DeleteVDPAUTexture420(int index) -+{ -+#ifdef HAVE_LIBVDPAU -+ YUVPLANE &plane = m_buffers[index].fields[0][0]; -+ YUVFIELDS &fields = m_buffers[index].fields; -+ -+ SAFE_RELEASE(m_buffers[index].vdpau); -+ -+ if(plane.id && glIsTexture(plane.id)) -+ glDeleteTextures(1, &plane.id); -+ plane.id = 0; -+ fields[1][0].id = 0; -+ fields[1][1].id = 0; -+ fields[2][0].id = 0; -+ fields[2][1].id = 0; -+ -+#endif -+} -+ -+bool CLinuxRendererGL::CreateVDPAUTexture420(int index) -+{ -+#ifdef HAVE_LIBVDPAU -+ YV12Image &im = m_buffers[index].image; -+ YUVFIELDS &fields = m_buffers[index].fields; -+ YUVPLANE &plane = fields[0][0]; -+ GLuint *pbo = m_buffers[index].pbo; -+ -+ DeleteVDPAUTexture420(index); -+ -+ memset(&im , 0, sizeof(im)); -+ memset(&fields, 0, sizeof(fields)); -+ -+ im.cshift_x = 1; -+ im.cshift_y = 1; -+ -+ im.plane[0] = NULL; -+ im.plane[1] = NULL; -+ im.plane[2] = NULL; -+ -+ for(int p = 0;p<3;p++) -+ { -+ pbo[p] = None; -+ } -+ -+ glEnable(m_textureTarget); -+ glGenTextures(1, &plane.id); -+ glDisable(m_textureTarget); -+ - m_eventTexturesDone[index]->Set(); -- glPixelStorei(GL_UNPACK_ALIGNMENT,1); //what's this for? - #endif -+ return true; - } - -+void CLinuxRendererGL::UploadVDPAUTexture420(int index) -+{ -+#ifdef HAVE_LIBVDPAU -+ VDPAU::CVdpauRenderPicture *vdpau = m_buffers[index].vdpau; -+ YV12Image &im = m_buffers[index].image; -+ -+ unsigned int flipindex = m_buffers[index].flipindex; -+ YUVFIELDS &fields = m_buffers[index].fields; -+ YUVPLANE &plane = fields[0][0]; -+ -+ if (!vdpau || !vdpau->valid) -+ { -+ m_eventTexturesDone[index]->Set(); -+ m_skipRender = true; -+ return; -+ } -+ -+ im.height = vdpau->texHeight; -+ im.width = vdpau->texWidth; -+ -+ // YUV -+ for (int f = FIELD_FULL; f<=FIELD_BOT ; f++) -+ { -+ int fieldshift = (f==FIELD_FULL) ? 0 : 1; -+ YUVPLANES &planes = fields[f]; -+ -+ planes[0].texwidth = im.width; -+ planes[0].texheight = im.height >> fieldshift; -+ -+ planes[1].texwidth = planes[0].texwidth >> im.cshift_x; -+ planes[1].texheight = planes[0].texheight >> im.cshift_y; -+ planes[2].texwidth = planes[1].texwidth; -+ planes[2].texheight = planes[1].texheight; -+ -+ for (int p = 0; p < 3; p++) -+ { -+ planes[p].pixpertex_x = 1; -+ planes[p].pixpertex_y = 1; -+ } -+ } -+ // crop -+// m_sourceRect.x1 += vdpau->crop.x1; -+// m_sourceRect.x2 -= vdpau->crop.x2; -+// m_sourceRect.y1 += vdpau->crop.y1; -+// m_sourceRect.y2 -= vdpau->crop.y2; -+ -+ // set textures -+ fields[1][0].id = vdpau->texture[0]; -+ fields[1][1].id = vdpau->texture[2]; -+ fields[2][0].id = vdpau->texture[1]; -+ fields[2][1].id = vdpau->texture[3]; -+ -+ glEnable(m_textureTarget); -+ for (int f = 1; f < 3; f++) -+ { -+ for (int p=0;p<2;p++) -+ { -+ glBindTexture(m_textureTarget,fields[f][p].id); -+ glTexParameteri(m_textureTarget, GL_TEXTURE_MIN_FILTER, GL_LINEAR); -+ glTexParameteri(m_textureTarget, GL_TEXTURE_MAG_FILTER, GL_LINEAR); -+ glTexParameteri(m_textureTarget, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); -+ glTexParameteri(m_textureTarget, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); -+ -+ glBindTexture(m_textureTarget,0); -+ VerifyGLState(); -+ } -+ fields[f][2].id = fields[f][1].id; -+ } -+ CalculateTextureSourceRects(index, 3); -+ glDisable(m_textureTarget); -+ -+ m_eventTexturesDone[index]->Set(); -+#endif -+} - - void CLinuxRendererGL::DeleteVAAPITexture(int index) - { -@@ -2428,7 +2699,7 @@ - || status == VA_STATUS_ERROR_INVALID_DISPLAY) - { - va.display->lost(true); -- for(int i = 0; i < NUM_BUFFERS; i++) -+ for(int i = 0; i < m_NumYV12Buffers; i++) + if (deint != -1) { - m_buffers[i].vaapi.display.reset(); - m_buffers[i].vaapi.surface.reset(); -@@ -2576,6 +2847,93 @@ - return true; - } - -+void CLinuxRendererGL::DeleteXVBATexture(int index) -+{ -+#ifdef HAVE_LIBXVBA -+ YUVPLANE &plane = m_buffers[index].fields[0][0]; -+ YUVFIELDS &fields = m_buffers[index].fields; -+ -+ SAFE_RELEASE(m_buffers[index].xvba); -+ -+ if(plane.id && glIsTexture(plane.id)) -+ glDeleteTextures(1, &plane.id); -+ plane.id = 0; -+ fields[0][1].id = 0; -+#endif -+} -+ -+bool CLinuxRendererGL::CreateXVBATexture(int index) -+{ -+#ifdef HAVE_LIBXVBA -+ YV12Image &im = m_buffers[index].image; -+ YUVFIELDS &fields = m_buffers[index].fields; -+ YUVPLANE &plane = fields[0][0]; -+ -+ DeleteXVBATexture(index); -+ -+ memset(&im , 0, sizeof(im)); -+ memset(&fields, 0, sizeof(fields)); -+ -+ glGenTextures(1, &plane.id); -+ -+ m_eventTexturesDone[index]->Set(); -+#endif -+ return true; -+} -+ -+void CLinuxRendererGL::UploadXVBATexture(int index) -+{ -+#ifdef HAVE_LIBXVBA -+ XVBA::CXvbaRenderPicture *xvba = m_buffers[index].xvba; -+ YV12Image &im = m_buffers[index].image; -+ -+ YUVFIELDS &fields = m_buffers[index].fields; -+ YUVPLANE &plane = fields[0][1]; -+ -+ if (!xvba) -+ { -+ fields[0][1].id = fields[0][0].id; -+ m_eventTexturesDone[index]->Set(); -+ CLog::Log(LOGWARNING,"CLinuxRendererGL::UploadXVBATexture no xvba texture, index: %d", index); -+ return; -+ } -+// xvba->Transfer(); -+ -+ fields[0][1].id = xvba->texture; -+ -+ im.height = xvba->texHeight; -+ im.width = xvba->texWidth; -+ -+ plane.texwidth = xvba->texWidth; -+ plane.texheight = xvba->texHeight; -+ plane.pixpertex_x = 1; -+ plane.pixpertex_y = 1; -+ -+ plane.rect = m_sourceRect; -+ plane.width = im.width; -+ plane.height = im.height; -+ -+ plane.height /= plane.pixpertex_y; -+ plane.rect.y1 /= plane.pixpertex_y; -+ plane.rect.y2 /= plane.pixpertex_y; -+ plane.width /= plane.pixpertex_x; -+ plane.rect.x1 /= plane.pixpertex_x; -+ plane.rect.x2 /= plane.pixpertex_x; -+ -+ if (m_textureTarget == GL_TEXTURE_2D) -+ { -+ plane.height /= plane.texheight; -+ plane.rect.y1 /= plane.texheight; -+ plane.rect.y2 /= plane.texheight; -+ plane.width /= plane.texwidth; -+ plane.rect.x1 /= plane.texwidth; -+ plane.rect.x2 /= plane.texwidth; -+ } -+ -+ m_eventTexturesDone[index]->Set(); -+#endif -+} -+ - void CLinuxRendererGL::UploadYUV422PackedTexture(int source) - { - YUVBUFFER& buf = m_buffers[source]; -@@ -3161,6 +3519,9 @@ - if (m_renderMethod & RENDER_VAAPI) - return false; - -+ if (m_renderMethod & RENDER_XVBA) -+ return false; -+ - return (m_renderMethod & RENDER_GLSL) - || (m_renderMethod & RENDER_ARB) - || ((m_renderMethod & RENDER_SW) && glewIsSupported("GL_ARB_imaging") == GL_TRUE); -@@ -3174,6 +3535,9 @@ - if (m_renderMethod & RENDER_VAAPI) - return false; - -+ if (m_renderMethod & RENDER_XVBA) -+ return false; -+ - return (m_renderMethod & RENDER_GLSL) - || (m_renderMethod & RENDER_ARB) - || ((m_renderMethod & RENDER_SW) && glewIsSupported("GL_ARB_imaging") == GL_TRUE); -@@ -3197,7 +3561,8 @@ - if (feature == RENDERFEATURE_NONLINSTRETCH) - { - if (((m_renderMethod & RENDER_GLSL) && !(m_renderMethod & RENDER_POT)) || -- (m_renderMethod & RENDER_VDPAU) || (m_renderMethod & RENDER_VAAPI)) -+ (m_renderMethod & RENDER_VDPAU) || (m_renderMethod & RENDER_VAAPI) || -+ (m_renderMethod & RENDER_XVBA)) - return true; - } - -@@ -3233,12 +3598,13 @@ - if(method == VS_INTERLACEMETHOD_AUTO) - return true; - -- if(m_renderMethod & RENDER_VDPAU) -+ if(m_renderMethod & RENDER_VDPAU || -+ m_format == RENDER_FMT_VDPAU_420) - { - #ifdef HAVE_LIBVDPAU -- CVDPAU *vdpau = m_buffers[m_iYV12RenderBuffer].vdpau; -- if(vdpau) -- return vdpau->Supports(method); -+ VDPAU::CVdpauRenderPicture *vdpauPic = m_buffers[m_iYV12RenderBuffer].vdpau; -+ if(vdpauPic && vdpauPic->vdpau) -+ return vdpauPic->vdpau->Supports(method); - #endif - return false; - } -@@ -3262,6 +3628,16 @@ - return false; - } - -+ if(m_renderMethod & RENDER_XVBA) -+ { -+#ifdef HAVE_LIBXVBA -+ XVBA::CXvbaRenderPicture *xvba = m_buffers[m_iYV12RenderBuffer].xvba; -+ if(xvba) -+ return xvba->xvba->Supports(method); -+#endif -+ return false; -+ } -+ - #ifdef TARGET_DARWIN - // YADIF too slow for HD but we have no methods to fall back - // to something that works so just turn it off. -@@ -3304,7 +3680,7 @@ - || method == VS_SCALINGMETHOD_LANCZOS3) - { - if ((glewIsSupported("GL_EXT_framebuffer_object") && (m_renderMethod & RENDER_GLSL)) || -- (m_renderMethod & RENDER_VDPAU) || (m_renderMethod & RENDER_VAAPI)) -+ (m_renderMethod & RENDER_VDPAU) || (m_renderMethod & RENDER_VAAPI) || (m_renderMethod & RENDER_XVBA)) - { - // spline36 and lanczos3 are only allowed through advancedsettings.xml - if(method != VS_SCALINGMETHOD_SPLINE36 -@@ -3324,14 +3700,7 @@ - return VS_INTERLACEMETHOD_NONE; - - if(m_renderMethod & RENDER_VDPAU) -- { --#ifdef HAVE_LIBVDPAU -- CVDPAU *vdpau = m_buffers[m_iYV12RenderBuffer].vdpau; -- if(vdpau) -- return vdpau->AutoInterlaceMethod(); --#endif - return VS_INTERLACEMETHOD_NONE; -- } - - if(Supports(VS_INTERLACEMETHOD_RENDER_BOB)) - return VS_INTERLACEMETHOD_RENDER_BOB; -@@ -3374,26 +3743,27 @@ - } - - #ifdef HAVE_LIBVDPAU --void CLinuxRendererGL::AddProcessor(CVDPAU* vdpau) -+void CLinuxRendererGL::AddProcessor(VDPAU::CVdpauRenderPicture *vdpau, int index) - { -- YUVBUFFER &buf = m_buffers[NextYV12Texture()]; -+ YUVBUFFER &buf = m_buffers[index]; -+ VDPAU::CVdpauRenderPicture *pic = vdpau->Acquire(); - SAFE_RELEASE(buf.vdpau); -- buf.vdpau = (CVDPAU*)vdpau->Acquire(); -+ buf.vdpau = pic; - } - #endif - - #ifdef HAVE_LIBVA --void CLinuxRendererGL::AddProcessor(VAAPI::CHolder& holder) -+void CLinuxRendererGL::AddProcessor(VAAPI::CHolder& holder, int index) - { -- YUVBUFFER &buf = m_buffers[NextYV12Texture()]; -+ YUVBUFFER &buf = m_buffers[index]; - buf.vaapi.surface = holder.surface; - } - #endif - - #ifdef TARGET_DARWIN --void CLinuxRendererGL::AddProcessor(struct __CVBuffer *cvBufferRef) -+void CLinuxRendererGL::AddProcessor(struct __CVBuffer *cvBufferRef, int index) - { -- YUVBUFFER &buf = m_buffers[NextYV12Texture()]; -+ YUVBUFFER &buf = m_buffers[index]; - if (buf.cvBufferRef) - CVBufferRelease(buf.cvBufferRef); - buf.cvBufferRef = cvBufferRef; -@@ -3402,4 +3772,14 @@ - } - #endif - -+#ifdef HAVE_LIBXVBA -+void CLinuxRendererGL::AddProcessor(XVBA::CXvbaRenderPicture* xvba, int index) -+{ -+ YUVBUFFER &buf = m_buffers[index]; -+ XVBA::CXvbaRenderPicture *pic = xvba->Acquire(); -+ SAFE_RELEASE(buf.xvba); -+ buf.xvba = pic; -+} -+#endif -+ - #endif -diff -Naur xbmc-f13566b/xbmc/cores/VideoRenderers/LinuxRendererGLES.cpp xbmc-f13566b.patch/xbmc/cores/VideoRenderers/LinuxRendererGLES.cpp ---- xbmc-f13566b/xbmc/cores/VideoRenderers/LinuxRendererGLES.cpp 2012-10-08 09:19:30.000000000 +0200 -+++ xbmc-f13566b.patch/xbmc/cores/VideoRenderers/LinuxRendererGLES.cpp 2012-10-08 17:13:46.901518815 +0200 -@@ -1913,16 +1913,16 @@ - } - - #ifdef HAVE_LIBOPENMAX --void CLinuxRendererGLES::AddProcessor(COpenMax* openMax, DVDVideoPicture *picture) -+void CLinuxRendererGLES::AddProcessor(COpenMax* openMax, DVDVideoPicture *picture, int index) - { -- YUVBUFFER &buf = m_buffers[NextYV12Texture()]; -+ YUVBUFFER &buf = m_buffers[index]; - buf.openMaxBuffer = picture->openMaxBuffer; - } - #endif - #ifdef HAVE_VIDEOTOOLBOXDECODER --void CLinuxRendererGLES::AddProcessor(struct __CVBuffer *cvBufferRef) -+void CLinuxRendererGLES::AddProcessor(struct __CVBuffer *cvBufferRef, int index) - { -- YUVBUFFER &buf = m_buffers[NextYV12Texture()]; -+ YUVBUFFER &buf = m_buffers[index]; - if (buf.cvBufferRef) - CVBufferRelease(buf.cvBufferRef); - buf.cvBufferRef = cvBufferRef; -diff -Naur xbmc-f13566b/xbmc/cores/VideoRenderers/LinuxRendererGLES.h xbmc-f13566b.patch/xbmc/cores/VideoRenderers/LinuxRendererGLES.h ---- xbmc-f13566b/xbmc/cores/VideoRenderers/LinuxRendererGLES.h 2012-10-08 09:19:30.000000000 +0200 -+++ xbmc-f13566b.patch/xbmc/cores/VideoRenderers/LinuxRendererGLES.h 2012-10-08 17:13:46.902518835 +0200 -@@ -152,10 +152,10 @@ - virtual std::vector SupportedFormats() { return m_formats; } - - #ifdef HAVE_LIBOPENMAX -- virtual void AddProcessor(COpenMax* openMax, DVDVideoPicture *picture); -+ virtual void AddProcessor(COpenMax* openMax, DVDVideoPicture *picture, int index); - #endif - #ifdef HAVE_VIDEOTOOLBOXDECODER -- virtual void AddProcessor(struct __CVBuffer *cvBufferRef); -+ virtual void AddProcessor(struct __CVBuffer *cvBufferRef, int index); - #endif - - protected: -diff -Naur xbmc-f13566b/xbmc/cores/VideoRenderers/LinuxRendererGL.h xbmc-f13566b.patch/xbmc/cores/VideoRenderers/LinuxRendererGL.h ---- xbmc-f13566b/xbmc/cores/VideoRenderers/LinuxRendererGL.h 2012-10-08 09:19:30.000000000 +0200 -+++ xbmc-f13566b.patch/xbmc/cores/VideoRenderers/LinuxRendererGL.h 2012-10-08 17:13:46.963520055 +0200 -@@ -38,13 +38,14 @@ - - class CRenderCapture; - --class CVDPAU; - class CBaseTexture; - namespace Shaders { class BaseYUV2RGBShader; } - namespace Shaders { class BaseVideoFilterShader; } - namespace VAAPI { struct CHolder; } -+namespace VDPAU { class CVdpauRenderPicture; } -+namespace XVBA { class CXvbaRenderPicture; } - --#define NUM_BUFFERS 3 -+#define NUM_BUFFERS 10 - - - #undef ALIGN -@@ -91,6 +92,7 @@ - RENDER_POT=0x10, - RENDER_VAAPI=0x20, - RENDER_CVREF = 0x40, -+ RENDER_XVBA=0x80, - }; - - enum RenderQuality -@@ -138,17 +140,23 @@ - virtual void UnInit(); - virtual void Reset(); /* resets renderer after seek for example */ - virtual void Flush(); -+ virtual void ReleaseBuffer(int idx); -+ virtual void SetProcessorSize(int numBuffers) { m_NumYV12Buffers = numBuffers; } -+ virtual unsigned int GetMaxProcessorSize() { return NUM_BUFFERS; } -+ virtual unsigned int GetProcessorSize() { return m_NumYV12Buffers; } - - #ifdef HAVE_LIBVDPAU -- virtual void AddProcessor(CVDPAU* vdpau); -+ virtual void AddProcessor(VDPAU::CVdpauRenderPicture* vdpau, int index); - #endif - #ifdef HAVE_LIBVA -- virtual void AddProcessor(VAAPI::CHolder& holder); -+ virtual void AddProcessor(VAAPI::CHolder& holder, int index); - #endif - #ifdef TARGET_DARWIN -- virtual void AddProcessor(struct __CVBuffer *cvBufferRef); -+ virtual void AddProcessor(struct __CVBuffer *cvBufferRef, int index); -+#endif -+#ifdef HAVE_LIBXVBA -+ virtual void AddProcessor(XVBA::CXvbaRenderPicture* xvba, int index); - #endif -- - virtual void RenderUpdate(bool clear, DWORD flags = 0, DWORD alpha = 255); - - // Feature support -@@ -192,6 +200,10 @@ - void DeleteVDPAUTexture(int index); - bool CreateVDPAUTexture(int index); - -+ void UploadVDPAUTexture420(int index); -+ void DeleteVDPAUTexture420(int index); -+ bool CreateVDPAUTexture420(int index); -+ - void UploadVAAPITexture(int index); - void DeleteVAAPITexture(int index); - bool CreateVAAPITexture(int index); -@@ -204,6 +216,10 @@ - void DeleteYUV422PackedTexture(int index); - bool CreateYUV422PackedTexture(int index); - -+ void UploadXVBATexture(int index); -+ void DeleteXVBATexture(int index); -+ bool CreateXVBATexture(int index); -+ - void UploadRGBTexture(int index); - void ToRGBFrame(YV12Image* im, unsigned flipIndexPlane, unsigned flipIndexBuf); - void ToRGBFields(YV12Image* im, unsigned flipIndexPlaneTop, unsigned flipIndexPlaneBot, unsigned flipIndexBuf); -@@ -216,7 +232,9 @@ - void RenderSinglePass(int renderBuffer, int field); // single pass glsl renderer - void RenderSoftware(int renderBuffer, int field); // single pass s/w yuv2rgb renderer - void RenderVDPAU(int renderBuffer, int field); // render using vdpau hardware -+ void RenderVDPAUYV12(int renderBuffer, int field); // render using vdpau hardware - void RenderVAAPI(int renderBuffer, int field); // render using vdpau hardware -+ void RenderXVBA(int renderBuffer, int field); // render using xvba hardware - - CFrameBufferObject m_fbo; - -@@ -272,7 +290,7 @@ - GLuint pbo[MAX_PLANES]; - - #ifdef HAVE_LIBVDPAU -- CVDPAU* vdpau; -+ VDPAU::CVdpauRenderPicture *vdpau; - #endif - #ifdef HAVE_LIBVA - VAAPI::CHolder& vaapi; -@@ -280,6 +298,9 @@ - #ifdef TARGET_DARWIN_OSX - struct __CVBuffer *cvBufferRef; - #endif -+#ifdef HAVE_LIBXVBA -+ XVBA::CXvbaRenderPicture *xvba; -+#endif - }; - - typedef YUVBUFFER YUVBUFFERS[NUM_BUFFERS]; -@@ -318,6 +339,7 @@ - bool m_nonLinStretch; - bool m_nonLinStretchGui; - float m_pixelRatio; -+ bool m_skipRender; - }; - - -diff -Naur xbmc-f13566b/xbmc/cores/VideoRenderers/OverlayRenderer.cpp xbmc-f13566b.patch/xbmc/cores/VideoRenderers/OverlayRenderer.cpp ---- xbmc-f13566b/xbmc/cores/VideoRenderers/OverlayRenderer.cpp 2012-10-08 09:19:30.000000000 +0200 -+++ xbmc-f13566b.patch/xbmc/cores/VideoRenderers/OverlayRenderer.cpp 2012-10-08 17:13:46.902518835 +0200 -@@ -89,7 +89,7 @@ - CRenderer::CRenderer() - { - m_render = 0; -- m_decode = (m_render + 1) % 2; -+// m_decode = (m_render + 1) % 2; - } - - CRenderer::~CRenderer() -@@ -151,9 +151,10 @@ - { - CSingleLock lock(m_section); - -- for(int i = 0; i < 2; i++) -+ for(int i = 0; i < m_iNumBuffers; i++) - Release(m_buffers[i]); - -+ m_render = 0; - Release(m_cleanup); - } - -@@ -161,10 +162,23 @@ - { - CSingleLock lock(m_section); - -- m_render = m_decode; -- m_decode =(m_decode + 1) % 2; -+// m_render = m_decode; -+ m_render = (m_render + 1) % m_iNumBuffers; -+ -+// Release(m_buffers[m_decode]); -+} -+ -+void CRenderer::SetBuffer(int idx) -+{ -+ CSingleLock lock(m_section); -+ Release(m_buffers[idx]); -+ m_decode = idx; -+} - -- Release(m_buffers[m_decode]); -+void CRenderer::ReleaseBuffer(int idx) -+{ -+ CSingleLock lock(m_section); -+ Release(m_buffers[idx]); - } - - void CRenderer::Render() -diff -Naur xbmc-f13566b/xbmc/cores/VideoRenderers/OverlayRenderer.h xbmc-f13566b.patch/xbmc/cores/VideoRenderers/OverlayRenderer.h ---- xbmc-f13566b/xbmc/cores/VideoRenderers/OverlayRenderer.h 2012-10-08 09:19:30.000000000 +0200 -+++ xbmc-f13566b.patch/xbmc/cores/VideoRenderers/OverlayRenderer.h 2012-10-08 17:13:46.903518856 +0200 -@@ -98,6 +98,9 @@ - void Flip(); - void Render(); - void Flush(); -+ void SetNumBuffers(int numBuffers) { m_iNumBuffers = numBuffers; } -+ void SetBuffer(int idx); -+ void ReleaseBuffer(int idx); - - protected: - -@@ -124,7 +127,8 @@ - void Release(SElementV& list); - - CCriticalSection m_section; -- SElementV m_buffers[2]; -+ SElementV m_buffers[10]; -+ int m_iNumBuffers; - int m_decode; - int m_render; - -diff -Naur xbmc-f13566b/xbmc/cores/VideoRenderers/RenderFormats.h xbmc-f13566b.patch/xbmc/cores/VideoRenderers/RenderFormats.h ---- xbmc-f13566b/xbmc/cores/VideoRenderers/RenderFormats.h 2012-10-08 09:19:30.000000000 +0200 -+++ xbmc-f13566b.patch/xbmc/cores/VideoRenderers/RenderFormats.h 2012-10-08 17:13:46.963520055 +0200 -@@ -26,6 +26,7 @@ - RENDER_FMT_YUV420P10, - RENDER_FMT_YUV420P16, - RENDER_FMT_VDPAU, -+ RENDER_FMT_VDPAU_420, - RENDER_FMT_NV12, - RENDER_FMT_UYVY422, - RENDER_FMT_YUYV422, -@@ -34,6 +35,7 @@ - RENDER_FMT_OMXEGL, - RENDER_FMT_CVBREF, - RENDER_FMT_BYPASS, -+ RENDER_FMT_XVBA, - }; - - #endif -diff -Naur xbmc-f13566b/xbmc/cores/VideoRenderers/RenderManager.cpp xbmc-f13566b.patch/xbmc/cores/VideoRenderers/RenderManager.cpp ---- xbmc-f13566b/xbmc/cores/VideoRenderers/RenderManager.cpp 2012-10-08 09:19:30.000000000 +0200 -+++ xbmc-f13566b.patch/xbmc/cores/VideoRenderers/RenderManager.cpp 2012-10-08 17:13:46.964520075 +0200 -@@ -28,6 +28,7 @@ - #include "utils/MathUtils.h" - #include "threads/SingleLock.h" - #include "utils/log.h" -+#include "utils/TimeUtils.h" - - #include "Application.h" - #include "ApplicationMessenger.h" -@@ -247,6 +248,13 @@ - return false; - } - -+ // check if decoder supports buffering -+ m_bCodecSupportsBuffering = false; -+ if (format == RENDER_FMT_VDPAU -+ || format == RENDER_FMT_VDPAU_420 -+ || format == RENDER_FMT_XVBA) -+ m_bCodecSupportsBuffering = true; -+ - bool result = m_pRenderer->Configure(width, height, d_width, d_height, fps, flags, format, extended_format, orientation); - if(result) - { -@@ -261,6 +269,7 @@ - m_bReconfigured = true; - m_presentstep = PRESENT_IDLE; - m_presentevent.Set(); -+ ResetRenderBuffer(); - } - - return result; -@@ -292,8 +301,12 @@ - if (!m_pRenderer) - return; - -+ if (m_presentstep == PRESENT_IDLE) -+ PrepareNextRender(); -+ - if(m_presentstep == PRESENT_FLIP) - { -+ FlipRenderBuffer(); - m_overlays.Flip(); - m_pRenderer->FlipPage(m_presentsource); - m_presentstep = PRESENT_FRAME; -@@ -312,7 +325,7 @@ - m_presentevent.Set(); - } - --unsigned int CXBMCRenderManager::PreInit() -+unsigned int CXBMCRenderManager::PreInit(CDVDClock *pClock) - { - CRetakeLock lock(m_sharedSection); - -@@ -320,6 +333,7 @@ - m_presenterr = 0.0; - m_errorindex = 0; - memset(m_errorbuff, 0, sizeof(m_errorbuff)); -+ m_pClock = pClock; - - m_bIsStarted = false; - m_bPauseDrawing = false; -@@ -338,6 +352,10 @@ - - UpdateDisplayLatency(); - -+ m_bUseBuffering = false; -+ m_bCodecSupportsBuffering = true; -+ ResetRenderBuffer(); -+ - return m_pRenderer->PreInit(); - } - -@@ -366,7 +384,9 @@ - - CRetakeLock lock(m_sharedSection); - m_pRenderer->Flush(); -+ m_overlays.Flush(); - m_flushEvent.Set(); -+ ResetRenderBuffer(); - } - else - { -@@ -534,25 +554,21 @@ - m_pRenderer->SetViewMode(iViewMode); - } - --void CXBMCRenderManager::FlipPage(volatile bool& bStop, double timestamp /* = 0LL*/, int source /*= -1*/, EFIELDSYNC sync /*= FS_NONE*/) -+void CXBMCRenderManager::FlipPage(volatile bool& bStop, double timestamp /* = 0LL*/, int source /*= -1*/, EFIELDSYNC sync /*= FS_NONE*/, int speed /*= 0*/) - { -- if(timestamp - GetPresentTime() > MAXPRESENTDELAY) -- timestamp = GetPresentTime() + MAXPRESENTDELAY; -- -- /* can't flip, untill timestamp */ -- if(!g_graphicsContext.IsFullScreenVideo()) -- WaitPresentTime(timestamp); -- -- /* make sure any queued frame was fully presented */ -- double timeout = m_presenttime + 1.0; -- while(m_presentstep != PRESENT_IDLE && !bStop) -+ if (!m_bUseBuffering) - { -- if(!m_presentevent.WaitMSec(100) && GetPresentTime() > timeout && !bStop) -+ /* make sure any queued frame was fully presented */ -+ double timeout = m_presenttime + 1.0; -+ while(m_presentstep != PRESENT_IDLE && !bStop) - { -- CLog::Log(LOGWARNING, "CRenderManager::FlipPage - timeout waiting for previous frame"); -- return; -+ if(!m_presentevent.WaitMSec(100) && GetPresentTime() > timeout && !bStop) -+ { -+ CLog::Log(LOGWARNING, "CRenderManager::FlipPage - timeout waiting for previous frame"); -+ return; -+ } - } -- }; -+ } - - if(bStop) - return; -@@ -560,58 +576,67 @@ - { CRetakeLock lock(m_sharedSection); - if(!m_pRenderer) return; - -- m_presenttime = timestamp; -- m_presentfield = sync; -- m_presentstep = PRESENT_FLIP; -- m_presentsource = source; -+ double presenttime = timestamp; -+ EFIELDSYNC presentfield = sync; -+ EPRESENTMETHOD presentmethod; -+ - EDEINTERLACEMODE deinterlacemode = g_settings.m_currentVideoSettings.m_DeinterlaceMode; - EINTERLACEMETHOD interlacemethod = AutoInterlaceMethodInternal(g_settings.m_currentVideoSettings.m_InterlaceMethod); - - bool invert = false; - - if (deinterlacemode == VS_DEINTERLACEMODE_OFF) -- m_presentmethod = PRESENT_METHOD_SINGLE; -+ presentmethod = PRESENT_METHOD_SINGLE; - else - { -- if (deinterlacemode == VS_DEINTERLACEMODE_AUTO && m_presentfield == FS_NONE) -- m_presentmethod = PRESENT_METHOD_SINGLE; -+ if (deinterlacemode == VS_DEINTERLACEMODE_AUTO && presentfield == FS_NONE) -+ presentmethod = PRESENT_METHOD_SINGLE; - else - { -- if (interlacemethod == VS_INTERLACEMETHOD_RENDER_BLEND) m_presentmethod = PRESENT_METHOD_BLEND; -- else if (interlacemethod == VS_INTERLACEMETHOD_RENDER_WEAVE) m_presentmethod = PRESENT_METHOD_WEAVE; -- else if (interlacemethod == VS_INTERLACEMETHOD_RENDER_WEAVE_INVERTED) { m_presentmethod = PRESENT_METHOD_WEAVE ; invert = true; } -- else if (interlacemethod == VS_INTERLACEMETHOD_RENDER_BOB) m_presentmethod = PRESENT_METHOD_BOB; -- else if (interlacemethod == VS_INTERLACEMETHOD_RENDER_BOB_INVERTED) { m_presentmethod = PRESENT_METHOD_BOB; invert = true; } -- else if (interlacemethod == VS_INTERLACEMETHOD_DXVA_BOB) m_presentmethod = PRESENT_METHOD_BOB; -- else if (interlacemethod == VS_INTERLACEMETHOD_DXVA_BEST) m_presentmethod = PRESENT_METHOD_BOB; -- else m_presentmethod = PRESENT_METHOD_SINGLE; -+ if (interlacemethod == VS_INTERLACEMETHOD_RENDER_BLEND) presentmethod = PRESENT_METHOD_BLEND; -+ else if (interlacemethod == VS_INTERLACEMETHOD_RENDER_WEAVE) presentmethod = PRESENT_METHOD_WEAVE; -+ else if (interlacemethod == VS_INTERLACEMETHOD_RENDER_WEAVE_INVERTED) { presentmethod = PRESENT_METHOD_WEAVE ; invert = true; } -+ else if (interlacemethod == VS_INTERLACEMETHOD_RENDER_BOB) presentmethod = PRESENT_METHOD_BOB; -+ else if (interlacemethod == VS_INTERLACEMETHOD_RENDER_BOB_INVERTED) { presentmethod = PRESENT_METHOD_BOB; invert = true; } -+ else if (interlacemethod == VS_INTERLACEMETHOD_DXVA_BOB) presentmethod = PRESENT_METHOD_BOB; -+ else if (interlacemethod == VS_INTERLACEMETHOD_DXVA_BEST) presentmethod = PRESENT_METHOD_BOB; -+ else presentmethod = PRESENT_METHOD_SINGLE; - - /* default to odd field if we want to deinterlace and don't know better */ -- if (deinterlacemode == VS_DEINTERLACEMODE_FORCE && m_presentfield == FS_NONE) -- m_presentfield = FS_TOP; -+ if (deinterlacemode == VS_DEINTERLACEMODE_FORCE && presentfield == FS_NONE) -+ presentfield = FS_TOP; - - /* invert present field */ - if(invert) - { -- if( m_presentfield == FS_BOT ) -- m_presentfield = FS_TOP; -+ if( presentfield == FS_BOT ) -+ presentfield = FS_TOP; - else -- m_presentfield = FS_BOT; -+ presentfield = FS_BOT; - } - } - } - -+ FlipFreeBuffer(); -+ m_renderBuffers[m_iOutputRenderBuffer].pts = timestamp; -+ m_renderBuffers[m_iOutputRenderBuffer].presentfield = presentfield; -+ m_renderBuffers[m_iOutputRenderBuffer].presentmethod = presentmethod; -+ m_speed = speed; - } - - g_application.NewFrame(); -- /* wait untill render thread have flipped buffers */ -- timeout = m_presenttime + 1.0; -- while(m_presentstep == PRESENT_FLIP && !bStop) -+ -+ if (!m_bUseBuffering) - { -- if(!m_presentevent.WaitMSec(100) && GetPresentTime() > timeout && !bStop) -+ /* wait untill render thread have flipped buffers */ -+ double timeout = m_presenttime + 1.0; -+ while(m_presentstep == PRESENT_FLIP && !bStop) - { -- CLog::Log(LOGWARNING, "CRenderManager::FlipPage - timeout waiting for flip to complete"); -- return; -+ if(!m_presentevent.WaitMSec(100) && GetPresentTime() > timeout && !bStop) -+ { -+ CLog::Log(LOGWARNING, "CRenderManager::FlipPage - timeout waiting for flip to complete"); -+ return; -+ } - } - } - } -@@ -675,8 +700,12 @@ - if (!m_pRenderer) - return; - -+ if (m_presentstep == PRESENT_IDLE) -+ PrepareNextRender(); -+ - if(m_presentstep == PRESENT_FLIP) - { -+ FlipRenderBuffer(); - m_overlays.Flip(); - m_pRenderer->FlipPage(m_presentsource); - m_presentstep = PRESENT_FRAME; -@@ -800,11 +829,11 @@ - if (!m_pRenderer) - return -1; - -- if(m_pRenderer->AddVideoPicture(&pic)) -+ if(m_pRenderer->AddVideoPicture(&pic, (m_iOutputRenderBuffer + 1) % m_iNumRenderBuffers)) - return 1; - - YV12Image image; -- int index = m_pRenderer->GetImage(&image); -+ int index = m_pRenderer->GetImage(&image, (m_iOutputRenderBuffer + 1) % m_iNumRenderBuffers); - - if(index < 0) - return index; -@@ -829,20 +858,25 @@ - CDVDCodecUtils::CopyDXVA2Picture(&image, &pic); - } - #ifdef HAVE_LIBVDPAU -- else if(pic.format == RENDER_FMT_VDPAU) -- m_pRenderer->AddProcessor(pic.vdpau); -+ else if(pic.format == RENDER_FMT_VDPAU -+ || pic.format == RENDER_FMT_VDPAU_420) -+ m_pRenderer->AddProcessor(pic.vdpau, index); - #endif - #ifdef HAVE_LIBOPENMAX - else if(pic.format == RENDER_FMT_OMXEGL) -- m_pRenderer->AddProcessor(pic.openMax, &pic); -+ m_pRenderer->AddProcessor(pic.openMax, &pic, index); - #endif - #ifdef TARGET_DARWIN - else if(pic.format == RENDER_FMT_CVBREF) -- m_pRenderer->AddProcessor(pic.cvBufferRef); -+ m_pRenderer->AddProcessor(pic.cvBufferRef, index); - #endif - #ifdef HAVE_LIBVA - else if(pic.format == RENDER_FMT_VAAPI) -- m_pRenderer->AddProcessor(*pic.vaapi); -+ m_pRenderer->AddProcessor(*pic.vaapi, index); -+#endif -+#ifdef HAVE_LIBXVBA -+ else if(pic.format == RENDER_FMT_XVBA) -+ m_pRenderer->AddProcessor(pic.xvba, index); - #endif - m_pRenderer->ReleaseImage(index, false); - -@@ -904,3 +938,200 @@ - - return mInt; - } -+ -+int CXBMCRenderManager::WaitForBuffer(volatile bool& bStop) -+{ -+ CSharedLock lock(m_sharedSection); -+ if (!m_pRenderer) -+ return -1; -+ -+ //wait up to a second as this is our slowest allowed output rate -+ double timeout = GetPresentTime() + 0.1; -+ while(!HasFreeBuffer() && !bStop) -+ { -+ lock.Leave(); -+ m_flipEvent.WaitMSec(50); -+ if(GetPresentTime() > timeout && !bStop) -+ { -+ CLog::Log(LOGWARNING, "CRenderManager::WaitForBuffer - timeout waiting for buffer"); -+ return -1; -+ } -+ lock.Enter(); -+ } -+ lock.Leave(); -+ -+ { CRetakeLock lock(m_sharedSection); -+ m_overlays.SetBuffer((m_iOutputRenderBuffer + 1) % m_iNumRenderBuffers); -+ } -+ -+ if (bStop) -+ return -1; -+ -+ return 1; -+} -+ -+int CXBMCRenderManager::GetNextRenderBufferIndex() -+{ -+ if (m_iOutputRenderBuffer == m_iCurrentRenderBuffer) -+ return -1; -+ return (m_iCurrentRenderBuffer + 1) % m_iNumRenderBuffers; -+} -+ -+void CXBMCRenderManager::FlipRenderBuffer() -+{ -+ m_iCurrentRenderBuffer = GetNextRenderBufferIndex(); -+// CLog::Log(LOGNOTICE,"-------- flip render: %d", m_iCurrentRenderBuffer); -+} -+ -+int CXBMCRenderManager::FlipFreeBuffer() -+{ -+ // See "Render Buffer State Description" in header for information. -+ if (HasFreeBuffer()) -+ { -+ m_bAllRenderBuffersDisplayed = false; -+ m_iOutputRenderBuffer = (m_iOutputRenderBuffer + 1) % m_iNumRenderBuffers; -+ return m_iOutputRenderBuffer; -+ } -+} -+ -+bool CXBMCRenderManager::HasFreeBuffer() -+{ -+ if (!m_bUseBuffering) -+ { -+ if (m_iOutputRenderBuffer != m_iCurrentRenderBuffer) -+ return false; -+ else -+ return true; -+ } -+ -+ int outputPlus1 = (m_iOutputRenderBuffer + 1) % m_iNumRenderBuffers; -+ if ((m_iOutputRenderBuffer == m_iDisplayedRenderBuffer && !m_bAllRenderBuffersDisplayed) -+ || outputPlus1 == m_iCurrentRenderBuffer) -+ return false; -+ else -+ return true; -+} -+ -+void CXBMCRenderManager::ResetRenderBuffer() -+{ -+ m_iNumRenderBuffers = m_pRenderer->GetMaxProcessorSize(); -+ m_iNumRenderBuffers = std::min(5, m_iNumRenderBuffers); -+ m_iNumRenderBuffers = std::max(2, m_iNumRenderBuffers); -+ -+ if (!m_bCodecSupportsBuffering) -+ m_iNumRenderBuffers = 2; -+ -+ CLog::Log(LOGNOTICE,"CXBMCRenderManager::ResetRenderBuffer - using %d render buffers", m_iNumRenderBuffers); -+ m_overlays.SetNumBuffers(m_iNumRenderBuffers); -+ m_pRenderer->SetProcessorSize(m_iNumRenderBuffers); -+ -+ m_iCurrentRenderBuffer = 0; -+ m_iOutputRenderBuffer = 0; -+ m_iDisplayedRenderBuffer = 0; -+ m_bAllRenderBuffersDisplayed = true; -+ m_sleeptime = 1.0; -+ m_presentPts = DVD_NOPTS_VALUE; -+ m_speed = 0; -+} -+ -+void CXBMCRenderManager::PrepareNextRender() -+{ -+ int idx = GetNextRenderBufferIndex(); -+ if (idx < 0) -+ { -+ if (m_speed >= DVD_PLAYSPEED_NORMAL && g_graphicsContext.IsFullScreenVideo()) -+ CLog::Log(LOGDEBUG,"%s no buffer, out: %d, current: %d, display: %d", -+ __FUNCTION__, m_iOutputRenderBuffer, m_iCurrentRenderBuffer, m_iDisplayedRenderBuffer); -+ return; -+ } -+ -+ double iClockSleep, iPlayingClock, iCurrentClock; -+ iPlayingClock = m_pClock->GetClock(iCurrentClock, false); -+ iClockSleep = m_renderBuffers[idx].pts - iPlayingClock; -+ -+ if (m_speed) -+ iClockSleep = iClockSleep * DVD_PLAYSPEED_NORMAL / m_speed; -+ -+ double presenttime = (iCurrentClock + iClockSleep) / DVD_TIME_BASE; -+ double clocktime = iCurrentClock / DVD_TIME_BASE; -+ if(presenttime - clocktime > MAXPRESENTDELAY) -+ presenttime = clocktime + MAXPRESENTDELAY; -+ -+ m_sleeptime = presenttime - clocktime; -+ -+ if (g_graphicsContext.IsFullScreenVideo() || presenttime <= clocktime+0.01) -+ { -+ m_presentPts = m_renderBuffers[idx].pts; -+ m_presenttime = presenttime; -+ m_presentmethod = m_renderBuffers[idx].presentmethod; -+ m_presentfield = m_renderBuffers[idx].presentfield; -+ m_presentstep = PRESENT_FLIP; -+ m_presentsource = idx; -+ } -+} -+ -+void CXBMCRenderManager::EnableBuffering(bool enable) -+{ -+ CRetakeLock lock(m_sharedSection); -+ -+ if (m_iNumRenderBuffers < 3) -+ return; -+ -+ m_bUseBuffering = enable; -+ if (!m_bUseBuffering) -+ m_iOutputRenderBuffer = m_iCurrentRenderBuffer; -+ -+ CLog::Log(LOGDEBUG, "CXBMCRenderManager::EnableBuffering - %d", m_bUseBuffering); -+} -+ -+void CXBMCRenderManager::DiscardBuffer() -+{ -+ CRetakeLock lock(m_sharedSection); -+ m_iOutputRenderBuffer = m_iCurrentRenderBuffer; -+} -+ -+void CXBMCRenderManager::NotifyDisplayFlip() -+{ -+ CRetakeLock lock(m_sharedSection); -+ if (!m_pRenderer) -+ return; -+ -+ if (m_iNumRenderBuffers < 3) -+ return; -+ -+ int last = m_iDisplayedRenderBuffer; -+ m_iDisplayedRenderBuffer = (m_iCurrentRenderBuffer + m_iNumRenderBuffers - 1) % m_iNumRenderBuffers; -+ -+ if (last != m_iDisplayedRenderBuffer -+ && m_iDisplayedRenderBuffer != m_iCurrentRenderBuffer) -+ { -+ m_pRenderer->ReleaseBuffer(m_iDisplayedRenderBuffer); -+ m_overlays.ReleaseBuffer(m_iDisplayedRenderBuffer); -+ } -+ -+ lock.Leave(); -+ m_flipEvent.Set(); -+} -+ -+bool CXBMCRenderManager::GetStats(double &sleeptime, double &pts, int &bufferLevel) -+{ -+ CSharedLock lock(m_sharedSection); -+ sleeptime = m_sleeptime; -+ pts = m_presentPts; -+ if (m_iNumRenderBuffers < 3) -+ bufferLevel = -1; -+ else -+ bufferLevel = (m_iOutputRenderBuffer - m_iCurrentRenderBuffer + m_iNumRenderBuffers) % m_iNumRenderBuffers; -+ return true; -+} -+ -+bool CXBMCRenderManager::HasFrame() -+{ -+ CSharedLock lock(m_sharedSection); -+ if (m_presentstep == PRESENT_IDLE && -+ GetNextRenderBufferIndex() < 0 && -+ m_speed > 0) -+ return false; -+ else -+ return true; -+} -diff -Naur xbmc-f13566b/xbmc/cores/VideoRenderers/RenderManager.h xbmc-f13566b.patch/xbmc/cores/VideoRenderers/RenderManager.h ---- xbmc-f13566b/xbmc/cores/VideoRenderers/RenderManager.h 2012-10-08 09:19:30.000000000 +0200 -+++ xbmc-f13566b.patch/xbmc/cores/VideoRenderers/RenderManager.h 2012-10-08 17:13:46.918519157 +0200 -@@ -31,10 +31,11 @@ - #include "OverlayRenderer.h" - - class CRenderCapture; -+class CDVDClock; - - namespace DXVA { class CProcessor; } - namespace VAAPI { class CSurfaceHolder; } --class CVDPAU; -+namespace VDPAU { class CVdpauRenderPicture; } - struct DVDVideoPicture; - - #define ERRORBUFFSIZE 30 -@@ -70,8 +71,8 @@ - - int AddVideoPicture(DVDVideoPicture& picture); - -- void FlipPage(volatile bool& bStop, double timestamp = 0.0, int source = -1, EFIELDSYNC sync = FS_NONE); -- unsigned int PreInit(); -+ void FlipPage(volatile bool& bStop, double timestamp = 0.0, int source = -1, EFIELDSYNC sync = FS_NONE, int speed = 0); -+ unsigned int PreInit(CDVDClock *pClock); - void UnInit(); - bool Flush(); - -@@ -131,6 +132,12 @@ - CSharedSection& GetSection() { return m_sharedSection; }; - - void RegisterRenderUpdateCallBack(const void *ctx, RenderUpdateCallBackFn fn); -+ int WaitForBuffer(volatile bool& bStop); -+ void NotifyDisplayFlip(); -+ bool GetStats(double &sleeptime, double &pts, int &bufferLevel); -+ bool HasFrame(); -+ void EnableBuffering(bool enable); -+ void DiscardBuffer(); - - protected: - void Render(bool clear, DWORD flags, DWORD alpha); -@@ -139,6 +146,13 @@ - void PresentFields(bool clear, DWORD flags, DWORD alpha); - void PresentBlend(bool clear, DWORD flags, DWORD alpha); - -+ int GetNextRenderBufferIndex(); -+ void FlipRenderBuffer(); -+ int FlipFreeBuffer(); -+ bool HasFreeBuffer(); -+ void ResetRenderBuffer(); -+ void PrepareNextRender(); -+ - EINTERLACEMETHOD AutoInterlaceMethodInternal(EINTERLACEMETHOD mInt); - - bool m_bPauseDrawing; // true if we should pause rendering -@@ -169,6 +183,37 @@ - double m_displayLatency; - void UpdateDisplayLatency(); - -+ // Render Buffer State Description: -+ // -+ // Output: is the buffer about to or having its texture prepared for render (ie from output thread). -+ // Cannot go past the "Displayed" buffer (otherwise we will probably overwrite buffers not yet -+ // displayed or even rendered). -+ // Current: is the current buffer being or having been submitted for render to back buffer. -+ // Cannot go past "Output" buffer (else it would be rendering old output). -+ // Displayed: is the buffer that is now considered to be safely copied from back buffer to front buffer -+ // (we assume that after two swap-buffer flips for the same "Current" render buffer that that -+ // buffer will be safe, but otherwise we consider that only the previous-to-"Current" is guaranteed). -+ -+ int m_iCurrentRenderBuffer; -+ int m_iNumRenderBuffers; -+ int m_iOutputRenderBuffer; -+ int m_iDisplayedRenderBuffer; -+ bool m_bAllRenderBuffersDisplayed; -+ bool m_bUseBuffering; -+ bool m_bCodecSupportsBuffering; -+ int m_speed; -+ CEvent m_flipEvent; -+ -+ struct -+ { -+ double pts; -+ EFIELDSYNC presentfield; -+ EPRESENTMETHOD presentmethod; -+ }m_renderBuffers[5]; -+ -+ double m_sleeptime; -+ double m_presentPts; -+ - double m_presenttime; - double m_presentcorr; - double m_presenterr; -@@ -180,6 +225,7 @@ - int m_presentsource; - CEvent m_presentevent; - CEvent m_flushEvent; -+ CDVDClock *m_pClock; - - - OVERLAY::CRenderer m_overlays; -diff -Naur xbmc-f13566b/xbmc/cores/VideoRenderers/VideoShaders/YUV2RGBShader.cpp xbmc-f13566b.patch/xbmc/cores/VideoRenderers/VideoShaders/YUV2RGBShader.cpp ---- xbmc-f13566b/xbmc/cores/VideoRenderers/VideoShaders/YUV2RGBShader.cpp 2012-10-08 09:19:30.000000000 +0200 -+++ xbmc-f13566b.patch/xbmc/cores/VideoRenderers/VideoShaders/YUV2RGBShader.cpp 2012-10-08 17:13:46.875518298 +0200 -@@ -201,6 +201,8 @@ - m_defines += "#define XBMC_YUY2\n"; - else if (m_format == RENDER_FMT_UYVY422) - m_defines += "#define XBMC_UYVY\n"; -+ else if (RENDER_FMT_VDPAU_420) -+ m_defines += "#define XBMC_VDPAU_NV12\n"; - else - CLog::Log(LOGERROR, "GL: BaseYUV2RGBGLSLShader - unsupported format %d", m_format); - -diff -Naur xbmc-f13566b/xbmc/cores/VideoRenderers/WinRenderer.cpp xbmc-f13566b.patch/xbmc/cores/VideoRenderers/WinRenderer.cpp ---- xbmc-f13566b/xbmc/cores/VideoRenderers/WinRenderer.cpp 2012-10-08 09:19:30.000000000 +0200 -+++ xbmc-f13566b.patch/xbmc/cores/VideoRenderers/WinRenderer.cpp 2012-10-08 17:13:46.905518897 +0200 -@@ -253,12 +253,12 @@ - return -1; - } - --bool CWinRenderer::AddVideoPicture(DVDVideoPicture* picture) -+bool CWinRenderer::AddVideoPicture(DVDVideoPicture* picture, int index) - { - if (m_renderMethod == RENDER_DXVA) - { -- int source = NextYV12Texture(); -- if(source < 0) -+ int source = index; -+ if(source < 0 || NextYV12Texture() < 0) - return false; - - DXVABuffer *buf = (DXVABuffer*)m_VideoBuffers[source]; -@@ -274,7 +274,7 @@ - if( source == AUTOSOURCE ) - source = NextYV12Texture(); - -- if( source < 0 ) -+ if( source < 0 || NextYV12Texture() < 0) - return -1; - - YUVBuffer *buf = (YUVBuffer*)m_VideoBuffers[source]; -diff -Naur xbmc-f13566b/xbmc/cores/VideoRenderers/WinRenderer.h xbmc-f13566b.patch/xbmc/cores/VideoRenderers/WinRenderer.h ---- xbmc-f13566b/xbmc/cores/VideoRenderers/WinRenderer.h 2012-10-08 09:19:30.000000000 +0200 -+++ xbmc-f13566b.patch/xbmc/cores/VideoRenderers/WinRenderer.h 2012-10-08 17:13:46.906518917 +0200 -@@ -157,7 +157,7 @@ - virtual bool Configure(unsigned int width, unsigned int height, unsigned int d_width, unsigned int d_height, float fps, unsigned flags, ERenderFormat format, unsigned extended_format, unsigned int orientation); - virtual int GetImage(YV12Image *image, int source = AUTOSOURCE, bool readonly = false); - virtual void ReleaseImage(int source, bool preserve = false); -- virtual bool AddVideoPicture(DVDVideoPicture* picture); -+ virtual bool AddVideoPicture(DVDVideoPicture* picture, int index); - virtual void FlipPage(int source); - virtual unsigned int PreInit(); - virtual void UnInit(); -diff -Naur xbmc-f13566b/xbmc/guilib/GUIFontTTFGL.cpp xbmc-f13566b.patch/xbmc/guilib/GUIFontTTFGL.cpp ---- xbmc-f13566b/xbmc/guilib/GUIFontTTFGL.cpp 2012-10-08 09:19:24.000000000 +0200 -+++ xbmc-f13566b.patch/xbmc/guilib/GUIFontTTFGL.cpp 2012-10-08 17:13:47.053521851 +0200 -@@ -23,6 +23,7 @@ - #include "GUIFontTTFGL.h" - #include "GUIFontManager.h" - #include "Texture.h" -+#include "TextureManager.h" - #include "GraphicContext.h" - #include "gui3d.h" - #include "utils/log.h" -@@ -234,7 +235,7 @@ - if (m_bTextureLoaded) - { - if (glIsTexture(m_nTexture)) -- glDeleteTextures(1, (GLuint*) &m_nTexture); -+ g_TextureManager.ReleaseHwTexture(m_nTexture); - m_bTextureLoaded = false; - } - } -diff -Naur xbmc-f13566b/xbmc/guilib/TextureManager.cpp xbmc-f13566b.patch/xbmc/guilib/TextureManager.cpp ---- xbmc-f13566b/xbmc/guilib/TextureManager.cpp 2012-10-08 09:19:24.000000000 +0200 -+++ xbmc-f13566b.patch/xbmc/guilib/TextureManager.cpp 2012-10-08 17:13:47.061522009 +0200 -@@ -459,6 +459,19 @@ - for (ivecTextures i = m_unusedTextures.begin(); i != m_unusedTextures.end(); ++i) - delete *i; - m_unusedTextures.clear(); -+ -+#if defined(HAS_GL) || defined(HAS_GLES) -+ for (unsigned int i = 0; i < m_unusedHwTextures.size(); ++i) -+ { -+ glDeleteTextures(1, (GLuint*) &m_unusedHwTextures[i]); -+ } -+#endif -+ m_unusedHwTextures.clear(); -+} -+ -+void CGUITextureManager::ReleaseHwTexture(unsigned int texture) -+{ -+ m_unusedHwTextures.push_back(texture); - } - - void CGUITextureManager::Cleanup() -diff -Naur xbmc-f13566b/xbmc/guilib/TextureManager.h xbmc-f13566b.patch/xbmc/guilib/TextureManager.h ---- xbmc-f13566b/xbmc/guilib/TextureManager.h 2012-10-08 09:19:24.000000000 +0200 -+++ xbmc-f13566b.patch/xbmc/guilib/TextureManager.h 2012-10-08 17:13:47.062522029 +0200 -@@ -123,9 +123,11 @@ - void RemoveTexturePath(const CStdString &texturePath); ///< Remove a path from the paths to check when loading media - - void FreeUnusedTextures(); ///< Free textures (called from app thread only) -+ void ReleaseHwTexture(unsigned int texture); - protected: - std::vector m_vecTextures; - std::vector m_unusedTextures; -+ std::vector m_unusedHwTextures; - typedef std::vector::iterator ivecTextures; - // we have 2 texture bundles (one for the base textures, one for the theme) - CTextureBundle m_TexBundle[2]; -diff -Naur xbmc-f13566b/xbmc/input/XBMC_keytable.cpp xbmc-f13566b.patch/xbmc/input/XBMC_keytable.cpp ---- xbmc-f13566b/xbmc/input/XBMC_keytable.cpp 2012-10-08 09:19:29.000000000 +0200 -+++ xbmc-f13566b.patch/xbmc/input/XBMC_keytable.cpp 2012-10-08 17:13:46.855517899 +0200 -@@ -179,6 +179,8 @@ - , { XBMCK_LAUNCH_APP2, 0, 0, XBMCVK_LAUNCH_APP2, "launch_app2_pc_icon" } - , { XBMCK_LAUNCH_FILE_BROWSER, 0, 0, XBMCVK_LAUNCH_FILE_BROWSER, "launch_file_browser" } - , { XBMCK_LAUNCH_MEDIA_CENTER, 0, 0, XBMCVK_LAUNCH_MEDIA_CENTER, "launch_media_center" } -+, { XBMCK_PLAY, 0, 0, XBMCVK_MEDIA_PLAY_PAUSE, "play_pause" } -+, { XBMCK_STOP, 0, 0, XBMCVK_MEDIA_STOP, "stop" } - - // Function keys - , { XBMCK_F1, 0, 0, XBMCVK_F1, "f1"} -diff -Naur xbmc-f13566b/xbmc/rendering/gl/RenderSystemGL.h xbmc-f13566b.patch/xbmc/rendering/gl/RenderSystemGL.h ---- xbmc-f13566b/xbmc/rendering/gl/RenderSystemGL.h 2012-10-08 09:19:23.000000000 +0200 -+++ xbmc-f13566b.patch/xbmc/rendering/gl/RenderSystemGL.h 2012-10-08 17:13:46.830517400 +0200 -@@ -44,6 +44,7 @@ - virtual bool IsExtSupported(const char* extension); - - virtual void SetVSync(bool vsync); -+ virtual void ResetVSync() { m_bVsyncInit = false; } - - virtual void SetViewPort(CRect& viewPort); - virtual void GetViewPort(CRect& viewPort); -diff -Naur xbmc-f13566b/xbmc/settings/AdvancedSettings.cpp xbmc-f13566b.patch/xbmc/settings/AdvancedSettings.cpp ---- xbmc-f13566b/xbmc/settings/AdvancedSettings.cpp 2012-10-08 09:19:23.000000000 +0200 -+++ xbmc-f13566b.patch/xbmc/settings/AdvancedSettings.cpp 2012-10-08 17:13:47.084522469 +0200 -@@ -98,7 +98,7 @@ - m_videoIgnoreSecondsAtStart = 3*60; - m_videoIgnorePercentAtEnd = 8.0f; - m_videoPlayCountMinimumPercent = 90.0f; -- m_videoVDPAUScaling = false; -+ m_videoVDPAUScaling = -1; - m_videoNonLinStretchRatio = 0.5f; - m_videoEnableHighQualityHwScalers = false; - m_videoAutoScaleMaxFps = 30.0f; -@@ -106,6 +106,10 @@ +diff --git a/xbmc/settings/AdvancedSettings.cpp b/xbmc/settings/AdvancedSettings.cpp +index ad521a9..d6edd55 100644 +--- a/xbmc/settings/AdvancedSettings.cpp ++++ b/xbmc/settings/AdvancedSettings.cpp +@@ -106,6 +106,8 @@ void CAdvancedSettings::Initialize() m_videoAllowMpeg4VAAPI = false; m_videoDisableBackgroundDeinterlace = false; m_videoCaptureUseOcclusionQuery = -1; //-1 is auto detect + m_videoVDPAUdeintHD = -1; + m_videoVDPAUdeintSD = -1; -+ m_videoVDPAUtelecine = false; -+ m_videoVDPAUdeintSkipChromaHD = false; + m_videoVDPAUtelecine = false; + m_videoVDPAUdeintSkipChromaHD = false; m_DXVACheckCompatibility = false; - m_DXVACheckCompatibilityPresent = false; - m_DXVAForceProcessorRenderer = true; -@@ -489,7 +493,7 @@ - XMLUtils::GetString(pElement,"cleandatetime", m_videoCleanDateTimeRegExp); - XMLUtils::GetString(pElement,"ppffmpegdeinterlacing",m_videoPPFFmpegDeint); - XMLUtils::GetString(pElement,"ppffmpegpostprocessing",m_videoPPFFmpegPostProc); -- XMLUtils::GetBoolean(pElement,"vdpauscaling",m_videoVDPAUScaling); -+ XMLUtils::GetInt(pElement,"vdpauscaling",m_videoVDPAUScaling); - XMLUtils::GetFloat(pElement, "nonlinearstretchratio", m_videoNonLinStretchRatio, 0.01f, 1.0f); - XMLUtils::GetBoolean(pElement,"enablehighqualityhwscalers", m_videoEnableHighQualityHwScalers); - XMLUtils::GetFloat(pElement,"autoscalemaxfps",m_videoAutoScaleMaxFps, 0.0f, 1000.0f); -@@ -497,6 +501,10 @@ +@@ -499,6 +501,8 @@ void CAdvancedSettings::ParseSettingsFile(const CStdString &file) XMLUtils::GetBoolean(pElement,"allowmpeg4vaapi",m_videoAllowMpeg4VAAPI); XMLUtils::GetBoolean(pElement, "disablebackgrounddeinterlace", m_videoDisableBackgroundDeinterlace); XMLUtils::GetInt(pElement, "useocclusionquery", m_videoCaptureUseOcclusionQuery, -1, 1); + XMLUtils::GetInt(pElement,"vdpauHDdeint",m_videoVDPAUdeintHD); + XMLUtils::GetInt(pElement,"vdpauSDdeint",m_videoVDPAUdeintSD); -+ XMLUtils::GetBoolean(pElement,"vdpauInvTelecine",m_videoVDPAUtelecine); -+ XMLUtils::GetBoolean(pElement,"vdpauHDdeintSkipChroma",m_videoVDPAUdeintSkipChromaHD); + XMLUtils::GetBoolean(pElement,"vdpauInvTelecine",m_videoVDPAUtelecine); + XMLUtils::GetBoolean(pElement,"vdpauHDdeintSkipChroma",m_videoVDPAUdeintSkipChromaHD); - TiXmlElement* pAdjustRefreshrate = pElement->FirstChildElement("adjustrefreshrate"); - if (pAdjustRefreshrate) -diff -Naur xbmc-f13566b/xbmc/settings/AdvancedSettings.h xbmc-f13566b.patch/xbmc/settings/AdvancedSettings.h ---- xbmc-f13566b/xbmc/settings/AdvancedSettings.h 2012-10-08 09:19:23.000000000 +0200 -+++ xbmc-f13566b.patch/xbmc/settings/AdvancedSettings.h 2012-10-08 17:13:47.084522469 +0200 -@@ -133,6 +133,10 @@ +diff --git a/xbmc/settings/AdvancedSettings.h b/xbmc/settings/AdvancedSettings.h +index 53c27f7..e32d0d0 100644 +--- a/xbmc/settings/AdvancedSettings.h ++++ b/xbmc/settings/AdvancedSettings.h +@@ -133,6 +133,8 @@ class CAdvancedSettings int m_videoPercentSeekBackwardBig; CStdString m_videoPPFFmpegDeint; CStdString m_videoPPFFmpegPostProc; + int m_videoVDPAUdeintHD; + int m_videoVDPAUdeintSD; -+ bool m_videoVDPAUtelecine; -+ bool m_videoVDPAUdeintSkipChromaHD; + bool m_videoVDPAUtelecine; + bool m_videoVDPAUdeintSkipChromaHD; bool m_musicUseTimeSeeking; - int m_musicTimeSeekForward; - int m_musicTimeSeekBackward; -@@ -148,7 +152,7 @@ - CStdString m_audioHost; - bool m_audioApplyDrc; +-- +1.7.10 + + +From 34651797e8a0190ee08a51b1024a51481eb510d3 Mon Sep 17 00:00:00 2001 +From: xbmc +Date: Thu, 11 Oct 2012 13:01:08 +0200 +Subject: [PATCH 48/51] dvdplayer: correct determination if video is playing + +--- + xbmc/cores/dvdplayer/DVDPlayer.cpp | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +diff --git a/xbmc/cores/dvdplayer/DVDPlayer.cpp b/xbmc/cores/dvdplayer/DVDPlayer.cpp +index cc38d30..6ada172 100644 +--- a/xbmc/cores/dvdplayer/DVDPlayer.cpp ++++ b/xbmc/cores/dvdplayer/DVDPlayer.cpp +@@ -2390,9 +2390,7 @@ bool CDVDPlayer::IsPaused() const -- bool m_videoVDPAUScaling; -+ int m_videoVDPAUScaling; - float m_videoNonLinStretchRatio; - bool m_videoEnableHighQualityHwScalers; - float m_videoAutoScaleMaxFps; -diff -Naur xbmc-f13566b/xbmc/settings/GUISettings.cpp xbmc-f13566b.patch/xbmc/settings/GUISettings.cpp ---- xbmc-f13566b/xbmc/settings/GUISettings.cpp 2012-10-08 09:19:23.000000000 +0200 -+++ xbmc-f13566b.patch/xbmc/settings/GUISettings.cpp 2012-10-08 17:15:21.430410755 +0200 -@@ -392,11 +392,16 @@ - AddGroup(SETTINGS_SYSTEM, 13000); - CSettingsCategory* vs = AddCategory(SETTINGS_SYSTEM, "videoscreen", 21373); - -+#if defined(HAS_GLX) -+ AddString(vs, "videoscreen.monitor", 246, "", SPIN_CONTROL_TEXT); -+#endif -+ - // this setting would ideally not be saved, as its value is systematically derived from videoscreen.screenmode. - // contains a DISPLAYMODE - #if !defined(TARGET_DARWIN_IOS_ATV2) && !defined(TARGET_RASPBERRY_PI) - AddInt(vs, "videoscreen.screen", 240, 0, -1, 1, 32, SPIN_CONTROL_TEXT); - #endif -+ - // this setting would ideally not be saved, as its value is systematically derived from videoscreen.screenmode. - // contains an index to the g_settings.m_ResInfo array. the only meaningful fields are iScreen, iWidth, iHeight. - #if defined(TARGET_DARWIN) -@@ -685,10 +690,15 @@ - - #ifdef HAVE_LIBVDPAU - AddBool(vp, "videoplayer.usevdpau", 13425, true); -+ AddBool(vp, "videoplayer.usevdpauinterop", 13436, true); -+ AddBool(vp, "videoplayer.usevdpauinteropyuv", 13437, true); - #endif - #ifdef HAVE_LIBVA - AddBool(vp, "videoplayer.usevaapi", 13426, true); - #endif -+#ifdef HAVE_LIBXVBA -+ AddBool(vp, "videoplayer.usexvba", 13435, true); -+#endif - #ifdef HAS_DX - AddBool(g_sysinfo.IsVistaOrHigher() ? vp: NULL, "videoplayer.usedxva2", 13427, g_sysinfo.IsVistaOrHigher() ? true : false); - #endif -diff -Naur xbmc-f13566b/xbmc/settings/GUIWindowSettingsCategory.cpp xbmc-f13566b.patch/xbmc/settings/GUIWindowSettingsCategory.cpp ---- xbmc-f13566b/xbmc/settings/GUIWindowSettingsCategory.cpp 2012-10-08 09:19:23.000000000 +0200 -+++ xbmc-f13566b.patch/xbmc/settings/GUIWindowSettingsCategory.cpp 2012-10-08 17:13:46.891518618 +0200 -@@ -528,6 +528,12 @@ - FillInRefreshRates(strSetting, g_guiSettings.GetResolution(), false); - continue; - } -+ else if (strSetting.Equals("videoscreen.monitor")) -+ { -+ AddSetting(pSetting, group->GetWidth(), iControlID); -+ FillInMonitors(strSetting); -+ continue; -+ } - else if (strSetting.Equals("lookandfeel.skintheme")) - { - AddSetting(pSetting, group->GetWidth(), iControlID); -@@ -596,6 +602,40 @@ - pControl->SetEnabled(true); - } - } -+ else if (strSetting.Equals("videoplayer.usevdpauinteropyuv")) -+ { -+ bool hasInterop = g_guiSettings.GetBool("videoplayer.usevdpauinterop"); -+#ifndef GL_NV_vdpau_interop -+ hasInterop = false; -+#endif -+ CGUIControl *pControl = (CGUIControl *)GetControl(pSettingControl->GetID()); -+ if (pControl && hasInterop && glewIsSupported("GL_NV_vdpau_interop")) -+ { -+ pControl->SetEnabled(true); -+ } -+ else -+ { -+ pControl->SetEnabled(false); -+ g_guiSettings.SetBool("videoplayer.usevdpauinteropyuv",false); -+ } -+ } -+ else if (strSetting.Equals("videoplayer.usevdpauinterop")) -+ { -+ bool hasInterop = g_guiSettings.GetBool("videoplayer.usevdpau"); -+#ifndef GL_NV_vdpau_interop -+ hasInterop = false; -+#endif -+ CGUIControl *pControl = (CGUIControl *)GetControl(pSettingControl->GetID()); -+ if (pControl && hasInterop && glewIsSupported("GL_NV_vdpau_interop")) -+ { -+ pControl->SetEnabled(true); -+ } -+ else -+ { -+ pControl->SetEnabled(false); -+ g_guiSettings.SetBool("videoplayer.usevdpauinterop",false); -+ } -+ } - else - #endif - if (strSetting.Equals("videoscreen.resolution")) -@@ -1450,6 +1490,20 @@ - // Cascade - FillInResolutions("videoscreen.resolution", mode, RES_DESKTOP, true); - } -+ else if (strSetting.Equals("videoscreen.monitor")) -+ { -+ CSettingString *pSettingString = (CSettingString *)pSettingControl->GetSetting(); -+ CGUISpinControlEx *pControl = (CGUISpinControlEx *)GetControl(pSettingControl->GetID()); -+ CStdString currentMonitor = pControl->GetCurrentLabel(); -+ if (!g_Windowing.IsCurrentOutput(currentMonitor)) -+ { -+ g_guiSettings.SetString("videoscreen.monitor", currentMonitor); -+ g_Windowing.UpdateResolutions(); -+ DisplayMode mode = g_guiSettings.GetInt("videoscreen.screen"); -+ // Cascade -+ FillInResolutions("videoscreen.resolution", mode, RES_DESKTOP, true); -+ } -+ } - else if (strSetting.Equals("videoscreen.resolution")) - { - RESOLUTION nextRes = (RESOLUTION) g_guiSettings.GetInt("videoscreen.resolution"); -@@ -2367,11 +2421,15 @@ - if (g_advancedSettings.m_canWindowed) - pControl->AddLabel(g_localizeStrings.Get(242), -1); - -+#if !defined(HAS_GLX) - for (int idx = 0; idx < g_Windowing.GetNumScreens(); idx++) - { - strScreen.Format(g_localizeStrings.Get(241), g_settings.m_ResInfo[RES_DESKTOP + idx].iScreen + 1); - pControl->AddLabel(strScreen, g_settings.m_ResInfo[RES_DESKTOP + idx].iScreen); - } -+#else -+ pControl->AddLabel(g_localizeStrings.Get(244), 0); -+#endif - pControl->SetValue(mode); - g_guiSettings.SetInt("videoscreen.screen", mode); - } -@@ -2379,6 +2437,36 @@ - return mode; - } - -+void CGUIWindowSettingsCategory::FillInMonitors(CStdString strSetting) -+{ -+ // we expect "videoscreen.monitor" but it might be hidden on some platforms, -+ // so check that we actually have a visable control. -+ CBaseSettingControl *control = GetSetting(strSetting); -+ if (control) -+ { -+ control->SetDelayed(); -+ CGUISpinControlEx *pControl = (CGUISpinControlEx *)GetControl(control->GetID()); -+ pControl->Clear(); -+ -+ std::vector monitors; -+ g_Windowing.GetConnectedOutputs(&monitors); -+ -+ int currentMonitor = 0; -+ for (unsigned int i=0; iAddLabel(monitors[i], i); -+ } -+ -+ pControl->SetValue(currentMonitor); -+ g_guiSettings.SetString("videoscreen.monitor", g_settings.m_ResInfo[RES_DESKTOP].strOutput); -+ } -+} -+ -+ - void CGUIWindowSettingsCategory::FillInResolutions(CStdString strSetting, DisplayMode mode, RESOLUTION res, bool UserChange) + bool CDVDPlayer::HasVideo() const { - CBaseSettingControl *control = GetSetting(strSetting); -@@ -2507,13 +2595,15 @@ - RESOLUTION lastRes = g_graphicsContext.GetVideoResolution(); - bool cancelled = false; - -+ bool outputChanged = !g_Windowing.IsCurrentOutput(g_guiSettings.GetString("videoscreen.monitor")); -+ - g_guiSettings.SetResolution(nextRes); -- g_graphicsContext.SetVideoResolution(nextRes); -+ g_graphicsContext.SetVideoResolution(nextRes, outputChanged); - - if (!CGUIDialogYesNo::ShowAndGetInput(13110, 13111, 20022, 20022, -1, -1, cancelled, 10000)) - { - g_guiSettings.SetResolution(lastRes); -- g_graphicsContext.SetVideoResolution(lastRes); -+ g_graphicsContext.SetVideoResolution(lastRes, outputChanged); - - DisplayMode mode = FillInScreens("videoscreen.screen", lastRes); - FillInResolutions("videoscreen.resolution", mode, lastRes, false); -diff -Naur xbmc-f13566b/xbmc/settings/GUIWindowSettingsCategory.h xbmc-f13566b.patch/xbmc/settings/GUIWindowSettingsCategory.h ---- xbmc-f13566b/xbmc/settings/GUIWindowSettingsCategory.h 2012-10-08 09:19:23.000000000 +0200 -+++ xbmc-f13566b.patch/xbmc/settings/GUIWindowSettingsCategory.h 2012-10-08 17:13:46.834517480 +0200 -@@ -49,6 +49,7 @@ - void FillInSoundSkins(CSetting *pSetting); - void FillInLanguages(CSetting *pSetting, const std::vector &languages = std::vector(), const std::vector &languageKeys = std::vector()); - DisplayMode FillInScreens(CStdString strSetting, RESOLUTION res); -+ void FillInMonitors(CStdString strSetting); - void FillInResolutions(CStdString strSetting, DisplayMode mode, RESOLUTION res, bool UserChange); - void FillInRefreshRates(CStdString strSetting, RESOLUTION res, bool UserChange); - void OnRefreshRateChanged(RESOLUTION resolution); -diff -Naur xbmc-f13566b/xbmc/settings/Settings.cpp xbmc-f13566b.patch/xbmc/settings/Settings.cpp ---- xbmc-f13566b/xbmc/settings/Settings.cpp 2012-10-08 09:19:23.000000000 +0200 -+++ xbmc-f13566b.patch/xbmc/settings/Settings.cpp 2012-10-08 17:13:46.847517740 +0200 -@@ -55,6 +55,7 @@ - #include "filesystem/File.h" - #include "filesystem/DirectoryCache.h" - #include "DatabaseManager.h" -+#include "windowing/WindowingFactory.h" - - using namespace std; - using namespace XFILE; -diff -Naur xbmc-f13566b/xbmc/settings/VideoSettings.h xbmc-f13566b.patch/xbmc/settings/VideoSettings.h ---- xbmc-f13566b/xbmc/settings/VideoSettings.h 2012-10-08 09:19:23.000000000 +0200 -+++ xbmc-f13566b.patch/xbmc/settings/VideoSettings.h 2012-10-08 17:13:46.982520434 +0200 -@@ -65,6 +65,8 @@ - VS_INTERLACEMETHOD_SW_BLEND = 20, - VS_INTERLACEMETHOD_AUTO_ION = 21, - -+ VS_INTERLACEMETHOD_XVBA = 22, -+ - VS_INTERLACEMETHOD_MAX // do not use and keep as last enum value. - }; - -diff -Naur xbmc-f13566b/xbmc/system.h xbmc-f13566b.patch/xbmc/system.h ---- xbmc-f13566b/xbmc/system.h 2012-10-08 09:19:22.000000000 +0200 -+++ xbmc-f13566b.patch/xbmc/system.h 2012-10-08 17:13:46.811517021 +0200 -@@ -163,16 +163,21 @@ - #define HAS_GL - #ifdef HAVE_X11 - #define HAS_GLX -+#define HAS_X11_WIN_EVENTS - #endif - #ifdef HAVE_SDL - #define HAS_SDL - #ifndef HAS_SDL_OPENGL - #define HAS_SDL_OPENGL - #endif -+#ifndef HAVE_X11 - #define HAS_SDL_WIN_EVENTS -+#endif - #else -+#ifndef HAVE_X11 - #define HAS_LINUX_EVENTS - #endif -+#endif - #define HAS_LINUX_NETWORK - #define HAS_LIRC - #ifdef HAVE_LIBPULSE -diff -Naur xbmc-f13566b/xbmc/utils/ActorProtocol.cpp xbmc-f13566b.patch/xbmc/utils/ActorProtocol.cpp ---- xbmc-f13566b/xbmc/utils/ActorProtocol.cpp 1970-01-01 01:00:00.000000000 +0100 -+++ xbmc-f13566b.patch/xbmc/utils/ActorProtocol.cpp 2012-10-08 17:13:46.891518618 +0200 -@@ -0,0 +1,254 @@ -+/* -+ * Copyright (C) 2005-2011 Team XBMC -+ * http://www.xbmc.org -+ * -+ * This Program is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License as published by -+ * the Free Software Foundation; either version 2, or (at your option) -+ * any later version. -+ * -+ * This Program is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with XBMC; see the file COPYING. If not, write to -+ * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. -+ * http://www.gnu.org/copyleft/gpl.html -+ * -+ */ -+ -+#include "ActorProtocol.h" -+ -+using namespace Actor; -+ -+void Message::Release() -+{ -+ bool skip; -+ origin->Lock(); -+ skip = isSync ? !isSyncFini : false; -+ isSyncFini = true; -+ origin->Unlock(); -+ -+ if (skip) -+ return; -+ -+ // free data buffer -+ if (data != buffer) -+ delete [] data; -+ -+ // delete event in case of sync message -+ if (event) -+ delete event; -+ -+ origin->ReturnMessage(this); -+} -+ -+bool Message::Reply(int sig, void *data /* = NULL*/, int size /* = 0 */) -+{ -+ if (!isSync) -+ { -+ if (isOut) -+ return origin->SendInMessage(sig, data, size); -+ else -+ return origin->SendOutMessage(sig, data, size); -+ } -+ -+ origin->Lock(); -+ -+ if (!isSyncTimeout) -+ { -+ Message *msg = origin->GetMessage(); -+ msg->signal = sig; -+ msg->isOut = !isOut; -+ replyMessage = msg; -+ if (data) -+ { -+ if (size > MSG_INTERNAL_BUFFER_SIZE) -+ msg->data = new uint8_t[size]; -+ else -+ msg->data = msg->buffer; -+ memcpy(msg->data, data, size); -+ } -+ } -+ -+ origin->Unlock(); -+ -+ if (event) -+ event->Set(); -+ -+ return true; -+} -+ -+Protocol::~Protocol() -+{ -+ Message *msg; -+ Purge(); -+ while (!freeMessageQueue.empty()) -+ { -+ msg = freeMessageQueue.front(); -+ freeMessageQueue.pop(); -+ delete msg; -+ } -+} -+ -+Message *Protocol::GetMessage() -+{ -+ Message *msg; -+ -+ CSingleLock lock(criticalSection); -+ -+ if (!freeMessageQueue.empty()) -+ { -+ msg = freeMessageQueue.front(); -+ freeMessageQueue.pop(); -+ } -+ else -+ msg = new Message(); -+ -+ msg->isSync = false; -+ msg->isSyncFini = false; -+ msg->isSyncTimeout = false; -+ msg->event = NULL; -+ msg->data = NULL; -+ msg->payloadSize = 0; -+ msg->replyMessage = NULL; -+ msg->origin = this; -+ -+ return msg; -+} -+ -+void Protocol::ReturnMessage(Message *msg) -+{ -+ CSingleLock lock(criticalSection); -+ -+ freeMessageQueue.push(msg); -+} -+ -+bool Protocol::SendOutMessage(int signal, void *data /* = NULL */, int size /* = 0 */, Message *outMsg /* = NULL */) -+{ -+ Message *msg; -+ if (outMsg) -+ msg = outMsg; -+ else -+ msg = GetMessage(); -+ -+ msg->signal = signal; -+ msg->isOut = true; -+ -+ if (data) -+ { -+ if (size > MSG_INTERNAL_BUFFER_SIZE) -+ msg->data = new uint8_t[size]; -+ else -+ msg->data = msg->buffer; -+ memcpy(msg->data, data, size); -+ } -+ -+ { CSingleLock lock(criticalSection); -+ outMessages.push(msg); -+ } -+ containerOutEvent->Set(); -+ -+ return true; -+} -+ -+bool Protocol::SendInMessage(int signal, void *data /* = NULL */, int size /* = 0 */, Message *outMsg /* = NULL */) -+{ -+ Message *msg; -+ if (outMsg) -+ msg = outMsg; -+ else -+ msg = GetMessage(); -+ -+ msg->signal = signal; -+ msg->isOut = false; -+ -+ if (data) -+ { -+ if (size > MSG_INTERNAL_BUFFER_SIZE) -+ msg->data = new uint8_t[size]; -+ else -+ msg->data = msg->buffer; -+ memcpy(msg->data, data, size); -+ } -+ -+ { CSingleLock lock(criticalSection); -+ inMessages.push(msg); -+ } -+ containerInEvent->Set(); -+ -+ return true; -+} -+ -+ -+bool Protocol::SendOutMessageSync(int signal, Message **retMsg, int timeout, void *data /* = NULL */, int size /* = 0 */) -+{ -+ Message *msg = GetMessage(); -+ msg->isOut = true; -+ msg->isSync = true; -+ msg->event = new CEvent; -+ msg->event->Reset(); -+ SendOutMessage(signal, data, size, msg); -+ -+ if (!msg->event->WaitMSec(timeout)) -+ { -+ msg->origin->Lock(); -+ if (msg->replyMessage) -+ *retMsg = msg->replyMessage; -+ else -+ { -+ *retMsg = NULL; -+ msg->isSyncTimeout = true; -+ } -+ msg->origin->Unlock(); -+ } -+ else -+ *retMsg = msg->replyMessage; -+ -+ msg->Release(); -+ -+ if (*retMsg) -+ return true; -+ else -+ return false; -+} -+ -+bool Protocol::ReceiveOutMessage(Message **msg) -+{ -+ CSingleLock lock(criticalSection); -+ -+ if (outMessages.empty() || outDefered) -+ return false; -+ -+ *msg = outMessages.front(); -+ outMessages.pop(); -+ -+ return true; -+} -+ -+bool Protocol::ReceiveInMessage(Message **msg) -+{ -+ CSingleLock lock(criticalSection); -+ -+ if (inMessages.empty() || inDefered) -+ return false; -+ -+ *msg = inMessages.front(); -+ inMessages.pop(); -+ -+ return true; -+} -+ -+ -+void Protocol::Purge() -+{ -+ Message *msg; -+ -+ while (ReceiveInMessage(&msg)) -+ msg->Release(); -+ -+ while (ReceiveOutMessage(&msg)) -+ msg->Release(); -+} -diff -Naur xbmc-f13566b/xbmc/utils/ActorProtocol.h xbmc-f13566b.patch/xbmc/utils/ActorProtocol.h ---- xbmc-f13566b/xbmc/utils/ActorProtocol.h 1970-01-01 01:00:00.000000000 +0100 -+++ xbmc-f13566b.patch/xbmc/utils/ActorProtocol.h 2012-10-08 17:13:47.074522269 +0200 -@@ -0,0 +1,88 @@ -+#pragma once -+ -+/* -+ * Copyright (C) 2005-2011 Team XBMC -+ * http://www.xbmc.org -+ * -+ * This Program is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License as published by -+ * the Free Software Foundation; either version 2, or (at your option) -+ * any later version. -+ * -+ * This Program is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with XBMC; see the file COPYING. If not, write to -+ * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. -+ * http://www.gnu.org/copyleft/gpl.html -+ * -+ */ -+ -+#include "threads/Thread.h" -+#include "utils/log.h" -+#include -+#include "memory.h" -+ -+#define MSG_INTERNAL_BUFFER_SIZE 32 -+ -+namespace Actor -+{ -+ -+class Protocol; -+ -+class Message -+{ -+ friend class Protocol; -+public: -+ int signal; -+ bool isSync; -+ bool isSyncFini; -+ bool isOut; -+ bool isSyncTimeout; -+ int payloadSize; -+ uint8_t buffer[MSG_INTERNAL_BUFFER_SIZE]; -+ uint8_t *data; -+ Message *replyMessage; -+ Protocol *origin; -+ CEvent *event; -+ -+ void Release(); -+ bool Reply(int sig, void *data = NULL, int size = 0); -+ -+private: -+ Message() {isSync = false; data = NULL; event = NULL; replyMessage = NULL;}; -+}; -+ -+class Protocol -+{ -+public: -+ Protocol(std::string name, CEvent* inEvent, CEvent *outEvent) -+ : portName(name), inDefered(false), outDefered(false) {containerInEvent = inEvent; containerOutEvent = outEvent;}; -+ virtual ~Protocol(); -+ Message *GetMessage(); -+ void ReturnMessage(Message *msg); -+ bool SendOutMessage(int signal, void *data = NULL, int size = 0, Message *outMsg = NULL); -+ bool SendInMessage(int signal, void *data = NULL, int size = 0, Message *outMsg = NULL); -+ bool SendOutMessageSync(int signal, Message **retMsg, int timeout, void *data = NULL, int size = 0); -+ bool ReceiveOutMessage(Message **msg); -+ bool ReceiveInMessage(Message **msg); -+ void Purge(); -+ void DeferIn(bool value) {inDefered = value;}; -+ void DeferOut(bool value) {outDefered = value;}; -+ void Lock() {criticalSection.lock();}; -+ void Unlock() {criticalSection.unlock();}; -+ std::string portName; -+ -+protected: -+ CEvent *containerInEvent, *containerOutEvent; -+ CCriticalSection criticalSection; -+ std::queue outMessages; -+ std::queue inMessages; -+ std::queue freeMessageQueue; -+ bool inDefered, outDefered; -+}; -+ -+} -diff -Naur xbmc-f13566b/xbmc/utils/Makefile xbmc-f13566b.patch/xbmc/utils/Makefile ---- xbmc-f13566b/xbmc/utils/Makefile 2012-10-08 09:19:22.000000000 +0200 -+++ xbmc-f13566b.patch/xbmc/utils/Makefile 2012-10-08 17:13:46.892518638 +0200 -@@ -68,6 +68,7 @@ - Weather.cpp \ - XBMCTinyXML.cpp \ - XMLUtils.cpp \ -+ ActorProtocol.cpp \ - - LIB=utils.a - -diff -Naur xbmc-f13566b/xbmc/video/dialogs/GUIDialogVideoSettings.cpp xbmc-f13566b.patch/xbmc/video/dialogs/GUIDialogVideoSettings.cpp ---- xbmc-f13566b/xbmc/video/dialogs/GUIDialogVideoSettings.cpp 2012-10-08 09:19:23.000000000 +0200 -+++ xbmc-f13566b.patch/xbmc/video/dialogs/GUIDialogVideoSettings.cpp 2012-10-08 17:13:47.009520973 +0200 -@@ -108,13 +108,12 @@ - entries.push_back(make_pair(VS_INTERLACEMETHOD_INVERSE_TELECINE , 16314)); - entries.push_back(make_pair(VS_INTERLACEMETHOD_VDPAU_TEMPORAL_SPATIAL , 16311)); - entries.push_back(make_pair(VS_INTERLACEMETHOD_VDPAU_TEMPORAL , 16310)); -- entries.push_back(make_pair(VS_INTERLACEMETHOD_VDPAU_BOB , 16021)); -+ entries.push_back(make_pair(VS_INTERLACEMETHOD_VDPAU_BOB , 16325)); - entries.push_back(make_pair(VS_INTERLACEMETHOD_VDPAU_TEMPORAL_SPATIAL_HALF, 16318)); - entries.push_back(make_pair(VS_INTERLACEMETHOD_VDPAU_TEMPORAL_HALF , 16317)); -- entries.push_back(make_pair(VS_INTERLACEMETHOD_VDPAU_INVERSE_TELECINE , 16314)); - entries.push_back(make_pair(VS_INTERLACEMETHOD_DXVA_BOB , 16320)); - entries.push_back(make_pair(VS_INTERLACEMETHOD_DXVA_BEST , 16321)); -- entries.push_back(make_pair(VS_INTERLACEMETHOD_AUTO_ION , 16325)); -+ entries.push_back(make_pair(VS_INTERLACEMETHOD_XVBA , 16326)); - - /* remove unsupported methods */ - for(vector >::iterator it = entries.begin(); it != entries.end();) -diff -Naur xbmc-f13566b/xbmc/video/VideoReferenceClock.cpp xbmc-f13566b.patch/xbmc/video/VideoReferenceClock.cpp ---- xbmc-f13566b/xbmc/video/VideoReferenceClock.cpp 2012-10-08 09:19:23.000000000 +0200 -+++ xbmc-f13566b.patch/xbmc/video/VideoReferenceClock.cpp 2012-10-08 17:13:47.094522669 +0200 -@@ -30,6 +30,7 @@ - #include - #include - #include "windowing/WindowingFactory.h" -+ #include "guilib/GraphicContext.h" - #define NVSETTINGSCMD "nvidia-settings -nt -q RefreshRate3" - #elif defined(TARGET_DARWIN_OSX) - #include -@@ -135,12 +136,23 @@ - m_Context = NULL; - m_pixmap = None; - m_glPixmap = None; -- m_RREventBase = 0; -- m_UseNvSettings = true; -+ m_UseNvSettings = false; - m_bIsATI = false; - #endif - } - -+CVideoReferenceClock::~CVideoReferenceClock() -+{ -+#if defined(HAS_GLX) -+ // some ATI voodoo, if we don't close the display, we crash on exit -+ if (m_Dpy) -+ { -+ XCloseDisplay(m_Dpy); -+ m_Dpy = NULL; -+ } -+#endif -+} -+ - void CVideoReferenceClock::Process() - { - bool SetupSuccess = false; -@@ -151,6 +163,10 @@ - m_D3dCallback.Reset(); - g_Windowing.Register(&m_D3dCallback); - #endif -+#if defined(HAS_GLX) && defined(HAS_XRANDR) -+ g_Windowing.Register(this); -+ m_xrrEvent = false; -+#endif - - while(!m_bStop) - { -@@ -211,6 +227,16 @@ - //clean up the vblank clock - #if defined(HAS_GLX) && defined(HAS_XRANDR) - CleanupGLX(); -+ if (m_xrrEvent) -+ { -+ m_releaseEvent.Set(); -+ while (!m_bStop) -+ { -+ if (m_resetEvent.WaitMSec(100)) -+ break; -+ } -+ m_xrrEvent = false; -+ } - #elif defined(_WIN32) && defined(HAS_DX) - CleanupD3D(); - #elif defined(TARGET_DARWIN) -@@ -222,6 +248,9 @@ - #if defined(_WIN32) && defined(HAS_DX) - g_Windowing.Unregister(&m_D3dCallback); - #endif -+#if defined(HAS_GLX) -+ g_Windowing.Unregister(this); -+#endif - } - - bool CVideoReferenceClock::WaitStarted(int MSecs) -@@ -231,6 +260,24 @@ - } - - #if defined(HAS_GLX) && defined(HAS_XRANDR) -+ -+void CVideoReferenceClock::OnLostDevice() -+{ -+ if (!m_xrrEvent) -+ { -+ m_releaseEvent.Reset(); -+ m_resetEvent.Reset(); -+ m_xrrEvent = true; -+ m_releaseEvent.Wait(); -+ } -+} -+ -+void CVideoReferenceClock::OnResetDevice() -+{ -+ m_xrrEvent = false; -+ m_resetEvent.Set(); -+} -+ - bool CVideoReferenceClock::SetupGLX() - { - int singleBufferAttributes[] = { -@@ -270,7 +317,7 @@ - } - - bool ExtensionFound = false; -- istringstream Extensions(glXQueryExtensionsString(m_Dpy, DefaultScreen(m_Dpy))); -+ istringstream Extensions(glXQueryExtensionsString(m_Dpy, g_Windowing.GetCurrentScreen())); - string ExtensionStr; - - while (!ExtensionFound) -@@ -297,7 +344,7 @@ - m_bIsATI = true; - } - -- m_vInfo = glXChooseVisual(m_Dpy, DefaultScreen(m_Dpy), singleBufferAttributes); -+ m_vInfo = glXChooseVisual(m_Dpy, g_Windowing.GetCurrentScreen(), singleBufferAttributes); - if (!m_vInfo) - { - CLog::Log(LOGDEBUG, "CVideoReferenceClock: glXChooseVisual returned NULL"); -@@ -308,15 +355,16 @@ - { - Swa.border_pixel = 0; - Swa.event_mask = StructureNotifyMask; -- Swa.colormap = XCreateColormap(m_Dpy, RootWindow(m_Dpy, m_vInfo->screen), m_vInfo->visual, AllocNone ); -+ Swa.colormap = XCreateColormap(m_Dpy, g_Windowing.GetWindow(), m_vInfo->visual, AllocNone ); - SwaMask = CWBorderPixel | CWColormap | CWEventMask; - -- m_Window = XCreateWindow(m_Dpy, RootWindow(m_Dpy, m_vInfo->screen), 0, 0, 256, 256, 0, -+ m_Window = XCreateWindow(m_Dpy, g_Windowing.GetWindow(), 0, 0, 256, 256, 0, - m_vInfo->depth, InputOutput, m_vInfo->visual, SwaMask, &Swa); - } - else - { -- m_pixmap = XCreatePixmap(m_Dpy, DefaultRootWindow(m_Dpy), 256, 256, m_vInfo->depth); -+ Window window = g_Windowing.GetWindow(); -+ m_pixmap = XCreatePixmap(m_Dpy, window, 256, 256, m_vInfo->depth); - if (!m_pixmap) - { - CLog::Log(LOGDEBUG, "CVideoReferenceClock: unable to create pixmap"); -@@ -381,10 +429,6 @@ - return false; - } - -- //set up receiving of RandR events, we'll get one when the refreshrate changes -- XRRQueryExtension(m_Dpy, &m_RREventBase, &ReturnV); -- XRRSelectInput(m_Dpy, RootWindow(m_Dpy, m_vInfo->screen), RRScreenChangeNotifyMask); +- if (m_pInputStream && m_pInputStream->IsStreamType(DVDSTREAM_TYPE_DVD)) return true; - - UpdateRefreshrate(true); //forced refreshrate update - m_MissedVblanks = 0; - -@@ -518,7 +562,7 @@ - int RefreshRate; - XRRScreenConfiguration *CurrInfo; - -- CurrInfo = XRRGetScreenInfo(m_Dpy, RootWindow(m_Dpy, m_vInfo->screen)); -+ CurrInfo = XRRGetScreenInfo(m_Dpy, g_Windowing.GetWindow()); - RefreshRate = XRRConfigCurrentRate(CurrInfo); - XRRFreeScreenConfigInfo(CurrInfo); - -@@ -585,6 +629,9 @@ - - while(!m_bStop) - { -+ if (m_xrrEvent) -+ return; -+ - //wait for the next vblank - if (!m_bIsATI) - { -@@ -648,7 +695,6 @@ - UpdateClock((int)(VblankCount - PrevVblankCount), true); - SingleLock.Leave(); - SendVblankSignal(); -- UpdateRefreshrate(); - IsReset = false; - } - else if (!m_bStop) -@@ -1185,23 +1231,10 @@ - - #if defined(HAS_GLX) && defined(HAS_XRANDR) - -- //check for RandR events -- bool GotEvent = Forced || m_RefreshChanged == 2; -- XEvent Event; -- while (XCheckTypedEvent(m_Dpy, m_RREventBase + RRScreenChangeNotify, &Event)) -- { -- if (Event.type == m_RREventBase + RRScreenChangeNotify) -- { -- CLog::Log(LOGDEBUG, "CVideoReferenceClock: Received RandR event %i", Event.type); -- GotEvent = true; -- } -- XRRUpdateConfiguration(&Event); -- } -- - if (!Forced) - m_RefreshChanged = 0; - -- if (!GotEvent) //refreshrate did not change -+ if (!Forced) //refreshrate did not change - return false; - - //the refreshrate can be wrong on nvidia drivers, so read it from nvidia-settings when it's available -@@ -1222,7 +1255,7 @@ - } - - CSingleLock SingleLock(m_CritSection); -- m_RefreshRate = GetRandRRate(); -+ m_RefreshRate = MathUtils::round_int(g_graphicsContext.GetFPS()); - - CLog::Log(LOGDEBUG, "CVideoReferenceClock: Detected refreshrate: %i hertz", (int)m_RefreshRate); - -diff -Naur xbmc-f13566b/xbmc/video/VideoReferenceClock.h xbmc-f13566b.patch/xbmc/video/VideoReferenceClock.h ---- xbmc-f13566b/xbmc/video/VideoReferenceClock.h 2012-10-08 09:19:23.000000000 +0200 -+++ xbmc-f13566b.patch/xbmc/video/VideoReferenceClock.h 2012-10-08 17:13:47.094522669 +0200 -@@ -30,6 +30,7 @@ - #include - #include - #include -+ #include "guilib/DispResource.h" - #elif defined(_WIN32) && defined(HAS_DX) - #include - #include "guilib/D3DResource.h" -@@ -56,9 +57,13 @@ - #endif - - class CVideoReferenceClock : public CThread -+#if defined(HAS_GLX) && defined(HAS_XRANDR) -+ ,public IDispResource -+#endif - { - public: - CVideoReferenceClock(); -+ virtual ~CVideoReferenceClock(); - - int64_t GetTime(bool interpolated = true); - int64_t GetFrequency(); -@@ -75,6 +80,11 @@ - void VblankHandler(int64_t nowtime, double fps); - #endif - -+#if defined(HAS_GLX) && defined(HAS_XRANDR) -+ virtual void OnLostDevice(); -+ virtual void OnResetDevice(); -+#endif -+ - private: - void Process(); - bool UpdateRefreshrate(bool Forced = false); -@@ -121,7 +131,8 @@ - GLXContext m_Context; - Pixmap m_pixmap; - GLXPixmap m_glPixmap; -- int m_RREventBase; -+ bool m_xrrEvent; -+ CEvent m_releaseEvent, m_resetEvent; - - bool m_UseNvSettings; - bool m_bIsATI; -diff -Naur xbmc-f13566b/xbmc/windowing/Makefile xbmc-f13566b.patch/xbmc/windowing/Makefile ---- xbmc-f13566b/xbmc/windowing/Makefile 2012-10-08 09:19:23.000000000 +0200 -+++ xbmc-f13566b.patch/xbmc/windowing/Makefile 2012-10-08 17:13:46.811517021 +0200 -@@ -1,6 +1,7 @@ - SRCS=WinEventsSDL.cpp \ - WinEventsLinux.cpp \ - WinSystem.cpp \ -+ WinEventsX11.cpp \ - - LIB=windowing.a - -diff -Naur xbmc-f13566b/xbmc/windowing/WinEvents.h xbmc-f13566b.patch/xbmc/windowing/WinEvents.h ---- xbmc-f13566b/xbmc/windowing/WinEvents.h 2012-10-08 09:19:23.000000000 +0200 -+++ xbmc-f13566b.patch/xbmc/windowing/WinEvents.h 2012-10-08 17:13:46.812517041 +0200 -@@ -58,6 +58,10 @@ - #include "WinEventsSDL.h" - #define CWinEvents CWinEventsSDL - -+#elif defined(TARGET_LINUX) && defined(HAS_X11_WIN_EVENTS) -+#include "WinEventsX11.h" -+#define CWinEvents CWinEventsX11 -+ - #elif defined(TARGET_LINUX) && defined(HAS_LINUX_EVENTS) - #include "WinEventsLinux.h" - #define CWinEvents CWinEventsLinux -diff -Naur xbmc-f13566b/xbmc/windowing/WinEventsX11.cpp xbmc-f13566b.patch/xbmc/windowing/WinEventsX11.cpp ---- xbmc-f13566b/xbmc/windowing/WinEventsX11.cpp 1970-01-01 01:00:00.000000000 +0100 -+++ xbmc-f13566b.patch/xbmc/windowing/WinEventsX11.cpp 2012-10-08 17:13:47.027521331 +0200 -@@ -0,0 +1,749 @@ -+/* -+* Copyright (C) 2005-2012 Team XBMC -+* http://www.xbmc.org -+* -+* This Program is free software; you can redistribute it and/or modify -+* it under the terms of the GNU General Public License as published by -+* the Free Software Foundation; either version 2, or (at your option) -+* any later version. -+* -+* This Program is distributed in the hope that it will be useful, -+* but WITHOUT ANY WARRANTY; without even the implied warranty of -+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+* GNU General Public License for more details. -+* -+* You should have received a copy of the GNU General Public License -+* along with XBMC; see the file COPYING. If not, write to -+* the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. -+* http://www.gnu.org/copyleft/gpl.html -+* -+*/ -+ -+#include "system.h" -+ -+#ifdef HAS_X11_WIN_EVENTS -+ -+#include "WinEvents.h" -+#include "WinEventsX11.h" -+#include "Application.h" -+#include "ApplicationMessenger.h" -+#include -+#include "X11/WinSystemX11GL.h" -+#include "X11/keysymdef.h" -+#include "X11/XF86keysym.h" -+#include "utils/log.h" -+#include "utils/CharsetConverter.h" -+#include "guilib/GUIWindowManager.h" -+#include "input/MouseStat.h" -+ -+#if defined(HAS_XRANDR) -+#include -+#endif -+ -+#ifdef HAS_SDL_JOYSTICK -+#include "input/SDLJoystick.h" -+#endif -+ -+CWinEventsX11* CWinEventsX11::WinEvents = 0; -+ -+static uint32_t SymMappingsX11[][2] = -+{ -+ {XK_BackSpace, XBMCK_BACKSPACE} -+, {XK_Tab, XBMCK_TAB} -+, {XK_Clear, XBMCK_CLEAR} -+, {XK_Return, XBMCK_RETURN} -+, {XK_Pause, XBMCK_PAUSE} -+, {XK_Escape, XBMCK_ESCAPE} -+, {XK_Delete, XBMCK_DELETE} -+// multi-media keys -+, {XF86XK_Back, XBMCK_BROWSER_BACK} -+, {XF86XK_Forward, XBMCK_BROWSER_FORWARD} -+, {XF86XK_Refresh, XBMCK_BROWSER_REFRESH} -+, {XF86XK_Stop, XBMCK_BROWSER_STOP} -+, {XF86XK_Search, XBMCK_BROWSER_SEARCH} -+, {XF86XK_Favorites, XBMCK_BROWSER_FAVORITES} -+, {XF86XK_HomePage, XBMCK_BROWSER_HOME} -+, {XF86XK_AudioMute, XBMCK_VOLUME_MUTE} -+, {XF86XK_AudioLowerVolume, XBMCK_VOLUME_DOWN} -+, {XF86XK_AudioRaiseVolume, XBMCK_VOLUME_UP} -+, {XF86XK_AudioNext, XBMCK_MEDIA_NEXT_TRACK} -+, {XF86XK_AudioPrev, XBMCK_MEDIA_PREV_TRACK} -+, {XF86XK_AudioStop, XBMCK_MEDIA_STOP} -+, {XF86XK_AudioPause, XBMCK_MEDIA_PLAY_PAUSE} -+, {XF86XK_Mail, XBMCK_LAUNCH_MAIL} -+, {XF86XK_Select, XBMCK_LAUNCH_MEDIA_SELECT} -+, {XF86XK_Launch0, XBMCK_LAUNCH_APP1} -+, {XF86XK_Launch1, XBMCK_LAUNCH_APP2} -+, {XF86XK_WWW, XBMCK_LAUNCH_FILE_BROWSER} -+, {XF86XK_AudioMedia, XBMCK_LAUNCH_MEDIA_CENTER } -+ // Numeric keypad -+, {XK_KP_0, XBMCK_KP0} -+, {XK_KP_1, XBMCK_KP1} -+, {XK_KP_2, XBMCK_KP2} -+, {XK_KP_3, XBMCK_KP3} -+, {XK_KP_4, XBMCK_KP4} -+, {XK_KP_5, XBMCK_KP5} -+, {XK_KP_6, XBMCK_KP6} -+, {XK_KP_7, XBMCK_KP7} -+, {XK_KP_8, XBMCK_KP8} -+, {XK_KP_9, XBMCK_KP9} -+, {XK_KP_Separator, XBMCK_KP_PERIOD} -+, {XK_KP_Divide, XBMCK_KP_DIVIDE} -+, {XK_KP_Multiply, XBMCK_KP_MULTIPLY} -+, {XK_KP_Subtract, XBMCK_KP_MINUS} -+, {XK_KP_Add, XBMCK_KP_PLUS} -+, {XK_KP_Enter, XBMCK_KP_ENTER} -+, {XK_KP_Equal, XBMCK_KP_EQUALS} -+ // Arrows + Home/End pad -+, {XK_Up, XBMCK_UP} -+, {XK_Down, XBMCK_DOWN} -+, {XK_Right, XBMCK_RIGHT} -+, {XK_Left, XBMCK_LEFT} -+, {XK_Insert, XBMCK_INSERT} -+, {XK_Home, XBMCK_HOME} -+, {XK_End, XBMCK_END} -+, {XK_Page_Up, XBMCK_PAGEUP} -+, {XK_Page_Down, XBMCK_PAGEDOWN} -+ // Function keys -+, {XK_F1, XBMCK_F1} -+, {XK_F2, XBMCK_F2} -+, {XK_F3, XBMCK_F3} -+, {XK_F4, XBMCK_F4} -+, {XK_F5, XBMCK_F5} -+, {XK_F6, XBMCK_F6} -+, {XK_F7, XBMCK_F7} -+, {XK_F8, XBMCK_F8} -+, {XK_F9, XBMCK_F9} -+, {XK_F10, XBMCK_F10} -+, {XK_F11, XBMCK_F11} -+, {XK_F12, XBMCK_F12} -+, {XK_F13, XBMCK_F13} -+, {XK_F14, XBMCK_F14} -+, {XK_F15, XBMCK_F15} -+ // Key state modifier keys -+, {XK_Num_Lock, XBMCK_NUMLOCK} -+, {XK_Caps_Lock, XBMCK_CAPSLOCK} -+, {XK_Scroll_Lock, XBMCK_SCROLLOCK} -+, {XK_Shift_R, XBMCK_RSHIFT} -+, {XK_Shift_L, XBMCK_LSHIFT} -+, {XK_Control_R, XBMCK_RCTRL} -+, {XK_Control_L, XBMCK_LCTRL} -+, {XK_Alt_R, XBMCK_RALT} -+, {XK_Alt_L, XBMCK_LALT} -+, {XK_Meta_R, XBMCK_RMETA} -+, {XK_Meta_L, XBMCK_LMETA} -+, {XK_Super_L, XBMCK_LSUPER} -+, {XK_Super_R, XBMCK_RSUPER} -+, {XK_Mode_switch, XBMCK_MODE} -+, {XK_Multi_key, XBMCK_COMPOSE} -+ // Miscellaneous function keys -+, {XK_Help, XBMCK_HELP} -+, {XK_Print, XBMCK_PRINT} -+//, {0, XBMCK_SYSREQ} -+, {XK_Break, XBMCK_BREAK} -+, {XK_Menu, XBMCK_MENU} -+, {XF86XK_PowerOff, XBMCK_POWER} -+, {XK_EcuSign, XBMCK_EURO} -+, {XK_Undo, XBMCK_UNDO} -+ /* Media keys */ -+, {XF86XK_Eject, XBMCK_EJECT} -+, {XF86XK_Stop, XBMCK_STOP} -+, {XF86XK_AudioRecord, XBMCK_RECORD} -+, {XF86XK_AudioRewind, XBMCK_REWIND} -+, {XF86XK_Phone, XBMCK_PHONE} -+, {XF86XK_AudioPlay, XBMCK_PLAY} -+, {XF86XK_AudioRandomPlay, XBMCK_SHUFFLE} -+, {XF86XK_AudioForward, XBMCK_FASTFORWARD} -+}; -+ -+ -+CWinEventsX11::CWinEventsX11() -+{ -+ m_display = 0; -+ m_window = 0; -+ m_keybuf = 0; -+ m_keybuf_len = 0; -+} -+ -+CWinEventsX11::~CWinEventsX11() -+{ -+ if (m_keybuf); -+ { -+ free(m_keybuf); -+ m_keybuf = 0; -+ } -+ -+ if (m_xic) -+ { -+ XUnsetICFocus(m_xic); -+ XDestroyIC(m_xic); -+ m_xic = 0; -+ } -+ -+ if (m_xim) -+ { -+ XCloseIM(m_xim); -+ m_xim = 0; -+ } -+ -+ m_symLookupTable.clear(); -+} -+ -+bool CWinEventsX11::Init(Display *dpy, Window win) -+{ -+ if (WinEvents) -+ return true; -+ -+ WinEvents = new CWinEventsX11(); -+ WinEvents->m_display = dpy; -+ WinEvents->m_window = win; -+ WinEvents->m_keybuf_len = 32*sizeof(char); -+ WinEvents->m_keybuf = (char*)malloc(WinEvents->m_keybuf_len); -+ WinEvents->m_keymodState = 0; -+ WinEvents->m_wmDeleteMessage = XInternAtom(dpy, "WM_DELETE_WINDOW", False); -+ WinEvents->m_structureChanged = false; -+ WinEvents->m_xrrEventPending = false; -+ memset(&(WinEvents->m_lastKey), 0, sizeof(XBMC_Event)); -+ -+ // open input method -+ char *old_locale = NULL, *old_modifiers = NULL; -+ char res_name[8]; -+ const char *p; -+ size_t n; -+ -+ // set resource name to xbmc, not used -+ strcpy(res_name, "xbmc"); -+ -+ // save current locale, this should be "C" -+ p = setlocale(LC_ALL, NULL); -+ if (p) -+ { -+ old_locale = (char*)malloc(strlen(p) +1); -+ strcpy(old_locale, p); -+ } -+ p = XSetLocaleModifiers(NULL); -+ if (p) -+ { -+ old_modifiers = (char*)malloc(strlen(p) +1); -+ strcpy(old_modifiers, p); -+ } -+ -+ // set users preferences and open input method -+ p = setlocale(LC_ALL, ""); -+ XSetLocaleModifiers(""); -+ WinEvents->m_xim = XOpenIM(WinEvents->m_display, NULL, res_name, res_name); -+ -+ // restore old locale -+ if (old_locale) -+ { -+ setlocale(LC_ALL, old_locale); -+ free(old_locale); -+ } -+ if (old_modifiers) -+ { -+ XSetLocaleModifiers(old_modifiers); -+ free(old_modifiers); -+ } -+ -+ WinEvents->m_xic = NULL; -+ if (WinEvents->m_xim) -+ { -+ WinEvents->m_xic = XCreateIC(WinEvents->m_xim, -+ XNClientWindow, WinEvents->m_window, -+ XNFocusWindow, WinEvents->m_window, -+ XNInputStyle, XIMPreeditNothing | XIMStatusNothing, -+ XNResourceName, res_name, -+ XNResourceClass, res_name, -+ NULL); -+ } -+ -+ if (!WinEvents->m_xic) -+ CLog::Log(LOGWARNING,"CWinEventsX11::Init - no input method found"); -+ -+ // build Keysym lookup table -+ for (unsigned int i = 0; i < sizeof(SymMappingsX11)/(2*sizeof(uint32_t)); ++i) -+ { -+ WinEvents->m_symLookupTable[SymMappingsX11[i][0]] = SymMappingsX11[i][1]; -+ } -+ -+ // register for xrandr events -+#if defined(HAS_XRANDR) -+ int iReturn; -+ XRRQueryExtension(WinEvents->m_display, &WinEvents->m_RREventBase, &iReturn); -+ XRRSelectInput(WinEvents->m_display, WinEvents->m_window, RRScreenChangeNotifyMask); -+#endif -+ -+ return true; -+} -+ -+void CWinEventsX11::Quit() -+{ -+ if (!WinEvents) -+ return; -+ -+ delete WinEvents; -+ WinEvents = 0; -+} -+ -+bool CWinEventsX11::HasStructureChanged() -+{ -+ if (!WinEvents) -+ return false; -+ -+ bool ret = WinEvents->m_structureChanged; -+ WinEvents->m_structureChanged = false; -+ return ret; -+} -+ -+void CWinEventsX11::SetXRRFailSafeTimer(int millis) -+{ -+ if (!WinEvents) -+ return; -+ -+ WinEvents->m_xrrFailSafeTimer.Set(millis); -+ WinEvents->m_xrrEventPending = true; -+} -+ -+bool CWinEventsX11::MessagePump() -+{ -+ if (!WinEvents) -+ return false; -+ -+ bool ret = false; -+ XEvent xevent; -+ unsigned long serial = 0; -+ -+ while (WinEvents && XPending(WinEvents->m_display)) -+ { -+ memset(&xevent, 0, sizeof (XEvent)); -+ XNextEvent(WinEvents->m_display, &xevent); -+ -+ // ignore events generated by auto-repeat -+ if (xevent.type == KeyRelease && XPending(WinEvents->m_display)) -+ { -+ XEvent peekevent; -+ XPeekEvent(WinEvents->m_display, &peekevent); -+ if ((peekevent.type == KeyPress) && -+ (peekevent.xkey.keycode == xevent.xkey.keycode) && -+ ((peekevent.xkey.time - xevent.xkey.time) < 2)) -+ { -+ XNextEvent(WinEvents->m_display, &peekevent); -+ continue; -+ } -+ } -+ -+ if (XFilterEvent(&xevent, None)) -+ continue; -+ -+ switch (xevent.type) -+ { -+ case MapNotify: -+ { -+ g_application.m_AppActive = true; -+ break; -+ } -+ -+ case UnmapNotify: -+ { -+ g_application.m_AppActive = false; -+ break; -+ } -+ -+ case FocusIn: -+ { -+ if (WinEvents->m_xic) -+ XSetICFocus(WinEvents->m_xic); -+ g_application.m_AppFocused = true; -+ memset(&(WinEvents->m_lastKey), 0, sizeof(XBMC_Event)); -+ WinEvents->m_keymodState = 0; -+ if (serial == xevent.xfocus.serial) -+ break; -+ g_Windowing.NotifyAppFocusChange(g_application.m_AppFocused); -+ break; -+ } -+ -+ case FocusOut: -+ { -+ if (WinEvents->m_xic) -+ XUnsetICFocus(WinEvents->m_xic); -+ g_application.m_AppFocused = false; -+ memset(&(WinEvents->m_lastKey), 0, sizeof(XBMC_Event)); -+ g_Windowing.NotifyAppFocusChange(g_application.m_AppFocused); -+ serial = xevent.xfocus.serial; -+ break; -+ } -+ -+ case Expose: -+ { -+ g_windowManager.MarkDirty(); -+ break; -+ } -+ -+ case ConfigureNotify: -+ { -+ if (xevent.xconfigure.window != WinEvents->m_window) -+ break; -+ -+ WinEvents->m_structureChanged = true; -+ XBMC_Event newEvent; -+ memset(&newEvent, 0, sizeof(newEvent)); -+ newEvent.type = XBMC_VIDEORESIZE; -+ newEvent.resize.w = xevent.xconfigure.width; -+ newEvent.resize.h = xevent.xconfigure.height; -+ ret |= g_application.OnEvent(newEvent); -+ g_windowManager.MarkDirty(); -+ break; -+ } -+ -+ case ClientMessage: -+ { -+ if (xevent.xclient.data.l[0] == WinEvents->m_wmDeleteMessage) -+ if (!g_application.m_bStop) CApplicationMessenger::Get().Quit(); -+ break; -+ } -+ -+ case KeyPress: -+ { -+ XBMC_Event newEvent; -+ memset(&newEvent, 0, sizeof(newEvent)); -+ newEvent.type = XBMC_KEYDOWN; -+ KeySym xkeysym; -+ -+ // fallback if we have no IM -+ if (!WinEvents->m_xic) -+ { -+ static XComposeStatus state; -+ char keybuf[32]; -+ xkeysym = XLookupKeysym(&xevent.xkey, 0); -+ newEvent.key.keysym.sym = LookupXbmcKeySym(xkeysym); -+ newEvent.key.keysym.scancode = xevent.xkey.keycode; -+ newEvent.key.state = xevent.xkey.state; -+ newEvent.key.type = xevent.xkey.type; -+ if (XLookupString(&xevent.xkey, keybuf, sizeof(keybuf), NULL, &state)) -+ { -+ newEvent.key.keysym.unicode = keybuf[0]; -+ } -+ ret |= ProcessKey(newEvent, 500); -+ break; -+ } -+ -+ Status status; -+ int len; -+ len = Xutf8LookupString(WinEvents->m_xic, &xevent.xkey, -+ WinEvents->m_keybuf, WinEvents->m_keybuf_len, -+ &xkeysym, &status); -+ if (status == XBufferOverflow) -+ { -+ WinEvents->m_keybuf_len = len; -+ WinEvents->m_keybuf = (char*)realloc(WinEvents->m_keybuf, WinEvents->m_keybuf_len); -+ len = Xutf8LookupString(WinEvents->m_xic, &xevent.xkey, -+ WinEvents->m_keybuf, WinEvents->m_keybuf_len, -+ &xkeysym, &status); -+ } -+ switch (status) -+ { -+ case XLookupNone: -+ break; -+ case XLookupChars: -+ case XLookupBoth: -+ { -+ CStdString data(WinEvents->m_keybuf, len); -+ CStdStringW keys; -+ g_charsetConverter.utf8ToW(data, keys, false); -+ -+ if (keys.length() == 0) -+ { -+ break; -+ } -+ -+ for (unsigned int i = 0; i < keys.length() - 1; i++) -+ { -+ newEvent.key.keysym.sym = XBMCK_UNKNOWN; -+ newEvent.key.keysym.unicode = keys[i]; -+ newEvent.key.state = xevent.xkey.state; -+ newEvent.key.type = xevent.xkey.type; -+ ret |= ProcessKey(newEvent, 500); -+ } -+ if (keys.length() > 0) -+ { -+ newEvent.key.keysym.scancode = xevent.xkey.keycode; -+ xkeysym = XLookupKeysym(&xevent.xkey, 0); -+ newEvent.key.keysym.sym = LookupXbmcKeySym(xkeysym); -+ newEvent.key.keysym.unicode = keys[keys.length() - 1]; -+ newEvent.key.state = xevent.xkey.state; -+ newEvent.key.type = xevent.xkey.type; -+ -+ ret |= ProcessKey(newEvent, 500); -+ } -+ break; -+ } -+ -+ case XLookupKeySym: -+ { -+ newEvent.key.keysym.scancode = xevent.xkey.keycode; -+ newEvent.key.keysym.sym = LookupXbmcKeySym(xkeysym); -+ newEvent.key.state = xevent.xkey.state; -+ newEvent.key.type = xevent.xkey.type; -+ ret |= ProcessKey(newEvent, 500); -+ break; -+ } -+ -+ }// switch status -+ break; -+ } //KeyPress -+ -+ case KeyRelease: -+ { -+ XBMC_Event newEvent; -+ KeySym xkeysym; -+ memset(&newEvent, 0, sizeof(newEvent)); -+ newEvent.type = XBMC_KEYUP; -+ xkeysym = XLookupKeysym(&xevent.xkey, 0); -+ newEvent.key.keysym.scancode = xevent.xkey.keycode; -+ newEvent.key.keysym.sym = LookupXbmcKeySym(xkeysym); -+ newEvent.key.state = xevent.xkey.state; -+ newEvent.key.type = xevent.xkey.type; -+ ret |= ProcessKey(newEvent, 0); -+ break; -+ } -+ -+ case EnterNotify: -+ { -+ g_Windowing.NotifyMouseCoverage(true); -+ break; -+ } -+ -+ // lose mouse coverage -+ case LeaveNotify: -+ { -+ g_Windowing.NotifyMouseCoverage(false); -+ g_Mouse.SetActive(false); -+ break; -+ } -+ -+ case MotionNotify: -+ { -+ XBMC_Event newEvent; -+ memset(&newEvent, 0, sizeof(newEvent)); -+ newEvent.type = XBMC_MOUSEMOTION; -+ newEvent.motion.xrel = (int16_t)xevent.xmotion.x_root; -+ newEvent.motion.yrel = (int16_t)xevent.xmotion.y_root; -+ newEvent.motion.x = (int16_t)xevent.xmotion.x; -+ newEvent.motion.y = (int16_t)xevent.xmotion.y; -+ ret |= g_application.OnEvent(newEvent); -+ break; -+ } -+ -+ case ButtonPress: -+ { -+ XBMC_Event newEvent; -+ memset(&newEvent, 0, sizeof(newEvent)); -+ newEvent.type = XBMC_MOUSEBUTTONDOWN; -+ newEvent.button.button = (unsigned char)xevent.xbutton.button; -+ newEvent.button.state = XBMC_PRESSED; -+ newEvent.button.x = (int16_t)xevent.xbutton.x; -+ newEvent.button.y = (int16_t)xevent.xbutton.y; -+ ret |= g_application.OnEvent(newEvent); -+ break; -+ } -+ -+ case ButtonRelease: -+ { -+ XBMC_Event newEvent; -+ memset(&newEvent, 0, sizeof(newEvent)); -+ newEvent.type = XBMC_MOUSEBUTTONUP; -+ newEvent.button.button = (unsigned char)xevent.xbutton.button; -+ newEvent.button.state = XBMC_RELEASED; -+ newEvent.button.x = (int16_t)xevent.xbutton.x; -+ newEvent.button.y = (int16_t)xevent.xbutton.y; -+ ret |= g_application.OnEvent(newEvent); -+ break; -+ } -+ -+ default: -+ { -+ break; -+ } -+ }// switch event.type -+ -+#if defined(HAS_XRANDR) -+ if (WinEvents && (xevent.type == WinEvents->m_RREventBase + RRScreenChangeNotify)) -+ { -+ XRRUpdateConfiguration(&xevent); -+ if (xevent.xgeneric.serial != serial) -+ g_Windowing.NotifyXRREvent(); -+ WinEvents->m_xrrEventPending = false; -+ serial = xevent.xgeneric.serial; -+ } -+#endif -+ -+ }// while -+ -+ ret |= ProcessKeyRepeat(); -+ -+#if defined(HAS_XRANDR) -+ if (WinEvents && WinEvents->m_xrrEventPending && WinEvents->m_xrrFailSafeTimer.IsTimePast()) -+ { -+ CLog::Log(LOGERROR,"CWinEventsX11::MessagePump - missed XRR Events"); -+ g_Windowing.NotifyXRREvent(); -+ WinEvents->m_xrrEventPending = false; -+ } -+#endif -+ -+#ifdef HAS_SDL_JOYSTICK -+ SDL_Event event; -+ while (SDL_PollEvent(&event)) -+ { -+ switch(event.type) -+ { -+ case SDL_JOYBUTTONUP: -+ case SDL_JOYBUTTONDOWN: -+ case SDL_JOYAXISMOTION: -+ case SDL_JOYBALLMOTION: -+ case SDL_JOYHATMOTION: -+ g_Joystick.Update(event); -+ ret = true; -+ break; -+ -+ default: -+ break; -+ } -+ memset(&event, 0, sizeof(SDL_Event)); -+ } -+#endif -+ -+ return ret; -+} -+ -+bool CWinEventsX11::ProcessKey(XBMC_Event &event, int repeatDelay) -+{ -+ if (event.type == XBMC_KEYDOWN) -+ { -+ // check key modifiers -+ switch(event.key.keysym.sym) -+ { -+ case XBMCK_LSHIFT: -+ WinEvents->m_keymodState |= XBMCKMOD_LSHIFT; -+ break; -+ case XBMCK_RSHIFT: -+ WinEvents->m_keymodState |= XBMCKMOD_RSHIFT; -+ break; -+ case XBMCK_LCTRL: -+ WinEvents->m_keymodState |= XBMCKMOD_LCTRL; -+ break; -+ case XBMCK_RCTRL: -+ WinEvents->m_keymodState |= XBMCKMOD_RCTRL; -+ break; -+ case XBMCK_LALT: -+ WinEvents->m_keymodState |= XBMCKMOD_LALT; -+ break; -+ case XBMCK_RALT: -+ WinEvents->m_keymodState |= XBMCKMOD_RCTRL; -+ break; -+ case XBMCK_LMETA: -+ WinEvents->m_keymodState |= XBMCKMOD_LMETA; -+ break; -+ case XBMCK_RMETA: -+ WinEvents->m_keymodState |= XBMCKMOD_RMETA; -+ break; -+ case XBMCK_MODE: -+ WinEvents->m_keymodState |= XBMCKMOD_MODE; -+ break; -+ default: -+ break; -+ } -+ event.key.keysym.mod = (XBMCMod)WinEvents->m_keymodState; -+ memcpy(&(WinEvents->m_lastKey), &event, sizeof(event)); -+ WinEvents->m_repeatKeyTimeout.Set(repeatDelay); -+ -+ bool ret = ProcessShortcuts(event); -+ if (ret) -+ return ret; -+ } -+ else if (event.type == XBMC_KEYUP) -+ { -+ switch(event.key.keysym.sym) -+ { -+ case XBMCK_LSHIFT: -+ WinEvents->m_keymodState &= ~XBMCKMOD_LSHIFT; -+ break; -+ case XBMCK_RSHIFT: -+ WinEvents->m_keymodState &= ~XBMCKMOD_RSHIFT; -+ break; -+ case XBMCK_LCTRL: -+ WinEvents->m_keymodState &= ~XBMCKMOD_LCTRL; -+ break; -+ case XBMCK_RCTRL: -+ WinEvents->m_keymodState &= ~XBMCKMOD_RCTRL; -+ break; -+ case XBMCK_LALT: -+ WinEvents->m_keymodState &= ~XBMCKMOD_LALT; -+ break; -+ case XBMCK_RALT: -+ WinEvents->m_keymodState &= ~XBMCKMOD_RCTRL; -+ break; -+ case XBMCK_LMETA: -+ WinEvents->m_keymodState &= ~XBMCKMOD_LMETA; -+ break; -+ case XBMCK_RMETA: -+ WinEvents->m_keymodState &= ~XBMCKMOD_RMETA; -+ break; -+ case XBMCK_MODE: -+ WinEvents->m_keymodState &= ~XBMCKMOD_MODE; -+ break; -+ default: -+ break; -+ } -+ event.key.keysym.mod = (XBMCMod)WinEvents->m_keymodState; -+ memset(&(WinEvents->m_lastKey), 0, sizeof(event)); -+ } -+ -+ return g_application.OnEvent(event); -+} -+ -+bool CWinEventsX11::ProcessShortcuts(XBMC_Event& event) -+{ -+ if (event.key.keysym.mod & XBMCKMOD_ALT) -+ { -+ switch(event.key.keysym.sym) -+ { -+ case XBMCK_TAB: // ALT+TAB to minimize/hide -+ g_application.Minimize(); -+ return true; -+ -+ default: -+ return false; -+ } -+ } -+ return false; -+} -+ -+bool CWinEventsX11::ProcessKeyRepeat() -+{ -+ if (WinEvents && (WinEvents->m_lastKey.type == XBMC_KEYDOWN)) -+ { -+ if (WinEvents->m_repeatKeyTimeout.IsTimePast()) -+ { -+ return ProcessKey(WinEvents->m_lastKey, 10); -+ } -+ } -+ return false; -+} -+ -+XBMCKey CWinEventsX11::LookupXbmcKeySym(KeySym keysym) -+{ -+ // try direct mapping first -+ std::map::iterator it; -+ it = WinEvents->m_symLookupTable.find(keysym); -+ if (it != WinEvents->m_symLookupTable.end()) -+ { -+ return (XBMCKey)(it->second); -+ } -+ -+ // try ascii mappings -+ if (keysym>>8 == 0x00) -+ return (XBMCKey)(keysym & 0xFF); -+ -+ return (XBMCKey)keysym; -+} -+#endif -diff -Naur xbmc-f13566b/xbmc/windowing/WinEventsX11.h xbmc-f13566b.patch/xbmc/windowing/WinEventsX11.h ---- xbmc-f13566b/xbmc/windowing/WinEventsX11.h 1970-01-01 01:00:00.000000000 +0100 -+++ xbmc-f13566b.patch/xbmc/windowing/WinEventsX11.h 2012-10-08 17:13:46.854517878 +0200 -@@ -0,0 +1,61 @@ -+/* -+* Copyright (C) 2005-2012 Team XBMC -+* http://www.xbmc.org -+* -+* This Program is free software; you can redistribute it and/or modify -+* it under the terms of the GNU General Public License as published by -+* the Free Software Foundation; either version 2, or (at your option) -+* any later version. -+* -+* This Program is distributed in the hope that it will be useful, -+* but WITHOUT ANY WARRANTY; without even the implied warranty of -+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+* GNU General Public License for more details. -+* -+* You should have received a copy of the GNU General Public License -+* along with XBMC; see the file COPYING. If not, write to -+* the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. -+* http://www.gnu.org/copyleft/gpl.html -+* -+*/ -+#pragma once -+ -+#include "WinEvents.h" -+#include -+#include "threads/SystemClock.h" -+#include -+ -+class CWinEventsX11 : public CWinEventsBase -+{ -+public: -+ CWinEventsX11(); -+ virtual ~CWinEventsX11(); -+ static bool Init(Display *dpy, Window win); -+ static void Quit(); -+ static bool HasStructureChanged(); -+ static void PendingResize(int width, int height); -+ static void SetXRRFailSafeTimer(int millis); -+ static bool MessagePump(); -+ -+protected: -+ static XBMCKey LookupXbmcKeySym(KeySym keysym); -+ static bool ProcessKey(XBMC_Event &event, int repeatDelay); -+ static bool ProcessKeyRepeat(); -+ static bool ProcessShortcuts(XBMC_Event& event); -+ static CWinEventsX11 *WinEvents; -+ Display *m_display; -+ Window m_window; -+ Atom m_wmDeleteMessage; -+ char *m_keybuf; -+ size_t m_keybuf_len; -+ XIM m_xim; -+ XIC m_xic; -+ XBMC_Event m_lastKey; -+ XbmcThreads::EndTime m_repeatKeyTimeout; -+ std::map m_symLookupTable; -+ int m_keymodState; -+ bool m_structureChanged; -+ int m_RREventBase; -+ XbmcThreads::EndTime m_xrrFailSafeTimer; -+ bool m_xrrEventPending; -+}; -diff -Naur xbmc-f13566b/xbmc/windowing/WinSystem.h xbmc-f13566b.patch/xbmc/windowing/WinSystem.h ---- xbmc-f13566b/xbmc/windowing/WinSystem.h 2012-10-08 09:19:23.000000000 +0200 -+++ xbmc-f13566b.patch/xbmc/windowing/WinSystem.h 2012-10-08 17:13:46.847517740 +0200 -@@ -100,6 +100,7 @@ - std::vector ScreenResolutions(int screen); - std::vector RefreshRates(int screen, int width, int height, uint32_t dwFlags); - REFRESHRATE DefaultRefreshRate(int screen, std::vector rates); -+ virtual bool HasCalibration(const RESOLUTION_INFO &resInfo) { return true; }; - - protected: - void UpdateDesktopResolution(RESOLUTION_INFO& newRes, int screen, int width, int height, float refreshRate, uint32_t dwFlags = 0); -diff -Naur xbmc-f13566b/xbmc/windowing/X11/WinSystemX11.cpp xbmc-f13566b.patch/xbmc/windowing/X11/WinSystemX11.cpp ---- xbmc-f13566b/xbmc/windowing/X11/WinSystemX11.cpp 2012-10-08 09:19:23.000000000 +0200 -+++ xbmc-f13566b.patch/xbmc/windowing/X11/WinSystemX11.cpp 2012-10-08 17:13:47.079522369 +0200 -@@ -22,7 +22,6 @@ - - #ifdef HAS_GLX - --#include - #include "WinSystemX11.h" - #include "settings/Settings.h" - #include "guilib/Texture.h" -@@ -31,27 +30,33 @@ - #include "XRandR.h" - #include - #include "threads/SingleLock.h" --#include - #include "cores/VideoRenderers/RenderManager.h" - #include "utils/TimeUtils.h" -+#include "settings/GUISettings.h" -+#include "windowing/WindowingFactory.h" -+#include - - #if defined(HAS_XRANDR) - #include - #endif - -+#include "../WinEvents.h" -+#include "input/MouseStat.h" -+ - using namespace std; - - CWinSystemX11::CWinSystemX11() : CWinSystemBase() - { - m_eWindowSystem = WINDOW_SYSTEM_X11; - m_glContext = NULL; -- m_SDLSurface = NULL; - m_dpy = NULL; - m_glWindow = 0; -- m_wmWindow = 0; - m_bWasFullScreenBeforeMinimize = false; - m_minimized = false; -+ m_bIgnoreNextFocusMessage = false; - m_dpyLostTime = 0; -+ m_invisibleCursor = 0; -+ m_bIsInternalXrr = false; - - XSetErrorHandler(XErrorHandler); - } -@@ -64,19 +69,8 @@ - { - if ((m_dpy = XOpenDisplay(NULL))) - { -- -- SDL_EnableUNICODE(1); -- // set repeat to 10ms to ensure repeat time < frame time -- // so that hold times can be reliably detected -- SDL_EnableKeyRepeat(SDL_DEFAULT_REPEAT_DELAY, 10); -- -- SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 8); -- SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 8); -- SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 8); -- SDL_GL_SetAttribute(SDL_GL_ALPHA_SIZE, 8); -- SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1); -- -- return CWinSystemBase::InitWindowSystem(); -+ bool ret = CWinSystemBase::InitWindowSystem(); -+ return ret; - } - else - CLog::Log(LOGERROR, "GLX Error: No Display found"); -@@ -87,9 +81,18 @@ - bool CWinSystemX11::DestroyWindowSystem() - { - #if defined(HAS_XRANDR) -- //restore videomode on exit -+ //restore desktop resolution on exit - if (m_bFullScreen) -- g_xrandr.RestoreState(); -+ { -+ XOutput out; -+ XMode mode; -+ out.name = g_settings.m_ResInfo[RES_DESKTOP].strOutput; -+ mode.w = g_settings.m_ResInfo[RES_DESKTOP].iWidth; -+ mode.h = g_settings.m_ResInfo[RES_DESKTOP].iHeight; -+ mode.hz = g_settings.m_ResInfo[RES_DESKTOP].fRefreshRate; -+ mode.id = g_settings.m_ResInfo[RES_DESKTOP].strId; -+ g_xrandr.SetMode(out, mode); -+ } - #endif - - if (m_dpy) -@@ -104,6 +107,8 @@ - - //we don't call XCloseDisplay() here, since ati keeps a pointer to our m_dpy - //so instead we just let m_dpy die on exit -+ // i have seen core dumps on ATI if the display is not closed here -+ XCloseDisplay(m_dpy); - } - - // m_SDLSurface is free()'d by SDL_Quit(). -@@ -113,45 +118,43 @@ - - bool CWinSystemX11::CreateNewWindow(const CStdString& name, bool fullScreen, RESOLUTION_INFO& res, PHANDLE_EVENT_FUNC userFunction) - { -- RESOLUTION_INFO& desktop = g_settings.m_ResInfo[RES_DESKTOP]; -- -- if (fullScreen && -- (res.iWidth != desktop.iWidth || res.iHeight != desktop.iHeight || -- res.fRefreshRate != desktop.fRefreshRate || res.iScreen != desktop.iScreen)) -- { -- //on the first call to SDL_SetVideoMode, SDL stores the current displaymode -- //SDL restores the displaymode on SDL_QUIT(), if we change the displaymode -- //before the first call to SDL_SetVideoMode, SDL changes the displaymode back -- //to the wrong mode on exit -- -- CLog::Log(LOGINFO, "CWinSystemX11::CreateNewWindow initializing to desktop resolution first"); -- if (!SetFullScreen(true, desktop, false)) -- return false; -- } -- - if(!SetFullScreen(fullScreen, res, false)) - return false; - -- CBaseTexture* iconTexture = CTexture::LoadFromFile("special://xbmc/media/icon.png"); -- -- if (iconTexture) -- SDL_WM_SetIcon(SDL_CreateRGBSurfaceFrom(iconTexture->GetPixels(), iconTexture->GetWidth(), iconTexture->GetHeight(), 32, iconTexture->GetPitch(), 0xff0000, 0x00ff00, 0x0000ff, 0xff000000L), NULL); -- SDL_WM_SetCaption("XBMC Media Center", NULL); -- delete iconTexture; -- -- // register XRandR Events --#if defined(HAS_XRANDR) -- int iReturn; -- XRRQueryExtension(m_dpy, &m_RREventBase, &iReturn); -- XRRSelectInput(m_dpy, m_wmWindow, RRScreenChangeNotifyMask); --#endif -- - m_bWindowCreated = true; - return true; +- return m_SelectionStreams.Count(STREAM_VIDEO) > 0 ? true : false; ++ return g_renderManager.IsConfigured(); } - bool CWinSystemX11::DestroyWindow() + bool CDVDPlayer::HasAudio() const +-- +1.7.10 + + +From 73884775e9602e814016612f400f1a19cf57449a Mon Sep 17 00:00:00 2001 +From: xbmc +Date: Sat, 13 Oct 2012 12:33:30 +0200 +Subject: [PATCH 51/51] dvdplayer: hasVideo, squash me + +--- + xbmc/cores/dvdplayer/DVDPlayer.cpp | 11 ++++++++++- + 1 file changed, 10 insertions(+), 1 deletion(-) + +diff --git a/xbmc/cores/dvdplayer/DVDPlayer.cpp b/xbmc/cores/dvdplayer/DVDPlayer.cpp +index 8cf04fc..d6952d8 100644 +--- a/xbmc/cores/dvdplayer/DVDPlayer.cpp ++++ b/xbmc/cores/dvdplayer/DVDPlayer.cpp +@@ -2395,7 +2395,16 @@ bool CDVDPlayer::IsPaused() const + + bool CDVDPlayer::HasVideo() const { -+ if (!m_glWindow) -+ return true; +- return g_renderManager.IsConfigured(); ++ bool hasVideo(false); + -+ if (m_glContext) -+ { -+ glFinish(); -+ glXMakeCurrent(m_dpy, None, NULL); -+ } ++ if (m_pInputStream && m_pInputStream->IsStreamType(DVDSTREAM_TYPE_DVD)) ++ hasVideo = true; ++ else if (m_SelectionStreams.Count(STREAM_VIDEO) > 0) ++ hasVideo = true; ++ else if (g_renderManager.IsConfigured()) ++ hasVideo = true; + -+ if (m_invisibleCursor) -+ { -+ XUndefineCursor(m_dpy, m_glWindow); -+ XFreeCursor(m_dpy, m_invisibleCursor); -+ m_invisibleCursor = 0; -+ } -+ -+ CWinEvents::Quit(); -+ -+ XUnmapWindow(m_dpy, m_glWindow); -+ XSync(m_dpy,TRUE); -+ XUngrabKeyboard(m_dpy, CurrentTime); -+ XUngrabPointer(m_dpy, CurrentTime); -+ XDestroyWindow(m_dpy, m_glWindow); -+ m_glWindow = 0; -+ -+ if (m_icon) -+ XFreePixmap(m_dpy, m_icon); -+ - return true; ++ return hasVideo; } -@@ -161,107 +164,135 @@ - && m_nHeight == newHeight) - return true; - -- m_nWidth = newWidth; -- m_nHeight = newHeight; -- -- int options = SDL_OPENGL; -- if (m_bFullScreen) -- options |= SDL_FULLSCREEN; -- else -- options |= SDL_RESIZABLE; -- -- if ((m_SDLSurface = SDL_SetVideoMode(m_nWidth, m_nHeight, 0, options))) -+ if (!SetWindow(newWidth, newHeight, false, g_guiSettings.GetString("videoscreen.monitor"))) - { -- RefreshGlxContext(); -- return true; -+ return false; - } - -+ m_nWidth = newWidth; -+ m_nHeight = newHeight; -+ m_bFullScreen = false; -+ m_currentOutput = g_guiSettings.GetString("videoscreen.monitor"); -+ - return false; - } - - bool CWinSystemX11::SetFullScreen(bool fullScreen, RESOLUTION_INFO& res, bool blankOtherDisplays) - { -- m_nWidth = res.iWidth; -- m_nHeight = res.iHeight; -- m_bFullScreen = fullScreen; - - #if defined(HAS_XRANDR) - XOutput out; - XMode mode; -- out.name = res.strOutput; -- mode.w = res.iWidth; -- mode.h = res.iHeight; -- mode.hz = res.fRefreshRate; -- mode.id = res.strId; -- -- if(m_bFullScreen) -+ -+ if (fullScreen) - { -- OnLostDevice(); -- g_xrandr.SetMode(out, mode); -+ out.name = res.strOutput; -+ mode.w = res.iWidth; -+ mode.h = res.iHeight; -+ mode.hz = res.fRefreshRate; -+ mode.id = res.strId; - } - else -- g_xrandr.RestoreState(); --#endif -+ { -+ out.name = g_settings.m_ResInfo[RES_DESKTOP].strOutput; -+ mode.w = g_settings.m_ResInfo[RES_DESKTOP].iWidth; -+ mode.h = g_settings.m_ResInfo[RES_DESKTOP].iHeight; -+ mode.hz = g_settings.m_ResInfo[RES_DESKTOP].fRefreshRate; -+ mode.id = g_settings.m_ResInfo[RES_DESKTOP].strId; -+ } -+ -+ XMode currmode = g_xrandr.GetCurrentMode(out.name); - -- int options = SDL_OPENGL; -- if (m_bFullScreen) -- options |= SDL_FULLSCREEN; -- else -- options |= SDL_RESIZABLE; -+ // flip h/w when rotated -+ if (m_bIsRotated) -+ { -+ int w = mode.w; -+ mode.w = mode.h; -+ mode.h = w; -+ } - -- if ((m_SDLSurface = SDL_SetVideoMode(m_nWidth, m_nHeight, 0, options))) -+ // only call xrandr if mode changes -+ if (currmode.w != mode.w || currmode.h != mode.h || -+ currmode.hz != mode.hz || currmode.id != mode.id) - { -- if ((m_SDLSurface->flags & SDL_OPENGL) != SDL_OPENGL) -- CLog::Log(LOGERROR, "CWinSystemX11::SetFullScreen SDL_OPENGL not set, SDL_GetError:%s", SDL_GetError()); -+ CLog::Log(LOGNOTICE, "CWinSystemX11::SetFullScreen - calling xrandr"); -+ OnLostDevice(); -+ m_bIsInternalXrr = true; -+ g_xrandr.SetMode(out, mode); -+ if (m_glWindow) -+ return true; -+ } -+#endif - -- RefreshGlxContext(); -+ if (!SetWindow(res.iWidth, res.iHeight, fullScreen, g_guiSettings.GetString("videoscreen.monitor"))) -+ return false; - -- return true; -- } -+ m_nWidth = res.iWidth; -+ m_nHeight = res.iHeight; -+ m_bFullScreen = fullScreen; -+ m_currentOutput = g_guiSettings.GetString("videoscreen.monitor"); - -- return false; -+ return true; - } - - void CWinSystemX11::UpdateResolutions() - { - CWinSystemBase::UpdateResolutions(); - -- - #if defined(HAS_XRANDR) -- if(g_xrandr.Query()) -+ CStdString currentMonitor; -+ int numScreens = XScreenCount(m_dpy); -+ g_xrandr.SetNumScreens(numScreens); -+ if(g_xrandr.Query(true)) - { -- XOutput out = g_xrandr.GetCurrentOutput(); -- XMode mode = g_xrandr.GetCurrentMode(out.name); -- UpdateDesktopResolution(g_settings.m_ResInfo[RES_DESKTOP], 0, mode.w, mode.h, mode.hz); -+ currentMonitor = g_guiSettings.GetString("videoscreen.monitor"); -+ // check if the monitor is connected -+ XOutput *out = g_xrandr.GetOutput(currentMonitor); -+ if (!out) -+ { -+ // choose first output -+ currentMonitor = g_xrandr.GetModes()[0].name; -+ out = g_xrandr.GetOutput(currentMonitor); -+ g_guiSettings.SetString("videoscreen.monitor", currentMonitor); -+ } -+ XMode mode = g_xrandr.GetCurrentMode(currentMonitor); -+ m_bIsRotated = out->isRotated; -+ if (!m_bIsRotated) -+ UpdateDesktopResolution(g_settings.m_ResInfo[RES_DESKTOP], out->screen, mode.w, mode.h, mode.hz); -+ else -+ UpdateDesktopResolution(g_settings.m_ResInfo[RES_DESKTOP], out->screen, mode.h, mode.w, mode.hz); - g_settings.m_ResInfo[RES_DESKTOP].strId = mode.id; -- g_settings.m_ResInfo[RES_DESKTOP].strOutput = out.name; -+ g_settings.m_ResInfo[RES_DESKTOP].strOutput = currentMonitor; - } - else - #endif - { -- int x11screen = DefaultScreen(m_dpy); -+ int x11screen = m_nScreen; - int w = DisplayWidth(m_dpy, x11screen); - int h = DisplayHeight(m_dpy, x11screen); - UpdateDesktopResolution(g_settings.m_ResInfo[RES_DESKTOP], 0, w, h, 0.0); - } - -- - #if defined(HAS_XRANDR) - -+ // erase previous stored modes -+ if (g_settings.m_ResInfo.size() > RES_CUSTOM) -+ { -+ std::vector::iterator firstCustom = g_settings.m_ResInfo.begin()+RES_CUSTOM; -+ g_settings.m_ResInfo.erase(firstCustom, g_settings.m_ResInfo.end()); -+ } -+ - CLog::Log(LOGINFO, "Available videomodes (xrandr):"); -- vector::iterator outiter; -- vector outs; -- outs = g_xrandr.GetModes(); -- CLog::Log(LOGINFO, "Number of connected outputs: %"PRIdS"", outs.size()); -+ -+ XOutput *out = g_xrandr.GetOutput(currentMonitor); - string modename = ""; - -- for (outiter = outs.begin() ; outiter != outs.end() ; outiter++) -+ if (out != NULL) - { -- XOutput out = *outiter; - vector::iterator modeiter; -- CLog::Log(LOGINFO, "Output '%s' has %"PRIdS" modes", out.name.c_str(), out.modes.size()); -+ CLog::Log(LOGINFO, "Output '%s' has %"PRIdS" modes", out->name.c_str(), out->modes.size()); - -- for (modeiter = out.modes.begin() ; modeiter!=out.modes.end() ; modeiter++) -+ for (modeiter = out->modes.begin() ; modeiter!=out->modes.end() ; modeiter++) - { - XMode mode = *modeiter; - CLog::Log(LOGINFO, "ID:%s Name:%s Refresh:%f Width:%d Height:%d", -@@ -271,17 +302,27 @@ - res.iHeight = mode.h; - res.iScreenWidth = mode.w; - res.iScreenHeight = mode.h; -- if (mode.h>0 && mode.w>0 && out.hmm>0 && out.wmm>0) -- res.fPixelRatio = ((float)out.wmm/(float)mode.w) / (((float)out.hmm/(float)mode.h)); -+ if (!m_bIsRotated) -+ { -+ res.iWidth = mode.w; -+ res.iHeight = mode.h; -+ } -+ else -+ { -+ res.iWidth = mode.h; -+ res.iHeight = mode.w; -+ } -+ if (mode.h>0 && mode.w>0 && out->hmm>0 && out->wmm>0) -+ res.fPixelRatio = ((float)out->wmm/(float)mode.w) / (((float)out->hmm/(float)mode.h)); - else - res.fPixelRatio = 1.0f; - - CLog::Log(LOGINFO, "Pixel Ratio: %f", res.fPixelRatio); - -- res.strMode.Format("%s: %s @ %.2fHz", out.name.c_str(), mode.name.c_str(), mode.hz); -- res.strOutput = out.name; -+ res.strMode.Format("%s: %s @ %.2fHz", out->name.c_str(), mode.name.c_str(), mode.hz); -+ res.strOutput = out->name; - res.strId = mode.id; -- res.iSubtitles = (int)(0.95*mode.h); -+ res.iSubtitles = (int)(0.965*mode.h); - res.fRefreshRate = mode.hz; - res.bFullScreen = true; - -@@ -294,8 +335,57 @@ - g_settings.m_ResInfo.push_back(res); - } - } -+ g_settings.ApplyCalibrations(); - #endif -+} -+ -+bool CWinSystemX11::HasCalibration(const RESOLUTION_INFO &resInfo) -+{ -+ XOutput *out = g_xrandr.GetOutput(m_currentOutput); -+ -+ // keep calibrations done on a not connected output -+ if (!out->name.Equals(resInfo.strOutput)) -+ return true; -+ -+ // keep calibrations not updated with resolution data -+ if (resInfo.iWidth == 0) -+ return true; -+ -+ float fPixRatio; -+ if (resInfo.iHeight>0 && resInfo.iWidth>0 && out->hmm>0 && out->wmm>0) -+ fPixRatio = ((float)out->wmm/(float)resInfo.iWidth) / (((float)out->hmm/(float)resInfo.iHeight)); -+ else -+ fPixRatio = 1.0f; -+ -+ if (resInfo.Overscan.left != 0) -+ return true; -+ if (resInfo.Overscan.top != 0) -+ return true; -+ if (resInfo.Overscan.right != resInfo.iWidth) -+ return true; -+ if (resInfo.Overscan.bottom != resInfo.iHeight) -+ return true; -+ if (resInfo.fPixelRatio != fPixRatio) -+ return true; -+ if (resInfo.iSubtitles != (int)(0.965*resInfo.iHeight)) -+ return true; - -+ return false; -+} -+ -+void CWinSystemX11::GetConnectedOutputs(std::vector *outputs) -+{ -+ vector outs; -+ outs = g_xrandr.GetModes(); -+ for(unsigned int i=0; ipush_back(outs[i].name); -+ } -+} -+ -+bool CWinSystemX11::IsCurrentOutput(CStdString output) -+{ -+ return m_currentOutput.Equals(output); - } - - bool CWinSystemX11::IsSuitableVisual(XVisualInfo *vInfo) -@@ -321,17 +411,10 @@ - bool CWinSystemX11::RefreshGlxContext() - { - bool retVal = false; -- SDL_SysWMinfo info; -- SDL_VERSION(&info.version); -- if (SDL_GetWMInfo(&info) <= 0) -- { -- CLog::Log(LOGERROR, "Failed to get window manager info from SDL"); -- return false; -- } - -- if(m_glWindow == info.info.x11.window && m_glContext) -+ if (m_glContext) - { -- CLog::Log(LOGERROR, "GLX: Same window as before, refreshing context"); -+ CLog::Log(LOGDEBUG, "CWinSystemX11::RefreshGlxContext: refreshing context"); - glXMakeCurrent(m_dpy, None, NULL); - glXMakeCurrent(m_dpy, m_glWindow, m_glContext); - return true; -@@ -341,10 +424,8 @@ - XVisualInfo *visuals; - XVisualInfo *vInfo = NULL; - int availableVisuals = 0; -- vMask.screen = DefaultScreen(m_dpy); -+ vMask.screen = m_nScreen; - XWindowAttributes winAttr; -- m_glWindow = info.info.x11.window; -- m_wmWindow = info.info.x11.wmwindow; - - /* Assume a depth of 24 in case the below calls to XGetWindowAttributes() - or XGetVisualInfo() fail. That shouldn't happen unless something is -@@ -395,6 +476,8 @@ - { - glXMakeCurrent(m_dpy, None, NULL); - glXDestroyContext(m_dpy, m_glContext); -+ XSync(m_dpy, FALSE); -+ m_newGlContext = true; - } - - if ((m_glContext = glXCreateContext(m_dpy, vInfo, NULL, True))) -@@ -415,7 +498,10 @@ - - void CWinSystemX11::ShowOSMouse(bool show) - { -- SDL_ShowCursor(show ? 1 : 0); -+ if (show) -+ XUndefineCursor(m_dpy,m_glWindow); -+ else if (m_invisibleCursor) -+ XDefineCursor(m_dpy,m_glWindow, m_invisibleCursor); - } - - void CWinSystemX11::ResetOSScreensaver() -@@ -429,8 +515,6 @@ - { - m_screensaverReset.StartZero(); - XResetScreenSaver(m_dpy); -- //need to flush the output buffer, since we don't check for events on m_dpy -- XFlush(m_dpy); - } - } - else -@@ -439,20 +523,90 @@ - } - } - -+void CWinSystemX11::EnableSystemScreenSaver(bool bEnable) -+{ -+ if (!m_dpy) -+ return; -+ -+ if (bEnable) -+ XForceScreenSaver(m_dpy, ScreenSaverActive); -+ else -+ { -+ Window root_return, child_return; -+ int root_x_return, root_y_return; -+ int win_x_return, win_y_return; -+ unsigned int mask_return; -+ bool isInWin = XQueryPointer(m_dpy, RootWindow(m_dpy, m_nScreen), &root_return, &child_return, -+ &root_x_return, &root_y_return, -+ &win_x_return, &win_y_return, -+ &mask_return); -+ -+ XWarpPointer(m_dpy, None, RootWindow(m_dpy, m_nScreen), 0, 0, 0, 0, root_x_return+300, root_y_return+300); -+ XSync(m_dpy, FALSE); -+ XWarpPointer(m_dpy, None, RootWindow(m_dpy, m_nScreen), 0, 0, 0, 0, 0, 0); -+ XSync(m_dpy, FALSE); -+ XWarpPointer(m_dpy, None, RootWindow(m_dpy, m_nScreen), 0, 0, 0, 0, root_x_return, root_y_return); -+ XSync(m_dpy, FALSE); -+ } -+} -+ - void CWinSystemX11::NotifyAppActiveChange(bool bActivated) - { -- if (bActivated && m_bWasFullScreenBeforeMinimize && !g_graphicsContext.IsFullScreenRoot()) -+ if (bActivated && m_bWasFullScreenBeforeMinimize && !m_bFullScreen) -+ { - g_graphicsContext.ToggleFullScreenRoot(); - -+ m_bWasFullScreenBeforeMinimize = false; -+ } - m_minimized = !bActivated; - } -+ -+void CWinSystemX11::NotifyAppFocusChange(bool bGaining) -+{ -+ if (bGaining && m_bWasFullScreenBeforeMinimize && !m_bIgnoreNextFocusMessage && -+ !m_bFullScreen) -+ { -+ m_bWasFullScreenBeforeMinimize = false; -+ g_graphicsContext.ToggleFullScreenRoot(); -+ m_minimized = false; -+ } -+ if (!bGaining) -+ m_bIgnoreNextFocusMessage = false; -+} -+ -+void CWinSystemX11::NotifyMouseCoverage(bool covered) -+{ -+ if (!m_bFullScreen) -+ return; -+ -+ if (covered) -+ { -+ int result = -1; -+ while (result != GrabSuccess && result != AlreadyGrabbed) -+ { -+ result = XGrabPointer(m_dpy, m_glWindow, True, ButtonPressMask, GrabModeAsync, GrabModeAsync, None, None, CurrentTime); -+ XbmcThreads::ThreadSleep(100); -+ } -+ XGrabKeyboard(m_dpy, m_glWindow, True, GrabModeAsync, GrabModeAsync, CurrentTime); -+ } -+ else -+ { -+ XUngrabKeyboard(m_dpy, CurrentTime); -+ XUngrabPointer(m_dpy, CurrentTime); -+ } -+} -+ - bool CWinSystemX11::Minimize() - { -- m_bWasFullScreenBeforeMinimize = g_graphicsContext.IsFullScreenRoot(); -+ m_bWasFullScreenBeforeMinimize = m_bFullScreen; - if (m_bWasFullScreenBeforeMinimize) -+ { -+ m_bIgnoreNextFocusMessage = true; - g_graphicsContext.ToggleFullScreenRoot(); -+ } -+ -+ XIconifyWindow(m_dpy, m_glWindow, m_nScreen); - -- SDL_WM_IconifyWindow(); - m_minimized = true; - return true; - } -@@ -462,13 +616,13 @@ - } - bool CWinSystemX11::Hide() - { -- XUnmapWindow(m_dpy, m_wmWindow); -+ XUnmapWindow(m_dpy, m_glWindow); - XSync(m_dpy, False); - return true; - } - bool CWinSystemX11::Show(bool raise) - { -- XMapWindow(m_dpy, m_wmWindow); -+ XMapWindow(m_dpy, m_glWindow); - XSync(m_dpy, False); - m_minimized = false; - return true; -@@ -476,7 +630,7 @@ - - void CWinSystemX11::CheckDisplayEvents() - { --#if defined(HAS_XRANDR) -+#if defined(HAS_XRANDR) && defined(HAS_SDL_VIDEO_X11) - bool bGotEvent(false); - bool bTimeout(false); - XEvent Event; -@@ -499,13 +653,7 @@ - - if (bGotEvent || bTimeout) - { -- CLog::Log(LOGDEBUG, "%s - notify display reset event", __FUNCTION__); -- -- CSingleLock lock(m_resourceSection); -- -- // tell any shared resources -- for (vector::iterator i = m_resources.begin(); i != m_resources.end(); i++) -- (*i)->OnResetDevice(); -+ NotifyXRREvent(); - - // reset fail safe timer - m_dpyLostTime = 0; -@@ -513,6 +661,55 @@ - #endif - } - -+void CWinSystemX11::NotifyXRREvent() -+{ -+ CLog::Log(LOGDEBUG, "%s - notify display reset event", __FUNCTION__); -+ m_windowDirty = true; -+ -+ CSingleLock lock(g_graphicsContext); -+ -+ if (!g_xrandr.Query(true)) -+ { -+ CLog::Log(LOGERROR, "WinSystemX11::RefreshWindow - failed to query xrandr"); -+ return; -+ } -+ -+ // if external event update resolutions -+ if (!m_bIsInternalXrr) -+ { -+ UpdateResolutions(); -+ } -+ m_bIsInternalXrr = false; -+ -+ CStdString currentOutput = g_guiSettings.GetString("videoscreen.monitor"); -+ XOutput *out = g_xrandr.GetOutput(currentOutput); -+ XMode mode = g_xrandr.GetCurrentMode(currentOutput); -+ -+ RESOLUTION_INFO res; -+ unsigned int i; -+ bool found(false); -+ for (i = RES_DESKTOP; i < g_settings.m_ResInfo.size(); ++i) -+ { -+ if (g_settings.m_ResInfo[i].strId == mode.id) -+ { -+ found = true; -+ break; -+ } -+ } -+ -+ if (!found) -+ { -+ CLog::Log(LOGERROR, "CWinSystemX11::RefreshWindow - could not find resolution"); -+ i = RES_DESKTOP; -+ } -+ -+ if (g_graphicsContext.IsFullScreenRoot()) -+ g_graphicsContext.SetVideoResolution((RESOLUTION)i, true); -+ else -+ g_graphicsContext.SetVideoResolution(RES_WINDOW, true); -+ -+} -+ - void CWinSystemX11::OnLostDevice() - { - CLog::Log(LOGDEBUG, "%s - notify display change event", __FUNCTION__); -@@ -525,8 +722,12 @@ - (*i)->OnLostDevice(); - } - -+#if defined(HAS_SDL_VIDEO_X11) - // fail safe timer - m_dpyLostTime = CurrentHostCounter(); -+#else -+ CWinEvents::SetXRRFailSafeTimer(3000); -+#endif - } - - void CWinSystemX11::Register(IDispResource *resource) -@@ -558,4 +759,378 @@ - return m_minimized; - } - -+bool CWinSystemX11::SetWindow(int width, int height, bool fullscreen, const CStdString &output) -+{ -+ bool changeWindow = false; -+ bool changeSize = false; -+ bool mouseActive = false; -+ float mouseX, mouseY; -+ -+ if (m_glWindow && ((m_bFullScreen != fullscreen) || !m_currentOutput.Equals(output) || m_windowDirty)) -+ { -+ mouseActive = g_Mouse.IsActive(); -+ if (mouseActive) -+ { -+ Window root_return, child_return; -+ int root_x_return, root_y_return; -+ int win_x_return, win_y_return; -+ unsigned int mask_return; -+ bool isInWin = XQueryPointer(m_dpy, m_glWindow, &root_return, &child_return, -+ &root_x_return, &root_y_return, -+ &win_x_return, &win_y_return, -+ &mask_return); -+ if (isInWin) -+ { -+ mouseX = (float)win_x_return/m_nWidth; -+ mouseY = (float)win_y_return/m_nHeight; -+ g_Mouse.SetActive(false); -+ } -+ else -+ mouseActive = false; -+ } -+ OnLostDevice(); -+ DestroyWindow(); -+ m_windowDirty = true; -+ } -+ -+ // create main window -+ if (!m_glWindow) -+ { -+ EnableSystemScreenSaver(false); -+ -+ GLint att[] = -+ { -+ GLX_RGBA, -+ GLX_RED_SIZE, 8, -+ GLX_GREEN_SIZE, 8, -+ GLX_BLUE_SIZE, 8, -+ GLX_ALPHA_SIZE, 8, -+ GLX_DEPTH_SIZE, 24, -+ GLX_DOUBLEBUFFER, -+ None -+ }; -+ Colormap cmap; -+ XSetWindowAttributes swa; -+ XVisualInfo *vi; -+ -+ XOutput *out = g_xrandr.GetOutput(output); -+ if (!out) -+ out = g_xrandr.GetOutput(m_currentOutput); -+ m_nScreen = out->screen; -+ vi = glXChooseVisual(m_dpy, m_nScreen, att); -+ cmap = XCreateColormap(m_dpy, RootWindow(m_dpy, vi->screen), vi->visual, AllocNone); -+ -+ bool hasWM = HasWindowManager(); -+ -+ int def_vis = (vi->visual == DefaultVisual(m_dpy, vi->screen)); -+ swa.override_redirect = hasWM ? False : True; -+ swa.border_pixel = fullscreen ? 0 : 5; -+ swa.background_pixel = def_vis ? BlackPixel(m_dpy, vi->screen) : 0; -+ swa.colormap = cmap; -+ swa.background_pixel = def_vis ? BlackPixel(m_dpy, vi->screen) : 0; -+ swa.event_mask = FocusChangeMask | KeyPressMask | KeyReleaseMask | -+ ButtonPressMask | ButtonReleaseMask | PointerMotionMask | -+ PropertyChangeMask | StructureNotifyMask | KeymapStateMask | -+ EnterWindowMask | LeaveWindowMask | ExposureMask; -+ unsigned long mask = CWBackPixel | CWBorderPixel | CWColormap | CWOverrideRedirect | CWEventMask; -+ -+ m_glWindow = XCreateWindow(m_dpy, RootWindow(m_dpy, vi->screen), -+ out->x, out->y, width, height, 0, vi->depth, -+ InputOutput, vi->visual, -+ mask, &swa); -+ -+ if (fullscreen && hasWM) -+ { -+ Atom fs = XInternAtom(m_dpy, "_NET_WM_STATE_FULLSCREEN", True); -+ XChangeProperty(m_dpy, m_glWindow, XInternAtom(m_dpy, "_NET_WM_STATE", True), XA_ATOM, 32, PropModeReplace, (unsigned char *) &fs, 1); -+ } -+ -+ // define invisible cursor -+ Pixmap bitmapNoData; -+ XColor black; -+ static char noData[] = { 0,0,0,0,0,0,0,0 }; -+ black.red = black.green = black.blue = 0; -+ -+ bitmapNoData = XCreateBitmapFromData(m_dpy, m_glWindow, noData, 8, 8); -+ m_invisibleCursor = XCreatePixmapCursor(m_dpy, bitmapNoData, bitmapNoData, -+ &black, &black, 0, 0); -+ XFreePixmap(m_dpy, bitmapNoData); -+ XDefineCursor(m_dpy,m_glWindow, m_invisibleCursor); -+ -+ //init X11 events -+ CWinEvents::Init(m_dpy, m_glWindow); -+ -+ changeWindow = true; -+ changeSize = true; -+ } -+ -+ if (!CWinEvents::HasStructureChanged() && ((width != m_nWidth) || (height != m_nHeight))) -+ { -+ changeSize = true; -+ } -+ -+ if (changeSize || changeWindow) -+ { -+ XResizeWindow(m_dpy, m_glWindow, width, height); -+ } -+ -+ if (changeWindow) -+ { -+ m_icon = None; -+ if (!fullscreen) -+ { -+ CreateIconPixmap(); -+ XWMHints *wm_hints; -+ XTextProperty windowName, iconName; -+ std::string titleString = "XBMC Media Center"; -+ char *title = (char*)titleString.c_str(); -+ -+ XStringListToTextProperty(&title, 1, &windowName); -+ XStringListToTextProperty(&title, 1, &iconName); -+ -+ wm_hints = XAllocWMHints(); -+ wm_hints->initial_state = NormalState; -+ wm_hints->icon_pixmap = m_icon; -+ wm_hints->flags = StateHint | IconPixmapHint; -+ -+ XSync(m_dpy,False); -+ XSetWMProperties(m_dpy, m_glWindow, &windowName, &iconName, -+ NULL, 0, NULL, wm_hints, -+ NULL); -+ XFree(wm_hints); -+ -+ // register interest in the delete window message -+ Atom wmDeleteMessage = XInternAtom(m_dpy, "WM_DELETE_WINDOW", False); -+ XSetWMProtocols(m_dpy, m_glWindow, &wmDeleteMessage, 1); -+ } -+ XMapRaised(m_dpy, m_glWindow); -+ XSync(m_dpy,TRUE); -+ -+ if (changeWindow && mouseActive) -+ { -+ XWarpPointer(m_dpy, None, m_glWindow, 0, 0, 0, 0, mouseX*width, mouseY*height); -+ } -+ -+ if (fullscreen) -+ { -+ int result = -1; -+ while (result != GrabSuccess && result != AlreadyGrabbed) -+ { -+ result = XGrabPointer(m_dpy, m_glWindow, True, ButtonPressMask, GrabModeAsync, GrabModeAsync, None, None, CurrentTime); -+ XbmcThreads::ThreadSleep(100); -+ } -+ XGrabKeyboard(m_dpy, m_glWindow, True, GrabModeAsync, GrabModeAsync, CurrentTime); -+ } -+ -+ CDirtyRegionList dr; -+ RefreshGlxContext(); -+ XSync(m_dpy, FALSE); -+ g_graphicsContext.Clear(0); -+ g_graphicsContext.Flip(dr); -+ g_Windowing.ResetVSync(); -+ m_windowDirty = false; -+ -+ CSingleLock lock(m_resourceSection); -+ // tell any shared resources -+ for (vector::iterator i = m_resources.begin(); i != m_resources.end(); i++) -+ (*i)->OnResetDevice(); -+ } -+ -+ return true; -+} -+ -+bool CWinSystemX11::CreateIconPixmap() -+{ -+ int depth; -+ XImage *img = NULL; -+ Visual *vis; -+ XWindowAttributes wndattribs; -+ XVisualInfo visInfo; -+ double rRatio; -+ double gRatio; -+ double bRatio; -+ int outIndex = 0; -+ int i,j; -+ int numBufBytes; -+ unsigned char *buf; -+ uint32_t *newBuf = 0; -+ size_t numNewBufBytes; -+ -+ // Get visual Info -+ XGetWindowAttributes(m_dpy, m_glWindow, &wndattribs); -+ visInfo.visualid = wndattribs.visual->visualid; -+ int nvisuals = 0; -+ XVisualInfo* visuals = XGetVisualInfo(m_dpy, VisualIDMask, &visInfo, &nvisuals); -+ if (nvisuals != 1) -+ { -+ CLog::Log(LOGERROR, "CWinSystemX11::CreateIconPixmap - could not find visual"); -+ return false; -+ } -+ visInfo = visuals[0]; -+ XFree(visuals); -+ -+ depth = visInfo.depth; -+ vis = visInfo.visual; -+ -+ if (depth < 15) -+ { -+ CLog::Log(LOGERROR, "CWinSystemX11::CreateIconPixmap - no suitable depth"); -+ return false; -+ } -+ -+ rRatio = vis->red_mask / 255.0; -+ gRatio = vis->green_mask / 255.0; -+ bRatio = vis->blue_mask / 255.0; -+ -+ CBaseTexture *iconTexture = CBaseTexture::LoadFromFile("special://xbmc/media/icon.png"); -+ -+ if (!iconTexture) -+ return false; -+ -+ buf = iconTexture->GetPixels(); -+ -+ numBufBytes = iconTexture->GetWidth() * iconTexture->GetHeight() * 4; -+ int wid = iconTexture->GetWidth(); -+ int hi = iconTexture->GetHeight(); -+ -+ if (depth>=24) -+ numNewBufBytes = (4 * (iconTexture->GetWidth() * iconTexture->GetHeight())); -+ else -+ numNewBufBytes = (2 * (iconTexture->GetWidth() * iconTexture->GetHeight())); -+ -+ newBuf = (uint32_t*)malloc(numNewBufBytes); -+ if (!newBuf) -+ { -+ CLog::Log(LOGERROR, "CWinSystemX11::CreateIconPixmap - malloc failed"); -+ return false; -+ } -+ -+ for (i=0; iGetHeight();++i) -+ { -+ for (j=0; jGetWidth();++j) -+ { -+ unsigned int pos = i*iconTexture->GetPitch()+j*4; -+ unsigned int r, g, b; -+ r = (buf[pos+2] * rRatio); -+ g = (buf[pos+1] * gRatio); -+ b = (buf[pos+0] * bRatio); -+ r &= vis->red_mask; -+ g &= vis->green_mask; -+ b &= vis->blue_mask; -+ newBuf[outIndex] = r | g | b; -+ ++outIndex; -+ } -+ } -+ img = XCreateImage(m_dpy, vis, depth,ZPixmap, 0, (char *)newBuf, -+ iconTexture->GetWidth(), iconTexture->GetHeight(), -+ (depth>=24)?32:16, 0); -+ if (!img) -+ { -+ CLog::Log(LOGERROR, "CWinSystemX11::CreateIconPixmap - could not create image"); -+ free(newBuf); -+ return false; -+ } -+ if (!XInitImage(img)) -+ { -+ CLog::Log(LOGERROR, "CWinSystemX11::CreateIconPixmap - init image failed"); -+ XDestroyImage(img); -+ return false; -+ } -+ -+ // set byte order -+ union -+ { -+ char c[sizeof(short)]; -+ short s; -+ } order; -+ order.s = 1; -+ if ((1 == order.c[0])) -+ { -+ img->byte_order = LSBFirst; -+ } -+ else -+ { -+ img->byte_order = MSBFirst; -+ } -+ -+ // create icon pixmap from image -+ m_icon = XCreatePixmap(m_dpy, m_glWindow, img->width, img->height, depth); -+ GC gc = XCreateGC(m_dpy, m_glWindow, 0, NULL); -+ XPutImage(m_dpy, m_icon, gc, img, 0, 0, 0, 0, img->width, img->height); -+ XFreeGC(m_dpy, gc); -+ XDestroyImage(img); // this also frees newBuf -+ -+ delete iconTexture; -+ -+ return true; -+} -+ -+bool CWinSystemX11::HasWindowManager() -+{ -+ Window wm_check; -+ unsigned char *data; -+ int status, real_format; -+ Atom real_type, prop; -+ unsigned long items_read, items_left, i; -+ char req = 0; -+ -+ prop = XInternAtom(m_dpy, "_NET_SUPPORTING_WM_CHECK", True); -+ if (prop == None) -+ return false; -+ status = XGetWindowProperty(m_dpy, DefaultRootWindow(m_dpy), prop, -+ 0L, 1L, False, XA_WINDOW, &real_type, &real_format, -+ &items_read, &items_left, &data); -+ if(status != Success || ! items_read) -+ { -+ if(status == Success) -+ XFree(data); -+ return false; -+ } -+ -+ wm_check = ((Window*)data)[0]; -+ XFree(data); -+ -+ status = XGetWindowProperty(m_dpy, wm_check, prop, -+ 0L, 1L, False, XA_WINDOW, &real_type, &real_format, -+ &items_read, &items_left, &data); -+ -+ if(status != Success || !items_read) -+ { -+ if(status == Success) -+ XFree(data); -+ return false; -+ } -+ -+ if(wm_check != ((Window*)data)[0]) -+ { -+ XFree(data); -+ return false; -+ } -+ -+ XFree(data); -+ -+ prop = XInternAtom(m_dpy, "_NET_WM_NAME", True); -+ if (prop == None) -+ { -+ CLog::Log(LOGDEBUG,"Window Manager Name: "); -+ return true; -+ } -+ -+ status = XGetWindowProperty(m_dpy, wm_check, prop, -+ 0L, (~0L), False, AnyPropertyType, &real_type, &real_format, -+ &items_read, &items_left, &data); -+ -+ if(status == Success && items_read) -+ { -+ CLog::Log(LOGDEBUG,"Window Manager Name: %s", data); -+ } -+ else -+ CLog::Log(LOGDEBUG,"Window Manager Name: "); -+ -+ if(status == Success) -+ XFree(data); -+ -+ return true; -+} -+ - #endif -diff -Naur xbmc-f13566b/xbmc/windowing/X11/WinSystemX11GL.cpp xbmc-f13566b.patch/xbmc/windowing/X11/WinSystemX11GL.cpp ---- xbmc-f13566b/xbmc/windowing/X11/WinSystemX11GL.cpp 2012-10-08 09:19:23.000000000 +0200 -+++ xbmc-f13566b.patch/xbmc/windowing/X11/WinSystemX11GL.cpp 2012-10-08 17:13:46.844517680 +0200 -@@ -23,6 +23,7 @@ - - #include "WinSystemX11GL.h" - #include "utils/log.h" -+#include "Application.h" - - CWinSystemX11GL::CWinSystemX11GL() - { -@@ -203,7 +204,7 @@ - return false; - - m_glxext = " "; -- m_glxext += (const char*)glXQueryExtensionsString(m_dpy, DefaultScreen(m_dpy)); -+ m_glxext += (const char*)glXQueryExtensionsString(m_dpy, m_nScreen); - m_glxext += " "; - - CLog::Log(LOGDEBUG, "GLX_EXTENSIONS:%s", m_glxext.c_str()); -@@ -245,17 +246,25 @@ - - bool CWinSystemX11GL::ResizeWindow(int newWidth, int newHeight, int newLeft, int newTop) - { -+ m_newGlContext = false; - CWinSystemX11::ResizeWindow(newWidth, newHeight, newLeft, newTop); - CRenderSystemGL::ResetRenderSystem(newWidth, newHeight, false, 0); - -+ if (m_newGlContext) -+ g_application.ReloadSkin(); -+ - return true; - } - - bool CWinSystemX11GL::SetFullScreen(bool fullScreen, RESOLUTION_INFO& res, bool blankOtherDisplays) - { -+ m_newGlContext = false; - CWinSystemX11::SetFullScreen(fullScreen, res, blankOtherDisplays); - CRenderSystemGL::ResetRenderSystem(res.iWidth, res.iHeight, fullScreen, res.fRefreshRate); - -+ if (m_newGlContext) -+ g_application.ReloadSkin(); -+ - return true; - } - -diff -Naur xbmc-f13566b/xbmc/windowing/X11/WinSystemX11.h xbmc-f13566b.patch/xbmc/windowing/X11/WinSystemX11.h ---- xbmc-f13566b/xbmc/windowing/X11/WinSystemX11.h 2012-10-08 09:19:23.000000000 +0200 -+++ xbmc-f13566b.patch/xbmc/windowing/X11/WinSystemX11.h 2012-10-08 17:13:47.024521271 +0200 -@@ -47,11 +47,14 @@ - virtual bool SetFullScreen(bool fullScreen, RESOLUTION_INFO& res, bool blankOtherDisplays); - virtual void UpdateResolutions(); - virtual int GetNumScreens() { return 1; } -+ virtual int GetCurrentScreen() { return m_nScreen; } - virtual void ShowOSMouse(bool show); - virtual void ResetOSScreensaver(); - virtual bool EnableFrameLimiter(); -+ virtual void EnableSystemScreenSaver(bool bEnable); - - virtual void NotifyAppActiveChange(bool bActivated); -+ virtual void NotifyAppFocusChange(bool bGaining); - - virtual bool Minimize(); - virtual bool Restore() ; -@@ -59,31 +62,46 @@ - virtual bool Show(bool raise = true); - virtual void Register(IDispResource *resource); - virtual void Unregister(IDispResource *resource); -+ virtual bool HasCalibration(const RESOLUTION_INFO &resInfo); - - // Local to WinSystemX11 only - Display* GetDisplay() { return m_dpy; } - GLXWindow GetWindow() { return m_glWindow; } -+ void NotifyXRREvent(); -+ void GetConnectedOutputs(std::vector *outputs); -+ bool IsCurrentOutput(CStdString output); -+ void NotifyMouseCoverage(bool covered); -+ GLXContext GetGlxContext() { return m_glContext; } - - protected: - bool RefreshGlxContext(); - void CheckDisplayEvents(); - void OnLostDevice(); -+ bool SetWindow(int width, int height, bool fullscreen, const CStdString &output); - -- SDL_Surface* m_SDLSurface; -+ Window m_glWindow; - GLXContext m_glContext; -- GLXWindow m_glWindow; -- Window m_wmWindow; - Display* m_dpy; -+ Cursor m_invisibleCursor; -+ Pixmap m_icon; -+ bool m_bIsRotated; - bool m_bWasFullScreenBeforeMinimize; - bool m_minimized; -+ bool m_bIgnoreNextFocusMessage; - int m_RREventBase; - CCriticalSection m_resourceSection; - std::vector m_resources; - uint64_t m_dpyLostTime; -+ CStdString m_currentOutput; -+ bool m_windowDirty; -+ bool m_bIsInternalXrr; -+ bool m_newGlContext; - - private: - bool IsSuitableVisual(XVisualInfo *vInfo); - static int XErrorHandler(Display* dpy, XErrorEvent* error); -+ bool CreateIconPixmap(); -+ bool HasWindowManager(); - - CStopWatch m_screensaverReset; - }; -diff -Naur xbmc-f13566b/xbmc/windowing/X11/XRandR.cpp xbmc-f13566b.patch/xbmc/windowing/X11/XRandR.cpp ---- xbmc-f13566b/xbmc/windowing/X11/XRandR.cpp 2012-10-08 09:19:23.000000000 +0200 -+++ xbmc-f13566b.patch/xbmc/windowing/X11/XRandR.cpp 2012-10-08 17:13:46.825517300 +0200 -@@ -39,6 +39,7 @@ - CXRandR::CXRandR(bool query) - { - m_bInit = false; -+ m_numScreens = 1; - if (query) - Query(); - } -@@ -55,11 +56,21 @@ - return false; - - m_outputs.clear(); -- m_current.clear(); -+ // query all screens -+ for(unsigned int screennum=0; screennumValue(), "screen") != 0) -+ if (strcasecmp(pRootElement->Value(), "screen") != screennum) - { - // TODO ERROR - return false; -@@ -92,12 +103,20 @@ - xoutput.name.TrimLeft(" \n\r\t"); - xoutput.name.TrimRight(" \n\r\t"); - xoutput.isConnected = (strcasecmp(output->Attribute("connected"), "true") == 0); -+ xoutput.screen = screennum; - xoutput.w = (output->Attribute("w") != NULL ? atoi(output->Attribute("w")) : 0); - xoutput.h = (output->Attribute("h") != NULL ? atoi(output->Attribute("h")) : 0); - xoutput.x = (output->Attribute("x") != NULL ? atoi(output->Attribute("x")) : 0); - xoutput.y = (output->Attribute("y") != NULL ? atoi(output->Attribute("y")) : 0); - xoutput.wmm = (output->Attribute("wmm") != NULL ? atoi(output->Attribute("wmm")) : 0); - xoutput.hmm = (output->Attribute("hmm") != NULL ? atoi(output->Attribute("hmm")) : 0); -+ if (output->Attribute("rotation") != NULL -+ && (strcasecmp(output->Attribute("rotation"), "left") == 0 || strcasecmp(output->Attribute("rotation"), "right") == 0)) -+ { -+ xoutput.isRotated = true; -+ } -+ else -+ xoutput.isRotated = false; - - if (!xoutput.isConnected) - continue; -@@ -116,7 +135,6 @@ - xoutput.modes.push_back(xmode); - if (xmode.isCurrent) - { -- m_current.push_back(xoutput); - hascurrent = true; - } - } -@@ -139,25 +157,6 @@ - Query(true); - } - --void CXRandR::RestoreState() --{ -- vector::iterator outiter; -- for (outiter=m_current.begin() ; outiter!=m_current.end() ; outiter++) -- { -- vector modes = (*outiter).modes; -- vector::iterator modeiter; -- for (modeiter=modes.begin() ; modeiter!=modes.end() ; modeiter++) -- { -- XMode mode = *modeiter; -- if (mode.isCurrent) -- { -- SetMode(*outiter, mode); -- return; -- } -- } -- } --} -- - bool CXRandR::SetMode(XOutput output, XMode mode) - { - if ((output.name == m_currentOutput && mode.id == m_currentMode) || (output.name == "" && mode.id == "")) -@@ -259,17 +258,6 @@ - return true; - } - --XOutput CXRandR::GetCurrentOutput() --{ -- Query(); -- for (unsigned int j = 0; j < m_outputs.size(); j++) -- { -- if(m_outputs[j].isConnected) -- return m_outputs[j]; -- } -- XOutput empty; -- return empty; --} - XMode CXRandR::GetCurrentMode(CStdString outputName) - { - Query(); -@@ -343,6 +331,43 @@ - } - } - -+void CXRandR::SetNumScreens(unsigned int num) -+{ -+ m_numScreens = num; -+ m_bInit = false; -+} -+ -+bool CXRandR::IsOutputConnected(CStdString name) -+{ -+ bool result = false; -+ Query(); -+ -+ for (unsigned int i = 0; i < m_outputs.size(); ++i) -+ { -+ if (m_outputs[i].name == name) -+ { -+ result = true; -+ break; -+ } -+ } -+ return result; -+} -+ -+XOutput* CXRandR::GetOutput(CStdString outputName) -+{ -+ XOutput *result = 0; -+ Query(); -+ for (unsigned int i = 0; i < m_outputs.size(); ++i) -+ { -+ if (m_outputs[i].name == outputName) -+ { -+ result = &m_outputs[i]; -+ break; -+ } -+ } -+ return result; -+} -+ - CXRandR g_xrandr; - - #endif // HAS_XRANDR -diff -Naur xbmc-f13566b/xbmc/windowing/X11/XRandR.h xbmc-f13566b.patch/xbmc/windowing/X11/XRandR.h ---- xbmc-f13566b/xbmc/windowing/X11/XRandR.h 2012-10-08 09:19:23.000000000 +0200 -+++ xbmc-f13566b.patch/xbmc/windowing/X11/XRandR.h 2012-10-08 17:13:46.826517319 +0200 -@@ -79,6 +79,7 @@ - } - CStdString name; - bool isConnected; -+ int screen; - int w; - int h; - int x; -@@ -86,6 +87,7 @@ - int wmm; - int hmm; - std::vector modes; -+ bool isRotated; - }; - - class CXRandR -@@ -93,13 +95,15 @@ - public: - CXRandR(bool query=false); - bool Query(bool force=false); -+ bool Query(bool force, int screennum); - std::vector GetModes(void); -- XOutput GetCurrentOutput(); - XMode GetCurrentMode(CStdString outputName); -+ XOutput *GetOutput(CStdString outputName); - bool SetMode(XOutput output, XMode mode); - void LoadCustomModeLinesToAllOutputs(void); - void SaveState(); -- void RestoreState(); -+ void SetNumScreens(unsigned int num); -+ bool IsOutputConnected(CStdString name); - //bool Has1080i(); - //bool Has1080p(); - //bool Has720p(); -@@ -107,10 +111,10 @@ - - private: - bool m_bInit; -- std::vector m_current; - std::vector m_outputs; - CStdString m_currentOutput; - CStdString m_currentMode; -+ unsigned int m_numScreens; - }; - - extern CXRandR g_xrandr; + bool CDVDPlayer::HasAudio() const +-- +1.7.10 + diff --git a/packages/network/connman/config/services b/packages/network/connman/config/services deleted file mode 100644 index 0221c781e4..0000000000 --- a/packages/network/connman/config/services +++ /dev/null @@ -1,10821 +0,0 @@ -# /etc/services: -# $Id: services,v 1.49 2010/03/26 13:06:35 ovasik Exp $ -# -# Network services, Internet style -# IANA services version: last updated 2010-03-25 -# -# Note that it is presently the policy of IANA to assign a single well-known -# port number for both TCP and UDP; hence, most entries here have two entries -# even if the protocol doesn't support UDP operations. -# Updated from RFC 1700, ``Assigned Numbers'' (October 1994). Not all ports -# are included, only the more common ones. -# -# The latest IANA port assignments can be gotten from -# http://www.iana.org/assignments/port-numbers -# The Well Known Ports are those from 0 through 1023. -# The Registered Ports are those from 1024 through 49151 -# The Dynamic and/or Private Ports are those from 49152 through 65535 -# -# Each line describes one service, and is of the form: -# -# service-name port/protocol [aliases ...] [# comment] - -tcpmux 1/tcp # TCP port service multiplexer -tcpmux 1/udp # TCP port service multiplexer -rje 5/tcp # Remote Job Entry -rje 5/udp # Remote Job Entry -echo 7/tcp -echo 7/udp -discard 9/tcp sink null -discard 9/udp sink null -systat 11/tcp users -systat 11/udp users -daytime 13/tcp -daytime 13/udp -qotd 17/tcp quote -qotd 17/udp quote -msp 18/tcp # message send protocol -msp 18/udp # message send protocol -chargen 19/tcp ttytst source -chargen 19/udp ttytst source -ftp-data 20/tcp -ftp-data 20/udp -# 21 is registered to ftp, but also used by fsp -ftp 21/tcp -ftp 21/udp fsp fspd -ssh 22/tcp # The Secure Shell (SSH) Protocol -ssh 22/udp # The Secure Shell (SSH) Protocol -telnet 23/tcp -telnet 23/udp -# 24 - private mail system -lmtp 24/tcp # LMTP Mail Delivery -lmtp 24/udp # LMTP Mail Delivery -smtp 25/tcp mail -smtp 25/udp mail -time 37/tcp timserver -time 37/udp timserver -rlp 39/tcp resource # resource location -rlp 39/udp resource # resource location -nameserver 42/tcp name # IEN 116 -nameserver 42/udp name # IEN 116 -nicname 43/tcp whois -nicname 43/udp whois -tacacs 49/tcp # Login Host Protocol (TACACS) -tacacs 49/udp # Login Host Protocol (TACACS) -re-mail-ck 50/tcp # Remote Mail Checking Protocol -re-mail-ck 50/udp # Remote Mail Checking Protocol -domain 53/tcp # name-domain server -domain 53/udp -whois++ 63/tcp -whois++ 63/udp -bootps 67/tcp # BOOTP server -bootps 67/udp -bootpc 68/tcp dhcpc # BOOTP client -bootpc 68/udp dhcpc -tftp 69/tcp -tftp 69/udp -gopher 70/tcp # Internet Gopher -gopher 70/udp -netrjs-1 71/tcp # Remote Job Service -netrjs-1 71/udp # Remote Job Service -netrjs-2 72/tcp # Remote Job Service -netrjs-2 72/udp # Remote Job Service -netrjs-3 73/tcp # Remote Job Service -netrjs-3 73/udp # Remote Job Service -netrjs-4 74/tcp # Remote Job Service -netrjs-4 74/udp # Remote Job Service -finger 79/tcp -finger 79/udp -http 80/tcp www www-http # WorldWideWeb HTTP -http 80/udp www www-http # HyperText Transfer Protocol -http 80/sctp # HyperText Transfer Protocol -kerberos 88/tcp kerberos5 krb5 # Kerberos v5 -kerberos 88/udp kerberos5 krb5 # Kerberos v5 -supdup 95/tcp -supdup 95/udp -hostname 101/tcp hostnames # usually from sri-nic -hostname 101/udp hostnames # usually from sri-nic -iso-tsap 102/tcp tsap # part of ISODE. -csnet-ns 105/tcp cso # also used by CSO name server -csnet-ns 105/udp cso -# unfortunately the poppassd (Eudora) uses a port which has already -# been assigned to a different service. We list the poppassd as an -# alias here. This should work for programs asking for this service. -# (due to a bug in inetd the 3com-tsmux line is disabled) -#3com-tsmux 106/tcp poppassd -#3com-tsmux 106/udp poppassd -rtelnet 107/tcp # Remote Telnet -rtelnet 107/udp -pop2 109/tcp pop-2 postoffice # POP version 2 -pop2 109/udp pop-2 -pop3 110/tcp pop-3 # POP version 3 -pop3 110/udp pop-3 -sunrpc 111/tcp portmapper rpcbind # RPC 4.0 portmapper TCP -sunrpc 111/udp portmapper rpcbind # RPC 4.0 portmapper UDP -auth 113/tcp authentication tap ident -auth 113/udp authentication tap ident -sftp 115/tcp -sftp 115/udp -uucp-path 117/tcp -uucp-path 117/udp -nntp 119/tcp readnews untp # USENET News Transfer Protocol -nntp 119/udp readnews untp # USENET News Transfer Protocol -ntp 123/tcp -ntp 123/udp # Network Time Protocol -netbios-ns 137/tcp # NETBIOS Name Service -netbios-ns 137/udp -netbios-dgm 138/tcp # NETBIOS Datagram Service -netbios-dgm 138/udp -netbios-ssn 139/tcp # NETBIOS session service -netbios-ssn 139/udp -imap 143/tcp imap2 # Interim Mail Access Proto v2 -imap 143/udp imap2 -snmp 161/tcp # Simple Net Mgmt Proto -snmp 161/udp # Simple Net Mgmt Proto -snmptrap 162/tcp # SNMPTRAP -snmptrap 162/udp snmp-trap # Traps for SNMP -cmip-man 163/tcp # ISO mgmt over IP (CMOT) -cmip-man 163/udp -cmip-agent 164/tcp -cmip-agent 164/udp -mailq 174/tcp # MAILQ -mailq 174/udp # MAILQ -xdmcp 177/tcp # X Display Mgr. Control Proto -xdmcp 177/udp -nextstep 178/tcp NeXTStep NextStep # NeXTStep window -nextstep 178/udp NeXTStep NextStep # server -bgp 179/tcp # Border Gateway Proto. -bgp 179/udp -bgp 179/sctp -prospero 191/tcp # Cliff Neuman's Prospero -prospero 191/udp -irc 194/tcp # Internet Relay Chat -irc 194/udp -smux 199/tcp # SNMP Unix Multiplexer -smux 199/udp -at-rtmp 201/tcp # AppleTalk routing -at-rtmp 201/udp -at-nbp 202/tcp # AppleTalk name binding -at-nbp 202/udp -at-echo 204/tcp # AppleTalk echo -at-echo 204/udp -at-zis 206/tcp # AppleTalk zone information -at-zis 206/udp -qmtp 209/tcp # Quick Mail Transfer Protocol -qmtp 209/udp # Quick Mail Transfer Protocol -z39.50 210/tcp z3950 wais # NISO Z39.50 database -z39.50 210/udp z3950 wais -ipx 213/tcp # IPX -ipx 213/udp -imap3 220/tcp # Interactive Mail Access -imap3 220/udp # Protocol v3 -link 245/tcp ttylink -link 245/udp ttylink -gist 270/udp # Q-mode encapsulation for GIST messages -fatserv 347/tcp # Fatmen Server -fatserv 347/udp # Fatmen Server -rsvp_tunnel 363/tcp -rsvp_tunnel 363/udp -odmr 366/tcp # odmr required by fetchmail -odmr 366/udp # odmr required by fetchmail -rpc2portmap 369/tcp -rpc2portmap 369/udp # Coda portmapper -codaauth2 370/tcp -codaauth2 370/udp # Coda authentication server -ulistproc 372/tcp ulistserv # UNIX Listserv -ulistproc 372/udp ulistserv -ldap 389/tcp -ldap 389/udp -osb-sd 400/tcp # Oracle Secure Backup -osb-sd 400/udp # Oracle Secure Backup -svrloc 427/tcp # Server Location Protocl -svrloc 427/udp # Server Location Protocl -mobileip-agent 434/tcp -mobileip-agent 434/udp -mobilip-mn 435/tcp -mobilip-mn 435/udp -https 443/tcp # http protocol over TLS/SSL -https 443/udp # http protocol over TLS/SSL -https 443/sctp # http protocol over TLS/SSL -snpp 444/tcp # Simple Network Paging Protocol -snpp 444/udp # Simple Network Paging Protocol -microsoft-ds 445/tcp -microsoft-ds 445/udp -kpasswd 464/tcp kpwd # Kerberos "passwd" -kpasswd 464/udp kpwd # Kerberos "passwd" -photuris 468/tcp -photuris 468/udp -saft 487/tcp # Simple Asynchronous File Transfer -saft 487/udp # Simple Asynchronous File Transfer -gss-http 488/tcp -gss-http 488/udp -pim-rp-disc 496/tcp -pim-rp-disc 496/udp -isakmp 500/tcp -isakmp 500/udp -gdomap 538/tcp # GNUstep distributed objects -gdomap 538/udp # GNUstep distributed objects -iiop 535/tcp -iiop 535/udp -dhcpv6-client 546/tcp -dhcpv6-client 546/udp -dhcpv6-server 547/tcp -dhcpv6-server 547/udp -rtsp 554/tcp # Real Time Stream Control Protocol -rtsp 554/udp # Real Time Stream Control Protocol -nntps 563/tcp # NNTP over SSL -nntps 563/udp # NNTP over SSL -whoami 565/tcp -whoami 565/udp -submission 587/tcp msa # mail message submission -submission 587/udp msa # mail message submission -npmp-local 610/tcp dqs313_qmaster # npmp-local / DQS -npmp-local 610/udp dqs313_qmaster # npmp-local / DQS -npmp-gui 611/tcp dqs313_execd # npmp-gui / DQS -npmp-gui 611/udp dqs313_execd # npmp-gui / DQS -hmmp-ind 612/tcp dqs313_intercell # HMMP Indication / DQS -hmmp-ind 612/udp dqs313_intercell # HMMP Indication / DQS -ipp 631/tcp # Internet Printing Protocol -ipp 631/udp # Internet Printing Protocol -ldaps 636/tcp # LDAP over SSL -ldaps 636/udp # LDAP over SSL -acap 674/tcp -acap 674/udp -ha-cluster 694/tcp # Heartbeat HA-cluster -ha-cluster 694/udp # Heartbeat HA-cluster -kerberos-adm 749/tcp # Kerberos `kadmin' (v5) -kerberos-adm 749/udp # kerberos administration -kerberos-iv 750/udp kerberos4 kerberos-sec kdc loadav -kerberos-iv 750/tcp kerberos4 kerberos-sec kdc rfile -webster 765/tcp # Network dictionary -webster 765/udp -phonebook 767/tcp # Network phonebook -phonebook 767/udp -rsync 873/tcp # rsync -rsync 873/udp # rsync -rquotad 875/tcp # rquota daemon -rquotad 875/udp # rquota daemon -telnets 992/tcp -telnets 992/udp -imaps 993/tcp # IMAP over SSL -imaps 993/udp # IMAP over SSL -ircs 994/tcp -ircs 994/udp -pop3s 995/tcp # POP-3 over SSL -pop3s 995/udp # POP-3 over SSL - -# -# UNIX specific services -# -exec 512/tcp -biff 512/udp comsat -login 513/tcp -who 513/udp whod -shell 514/tcp cmd # no passwords used -syslog 514/udp -printer 515/tcp spooler # line printer spooler -printer 515/udp spooler # line printer spooler -talk 517/udp -ntalk 518/udp -utime 519/tcp unixtime -utime 519/udp unixtime -efs 520/tcp -router 520/udp route routed # RIP -ripng 521/tcp -ripng 521/udp -timed 525/tcp timeserver -timed 525/udp timeserver -tempo 526/tcp newdate -courier 530/tcp rpc -conference 531/tcp chat -netnews 532/tcp -netwall 533/udp # -for emergency broadcasts -uucp 540/tcp uucpd # uucp daemon -klogin 543/tcp # Kerberized `rlogin' (v5) -kshell 544/tcp krcmd # Kerberized `rsh' (v5) -afpovertcp 548/tcp # AFP over TCP -afpovertcp 548/udp # AFP over TCP -remotefs 556/tcp rfs_server rfs # Brunhoff remote filesystem - -# -# From ``PORT NUMBERS'': -# -#>REGISTERED PORT NUMBERS -#> -#>The Registered Ports are listed by the IANA and on most systems can be -#>used by ordinary user processes or programs executed by ordinary -#>users. -#> -#>Ports are used in the TCP [RFC793] to name the ends of logical -#>connections which carry long term conversations. For the purpose of -#>providing services to unknown callers, a service contact port is -#>defined. This list specifies the port used by the server process as -#>its contact port. -#> -#>The IANA registers uses of these ports as a convienence to the -#>community. -# -socks 1080/tcp # socks proxy server -socks 1080/udp # socks proxy server - -# Port 1236 is registered as `bvcontrol', but is also used by the -# Gracilis Packeten remote config server. The official name is listed as -# the primary name, with the unregistered name as an alias. -bvcontrol 1236/tcp rmtcfg # Daniel J. Walsh, Gracilis Packeten remote config server -bvcontrol 1236/udp # Daniel J. Walsh - -h323hostcallsc 1300/tcp # H323 Host Call Secure -h323hostcallsc 1300/udp # H323 Host Call Secure -ms-sql-s 1433/tcp # Microsoft-SQL-Server -ms-sql-s 1433/udp # Microsoft-SQL-Server -ms-sql-m 1434/tcp # Microsoft-SQL-Monitor -ms-sql-m 1434/udp # Microsoft-SQL-Monitor -ica 1494/tcp # Citrix ICA Client -ica 1494/udp # Citrix ICA Client -wins 1512/tcp # Microsoft's Windows Internet Name Service -wins 1512/udp # Microsoft's Windows Internet Name Service -ingreslock 1524/tcp -ingreslock 1524/udp -prospero-np 1525/tcp orasrv # Prospero non-privileged/oracle -prospero-np 1525/udp orasrv -datametrics 1645/tcp old-radius sightline # datametrics / old radius entry -datametrics 1645/udp old-radius sightline # datametrics / old radius entry -sa-msg-port 1646/tcp old-radacct # sa-msg-port / old radacct entry -sa-msg-port 1646/udp old-radacct # sa-msg-port / old radacct entry -kermit 1649/tcp -kermit 1649/udp -l2tp 1701/tcp l2f -l2tp 1701/udp l2f -h323gatedisc 1718/tcp -h323gatedisc 1718/udp -h323gatestat 1719/tcp -h323gatestat 1719/udp -h323hostcall 1720/tcp -h323hostcall 1720/udp -tftp-mcast 1758/tcp -tftp-mcast 1758/udp -mtftp 1759/udp spss-lm -hello 1789/tcp -hello 1789/udp -radius 1812/tcp # Radius -radius 1812/udp # Radius -radius-acct 1813/tcp radacct # Radius Accounting -radius-acct 1813/udp radacct # Radius Accounting -mtp 1911/tcp # -mtp 1911/udp # -hsrp 1985/tcp # Cisco Hot Standby Router Protocol -hsrp 1985/udp # Cisco Hot Standby Router Protocol -licensedaemon 1986/tcp -licensedaemon 1986/udp -gdp-port 1997/tcp # Cisco Gateway Discovery Protocol -gdp-port 1997/udp # Cisco Gateway Discovery Protocol -sieve-filter 2000/tcp cisco-sccp # Sieve Mail Filter Daemon -sieve-filter 2000/udp cisco-sccp # Sieve Mail Filter Daemon -nfs 2049/tcp nfsd shilp # Network File System -nfs 2049/udp nfsd shilp # Network File System -nfs 2049/sctp nfsd shilp # Network File System -zephyr-srv 2102/tcp # Zephyr server -zephyr-srv 2102/udp # Zephyr server -zephyr-clt 2103/tcp # Zephyr serv-hm connection -zephyr-clt 2103/udp # Zephyr serv-hm connection -zephyr-hm 2104/tcp # Zephyr hostmanager -zephyr-hm 2104/udp # Zephyr hostmanager -cvspserver 2401/tcp # CVS client/server operations -cvspserver 2401/udp # CVS client/server operations -venus 2430/tcp # codacon port -venus 2430/udp # Venus callback/wbc interface -venus-se 2431/tcp # tcp side effects -venus-se 2431/udp # udp sftp side effect -codasrv 2432/tcp # not used -codasrv 2432/udp # server port -codasrv-se 2433/tcp # tcp side effects -codasrv-se 2433/udp # udp sftp side effectQ - -# Ports numbered 2600 through 2606 are used by the zebra package without -# being registred. The primary names are the registered names, and the -# unregistered names used by zebra are listed as aliases. -hpstgmgr 2600/tcp zebrasrv # HPSTGMGR -hpstgmgr 2600/udp # HPSTGMGR -discp-client 2601/tcp zebra # discp client -discp-client 2601/udp # discp client -discp-server 2602/tcp ripd # discp server -discp-server 2602/udp # discp server -servicemeter 2603/tcp ripngd # Service Meter -servicemeter 2603/udp # Service Meter -nsc-ccs 2604/tcp ospfd # NSC CCS -nsc-ccs 2604/udp # NSC CCS -nsc-posa 2605/tcp bgpd # NSC POSA -nsc-posa 2605/udp # NSC POSA -netmon 2606/tcp ospf6d # Dell Netmon -netmon 2606/udp # Dell Netmon -dict 2628/tcp # RFC 2229 -dict 2628/udp # RFC 2229 -corbaloc 2809/tcp # CORBA naming service locator -icpv2 3130/tcp # Internet Cache Protocol V2 (Squid) -icpv2 3130/udp # Internet Cache Protocol V2 (Squid) -mysql 3306/tcp # MySQL -mysql 3306/udp # MySQL -trnsprntproxy 3346/tcp # Trnsprnt Proxy -trnsprntproxy 3346/udp # Trnsprnt Proxy -pxe 4011/udp altserviceboot # PXE server -fud 4201/udp # Cyrus IMAP FUD Daemon -rwhois 4321/tcp # Remote Who Is -rwhois 4321/udp # Remote Who Is -krb524 4444/tcp nv-video # Kerberos 5 to 4 ticket xlator -krb524 4444/udp nv-video # Kerberos 5 to 4 ticket xlator -rfe 5002/tcp # Radio Free Ethernet -rfe 5002/udp # Actually uses UDP only -cfengine 5308/tcp # CFengine -cfengine 5308/udp # CFengine -cvsup 5999/tcp CVSup # CVSup file transfer/John Polstra/FreeBSD -cvsup 5999/udp CVSup # CVSup file transfer/John Polstra/FreeBSD -x11 6000/tcp X # the X Window System -afs3-fileserver 7000/tcp # file server itself -afs3-fileserver 7000/udp # file server itself -afs3-callback 7001/tcp # callbacks to cache managers -afs3-callback 7001/udp # callbacks to cache managers -afs3-prserver 7002/tcp # users & groups database -afs3-prserver 7002/udp # users & groups database -afs3-vlserver 7003/tcp # volume location database -afs3-vlserver 7003/udp # volume location database -afs3-kaserver 7004/tcp # AFS/Kerberos authentication service -afs3-kaserver 7004/udp # AFS/Kerberos authentication service -afs3-volser 7005/tcp # volume managment server -afs3-volser 7005/udp # volume managment server -afs3-errors 7006/tcp # error interpretation service -afs3-errors 7006/udp # error interpretation service -afs3-bos 7007/tcp # basic overseer process -afs3-bos 7007/udp # basic overseer process -afs3-update 7008/tcp # server-to-server updater -afs3-update 7008/udp # server-to-server updater -afs3-rmtsys 7009/tcp # remote cache manager service -afs3-rmtsys 7009/udp # remote cache manager service -sd 9876/tcp # Session Director -sd 9876/udp # Session Director -amanda 10080/tcp # amanda backup services -amanda 10080/udp # amanda backup services -pgpkeyserver 11371/tcp hkp # PGP/GPG public keyserver -pgpkeyserver 11371/udp hkp # PGP/GPG public keyserver -h323callsigalt 11720/tcp # H323 Call Signal Alternate -h323callsigalt 11720/udp # H323 Call Signal Alternate - -bprd 13720/tcp # BPRD (VERITAS NetBackup) -bprd 13720/udp # BPRD (VERITAS NetBackup) -bpdbm 13721/tcp # BPDBM (VERITAS NetBackup) -bpdbm 13721/udp # BPDBM (VERITAS NetBackup) -bpjava-msvc 13722/tcp # BP Java MSVC Protocol -bpjava-msvc 13722/udp # BP Java MSVC Protocol -vnetd 13724/tcp # Veritas Network Utility -vnetd 13724/udp # Veritas Network Utility -bpcd 13782/tcp # VERITAS NetBackup -bpcd 13782/udp # VERITAS NetBackup -vopied 13783/tcp # VOPIED Protocol -vopied 13783/udp # VOPIED Protocol - -# This port is registered as wnn6, but also used under the unregistered name -# "wnn4" by the FreeWnn package. -wnn6 22273/tcp wnn4 -wnn6 22273/udp wnn4 - -quake 26000/tcp -quake 26000/udp -wnn6-ds 26208/tcp -wnn6-ds 26208/udp -traceroute 33434/tcp -traceroute 33434/udp - -# -# Datagram Delivery Protocol services -# -rtmp 1/ddp # Routing Table Maintenance Protocol -nbp 2/ddp # Name Binding Protocol -echo 4/ddp # AppleTalk Echo Protocol -zip 6/ddp # Zone Information Protocol - -# -# Kerberos (Project Athena/MIT) services -# Note that these are for Kerberos v4, and are unregistered/unofficial. Sites -# running v4 should uncomment these and comment out the v5 entries above. -# -kerberos_master 751/udp pump # Kerberos authentication -kerberos_master 751/tcp pump # Kerberos authentication -passwd_server 752/udp qrh # Kerberos passwd server -krbupdate 760/tcp kreg ns # Kerberos registration -kpop 1109/tcp # Pop with Kerberos -knetd 2053/tcp lot105-ds-upd # Kerberos de-multiplexor - -# -# Kerberos 5 services, also not registered with IANA -# -krb5_prop 754/tcp tell # Kerberos slave propagation -eklogin 2105/tcp minipay # Kerberos encrypted rlogin - -# -# Unregistered but necessary(?) (for NetBSD) services -# -supfilesrv 871/tcp # SUP server -supfiledbg 1127/tcp kwdb-commn # SUP debugging - -# -# Unregistered but useful/necessary other services -# -netstat 15/tcp # (was once asssigned, no more) -poppassd 106/tcp # Eudora -poppassd 106/udp # Eudora -omirr 808/tcp omirrd # online mirror -omirr 808/udp omirrd # online mirror -swat 901/tcp smpnameres # Samba Web Administration Tool -rndc 953/tcp # rndc control sockets (BIND 9) -rndc 953/udp # rndc control sockets (BIND 9) -skkserv 1178/tcp sgi-storman # SKK Japanese input method -xtel 1313/tcp bmc_patroldb # french minitel -support 1529/tcp prmsd gnatsd coauthor # GNATS, cygnus bug tracker -cfinger 2003/tcp brutus # GNU Finger -ninstall 2150/tcp dynamic3d # ninstall service -ninstall 2150/udp dynamic3d # ninstall service -afbackup 2988/tcp hippad # Afbackup system -afbackup 2988/udp hippad # Afbackup system -squid 3128/tcp ndl-aas # squid web proxy -prsvp 3455/tcp # RSVP Port -prsvp 3455/udp # RSVP Port -distcc 3632/tcp # distcc -svn 3690/tcp # Subversion -svn 3690/udp # Subversion -postgres 5432/tcp postgresql # POSTGRES -postgres 5432/udp postgresql # POSTGRES -fax 4557/tcp # FAX transmission service (old) -hylafax 4559/tcp # HylaFAX client-server protocol (new) -sgi-dgl 5232/tcp # SGI Distributed Graphics -sgi-dgl 5232/udp -hostmon 5355/tcp llmnr # hostmon uses TCP (nocol) -hostmon 5355/udp llmnr # hostmon uses TCP (nocol) -canna 5680/tcp auriga-router -x11-ssh-offset 6010/tcp # SSH X11 forwarding offset -xfs 7100/tcp font-service # X font server -tircproxy 7666/tcp # Tircproxy -webcache 8080/tcp http-alt # WWW caching service -webcache 8080/udp http-alt # WWW caching service -tproxy 8081/tcp sunproxyadmin # Transparent Proxy -tproxy 8081/udp sunproxyadmin # Transparent Proxy -jetdirect 9100/tcp laserjet hplj hp-pdl-datastr pdl-datastream -mandelspawn 9359/udp mandelbrot # network mandelbrot -kamanda 10081/tcp famdc # amanda backup services (Kerberos) -kamanda 10081/udp famdc # amanda backup services (Kerberos) -amandaidx 10082/tcp # amanda backup services -amidxtape 10083/tcp # amanda backup services -isdnlog 20011/tcp # isdn logging system -isdnlog 20011/udp # isdn logging system -vboxd 20012/tcp # voice box system -vboxd 20012/udp # voice box system -wnn4_Kr 22305/tcp cis # used by the kWnn package -wnn4_Cn 22289/tcp # used by the cWnn package -wnn4_Tw 22321/tcp # used by the tWnn package -binkp 24554/tcp # Binkley -binkp 24554/udp # Binkley -canditv 24676/tcp # Canditv Message Service -canditv 24676/udp # Canditv Message Service -asp 27374/tcp # Address Search Protocol -asp 27374/udp # Address Search Protocol -tfido 60177/tcp # Ifmail -tfido 60177/udp # Ifmail -fido 60179/tcp # Ifmail -fido 60179/udp # Ifmail - - -# Updated additional list from IANA with all missing services 04/07/2008 -spr-itunes 0/tcp spl-itunes # Shirt Pocket netTunes -compressnet 2/tcp # Management Utility -compressnet 2/udp # Management Utility -#compressnet 3/tcp # Compression Process -#compressnet 3/udp # Compression Process -discard 9/sctp # Discard -discard 9/dccp # Discard SC:DISC -ftp-data 20/sctp # FTP -ftp 21/sctp # FTP -ssh 22/sctp # SSH -nsw-fe 27/tcp # NSW User System FE -nsw-fe 27/udp # NSW User System FE -msg-icp 29/tcp # MSG ICP -msg-icp 29/udp # MSG ICP -msg-auth 31/tcp # MSG Authentication -msg-auth 31/udp # MSG Authentication -dsp 33/tcp # Display Support Protocol -dsp 33/udp # Display Support Protocol -rap 38/tcp # Route Access Protocol -rap 38/udp # Route Access Protocol -graphics 41/tcp # Graphics -graphics 41/udp # Graphics -mpm-flags 44/tcp # MPM FLAGS Protocol -mpm-flags 44/udp # MPM FLAGS Protocol -mpm 45/tcp # Message Processing Module [recv] -mpm 45/udp # Message Processing Module [recv] -mpm-snd 46/tcp # MPM [default send] -mpm-snd 46/udp # MPM [default send] -ni-ftp 47/tcp # NI FTP -ni-ftp 47/udp # NI FTP -auditd 48/tcp # Digital Audit Daemon -auditd 48/udp # Digital Audit Daemon -la-maint 51/tcp # IMP Logical Address Maintenance -la-maint 51/udp # IMP Logical Address Maintenance -xns-time 52/tcp # XNS Time Protocol -xns-time 52/udp # XNS Time Protocol -xns-ch 54/tcp # XNS Clearinghouse -xns-ch 54/udp # XNS Clearinghouse -isi-gl 55/tcp # ISI Graphics Language -isi-gl 55/udp # ISI Graphics Language -xns-auth 56/tcp # XNS Authentication -xns-auth 56/udp # XNS Authentication -xns-mail 58/tcp # XNS Mail -xns-mail 58/udp # XNS Mail -ni-mail 61/tcp # NI MAIL -ni-mail 61/udp # NI MAIL -acas 62/tcp # ACA Services -acas 62/udp # ACA Services -covia 64/tcp # Communications Integrator (CI) -covia 64/udp # Communications Integrator (CI) -tacacs-ds 65/tcp # TACACS-Database Service -tacacs-ds 65/udp # TACACS-Database Service -sql*net 66/tcp # Oracle SQL*NET -sql*net 66/udp # Oracle SQL*NET -deos 76/tcp # Distributed External Object Store -deos 76/udp # Distributed External Object Store -vettcp 78/tcp # vettcp -vettcp 78/udp # vettcp -xfer 82/tcp # XFER Utility -xfer 82/udp # XFER Utility -mit-ml-dev 83/tcp # MIT ML Device -mit-ml-dev 83/udp # MIT ML Device -ctf 84/tcp # Common Trace Facility -ctf 84/udp # Common Trace Facility -mfcobol 86/tcp # Micro Focus Cobol -mfcobol 86/udp # Micro Focus Cobol -su-mit-tg 89/tcp # SU/MIT Telnet Gateway -su-mit-tg 89/udp # SU/MIT Telnet Gateway -dnsix 90/tcp # DNSIX Securit Attribute Token Map -dnsix 90/udp # DNSIX Securit Attribute Token Map -mit-dov 91/tcp # MIT Dover Spooler -mit-dov 91/udp # MIT Dover Spooler -npp 92/tcp # Network Printing Protocol -npp 92/udp # Network Printing Protocol -dcp 93/tcp # Device Control Protocol -dcp 93/udp # Device Control Protocol -objcall 94/tcp # Tivoli Object Dispatcher -objcall 94/udp # Tivoli Object Dispatcher -dixie 96/tcp # DIXIE Protocol Specification -dixie 96/udp # DIXIE Protocol Specification -swift-rvf 97/tcp # Swift Remote Virtural File Protocol -swift-rvf 97/udp # Swift Remote Virtural File Protocol -tacnews 98/tcp # TAC News -tacnews 98/udp # TAC News -metagram 99/tcp # Metagram Relay -metagram 99/udp # Metagram Relay -newacct 100/tcp # [unauthorized use] -iso-tsap 102/udp # ISO-TSAP Class 0 -gppitnp 103/tcp # Genesis Point-to-Point Trans Net -gppitnp 103/udp # Genesis Point-to-Point Trans Net -acr-nema 104/tcp # ACR-NEMA Digital Imag. & Comm. 300 -acr-nema 104/udp # ACR-NEMA Digital Imag. & Comm. 300 -snagas 108/tcp # SNA Gateway Access Server -snagas 108/udp # SNA Gateway Access Server -mcidas 112/tcp # McIDAS Data Transmission Protocol -mcidas 112/udp # McIDAS Data Transmission Protocol -ansanotify 116/tcp # ANSA REX Notify -ansanotify 116/udp # ANSA REX Notify -sqlserv 118/tcp # SQL Services -sqlserv 118/udp # SQL Services -cfdptkt 120/tcp # CFDPTKT -cfdptkt 120/udp # CFDPTKT -erpc 121/tcp # Encore Expedited Remote Pro.Call -erpc 121/udp # Encore Expedited Remote Pro.Call -smakynet 122/tcp # SMAKYNET -smakynet 122/udp # SMAKYNET -ansatrader 124/tcp # ANSA REX Trader -ansatrader 124/udp # ANSA REX Trader -locus-map 125/tcp # Locus PC-Interface Net Map Ser -locus-map 125/udp # Locus PC-Interface Net Map Ser -nxedit 126/tcp # NXEdit -nxedit 126/udp # NXEdit -locus-con 127/tcp # Locus PC-Interface Conn Server -locus-con 127/udp # Locus PC-Interface Conn Server -gss-xlicen 128/tcp # GSS X License Verification -gss-xlicen 128/udp # GSS X License Verification -pwdgen 129/tcp # Password Generator Protocol -pwdgen 129/udp # Password Generator Protocol -cisco-fna 130/tcp # cisco FNATIVE -cisco-fna 130/udp # cisco FNATIVE -cisco-tna 131/tcp # cisco TNATIVE -cisco-tna 131/udp # cisco TNATIVE -cisco-sys 132/tcp # cisco SYSMAINT -cisco-sys 132/udp # cisco SYSMAINT -statsrv 133/tcp # Statistics Service -statsrv 133/udp # Statistics Service -ingres-net 134/tcp # INGRES-NET Service -ingres-net 134/udp # INGRES-NET Service -epmap 135/tcp # DCE endpoint resolution -epmap 135/udp # DCE endpoint resolution -profile 136/tcp # PROFILE Naming System -profile 136/udp # PROFILE Naming System -emfis-data 140/tcp # EMFIS Data Service -emfis-data 140/udp # EMFIS Data Service -emfis-cntl 141/tcp # EMFIS Control Service -emfis-cntl 141/udp # EMFIS Control Service -bl-idm 142/tcp # Britton-Lee IDM -bl-idm 142/udp # Britton-Lee IDM -uma 144/tcp # Universal Management Architecture -uma 144/udp # Universal Management Architecture -uaac 145/tcp # UAAC Protocol -uaac 145/udp # UAAC Protocol -iso-tp0 146/tcp # ISO-IP0 -iso-tp0 146/udp # ISO-IP0 -iso-ip 147/tcp # ISO-IP -iso-ip 147/udp # ISO-IP -jargon 148/tcp # Jargon -jargon 148/udp # Jargon -aed-512 149/tcp # AED 512 Emulation Service -aed-512 149/udp # AED 512 Emulation Service -sql-net 150/tcp # SQL-NET -sql-net 150/udp # SQL-NET -hems 151/tcp # HEMS -hems 151/udp # HEMS -bftp 152/tcp # Background File Transfer Program -bftp 152/udp # Background File Transfer Program -sgmp 153/tcp # SGMP -sgmp 153/udp # SGMP -netsc-prod 154/tcp # NETSC -netsc-prod 154/udp # NETSC -netsc-dev 155/tcp # NETSC -netsc-dev 155/udp # NETSC -sqlsrv 156/tcp # SQL Service -sqlsrv 156/udp # SQL Service -knet-cmp 157/tcp # KNET/VM Command/Message Protocol -knet-cmp 157/udp # KNET/VM Command/Message Protocol -pcmail-srv 158/tcp # PCMail Server -pcmail-srv 158/udp # PCMail Server -nss-routing 159/tcp # NSS-Routing -nss-routing 159/udp # NSS-Routing -sgmp-traps 160/tcp # SGMP-TRAPS -sgmp-traps 160/udp # SGMP-TRAPS -xns-courier 165/tcp # Xerox -xns-courier 165/udp # Xerox -s-net 166/tcp # Sirius Systems -s-net 166/udp # Sirius Systems -namp 167/tcp # NAMP -namp 167/udp # NAMP -rsvd 168/tcp # RSVD -rsvd 168/udp # RSVD -send 169/tcp # SEND -send 169/udp # SEND -print-srv 170/tcp # Network PostScript -print-srv 170/udp # Network PostScript -multiplex 171/tcp # Network Innovations Multiplex -multiplex 171/udp # Network Innovations Multiplex -cl/1 172/tcp # Network Innovations CL/1 -cl/1 172/udp # Network Innovations CL/1 -xyplex-mux 173/tcp # Xyplex -xyplex-mux 173/udp # Xyplex -vmnet 175/tcp # VMNET -vmnet 175/udp # VMNET -genrad-mux 176/tcp # GENRAD-MUX -genrad-mux 176/udp # GENRAD-MUX -ris 180/tcp # Intergraph -ris 180/udp # Intergraph -unify 181/tcp # Unify -unify 181/udp # Unify -audit 182/tcp # Unisys Audit SITP -audit 182/udp # Unisys Audit SITP -ocbinder 183/tcp # OCBinder -ocbinder 183/udp # OCBinder -ocserver 184/tcp # OCServer -ocserver 184/udp # OCServer -remote-kis 185/tcp # Remote-KIS -remote-kis 185/udp # Remote-KIS -kis 186/tcp # KIS Protocol -kis 186/udp # KIS Protocol -aci 187/tcp # Application Communication Interface -aci 187/udp # Application Communication Interface -mumps 188/tcp # Plus Five's MUMPS -mumps 188/udp # Plus Five's MUMPS -qft 189/tcp # Queued File Transport -qft 189/udp # Queued File Transport -gacp 190/tcp # Gateway Access Control Protocol -gacp 190/udp # Gateway Access Control Protocol -osu-nms 192/tcp # OSU Network Monitoring System -osu-nms 192/udp # OSU Network Monitoring System -srmp 193/tcp # Spider Remote Monitoring Protocol -srmp 193/udp # Spider Remote Monitoring Protocol -dn6-nlm-aud 195/tcp # DNSIX Network Level Module Audit -dn6-nlm-aud 195/udp # DNSIX Network Level Module Audit -dn6-smm-red 196/tcp # DNSIX Session Mgt Module Audit Redir -dn6-smm-red 196/udp # DNSIX Session Mgt Module Audit Redir -dls 197/tcp # Directory Location Service -dls 197/udp # Directory Location Service -dls-mon 198/tcp # Directory Location Service Monitor -dls-mon 198/udp # Directory Location Service Monitor -src 200/tcp # IBM System Resource Controller -src 200/udp # IBM System Resource Controller -at-3 203/tcp # AppleTalk Unused -at-3 203/udp # AppleTalk Unused -at-5 205/tcp # AppleTalk Unused -at-5 205/udp # AppleTalk Unused -at-7 207/tcp # AppleTalk Unused -at-7 207/udp # AppleTalk Unused -at-8 208/tcp # AppleTalk Unused -at-8 208/udp # AppleTalk Unused -914c/g 211/tcp # Texas Instruments 914C/G Terminal -914c/g 211/udp # Texas Instruments 914C/G Terminal -anet 212/tcp # ATEXSSTR -anet 212/udp # ATEXSSTR -vmpwscs 214/tcp # VM PWSCS -vmpwscs 214/udp # VM PWSCS -softpc 215/tcp # Insignia Solutions -softpc 215/udp # Insignia Solutions -CAIlic 216/tcp # Computer Associates Int'l License Server -CAIlic 216/udp # Computer Associates Int'l License Server -dbase 217/tcp # dBASE Unix -dbase 217/udp # dBASE Unix -mpp 218/tcp # Netix Message Posting Protocol -mpp 218/udp # Netix Message Posting Protocol -uarps 219/tcp # Unisys ARPs -uarps 219/udp # Unisys ARPs -fln-spx 221/tcp # Berkeley rlogind with SPX auth -fln-spx 221/udp # Berkeley rlogind with SPX auth -rsh-spx 222/tcp # Berkeley rshd with SPX auth -rsh-spx 222/udp # Berkeley rshd with SPX auth -cdc 223/tcp # Certificate Distribution Center -cdc 223/udp # Certificate Distribution Center -masqdialer 224/tcp # masqdialer -masqdialer 224/udp # masqdialer -direct 242/tcp # Direct -direct 242/udp # Direct -sur-meas 243/tcp # Survey Measurement -sur-meas 243/udp # Survey Measurement -inbusiness 244/tcp # inbusiness -inbusiness 244/udp # inbusiness -dsp3270 246/tcp # Display Systems Protocol -dsp3270 246/udp # Display Systems Protocol -subntbcst_tftp 247/tcp # SUBNTBCST_TFTP -subntbcst_tftp 247/udp # SUBNTBCST_TFTP -bhfhs 248/tcp # bhfhs -bhfhs 248/udp # bhfhs -set 257/tcp # Secure Electronic Transaction -set 257/udp # Secure Electronic Transaction -esro-gen 259/tcp # Efficient Short Remote Operations -esro-gen 259/udp # Efficient Short Remote Operations -openport 260/tcp # Openport -openport 260/udp # Openport -nsiiops 261/tcp # IIOP Name Service over TLS/SSL -nsiiops 261/udp # IIOP Name Service over TLS/SSL -arcisdms 262/tcp # Arcisdms -arcisdms 262/udp # Arcisdms -hdap 263/tcp # HDAP -hdap 263/udp # HDAP -bgmp 264/tcp # BGMP -bgmp 264/udp # BGMP -x-bone-ctl 265/tcp # X-Bone CTL -x-bone-ctl 265/udp # X-Bone CTL -sst 266/tcp # SCSI on ST -sst 266/udp # SCSI on ST -td-service 267/tcp # Tobit David Service Layer -td-service 267/udp # Tobit David Service Layer -td-replica 268/tcp # Tobit David Replica -td-replica 268/udp # Tobit David Replica -manet 269/tcp # MANET Protocols -manet 269/udp # MANET Protocols [RFC5498] -http-mgmt 280/tcp # http-mgmt -http-mgmt 280/udp # http-mgmt -personal-link 281/tcp # Personal Link -personal-link 281/udp # Personal Link -cableport-ax 282/tcp # Cable Port A/X -cableport-ax 282/udp # Cable Port A/X -rescap 283/tcp # rescap -rescap 283/udp # rescap -corerjd 284/tcp # corerjd -corerjd 284/udp # corerjd -fxp 286/tcp # FXP Communication -fxp 286/udp # FXP Communication -k-block 287/tcp # K-BLOCK -k-block 287/udp # K-BLOCK -novastorbakcup 308/tcp # Novastor Backup -novastorbakcup 308/udp # Novastor Backup -entrusttime 309/tcp # EntrustTime -entrusttime 309/udp # EntrustTime -bhmds 310/tcp # bhmds -bhmds 310/udp # bhmds -asip-webadmin 311/tcp # AppleShare IP WebAdmin -asip-webadmin 311/udp # AppleShare IP WebAdmin -vslmp 312/tcp # VSLMP -vslmp 312/udp # VSLMP -magenta-logic 313/tcp # Magenta Logic -magenta-logic 313/udp # Magenta Logic -opalis-robot 314/tcp # Opalis Robot -opalis-robot 314/udp # Opalis Robot -dpsi 315/tcp # DPSI -dpsi 315/udp # DPSI -decauth 316/tcp # decAuth -decauth 316/udp # decAuth -zannet 317/tcp # Zannet -zannet 317/udp # Zannet -pkix-timestamp 318/tcp # PKIX TimeStamp -pkix-timestamp 318/udp # PKIX TimeStamp -ptp-event 319/tcp # PTP Event -ptp-event 319/udp # PTP Event -ptp-general 320/tcp # PTP General -ptp-general 320/udp # PTP General -pip 321/tcp # PIP -pip 321/udp # PIP -rtsps 322/tcp # RTSPS -rtsps 322/udp # RTSPS -texar 333/tcp # Texar Security Port -texar 333/udp # Texar Security Port -pdap 344/tcp # Prospero Data Access Protocol -pdap 344/udp # Prospero Data Access Protocol -pawserv 345/tcp # Perf Analysis Workbench -pawserv 345/udp # Perf Analysis Workbench -zserv 346/tcp # Zebra server -zserv 346/udp # Zebra server -csi-sgwp 348/tcp # Cabletron Management Protocol -csi-sgwp 348/udp # Cabletron Management Protocol -mftp 349/tcp # mftp -mftp 349/udp # mftp -matip-type-a 350/tcp # MATIP Type A -matip-type-a 350/udp # MATIP Type A -matip-type-b 351/tcp bhoetty # MATIP Type B / bhoetty (added 5/21/97) -matip-type-b 351/udp bhoetty # MATIP Type B / bhoetty -dtag-ste-sb 352/tcp bhoedap4 # DTAG (assigned long ago) / bhoedap4 -dtag-ste-sb 352/udp bhoedap4 # DTAG / bhoedap4 -ndsauth 353/tcp # NDSAUTH -ndsauth 353/udp # NDSAUTH -bh611 354/tcp # bh611 -bh611 354/udp # bh611 -datex-asn 355/tcp # DATEX-ASN -datex-asn 355/udp # DATEX-ASN -cloanto-net-1 356/tcp # Cloanto Net 1 -cloanto-net-1 356/udp # Cloanto Net 1 -bhevent 357/tcp # bhevent -bhevent 357/udp # bhevent -shrinkwrap 358/tcp # Shrinkwrap -shrinkwrap 358/udp # Shrinkwrap -nsrmp 359/tcp # Network Security Risk Management Protocol -nsrmp 359/udp # Network Security Risk Management Protocol -scoi2odialog 360/tcp # scoi2odialog -scoi2odialog 360/udp # scoi2odialog -semantix 361/tcp # Semantix -semantix 361/udp # Semantix -srssend 362/tcp # SRS Send -srssend 362/udp # SRS Send -aurora-cmgr 364/tcp # Aurora CMGR -aurora-cmgr 364/udp # Aurora CMGR -dtk 365/tcp # DTK -dtk 365/udp # DTK -mortgageware 367/tcp # MortgageWare -mortgageware 367/udp # MortgageWare -qbikgdp 368/tcp # QbikGDP -qbikgdp 368/udp # QbikGDP -clearcase 371/tcp # Clearcase -clearcase 371/udp # Clearcase -legent-1 373/tcp # Legent Corporation -legent-1 373/udp # Legent Corporation -legent-2 374/tcp # Legent Corporation -legent-2 374/udp # Legent Corporation -hassle 375/tcp # Hassle -hassle 375/udp # Hassle -nip 376/tcp # Amiga Envoy Network Inquiry Proto -nip 376/udp # Amiga Envoy Network Inquiry Proto -tnETOS 377/tcp # NEC Corporation -tnETOS 377/udp # NEC Corporation -dsETOS 378/tcp # NEC Corporation -dsETOS 378/udp # NEC Corporation -is99c 379/tcp # TIA/EIA/IS-99 modem client -is99c 379/udp # TIA/EIA/IS-99 modem client -is99s 380/tcp # TIA/EIA/IS-99 modem server -is99s 380/udp # TIA/EIA/IS-99 modem server -hp-collector 381/tcp # hp performance data collector -hp-collector 381/udp # hp performance data collector -hp-managed-node 382/tcp # hp performance data managed node -hp-managed-node 382/udp # hp performance data managed node -hp-alarm-mgr 383/tcp # hp performance data alarm manager -hp-alarm-mgr 383/udp # hp performance data alarm manager -arns 384/tcp # A Remote Network Server System -arns 384/udp # A Remote Network Server System -ibm-app 385/tcp # IBM Application -ibm-app 385/udp # IBM Application -asa 386/tcp # ASA Message Router Object Def. -asa 386/udp # ASA Message Router Object Def. -aurp 387/tcp # Appletalk Update-Based Routing Pro. -aurp 387/udp # Appletalk Update-Based Routing Pro. -unidata-ldm 388/tcp # Unidata LDM -unidata-ldm 388/udp # Unidata LDM -uis 390/tcp # UIS -uis 390/udp # UIS -synotics-relay 391/tcp # SynOptics SNMP Relay Port -synotics-relay 391/udp # SynOptics SNMP Relay Port -synotics-broker 392/tcp # SynOptics Port Broker Port -synotics-broker 392/udp # SynOptics Port Broker Port -meta5 393/tcp # Meta5 -meta5 393/udp # Meta5 -embl-ndt 394/tcp # EMBL Nucleic Data Transfer -embl-ndt 394/udp # EMBL Nucleic Data Transfer -netcp 395/tcp # NETscout Control Protocol -netcp 395/udp # NETscout Control Protocol -netware-ip 396/tcp # Novell Netware over IP -netware-ip 396/udp # Novell Netware over IP -mptn 397/tcp # Multi Protocol Trans. Net. -mptn 397/udp # Multi Protocol Trans. Net. -kryptolan 398/tcp # Kryptolan -kryptolan 398/udp # Kryptolan -iso-tsap-c2 399/tcp # ISO Transport Class 2 Non-Control over TCP -iso-tsap-c2 399/udp # ISO Transport Class 2 Non-Control over UDP -ups 401/tcp # Uninterruptible Power Supply -ups 401/udp # Uninterruptible Power Supply -genie 402/tcp # Genie Protocol -genie 402/udp # Genie Protocol -decap 403/tcp # decap -decap 403/udp # decap -nced 404/tcp # nced -nced 404/udp # nced -ncld 405/tcp # ncld -ncld 405/udp # ncld -imsp 406/tcp # Interactive Mail Support Protocol -imsp 406/udp # Interactive Mail Support Protocol -timbuktu 407/tcp # Timbuktu -timbuktu 407/udp # Timbuktu -prm-sm 408/tcp # Prospero Resource Manager Sys. Man. -prm-sm 408/udp # Prospero Resource Manager Sys. Man. -prm-nm 409/tcp # Prospero Resource Manager Node Man. -prm-nm 409/udp # Prospero Resource Manager Node Man. -decladebug 410/tcp # DECLadebug Remote Debug Protocol -decladebug 410/udp # DECLadebug Remote Debug Protocol -rmt 411/tcp # Remote MT Protocol -rmt 411/udp # Remote MT Protocol -synoptics-trap 412/tcp # Trap Convention Port -synoptics-trap 412/udp # Trap Convention Port -smsp 413/tcp # Storage Management Services Protocol -smsp 413/udp # Storage Management Services Protocol -infoseek 414/tcp # InfoSeek -infoseek 414/udp # InfoSeek -bnet 415/tcp # BNet -bnet 415/udp # BNet -silverplatter 416/tcp # Silverplatter -silverplatter 416/udp # Silverplatter -onmux 417/tcp # Onmux -onmux 417/udp # Onmux -hyper-g 418/tcp # Hyper-G -hyper-g 418/udp # Hyper-G -ariel1 419/tcp # Ariel 1 -ariel1 419/udp # Ariel 1 -smpte 420/tcp # SMPTE -smpte 420/udp # SMPTE -ariel2 421/tcp # Ariel 2 -ariel2 421/udp # Ariel 2 -ariel3 422/tcp # Ariel 3 -ariel3 422/udp # Ariel 3 -opc-job-start 423/tcp # IBM Operations Planning and Control Start -opc-job-start 423/udp # IBM Operations Planning and Control Start -opc-job-track 424/tcp # IBM Operations Planning and Control Track -opc-job-track 424/udp # IBM Operations Planning and Control Track -icad-el 425/tcp # ICAD -icad-el 425/udp # ICAD -smartsdp 426/tcp # smartsdp -smartsdp 426/udp # smartsdp -ocs_cmu 428/tcp # OCS_CMU -ocs_cmu 428/udp # OCS_CMU -ocs_amu 429/tcp # OCS_AMU -ocs_amu 429/udp # OCS_AMU -utmpsd 430/tcp # UTMPSD -utmpsd 430/udp # UTMPSD -utmpcd 431/tcp # UTMPCD -utmpcd 431/udp # UTMPCD -iasd 432/tcp # IASD -iasd 432/udp # IASD -nnsp 433/tcp # NNSP -nnsp 433/udp # NNSP -dna-cml 436/tcp # DNA-CML -dna-cml 436/udp # DNA-CML -comscm 437/tcp # comscm -comscm 437/udp # comscm -dsfgw 438/tcp # dsfgw -dsfgw 438/udp # dsfgw -dasp 439/tcp # dasp Thomas Obermair -dasp 439/udp # dasp tommy&inlab.m.eunet.de -sgcp 440/tcp # sgcp -sgcp 440/udp # sgcp -decvms-sysmgt 441/tcp # decvms-sysmgt -decvms-sysmgt 441/udp # decvms-sysmgt -cvc_hostd 442/tcp # cvc_hostd -cvc_hostd 442/udp # cvc_hostd -ddm-rdb 446/tcp # DDM-Remote Relational Database Access -ddm-rdb 446/udp # DDM-Remote Relational Database Access -ddm-dfm 447/tcp # DDM-Distributed File Management -ddm-dfm 447/udp # DDM-Distributed File Management -ddm-ssl 448/tcp # DDM-Remote DB Access Using Secure Sockets -ddm-ssl 448/udp # DDM-Remote DB Access Using Secure Sockets -as-servermap 449/tcp # AS Server Mapper -as-servermap 449/udp # AS Server Mapper -tserver 450/tcp # Computer Supported Telecomunication Applications -tserver 450/udp # Computer Supported Telecomunication Applications -sfs-smp-net 451/tcp # Cray Network Semaphore server -sfs-smp-net 451/udp # Cray Network Semaphore server -sfs-config 452/tcp # Cray SFS config server -sfs-config 452/udp # Cray SFS config server -creativeserver 453/tcp # CreativeServer -creativeserver 453/udp # CreativeServer -contentserver 454/tcp # ContentServer -contentserver 454/udp # ContentServer -creativepartnr 455/tcp # CreativePartnr -creativepartnr 455/udp # CreativePartnr -macon-tcp 456/tcp # macon-tcp -macon-udp 456/udp # macon-udp -scohelp 457/tcp # scohelp -scohelp 457/udp # scohelp -appleqtc 458/tcp # apple quick time -appleqtc 458/udp # apple quick time -ampr-rcmd 459/tcp # ampr-rcmd -ampr-rcmd 459/udp # ampr-rcmd -skronk 460/tcp # skronk -skronk 460/udp # skronk -datasurfsrv 461/tcp # DataRampSrv -datasurfsrv 461/udp # DataRampSrv -datasurfsrvsec 462/tcp # DataRampSrvSec -datasurfsrvsec 462/udp # DataRampSrvSec -alpes 463/tcp # alpes -alpes 463/udp # alpes -urd 465/tcp smtps # URL Rendesvous Directory for SSM / SMTP over SSL (TLS) -igmpv3lite 465/udp # IGMP over UDP for SSM -digital-vrc 466/tcp # digital-vrc -digital-vrc 466/udp # digital-vrc -mylex-mapd 467/tcp # mylex-mapd -mylex-mapd 467/udp # mylex-mapd -rcp 469/tcp # Radio Control Protocol -rcp 469/udp # Radio Control Protocol -scx-proxy 470/tcp # scx-proxy -scx-proxy 470/udp # scx-proxy -mondex 471/tcp # Mondex -mondex 471/udp # Mondex -ljk-login 472/tcp # ljk-login -ljk-login 472/udp # ljk-login -hybrid-pop 473/tcp # hybrid-pop -hybrid-pop 473/udp # hybrid-pop -tn-tl-w1 474/tcp # tn-tl-w1 -tn-tl-w2 474/udp # tn-tl-w2 -tcpnethaspsrv 475/tcp # tcpnethaspsrv -tcpnethaspsrv 475/udp # tcpnethaspsrv -tn-tl-fd1 476/tcp # tn-tl-fd1 -tn-tl-fd1 476/udp # tn-tl-fd1 -ss7ns 477/tcp # ss7ns -ss7ns 477/udp # ss7ns -spsc 478/tcp # spsc -spsc 478/udp # spsc -iafserver 479/tcp # iafserver -iafserver 479/udp # iafserver -iafdbase 480/tcp # iafdbase -iafdbase 480/udp # iafdbase -ph 481/tcp # Ph service -ph 481/udp # Ph service -bgs-nsi 482/tcp # bgs-nsi -bgs-nsi 482/udp # bgs-nsi -ulpnet 483/tcp # ulpnet -ulpnet 483/udp # ulpnet -integra-sme 484/tcp # Integra Software Management Environment -integra-sme 484/udp # Integra Software Management Environment -powerburst 485/tcp # Air Soft Power Burst -powerburst 485/udp # Air Soft Power Burst -avian 486/tcp # avian -avian 486/udp # avian -nest-protocol 489/tcp # nest-protocol -nest-protocol 489/udp # nest-protocol -micom-pfs 490/tcp # micom-pfs -micom-pfs 490/udp # micom-pfs -go-login 491/tcp # go-login -go-login 491/udp # go-login -ticf-1 492/tcp # Transport Independent Convergence for FNA -ticf-1 492/udp # Transport Independent Convergence for FNA -ticf-2 493/tcp # Transport Independent Convergence for FNA -ticf-2 493/udp # Transport Independent Convergence for FNA -pov-ray 494/tcp # POV-Ray -pov-ray 494/udp # POV-Ray -intecourier 495/tcp # intecourier -intecourier 495/udp # intecourier -dantz 497/tcp # dantz -dantz 497/udp # dantz -siam 498/tcp # siam -siam 498/udp # siam -iso-ill 499/tcp # ISO ILL Protocol -iso-ill 499/udp # ISO ILL Protocol -stmf 501/tcp # STMF -stmf 501/udp # STMF -asa-appl-proto 502/tcp # asa-appl-proto -asa-appl-proto 502/udp # asa-appl-proto -intrinsa 503/tcp # Intrinsa -intrinsa 503/udp # Intrinsa -citadel 504/tcp # citadel -citadel 504/udp # citadel -mailbox-lm 505/tcp # mailbox-lm -mailbox-lm 505/udp # mailbox-lm -ohimsrv 506/tcp # ohimsrv -ohimsrv 506/udp # ohimsrv -crs 507/tcp # crs -crs 507/udp # crs -xvttp 508/tcp # xvttp -xvttp 508/udp # xvttp -snare 509/tcp # snare -snare 509/udp # snare -fcp 510/tcp # FirstClass Protocol -fcp 510/udp # FirstClass Protocol -passgo 511/tcp # PassGo -passgo 511/udp # PassGo -videotex 516/tcp # videotex -videotex 516/udp # videotex -talk 517/tcp # like tenex link, but across -ntalk 518/tcp # -ulp 522/tcp # ULP -ulp 522/udp # ULP -ibm-db2 523/tcp # IBM-DB2 -ibm-db2 523/udp # IBM-DB2 -ncp 524/tcp # NCP -ncp 524/udp # NCP -tempo 526/udp # newdate -stx 527/tcp # Stock IXChange -stx 527/udp # Stock IXChange -custix 528/tcp # Customer IXChange -custix 528/udp # Customer IXChange -irc-serv 529/tcp # IRC-SERV -irc-serv 529/udp # IRC-SERV -courier 530/udp # rpc -conference 531/udp # chat -netnews 532/udp # readnews -netwall 533/tcp # for emergency broadcasts -windream 534/tcp # windream Admin -windream 534/udp # windream Admin -opalis-rdv 536/tcp # opalis-rdv -opalis-rdv 536/udp # opalis-rdv -nmsp 537/tcp # Networked Media Streaming Protocol -nmsp 537/udp # Networked Media Streaming Protocol -apertus-ldp 539/tcp # Apertus Technologies Load Determination -apertus-ldp 539/udp # Apertus Technologies Load Determination -uucp 540/udp # uucpd -uucp-rlogin 541/tcp # uucp-rlogin -uucp-rlogin 541/udp # uucp-rlogin -commerce 542/tcp # commerce -commerce 542/udp # commerce -klogin 543/udp # -kshell 544/udp # krcmd -appleqtcsrvr 545/tcp # appleqtcsrvr -appleqtcsrvr 545/udp # appleqtcsrvr -idfp 549/tcp # IDFP -idfp 549/udp # IDFP -new-rwho 550/tcp # new-who -new-rwho 550/udp # new-who -cybercash 551/tcp # cybercash -cybercash 551/udp # cybercash -devshr-nts 552/tcp # DeviceShare -devshr-nts 552/udp # DeviceShare -pirp 553/tcp # pirp -pirp 553/udp # pirp -dsf 555/tcp # -dsf 555/udp # -remotefs 556/udp # rfs server -openvms-sysipc 557/tcp # openvms-sysipc -openvms-sysipc 557/udp # openvms-sysipc -sdnskmp 558/tcp # SDNSKMP -sdnskmp 558/udp # SDNSKMP -teedtap 559/tcp # TEEDTAP -teedtap 559/udp # TEEDTAP -rmonitor 560/tcp # rmonitord -rmonitor 560/udp # rmonitord -monitor 561/tcp # -monitor 561/udp # -chshell 562/tcp # chcmd -chshell 562/udp # chcmd -9pfs 564/tcp # plan 9 file service -9pfs 564/udp # plan 9 file service -streettalk 566/tcp # streettalk -streettalk 566/udp # streettalk -banyan-rpc 567/tcp # banyan-rpc -banyan-rpc 567/udp # banyan-rpc -ms-shuttle 568/tcp # microsoft shuttle -ms-shuttle 568/udp # microsoft shuttle -ms-rome 569/tcp # microsoft rome -ms-rome 569/udp # microsoft rome -meter 570/tcp # demon -meter 570/udp # demon -#meter 571/tcp # udemon -#meter 571/udp # udemon -sonar 572/tcp # sonar -sonar 572/udp # sonar -banyan-vip 573/tcp # banyan-vip -banyan-vip 573/udp # banyan-vip -ftp-agent 574/tcp # FTP Software Agent System -ftp-agent 574/udp # FTP Software Agent System -vemmi 575/tcp # VEMMI -vemmi 575/udp # VEMMI -ipcd 576/tcp # ipcd -ipcd 576/udp # ipcd -vnas 577/tcp # vnas -vnas 577/udp # vnas -ipdd 578/tcp # ipdd -ipdd 578/udp # ipdd -decbsrv 579/tcp # decbsrv -decbsrv 579/udp # decbsrv -sntp-heartbeat 580/tcp # SNTP HEARTBEAT -sntp-heartbeat 580/udp # SNTP HEARTBEAT -bdp 581/tcp # Bundle Discovery Protocol -bdp 581/udp # Bundle Discovery Protocol -scc-security 582/tcp # SCC Security -scc-security 582/udp # SCC Security -philips-vc 583/tcp # Philips Video-Conferencing -philips-vc 583/udp # Philips Video-Conferencing -keyserver 584/tcp # Key Server -keyserver 584/udp # Key Server -password-chg 586/tcp # Password Change -password-chg 586/udp # Password Change -cal 588/tcp # CAL -cal 588/udp # CAL -eyelink 589/tcp # EyeLink -eyelink 589/udp # EyeLink -tns-cml 590/tcp # TNS CML -tns-cml 590/udp # TNS CML -eudora-set 592/tcp # Eudora Set -eudora-set 592/udp # Eudora Set -http-rpc-epmap 593/tcp # HTTP RPC Ep Map -http-rpc-epmap 593/udp # HTTP RPC Ep Map -tpip 594/tcp # TPIP -tpip 594/udp # TPIP -cab-protocol 595/tcp # CAB Protocol -cab-protocol 595/udp # CAB Protocol -smsd 596/tcp # SMSD -smsd 596/udp # SMSD -ptcnameservice 597/tcp # PTC Name Service -ptcnameservice 597/udp # PTC Name Service -sco-websrvrmg3 598/tcp # SCO Web Server Manager 3 -sco-websrvrmg3 598/udp # SCO Web Server Manager 3 -acp 599/tcp # Aeolon Core Protocol -acp 599/udp # Aeolon Core Protocol -ipcserver 600/tcp # Sun IPC server -ipcserver 600/udp # Sun IPC server -syslog-conn 601/tcp # Reliable Syslog Service -syslog-conn 601/udp # Reliable Syslog Service -xmlrpc-beep 602/tcp # XML-RPC over BEEP -xmlrpc-beep 602/udp # XML-RPC over BEEP -idxp 603/tcp # IDXP -idxp 603/udp # IDXP -tunnel 604/tcp # TUNNEL -tunnel 604/udp # TUNNEL -soap-beep 605/tcp # SOAP over BEEP -soap-beep 605/udp # SOAP over BEEP -urm 606/tcp # Cray Unified Resource Manager -urm 606/udp # Cray Unified Resource Manager -nqs 607/tcp # nqs -nqs 607/udp # nqs -sift-uft 608/tcp # Sender-Initiated/Unsolicited File Transfer -sift-uft 608/udp # Sender-Initiated/Unsolicited File Transfer -npmp-trap 609/tcp # npmp-trap -npmp-trap 609/udp # npmp-trap -hmmp-op 613/tcp # HMMP Operation -hmmp-op 613/udp # HMMP Operation -sshell 614/tcp # SSLshell -sshell 614/udp # SSLshell -sco-inetmgr 615/tcp # Internet Configuration Manager -sco-inetmgr 615/udp # Internet Configuration Manager -sco-sysmgr 616/tcp gii # SCO System Administration Server -sco-sysmgr 616/udp # SCO System Administration Server -sco-dtmgr 617/tcp # SCO Desktop Administration Server -sco-dtmgr 617/udp # SCO Desktop Administration Server -dei-icda 618/tcp # DEI-ICDA -dei-icda 618/udp # DEI-ICDA -compaq-evm 619/tcp # Compaq EVM -compaq-evm 619/udp # Compaq EVM -sco-websrvrmgr 620/tcp # SCO WebServer Manager -sco-websrvrmgr 620/udp # SCO WebServer Manager -escp-ip 621/tcp # ESCP -escp-ip 621/udp # ESCP -collaborator 622/tcp # Collaborator -collaborator 622/udp # Collaborator -oob-ws-http 623/tcp # DMTF out-of-band web services management protocol -asf-rmcp 623/udp # ASF Remote Management and Control Protocol -cryptoadmin 624/tcp # Crypto Admin -cryptoadmin 624/udp # Crypto Admin -dec_dlm 625/tcp # DEC DLM -dec_dlm 625/udp # DEC DLM -asia 626/tcp # ASIA -asia 626/udp # ASIA -passgo-tivoli 627/tcp # PassGo Tivoli -passgo-tivoli 627/udp # PassGo Tivoli -qmqp 628/tcp # QMQP -qmqp 628/udp # QMQP -3com-amp3 629/tcp # 3Com AMP3 -3com-amp3 629/udp # 3Com AMP3 -rda 630/tcp # RDA -rda 630/udp # RDA -bmpp 632/tcp # bmpp -bmpp 632/udp # bmpp -servstat 633/tcp # Service Status update (Sterling Software) -servstat 633/udp # Service Status update (Sterling Software) -ginad 634/tcp # ginad -ginad 634/udp # ginad -rlzdbase 635/tcp # RLZ DBase -rlzdbase 635/udp # RLZ DBase -lanserver 637/tcp # lanserver -lanserver 637/udp # lanserver -mcns-sec 638/tcp # mcns-sec -mcns-sec 638/udp # mcns-sec -msdp 639/tcp # MSDP -msdp 639/udp # MSDP -entrust-sps 640/tcp # entrust-sps -entrust-sps 640/udp # entrust-sps -repcmd 641/tcp # repcmd -repcmd 641/udp # repcmd -esro-emsdp 642/tcp # ESRO-EMSDP V1.3 -esro-emsdp 642/udp # ESRO-EMSDP V1.3 -sanity 643/tcp # SANity -sanity 643/udp # SANity -dwr 644/tcp # dwr -dwr 644/udp # dwr -pssc 645/tcp # PSSC -pssc 645/udp # PSSC -ldp 646/tcp # LDP -ldp 646/udp # LDP -dhcp-failover 647/tcp # DHCP Failover -dhcp-failover 647/udp # DHCP Failover -rrp 648/tcp # Registry Registrar Protocol (RRP) -rrp 648/udp # Registry Registrar Protocol (RRP) -cadview-3d 649/tcp # Cadview-3d - streaming 3d models over the internet -cadview-3d 649/udp # Cadview-3d - streaming 3d models over the internet -obex 650/tcp # OBEX -obex 650/udp # OBEX -ieee-mms 651/tcp # IEEE MMS -ieee-mms 651/udp # IEEE MMS -hello-port 652/tcp # HELLO_PORT -hello-port 652/udp # HELLO_PORT -repscmd 653/tcp # RepCmd -repscmd 653/udp # RepCmd -aodv 654/tcp # AODV -aodv 654/udp # AODV -tinc 655/tcp # TINC -tinc 655/udp # TINC -spmp 656/tcp # SPMP -spmp 656/udp # SPMP -rmc 657/tcp # RMC -rmc 657/udp # RMC -tenfold 658/tcp # TenFold -tenfold 658/udp # TenFold -mac-srvr-admin 660/tcp # MacOS Server Admin -mac-srvr-admin 660/udp # MacOS Server Admin -hap 661/tcp # HAP -hap 661/udp # HAP -pftp 662/tcp # PFTP -pftp 662/udp # PFTP -purenoise 663/tcp # PureNoise -purenoise 663/udp # PureNoise -oob-ws-https 664/tcp # DMTF out-of-band secure web services management protocol -asf-secure-rmcp 664/udp # ASF Secure Remote Management and Control Protocol -sun-dr 665/tcp # Sun DR -sun-dr 665/udp # Sun DR -mdqs 666/tcp doom # doom Id Software -mdqs 666/udp doom # doom Id Software -disclose 667/tcp # campaign contribution disclosures - SDR Technologies -disclose 667/udp # campaign contribution disclosures - SDR Technologies -mecomm 668/tcp # MeComm -mecomm 668/udp # MeComm -meregister 669/tcp # MeRegister -meregister 669/udp # MeRegister -vacdsm-sws 670/tcp # VACDSM-SWS -vacdsm-sws 670/udp # VACDSM-SWS -vacdsm-app 671/tcp # VACDSM-APP -vacdsm-app 671/udp # VACDSM-APP -vpps-qua 672/tcp # VPPS-QUA -vpps-qua 672/udp # VPPS-QUA -cimplex 673/tcp # CIMPLEX -cimplex 673/udp # CIMPLEX -dctp 675/tcp # DCTP -dctp 675/udp # DCTP -vpps-via 676/tcp # VPPS Via -vpps-via 676/udp # VPPS Via -vpp 677/tcp # Virtual Presence Protocol -vpp 677/udp # Virtual Presence Protocol -ggf-ncp 678/tcp # GNU Generation Foundation NCP -ggf-ncp 678/udp # GNU Generation Foundation NCP -mrm 679/tcp # MRM -mrm 679/udp # MRM -entrust-aaas 680/tcp # entrust-aaas -entrust-aaas 680/udp # entrust-aaas -entrust-aams 681/tcp # entrust-aams -entrust-aams 681/udp # entrust-aams -xfr 682/tcp # XFR -xfr 682/udp # XFR -corba-iiop 683/tcp # CORBA IIOP -corba-iiop 683/udp # CORBA IIOP -corba-iiop-ssl 684/tcp # CORBA IIOP SSL -corba-iiop-ssl 684/udp # CORBA IIOP SSL -mdc-portmapper 685/tcp # MDC Port Mapper -mdc-portmapper 685/udp # MDC Port Mapper -hcp-wismar 686/tcp # Hardware Control Protocol Wismar -hcp-wismar 686/udp # Hardware Control Protocol Wismar -asipregistry 687/tcp # asipregistry -asipregistry 687/udp # asipregistry -realm-rusd 688/tcp # ApplianceWare managment protocol -realm-rusd 688/udp # ApplianceWare managment protocol -nmap 689/tcp # NMAP -nmap 689/udp # NMAP -vatp 690/tcp # Velazquez Application Transfer Protocol -vatp 690/udp # Velazquez Application Transfer Protocol -msexch-routing 691/tcp # MS Exchange Routing -msexch-routing 691/udp # MS Exchange Routing -hyperwave-isp 692/tcp # Hyperwave-ISP -hyperwave-isp 692/udp # Hyperwave-ISP -connendp 693/tcp # almanid Connection Endpoint -connendp 693/udp # almanid Connection Endpoint -ieee-mms-ssl 695/tcp # IEEE-MMS-SSL -ieee-mms-ssl 695/udp # IEEE-MMS-SSL -rushd 696/tcp # RUSHD -rushd 696/udp # RUSHD -uuidgen 697/tcp # UUIDGEN -uuidgen 697/udp # UUIDGEN -olsr 698/tcp # OLSR -olsr 698/udp # OLSR -accessnetwork 699/tcp # Access Network -accessnetwork 699/udp # Access Network -epp 700/tcp # Extensible Provisioning Protocol -epp 700/udp # Extensible Provisioning Protocol -lmp 701/tcp # Link Management Protocol (LMP) -lmp 701/udp # Link Management Protocol (LMP) -iris-beep 702/tcp # IRIS over BEEP -iris-beep 702/udp # IRIS over BEEP -elcsd 704/tcp # errlog copy/server daemon -elcsd 704/udp # errlog copy/server daemon -agentx 705/tcp # AgentX -agentx 705/udp # AgentX -silc 706/tcp # SILC -silc 706/udp # SILC -borland-dsj 707/tcp # Borland DSJ -borland-dsj 707/udp # Borland DSJ -entrust-kmsh 709/tcp # Entrust Key Management Service Handler -entrust-kmsh 709/udp # Entrust Key Management Service Handler -entrust-ash 710/tcp # Entrust Administration Service Handler -entrust-ash 710/udp # Entrust Administration Service Handler -cisco-tdp 711/tcp # Cisco TDP -cisco-tdp 711/udp # Cisco TDP -tbrpf 712/tcp # TBRPF -tbrpf 712/udp # TBRPF -iris-xpc 713/tcp # IRIS over XPC -iris-xpc 713/udp # IRIS over XPC -iris-xpcs 714/tcp # IRIS over XPCS -iris-xpcs 714/udp # IRIS over XPCS -iris-lwz 715/tcp # IRIS-LWZ -iris-lwz 715/udp # IRIS-LWZ -pana 716/udp # PANA Messages -netviewdm1 729/tcp # IBM NetView DM/6000 Server/Client -netviewdm1 729/udp # IBM NetView DM/6000 Server/Client -netviewdm2 730/tcp # IBM NetView DM/6000 send/tcp -netviewdm2 730/udp # IBM NetView DM/6000 send/tcp -netviewdm3 731/tcp # IBM NetView DM/6000 receive/tcp -netviewdm3 731/udp # IBM NetView DM/6000 receive/tcp -netgw 741/tcp # netGW -netgw 741/udp # netGW -netrcs 742/tcp # Network based Rev. Cont. Sys. -netrcs 742/udp # Network based Rev. Cont. Sys. -flexlm 744/tcp # Flexible License Manager -flexlm 744/udp # Flexible License Manager -fujitsu-dev 747/tcp # Fujitsu Device Control -fujitsu-dev 747/udp # Fujitsu Device Control -ris-cm 748/tcp # Russell Info Sci Calendar Manager -ris-cm 748/udp # Russell Info Sci Calendar Manager -qrh 752/tcp # -rrh 753/tcp # -rrh 753/udp # -tell 754/udp # send -nlogin 758/tcp # -nlogin 758/udp # -con 759/tcp # -con 759/udp # -ns 760/udp # -rxe 761/tcp # -rxe 761/udp # -quotad 762/tcp # -quotad 762/udp # -cycleserv 763/tcp # -cycleserv 763/udp # -omserv 764/tcp # -omserv 764/udp # -vid 769/tcp # -vid 769/udp # -cadlock 770/tcp # -cadlock 770/udp # -rtip 771/tcp # -rtip 771/udp # -cycleserv2 772/tcp # -cycleserv2 772/udp # -submit 773/tcp # -notify 773/udp # -rpasswd 774/tcp # -acmaint_dbd 774/udp # -entomb 775/tcp # -acmaint_transd 775/udp # -wpages 776/tcp # -wpages 776/udp # -multiling-http 777/tcp # Multiling HTTP -multiling-http 777/udp # Multiling HTTP -wpgs 780/tcp # -wpgs 780/udp # -mdbs_daemon 800/tcp # -mdbs_daemon 800/udp # -device 801/tcp # -device 801/udp # -fcp-udp 810/tcp # FCP -fcp-udp 810/udp # FCP Datagram -itm-mcell-s 828/tcp # itm-mcell-s -itm-mcell-s 828/udp # itm-mcell-s -pkix-3-ca-ra 829/tcp # PKIX-3 CA/RA -pkix-3-ca-ra 829/udp # PKIX-3 CA/RA -netconf-ssh 830/tcp # NETCONF over SSH -netconf-ssh 830/udp # NETCONF over SSH -netconf-beep 831/tcp # NETCONF over BEEP -netconf-beep 831/udp # NETCONF over BEEP -netconfsoaphttp 832/tcp # NETCONF for SOAP over HTTPS -netconfsoaphttp 832/udp # NETCONF for SOAP over HTTPS -netconfsoapbeep 833/tcp # NETCONF for SOAP over BEEP -netconfsoapbeep 833/udp # NETCONF for SOAP over BEEP -dhcp-failover2 847/tcp # dhcp-failover 2 -dhcp-failover2 847/udp # dhcp-failover 2 -gdoi 848/tcp # GDOI -gdoi 848/udp # GDOI -iscsi 860/tcp # iSCSI -iscsi 860/udp # iSCSI -owamp-control 861/tcp # OWAMP-Control -owamp-control 861/udp # OWAMP-Control -twamp-control 862/tcp # Two-way Active Measurement Protocol (TWAMP) Control -twamp-control 862/udp # Two-way Active Measurement Protocol (TWAMP) Control -iclcnet-locate 886/tcp # ICL coNETion locate server -iclcnet-locate 886/udp # ICL coNETion locate server -iclcnet_svinfo 887/tcp # ICL coNETion server info -iclcnet_svinfo 887/udp # ICL coNETion server info -#accessbuilder 888/tcp # AccessBuilder -#accessbuilder 888/udp # AccessBuilder -cddbp 888/tcp # CD Database Protocol -omginitialrefs 900/tcp # OMG Initial Refs -omginitialrefs 900/udp # OMG Initial Refs -smpnameres 901/udp # SMPNAMERES -ideafarm-door 902/tcp # self documenting Telnet Door -ideafarm-door 902/udp # self documenting Door: send 0x00 for info -ideafarm-panic 903/tcp # self documenting Telnet Panic Door -ideafarm-panic 903/udp # self documenting Panic Door: send 0x00 for info -kink 910/tcp # Kerberized Internet Negotiation of Keys (KINK) -kink 910/udp # Kerberized Internet Negotiation of Keys (KINK) -xact-backup 911/tcp # xact-backup -xact-backup 911/udp # xact-backup -apex-mesh 912/tcp # APEX relay-relay service -apex-mesh 912/udp # APEX relay-relay service -apex-edge 913/tcp # APEX endpoint-relay service -apex-edge 913/udp # APEX endpoint-relay service -ftps-data 989/tcp # ftp protocol, data, over TLS/SSL -ftps-data 989/udp # ftp protocol, data, over TLS/SSL -ftps 990/tcp # ftp protocol, control, over TLS/SSL -ftps 990/udp # ftp protocol, control, over TLS/SSL -nas 991/tcp # Netnews Administration System -nas 991/udp # Netnews Administration System -vsinet 996/tcp # vsinet -vsinet 996/udp # vsinet -maitrd 997/tcp # -maitrd 997/udp # -busboy 998/tcp # -puparp 998/udp # -garcon 999/tcp # -applix 999/udp # Applix ac -#puprouter 999/tcp # -#puprouter 999/udp # -cadlock2 1000/tcp # -cadlock2 1000/udp # -surf 1010/tcp # surf -surf 1010/udp # surf -exp1 1021/tcp # RFC3692-style Experiment 1 (*) [RFC4727] -exp1 1021/udp # RFC3692-style Experiment 1 (*) [RFC4727] -exp2 1022/tcp # RFC3692-style Experiment 2 (*) [RFC4727] -exp2 1022/udp # RFC3692-style Experiment 2 (*) [RFC4727] -blackjack 1025/tcp # network blackjack -blackjack 1025/udp # network blackjack -cap 1026/tcp # Calendar Access Protocol -cap 1026/udp # Calendar Access Protocol -solid-mux 1029/tcp # Solid Mux Server -solid-mux 1029/udp # Solid Mux Server -iad1 1030/tcp # BBN IAD -iad1 1030/udp # BBN IAD -iad2 1031/tcp # BBN IAD -iad2 1031/udp # BBN IAD -iad3 1032/tcp # BBN IAD -iad3 1032/udp # BBN IAD -netinfo-local 1033/tcp # local netinfo port -netinfo-local 1033/udp # local netinfo port -activesync 1034/tcp # ActiveSync Notifications -activesync 1034/udp # ActiveSync Notifications -mxxrlogin 1035/tcp # MX-XR RPC -mxxrlogin 1035/udp # MX-XR RPC -nsstp 1036/tcp # Nebula Secure Segment Transfer Protocol -nsstp 1036/udp # Nebula Secure Segment Transfer Protocol -ams 1037/tcp # AMS -ams 1037/udp # AMS -mtqp 1038/tcp # Message Tracking Query Protocol -mtqp 1038/udp # Message Tracking Query Protocol -sbl 1039/tcp # Streamlined Blackhole -sbl 1039/udp # Streamlined Blackhole -netarx 1040/tcp # Netarx Netcare -netarx 1040/udp # Netarx Netcare -danf-ak2 1041/tcp # AK2 Product -danf-ak2 1041/udp # AK2 Product -afrog 1042/tcp # Subnet Roaming -afrog 1042/udp # Subnet Roaming -boinc-client 1043/tcp # BOINC Client Control -boinc-client 1043/udp # BOINC Client Control -dcutility 1044/tcp # Dev Consortium Utility -dcutility 1044/udp # Dev Consortium Utility -fpitp 1045/tcp # Fingerprint Image Transfer Protocol -fpitp 1045/udp # Fingerprint Image Transfer Protocol -wfremotertm 1046/tcp # WebFilter Remote Monitor -wfremotertm 1046/udp # WebFilter Remote Monitor -neod1 1047/tcp # Sun's NEO Object Request Broker -neod1 1047/udp # Sun's NEO Object Request Broker -neod2 1048/tcp # Sun's NEO Object Request Broker -neod2 1048/udp # Sun's NEO Object Request Broker -td-postman 1049/tcp # Tobit David Postman VPMN -td-postman 1049/udp # Tobit David Postman VPMN -cma 1050/tcp # CORBA Management Agent -cma 1050/udp # CORBA Management Agent -optima-vnet 1051/tcp # Optima VNET -optima-vnet 1051/udp # Optima VNET -ddt 1052/tcp # Dynamic DNS Tools -ddt 1052/udp # Dynamic DNS Tools -remote-as 1053/tcp # Remote Assistant (RA) -remote-as 1053/udp # Remote Assistant (RA) -brvread 1054/tcp # BRVREAD -brvread 1054/udp # BRVREAD -ansyslmd 1055/tcp # ANSYS - License Manager -ansyslmd 1055/udp # ANSYS - License Manager -vfo 1056/tcp # VFO -vfo 1056/udp # VFO -startron 1057/tcp # STARTRON -startron 1057/udp # STARTRON -nim 1058/tcp # nim -nim 1058/udp # nim -nimreg 1059/tcp # nimreg -nimreg 1059/udp # nimreg -polestar 1060/tcp # POLESTAR -polestar 1060/udp # POLESTAR -kiosk 1061/tcp # KIOSK -kiosk 1061/udp # KIOSK -veracity 1062/tcp # Veracity -veracity 1062/udp # Veracity -kyoceranetdev 1063/tcp # KyoceraNetDev -kyoceranetdev 1063/udp # KyoceraNetDev -jstel 1064/tcp # JSTEL -jstel 1064/udp # JSTEL -syscomlan 1065/tcp # SYSCOMLAN -syscomlan 1065/udp # SYSCOMLAN -fpo-fns 1066/tcp # FPO-FNS -fpo-fns 1066/udp # FPO-FNS -instl_boots 1067/tcp # Installation Bootstrap Proto. Serv. -instl_boots 1067/udp # Installation Bootstrap Proto. Serv. -instl_bootc 1068/tcp # Installation Bootstrap Proto. Cli. -instl_bootc 1068/udp # Installation Bootstrap Proto. Cli. -cognex-insight 1069/tcp # COGNEX-INSIGHT -cognex-insight 1069/udp # COGNEX-INSIGHT -gmrupdateserv 1070/tcp # GMRUpdateSERV -gmrupdateserv 1070/udp # GMRUpdateSERV -bsquare-voip 1071/tcp # BSQUARE-VOIP -bsquare-voip 1071/udp # BSQUARE-VOIP -cardax 1072/tcp # CARDAX -cardax 1072/udp # CARDAX -bridgecontrol 1073/tcp # Bridge Control -bridgecontrol 1073/udp # Bridge Control -warmspotMgmt 1074/tcp # Warmspot Management Protocol -warmspotMgmt 1074/udp # Warmspot Management Protocol -rdrmshc 1075/tcp # RDRMSHC -rdrmshc 1075/udp # RDRMSHC -dab-sti-c 1076/tcp # DAB STI-C -dab-sti-c 1076/udp # DAB STI-C -imgames 1077/tcp # IMGames -imgames 1077/udp # IMGames -avocent-proxy 1078/tcp # Avocent Proxy Protocol -avocent-proxy 1078/udp # Avocent Proxy Protocol -asprovatalk 1079/tcp # ASPROVATalk -asprovatalk 1079/udp # ASPROVATalk -pvuniwien 1081/tcp # PVUNIWIEN -pvuniwien 1081/udp # PVUNIWIEN -amt-esd-prot 1082/tcp # AMT-ESD-PROT -amt-esd-prot 1082/udp # AMT-ESD-PROT -ansoft-lm-1 1083/tcp # Anasoft License Manager -ansoft-lm-1 1083/udp # Anasoft License Manager -ansoft-lm-2 1084/tcp # Anasoft License Manager -ansoft-lm-2 1084/udp # Anasoft License Manager -webobjects 1085/tcp # Web Objects -webobjects 1085/udp # Web Objects -cplscrambler-lg 1086/tcp # CPL Scrambler Logging -cplscrambler-lg 1086/udp # CPL Scrambler Logging -cplscrambler-in 1087/tcp # CPL Scrambler Internal -cplscrambler-in 1087/udp # CPL Scrambler Internal -cplscrambler-al 1088/tcp # CPL Scrambler Alarm Log -cplscrambler-al 1088/udp # CPL Scrambler Alarm Log -ff-annunc 1089/tcp # FF Annunciation -ff-annunc 1089/udp # FF Annunciation -ff-fms 1090/tcp # FF Fieldbus Message Specification -ff-fms 1090/udp # FF Fieldbus Message Specification -ff-sm 1091/tcp # FF System Management -ff-sm 1091/udp # FF System Management -obrpd 1092/tcp # Open Business Reporting Protocol -obrpd 1092/udp # Open Business Reporting Protocol -proofd 1093/tcp # PROOFD -proofd 1093/udp # PROOFD -rootd 1094/tcp # ROOTD -rootd 1094/udp # ROOTD -nicelink 1095/tcp # NICELink -nicelink 1095/udp # NICELink -cnrprotocol 1096/tcp # Common Name Resolution Protocol -cnrprotocol 1096/udp # Common Name Resolution Protocol -sunclustermgr 1097/tcp # Sun Cluster Manager -sunclustermgr 1097/udp # Sun Cluster Manager -rmiactivation 1098/tcp # RMI Activation -rmiactivation 1098/udp # RMI Activation -rmiregistry 1099/tcp # RMI Registry -rmiregistry 1099/udp # RMI Registry -mctp 1100/tcp # MCTP -mctp 1100/udp # MCTP -pt2-discover 1101/tcp # PT2-DISCOVER -pt2-discover 1101/udp # PT2-DISCOVER -adobeserver-1 1102/tcp # ADOBE SERVER 1 -adobeserver-1 1102/udp # ADOBE SERVER 1 -adobeserver-2 1103/tcp # ADOBE SERVER 2 -adobeserver-2 1103/udp # ADOBE SERVER 2 -xrl 1104/tcp # XRL -xrl 1104/udp # XRL -ftranhc 1105/tcp # FTRANHC -ftranhc 1105/udp # FTRANHC -isoipsigport-1 1106/tcp # ISOIPSIGPORT-1 -isoipsigport-1 1106/udp # ISOIPSIGPORT-1 -isoipsigport-2 1107/tcp # ISOIPSIGPORT-2 -isoipsigport-2 1107/udp # ISOIPSIGPORT-2 -ratio-adp 1108/tcp # ratio-adp -ratio-adp 1108/udp # ratio-adp -webadmstart 1110/tcp # Start web admin server -nfsd-keepalive 1110/udp # Client status info -lmsocialserver 1111/tcp # LM Social Server -lmsocialserver 1111/udp # LM Social Server -icp 1112/tcp # Intelligent Communication Protocol -icp 1112/udp # Intelligent Communication Protocol -ltp-deepspace 1113/tcp # Licklider Transmission Protocol -ltp-deepspace 1113/udp # Licklider Transmission Protocol -mini-sql 1114/tcp # Mini SQL -mini-sql 1114/udp # Mini SQL -ardus-trns 1115/tcp # ARDUS Transfer -ardus-trns 1115/udp # ARDUS Transfer -ardus-cntl 1116/tcp # ARDUS Control -ardus-cntl 1116/udp # ARDUS Control -ardus-mtrns 1117/tcp # ARDUS Multicast Transfer -ardus-mtrns 1117/udp # ARDUS Multicast Transfer -sacred 1118/tcp # SACRED -sacred 1118/udp # SACRED -bnetgame 1119/tcp # Battle.net Chat/Game Protocol -bnetgame 1119/udp # Battle.net Chat/Game Protocol -bnetfile 1120/tcp # Battle.net File Transfer Protocol -bnetfile 1120/udp # Battle.net File Transfer Protocol -rmpp 1121/tcp # Datalode RMPP -rmpp 1121/udp # Datalode RMPP -availant-mgr 1122/tcp # availant-mgr -availant-mgr 1122/udp # availant-mgr -murray 1123/tcp # Murray -murray 1123/udp # Murray -hpvmmcontrol 1124/tcp # HP VMM Control -hpvmmcontrol 1124/udp # HP VMM Control -hpvmmagent 1125/tcp # HP VMM Agent -hpvmmagent 1125/udp # HP VMM Agent -hpvmmdata 1126/tcp # HP VMM Agent -hpvmmdata 1126/udp # HP VMM Agent -kwdb-commn 1127/udp # KWDB Remote Communication -saphostctrl 1128/tcp # SAPHostControl over SOAP/HTTP -saphostctrl 1128/udp # SAPHostControl over SOAP/HTTP -saphostctrls 1129/tcp # SAPHostControl over SOAP/HTTPS -saphostctrls 1129/udp # SAPHostControl over SOAP/HTTPS -casp 1130/tcp # CAC App Service Protocol -casp 1130/udp # CAC App Service Protocol -caspssl 1131/tcp # CAC App Service Protocol Encripted -caspssl 1131/udp # CAC App Service Protocol Encripted -kvm-via-ip 1132/tcp # KVM-via-IP Management Service -kvm-via-ip 1132/udp # KVM-via-IP Management Service -dfn 1133/tcp # Data Flow Network -dfn 1133/udp # Data Flow Network -aplx 1134/tcp # MicroAPL APLX -aplx 1134/udp # MicroAPL APLX -omnivision 1135/tcp # OmniVision Communication Service -omnivision 1135/udp # OmniVision Communication Service -hhb-gateway 1136/tcp # HHB Gateway Control -hhb-gateway 1136/udp # HHB Gateway Control -trim 1137/tcp # TRIM Workgroup Service -trim 1137/udp # TRIM Workgroup Service -encrypted_admin 1138/tcp # encrypted admin requests -encrypted_admin 1138/udp # encrypted admin requests -evm 1139/tcp # Enterprise Virtual Manager -evm 1139/udp # Enterprise Virtual Manager -autonoc 1140/tcp # AutoNOC Network Operations Protocol -autonoc 1140/udp # AutoNOC Network Operations Protocol -mxomss 1141/tcp # User Message Service -mxomss 1141/udp # User Message Service -edtools 1142/tcp # User Discovery Service -edtools 1142/udp # User Discovery Service -imyx 1143/tcp # Infomatryx Exchange -imyx 1143/udp # Infomatryx Exchange -fuscript 1144/tcp # Fusion Script -fuscript 1144/udp # Fusion Script -x9-icue 1145/tcp # X9 iCue Show Control -x9-icue 1145/udp # X9 iCue Show Control -audit-transfer 1146/tcp # audit transfer -audit-transfer 1146/udp # audit transfer -capioverlan 1147/tcp # CAPIoverLAN -capioverlan 1147/udp # CAPIoverLAN -elfiq-repl 1148/tcp # Elfiq Replication Service -elfiq-repl 1148/udp # Elfiq Replication Service -bvtsonar 1149/tcp # BVT Sonar Service -bvtsonar 1149/udp # BVT Sonar Service -blaze 1150/tcp # Blaze File Server -blaze 1150/udp # Blaze File Server -unizensus 1151/tcp # Unizensus Login Server -unizensus 1151/udp # Unizensus Login Server -winpoplanmess 1152/tcp # Winpopup LAN Messenger -winpoplanmess 1152/udp # Winpopup LAN Messenger -c1222-acse 1153/tcp # ANSI C12.22 Port -c1222-acse 1153/udp # ANSI C12.22 Port -resacommunity 1154/tcp # Community Service -resacommunity 1154/udp # Community Service -nfa 1155/tcp # Network File Access -nfa 1155/udp # Network File Access -iascontrol-oms 1156/tcp # iasControl OMS -iascontrol-oms 1156/udp # iasControl OMS -iascontrol 1157/tcp # Oracle iASControl -iascontrol 1157/udp # Oracle iASControl -dbcontrol-oms 1158/tcp # dbControl OMS -dbcontrol-oms 1158/udp # dbControl OMS -oracle-oms 1159/tcp # Oracle OMS -oracle-oms 1159/udp # Oracle OMS -olsv 1160/tcp # DB Lite Mult-User Server -olsv 1160/udp # DB Lite Mult-User Server -health-polling 1161/tcp # Health Polling -health-polling 1161/udp # Health Polling -health-trap 1162/tcp # Health Trap -health-trap 1162/udp # Health Trap -sddp 1163/tcp # SmartDialer Data Protocol -sddp 1163/udp # SmartDialer Data Protocol -qsm-proxy 1164/tcp # QSM Proxy Service -qsm-proxy 1164/udp # QSM Proxy Service -qsm-gui 1165/tcp # QSM GUI Service -qsm-gui 1165/udp # QSM GUI Service -qsm-remote 1166/tcp # QSM RemoteExec -qsm-remote 1166/udp # QSM RemoteExec -cisco-ipsla 1167/tcp # Cisco IP SLAs Control Protocol -cisco-ipsla 1167/udp # Cisco IP SLAs Control Protocol -cisco-ipsla 1167/sctp # Cisco IP SLAs Control Protocol -vchat 1168/tcp # VChat Conference Service -vchat 1168/udp # VChat Conference Service -tripwire 1169/tcp # TRIPWIRE -tripwire 1169/udp # TRIPWIRE -atc-lm 1170/tcp # AT+C License Manager -atc-lm 1170/udp # AT+C License Manager -atc-appserver 1171/tcp # AT+C FmiApplicationServer -atc-appserver 1171/udp # AT+C FmiApplicationServer -dnap 1172/tcp # DNA Protocol -dnap 1172/udp # DNA Protocol -d-cinema-rrp 1173/tcp # D-Cinema Request-Response -d-cinema-rrp 1173/udp # D-Cinema Request-Response -fnet-remote-ui 1174/tcp # FlashNet Remote Admin -fnet-remote-ui 1174/udp # FlashNet Remote Admin -dossier 1175/tcp # Dossier Server -dossier 1175/udp # Dossier Server -indigo-server 1176/tcp # Indigo Home Server -indigo-server 1176/udp # Indigo Home Server -dkmessenger 1177/tcp # DKMessenger Protocol -dkmessenger 1177/udp # DKMessenger Protocol -sgi-storman 1178/udp # SGI Storage Manager -b2n 1179/tcp # Backup To Neighbor -b2n 1179/udp # Backup To Neighbor -mc-client 1180/tcp # Millicent Client Proxy -mc-client 1180/udp # Millicent Client Proxy -3comnetman 1181/tcp # 3Com Net Management -3comnetman 1181/udp # 3Com Net Management -accelenet 1182/tcp # AcceleNet Control -accelenet 1182/udp # AcceleNet Control -llsurfup-http 1183/tcp # LL Surfup HTTP -llsurfup-http 1183/udp # LL Surfup HTTP -llsurfup-https 1184/tcp # LL Surfup HTTPS -llsurfup-https 1184/udp # LL Surfup HTTPS -catchpole 1185/tcp # Catchpole port -catchpole 1185/udp # Catchpole port -mysql-cluster 1186/tcp # MySQL Cluster Manager -mysql-cluster 1186/udp # MySQL Cluster Manager -alias 1187/tcp # Alias Service -alias 1187/udp # Alias Service -hp-webadmin 1188/tcp # HP Web Admin -hp-webadmin 1188/udp # HP Web Admin -unet 1189/tcp # Unet Connection -unet 1189/udp # Unet Connection -commlinx-avl 1190/tcp # CommLinx GPS / AVL System -commlinx-avl 1190/udp # CommLinx GPS / AVL System -gpfs 1191/tcp # General Parallel File System -gpfs 1191/udp # General Parallel File System -caids-sensor 1192/tcp # caids sensors channel -caids-sensor 1192/udp # caids sensors channel -fiveacross 1193/tcp # Five Across Server -fiveacross 1193/udp # Five Across Server -openvpn 1194/tcp # OpenVPN -openvpn 1194/udp # OpenVPN -rsf-1 1195/tcp # RSF-1 clustering -rsf-1 1195/udp # RSF-1 clustering -netmagic 1196/tcp # Network Magic -netmagic 1196/udp # Network Magic -carrius-rshell 1197/tcp # Carrius Remote Access -carrius-rshell 1197/udp # Carrius Remote Access -cajo-discovery 1198/tcp # cajo reference discovery -cajo-discovery 1198/udp # cajo reference discovery -dmidi 1199/tcp # DMIDI -dmidi 1199/udp # DMIDI -scol 1200/tcp # SCOL -scol 1200/udp # SCOL -nucleus-sand 1201/tcp # Nucleus Sand Database Server -nucleus-sand 1201/udp # Nucleus Sand Database Server -caiccipc 1202/tcp # caiccipc -caiccipc 1202/udp # caiccipc -ssslic-mgr 1203/tcp # License Validation -ssslic-mgr 1203/udp # License Validation -ssslog-mgr 1204/tcp # Log Request Listener -ssslog-mgr 1204/udp # Log Request Listener -accord-mgc 1205/tcp # Accord-MGC -accord-mgc 1205/udp # Accord-MGC -anthony-data 1206/tcp # Anthony Data -anthony-data 1206/udp # Anthony Data -metasage 1207/tcp # MetaSage -metasage 1207/udp # MetaSage -seagull-ais 1208/tcp # SEAGULL AIS -seagull-ais 1208/udp # SEAGULL AIS -ipcd3 1209/tcp # IPCD3 -ipcd3 1209/udp # IPCD3 -eoss 1210/tcp # EOSS -eoss 1210/udp # EOSS -groove-dpp 1211/tcp # Groove DPP -groove-dpp 1211/udp # Groove DPP -lupa 1212/tcp # lupa -lupa 1212/udp # lupa -mpc-lifenet 1213/tcp # MPC LIFENET -mpc-lifenet 1213/udp # MPC LIFENET -kazaa 1214/tcp # KAZAA -kazaa 1214/udp # KAZAA -scanstat-1 1215/tcp # scanSTAT 1.0 -scanstat-1 1215/udp # scanSTAT 1.0 -etebac5 1216/tcp # ETEBAC 5 -etebac5 1216/udp # ETEBAC 5 -hpss-ndapi 1217/tcp # HPSS NonDCE Gateway -hpss-ndapi 1217/udp # HPSS NonDCE Gateway -aeroflight-ads 1218/tcp # AeroFlight-ADs -aeroflight-ads 1218/udp # AeroFlight-ADs -aeroflight-ret 1219/tcp # AeroFlight-Ret -aeroflight-ret 1219/udp # AeroFlight-Ret -qt-serveradmin 1220/tcp # QT SERVER ADMIN -qt-serveradmin 1220/udp # QT SERVER ADMIN -sweetware-apps 1221/tcp # SweetWARE Apps -sweetware-apps 1221/udp # SweetWARE Apps -nerv 1222/tcp # SNI R&D network -nerv 1222/udp # SNI R&D network -tgp 1223/tcp # TrulyGlobal Protocol -tgp 1223/udp # TrulyGlobal Protocol -vpnz 1224/tcp # VPNz -vpnz 1224/udp # VPNz -slinkysearch 1225/tcp # SLINKYSEARCH -slinkysearch 1225/udp # SLINKYSEARCH -stgxfws 1226/tcp # STGXFWS -stgxfws 1226/udp # STGXFWS -dns2go 1227/tcp # DNS2Go -dns2go 1227/udp # DNS2Go -florence 1228/tcp # FLORENCE -florence 1228/udp # FLORENCE -zented 1229/tcp # ZENworks Tiered Electronic Distribution -zented 1229/udp # ZENworks Tiered Electronic Distribution -periscope 1230/tcp # Periscope -periscope 1230/udp # Periscope -menandmice-lpm 1231/tcp # menandmice-lpm -menandmice-lpm 1231/udp # menandmice-lpm -univ-appserver 1233/tcp # Universal App Server -univ-appserver 1233/udp # Universal App Server -search-agent 1234/tcp # Infoseek Search Agent -search-agent 1234/udp # Infoseek Search Agent -mosaicsyssvc1 1235/tcp # mosaicsyssvc1 -mosaicsyssvc1 1235/udp # mosaicsyssvc1 -tsdos390 1237/tcp # tsdos390 -tsdos390 1237/udp # tsdos390 -hacl-qs 1238/tcp # hacl-qs -hacl-qs 1238/udp # hacl-qs -nmsd 1239/tcp # NMSD -nmsd 1239/udp # NMSD -instantia 1240/tcp # Instantia -instantia 1240/udp # Instantia -nessus 1241/tcp # nessus -nessus 1241/udp # nessus -nmasoverip 1242/tcp # NMAS over IP -nmasoverip 1242/udp # NMAS over IP -serialgateway 1243/tcp # SerialGateway -serialgateway 1243/udp # SerialGateway -isbconference1 1244/tcp # isbconference1 -isbconference1 1244/udp # isbconference1 -isbconference2 1245/tcp # isbconference2 -isbconference2 1245/udp # isbconference2 -payrouter 1246/tcp # payrouter -payrouter 1246/udp # payrouter -visionpyramid 1247/tcp # VisionPyramid -visionpyramid 1247/udp # VisionPyramid -hermes 1248/tcp # hermes -hermes 1248/udp # hermes -mesavistaco 1249/tcp # Mesa Vista Co -mesavistaco 1249/udp # Mesa Vista Co -swldy-sias 1250/tcp # swldy-sias -swldy-sias 1250/udp # swldy-sias -servergraph 1251/tcp # servergraph -servergraph 1251/udp # servergraph -bspne-pcc 1252/tcp # bspne-pcc -bspne-pcc 1252/udp # bspne-pcc -q55-pcc 1253/tcp # q55-pcc -q55-pcc 1253/udp # q55-pcc -de-noc 1254/tcp # de-noc -de-noc 1254/udp # de-noc -de-cache-query 1255/tcp # de-cache-query -de-cache-query 1255/udp # de-cache-query -de-server 1256/tcp # de-server -de-server 1256/udp # de-server -shockwave2 1257/tcp # Shockwave 2 -shockwave2 1257/udp # Shockwave 2 -opennl 1258/tcp # Open Network Library -opennl 1258/udp # Open Network Library -opennl-voice 1259/tcp # Open Network Library Voice -opennl-voice 1259/udp # Open Network Library Voice -ibm-ssd 1260/tcp # ibm-ssd -ibm-ssd 1260/udp # ibm-ssd -mpshrsv 1261/tcp # mpshrsv -mpshrsv 1261/udp # mpshrsv -qnts-orb 1262/tcp # QNTS-ORB -qnts-orb 1262/udp # QNTS-ORB -dka 1263/tcp # dka -dka 1263/udp # dka -prat 1264/tcp # PRAT -prat 1264/udp # PRAT -dssiapi 1265/tcp # DSSIAPI -dssiapi 1265/udp # DSSIAPI -dellpwrappks 1266/tcp # DELLPWRAPPKS -dellpwrappks 1266/udp # DELLPWRAPPKS -epc 1267/tcp # eTrust Policy Compliance -epc 1267/udp # eTrust Policy Compliance -propel-msgsys 1268/tcp # PROPEL-MSGSYS -propel-msgsys 1268/udp # PROPEL-MSGSYS -watilapp 1269/tcp # WATiLaPP -watilapp 1269/udp # WATiLaPP -opsmgr 1270/tcp # Microsoft Operations Manager -opsmgr 1270/udp # Microsoft Operations Manager -excw 1271/tcp # eXcW -excw 1271/udp # eXcW -cspmlockmgr 1272/tcp # CSPMLockMgr -cspmlockmgr 1272/udp # CSPMLockMgr -emc-gateway 1273/tcp # EMC-Gateway -emc-gateway 1273/udp # EMC-Gateway -t1distproc 1274/tcp # t1distproc -t1distproc 1274/udp # t1distproc -ivcollector 1275/tcp # ivcollector -ivcollector 1275/udp # ivcollector -ivmanager 1276/tcp # ivmanager -ivmanager 1276/udp # ivmanager -miva-mqs 1277/tcp # mqs -miva-mqs 1277/udp # mqs -dellwebadmin-1 1278/tcp # Dell Web Admin 1 -dellwebadmin-1 1278/udp # Dell Web Admin 1 -dellwebadmin-2 1279/tcp # Dell Web Admin 2 -dellwebadmin-2 1279/udp # Dell Web Admin 2 -pictrography 1280/tcp # Pictrography -pictrography 1280/udp # Pictrography -healthd 1281/tcp # healthd -healthd 1281/udp # healthd -emperion 1282/tcp # Emperion -emperion 1282/udp # Emperion -productinfo 1283/tcp # Product Information -productinfo 1283/udp # Product Information -iee-qfx 1284/tcp # IEE-QFX -iee-qfx 1284/udp # IEE-QFX -neoiface 1285/tcp # neoiface -neoiface 1285/udp # neoiface -netuitive 1286/tcp # netuitive -netuitive 1286/udp # netuitive -routematch 1287/tcp # RouteMatch Com -routematch 1287/udp # RouteMatch Com -navbuddy 1288/tcp # NavBuddy -navbuddy 1288/udp # NavBuddy -jwalkserver 1289/tcp # JWalkServer -jwalkserver 1289/udp # JWalkServer -winjaserver 1290/tcp # WinJaServer -winjaserver 1290/udp # WinJaServer -seagulllms 1291/tcp # SEAGULLLMS -seagulllms 1291/udp # SEAGULLLMS -dsdn 1292/tcp # dsdn -dsdn 1292/udp # dsdn -pkt-krb-ipsec 1293/tcp # PKT-KRB-IPSec -pkt-krb-ipsec 1293/udp # PKT-KRB-IPSec -cmmdriver 1294/tcp # CMMdriver -cmmdriver 1294/udp # CMMdriver -ehtp 1295/tcp # End-by-Hop Transmission Protocol -ehtp 1295/udp # End-by-Hop Transmission Protocol -dproxy 1296/tcp # dproxy -dproxy 1296/udp # dproxy -sdproxy 1297/tcp # sdproxy -sdproxy 1297/udp # sdproxy -lpcp 1298/tcp # lpcp -lpcp 1298/udp # lpcp -hp-sci 1299/tcp # hp-sci -hp-sci 1299/udp # hp-sci -ci3-software-1 1301/tcp # CI3-Software-1 -ci3-software-1 1301/udp # CI3-Software-1 -ci3-software-2 1302/tcp # CI3-Software-2 -ci3-software-2 1302/udp # CI3-Software-2 -sftsrv 1303/tcp # sftsrv -sftsrv 1303/udp # sftsrv -boomerang 1304/tcp # Boomerang -boomerang 1304/udp # Boomerang -pe-mike 1305/tcp # pe-mike -pe-mike 1305/udp # pe-mike -re-conn-proto 1306/tcp # RE-Conn-Proto -re-conn-proto 1306/udp # RE-Conn-Proto -pacmand 1307/tcp # Pacmand -pacmand 1307/udp # Pacmand -odsi 1308/tcp # Optical Domain Service Interconnect (ODSI) -odsi 1308/udp # Optical Domain Service Interconnect (ODSI) -jtag-server 1309/tcp # JTAG server -jtag-server 1309/udp # JTAG server -husky 1310/tcp # Husky -husky 1310/udp # Husky -rxmon 1311/tcp # RxMon -rxmon 1311/udp # RxMon -sti-envision 1312/tcp # STI Envision -sti-envision 1312/udp # STI Envision -bmc_patroldb 1313/udp # BMC_PATROLDB -pdps 1314/tcp # Photoscript Distributed Printing System -pdps 1314/udp # Photoscript Distributed Printing System -els 1315/tcp # E.L.S., Event Listener Service -els 1315/udp # E.L.S., Event Listener Service -exbit-escp 1316/tcp # Exbit-ESCP -exbit-escp 1316/udp # Exbit-ESCP -vrts-ipcserver 1317/tcp # vrts-ipcserver -vrts-ipcserver 1317/udp # vrts-ipcserver -krb5gatekeeper 1318/tcp # krb5gatekeeper -krb5gatekeeper 1318/udp # krb5gatekeeper -amx-icsp 1319/tcp # AMX-ICSP -amx-icsp 1319/udp # AMX-ICSP -amx-axbnet 1320/tcp # AMX-AXBNET -amx-axbnet 1320/udp # AMX-AXBNET -novation 1322/tcp # Novation -novation 1322/udp # Novation -brcd 1323/tcp # brcd -brcd 1323/udp # brcd -delta-mcp 1324/tcp # delta-mcp -delta-mcp 1324/udp # delta-mcp -dx-instrument 1325/tcp # DX-Instrument -dx-instrument 1325/udp # DX-Instrument -wimsic 1326/tcp # WIMSIC -wimsic 1326/udp # WIMSIC -ultrex 1327/tcp # Ultrex -ultrex 1327/udp # Ultrex -ewall 1328/tcp # EWALL -ewall 1328/udp # EWALL -netdb-export 1329/tcp # netdb-export -netdb-export 1329/udp # netdb-export -streetperfect 1330/tcp # StreetPerfect -streetperfect 1330/udp # StreetPerfect -intersan 1331/tcp # intersan -intersan 1331/udp # intersan -pcia-rxp-b 1332/tcp # PCIA RXP-B -pcia-rxp-b 1332/udp # PCIA RXP-B -passwrd-policy 1333/tcp # Password Policy -passwrd-policy 1333/udp # Password Policy -writesrv 1334/tcp # writesrv -writesrv 1334/udp # writesrv -digital-notary 1335/tcp # Digital Notary Protocol -digital-notary 1335/udp # Digital Notary Protocol -ischat 1336/tcp # Instant Service Chat -ischat 1336/udp # Instant Service Chat -menandmice-dns 1337/tcp # menandmice DNS -menandmice-dns 1337/udp # menandmice DNS -wmc-log-svc 1338/tcp # WMC-log-svr -wmc-log-svc 1338/udp # WMC-log-svr -kjtsiteserver 1339/tcp # kjtsiteserver -kjtsiteserver 1339/udp # kjtsiteserver -naap 1340/tcp # NAAP -naap 1340/udp # NAAP -qubes 1341/tcp # QuBES -qubes 1341/udp # QuBES -esbroker 1342/tcp # ESBroker -esbroker 1342/udp # ESBroker -re101 1343/tcp # re101 -re101 1343/udp # re101 -icap 1344/tcp # ICAP -icap 1344/udp # ICAP -vpjp 1345/tcp # VPJP -vpjp 1345/udp # VPJP -alta-ana-lm 1346/tcp # Alta Analytics License Manager -alta-ana-lm 1346/udp # Alta Analytics License Manager -bbn-mmc 1347/tcp # multi media conferencing -bbn-mmc 1347/udp # multi media conferencing -bbn-mmx 1348/tcp # multi media conferencing -bbn-mmx 1348/udp # multi media conferencing -sbook 1349/tcp # Registration Network Protocol -sbook 1349/udp # Registration Network Protocol -editbench 1350/tcp # Registration Network Protocol -editbench 1350/udp # Registration Network Protocol -equationbuilder 1351/tcp # Digital Tool Works (MIT) -equationbuilder 1351/udp # Digital Tool Works (MIT) -lotusnote 1352/tcp # Lotus Note -lotusnote 1352/udp # Lotus Note -relief 1353/tcp # Relief Consulting -relief 1353/udp # Relief Consulting -XSIP-network 1354/tcp # Five Across XSIP Network -XSIP-network 1354/udp # Five Across XSIP Network -intuitive-edge 1355/tcp # Intuitive Edge -intuitive-edge 1355/udp # Intuitive Edge -cuillamartin 1356/tcp # CuillaMartin Company -cuillamartin 1356/udp # CuillaMartin Company -pegboard 1357/tcp # Electronic PegBoard -pegboard 1357/udp # Electronic PegBoard -connlcli 1358/tcp # CONNLCLI -connlcli 1358/udp # CONNLCLI -ftsrv 1359/tcp # FTSRV -ftsrv 1359/udp # FTSRV -mimer 1360/tcp # MIMER -mimer 1360/udp # MIMER -linx 1361/tcp # LinX -linx 1361/udp # LinX -timeflies 1362/tcp # TimeFlies -timeflies 1362/udp # TimeFlies -ndm-requester 1363/tcp # Network DataMover Requester -ndm-requester 1363/udp # Network DataMover Requester -ndm-server 1364/tcp # Network DataMover Server -ndm-server 1364/udp # Network DataMover Server -adapt-sna 1365/tcp # Network Software Associates -adapt-sna 1365/udp # Network Software Associates -netware-csp 1366/tcp # Novell NetWare Comm Service Platform -netware-csp 1366/udp # Novell NetWare Comm Service Platform -dcs 1367/tcp # DCS -dcs 1367/udp # DCS -screencast 1368/tcp # ScreenCast -screencast 1368/udp # ScreenCast -gv-us 1369/tcp # GlobalView to Unix Shell -gv-us 1369/udp # GlobalView to Unix Shell -us-gv 1370/tcp # Unix Shell to GlobalView -us-gv 1370/udp # Unix Shell to GlobalView -fc-cli 1371/tcp # Fujitsu Config Protocol -fc-cli 1371/udp # Fujitsu Config Protocol -fc-ser 1372/tcp # Fujitsu Config Protocol -fc-ser 1372/udp # Fujitsu Config Protocol -chromagrafx 1373/tcp # Chromagrafx -chromagrafx 1373/udp # Chromagrafx -molly 1374/tcp # EPI Software Systems -molly 1374/udp # EPI Software Systems -bytex 1375/tcp # Bytex -bytex 1375/udp # Bytex -ibm-pps 1376/tcp # IBM Person to Person Software -ibm-pps 1376/udp # IBM Person to Person Software -cichlid 1377/tcp # Cichlid License Manager -cichlid 1377/udp # Cichlid License Manager -elan 1378/tcp # Elan License Manager -elan 1378/udp # Elan License Manager -dbreporter 1379/tcp # Integrity Solutions -dbreporter 1379/udp # Integrity Solutions -telesis-licman 1380/tcp # Telesis Network License Manager -telesis-licman 1380/udp # Telesis Network License Manager -apple-licman 1381/tcp # Apple Network License Manager -apple-licman 1381/udp # Apple Network License Manager -udt_os 1382/tcp # udt_os -udt_os 1382/udp # udt_os -gwha 1383/tcp # GW Hannaway Network License Manager -gwha 1383/udp # GW Hannaway Network License Manager -os-licman 1384/tcp # Objective Solutions License Manager -os-licman 1384/udp # Objective Solutions License Manager -atex_elmd 1385/tcp # Atex Publishing License Manager -atex_elmd 1385/udp # Atex Publishing License Manager -checksum 1386/tcp # CheckSum License Manager -checksum 1386/udp # CheckSum License Manager -cadsi-lm 1387/tcp # Computer Aided Design Software Inc LM -cadsi-lm 1387/udp # Computer Aided Design Software Inc LM -objective-dbc 1388/tcp # Objective Solutions DataBase Cache -objective-dbc 1388/udp # Objective Solutions DataBase Cache -iclpv-dm 1389/tcp # Document Manager -iclpv-dm 1389/udp # Document Manager -iclpv-sc 1390/tcp # Storage Controller -iclpv-sc 1390/udp # Storage Controller -iclpv-sas 1391/tcp # Storage Access Server -iclpv-sas 1391/udp # Storage Access Server -iclpv-pm 1392/tcp # Print Manager -iclpv-pm 1392/udp # Print Manager -iclpv-nls 1393/tcp # Network Log Server -iclpv-nls 1393/udp # Network Log Server -iclpv-nlc 1394/tcp # Network Log Client -iclpv-nlc 1394/udp # Network Log Client -iclpv-wsm 1395/tcp # PC Workstation Manager software -iclpv-wsm 1395/udp # PC Workstation Manager software -dvl-activemail 1396/tcp # DVL Active Mail -dvl-activemail 1396/udp # DVL Active Mail -audio-activmail 1397/tcp # Audio Active Mail -audio-activmail 1397/udp # Audio Active Mail -video-activmail 1398/tcp # Video Active Mail -video-activmail 1398/udp # Video Active Mail -cadkey-licman 1399/tcp # Cadkey License Manager -cadkey-licman 1399/udp # Cadkey License Manager -cadkey-tablet 1400/tcp # Cadkey Tablet Daemon -cadkey-tablet 1400/udp # Cadkey Tablet Daemon -goldleaf-licman 1401/tcp # Goldleaf License Manager -goldleaf-licman 1401/udp # Goldleaf License Manager -prm-sm-np 1402/tcp # Prospero Resource Manager -prm-sm-np 1402/udp # Prospero Resource Manager -prm-nm-np 1403/tcp # Prospero Resource Manager -prm-nm-np 1403/udp # Prospero Resource Manager -igi-lm 1404/tcp # Infinite Graphics License Manager -igi-lm 1404/udp # Infinite Graphics License Manager -ibm-res 1405/tcp # IBM Remote Execution Starter -ibm-res 1405/udp # IBM Remote Execution Starter -netlabs-lm 1406/tcp # NetLabs License Manager -netlabs-lm 1406/udp # NetLabs License Manager -dbsa-lm 1407/tcp # DBSA License Manager -dbsa-lm 1407/udp # DBSA License Manager -sophia-lm 1408/tcp # Sophia License Manager -sophia-lm 1408/udp # Sophia License Manager -here-lm 1409/tcp # Here License Manager -here-lm 1409/udp # Here License Manager -hiq 1410/tcp # HiQ License Manager -hiq 1410/udp # HiQ License Manager -af 1411/tcp # AudioFile -af 1411/udp # AudioFile -innosys 1412/tcp # InnoSys -innosys 1412/udp # InnoSys -innosys-acl 1413/tcp # Innosys-ACL -innosys-acl 1413/udp # Innosys-ACL -ibm-mqseries 1414/tcp # IBM MQSeries -ibm-mqseries 1414/udp # IBM MQSeries -dbstar 1415/tcp # DBStar -dbstar 1415/udp # DBStar -novell-lu6.2 1416/tcp # Novell LU6.2 -novell-lu6.2 1416/udp # Novell LU6.2 -timbuktu-srv1 1417/tcp # Timbuktu Service 1 Port -timbuktu-srv1 1417/udp # Timbuktu Service 1 Port -timbuktu-srv2 1418/tcp # Timbuktu Service 2 Port -timbuktu-srv2 1418/udp # Timbuktu Service 2 Port -timbuktu-srv3 1419/tcp # Timbuktu Service 3 Port -timbuktu-srv3 1419/udp # Timbuktu Service 3 Port -timbuktu-srv4 1420/tcp # Timbuktu Service 4 Port -timbuktu-srv4 1420/udp # Timbuktu Service 4 Port -gandalf-lm 1421/tcp # Gandalf License Manager -gandalf-lm 1421/udp # Gandalf License Manager -autodesk-lm 1422/tcp # Autodesk License Manager -autodesk-lm 1422/udp # Autodesk License Manager -essbase 1423/tcp # Essbase Arbor Software -essbase 1423/udp # Essbase Arbor Software -hybrid 1424/tcp # Hybrid Encryption Protocol -hybrid 1424/udp # Hybrid Encryption Protocol -zion-lm 1425/tcp # Zion Software License Manager -zion-lm 1425/udp # Zion Software License Manager -sais 1426/tcp # Satellite-data Acquisition System 1 -sais 1426/udp # Satellite-data Acquisition System 1 -mloadd 1427/tcp # mloadd monitoring tool -mloadd 1427/udp # mloadd monitoring tool -informatik-lm 1428/tcp # Informatik License Manager -informatik-lm 1428/udp # Informatik License Manager -nms 1429/tcp # Hypercom NMS -nms 1429/udp # Hypercom NMS -tpdu 1430/tcp # Hypercom TPDU -tpdu 1430/udp # Hypercom TPDU -rgtp 1431/tcp # Reverse Gossip Transport -rgtp 1431/udp # Reverse Gossip Transport -blueberry-lm 1432/tcp # Blueberry Software License Manager -blueberry-lm 1432/udp # Blueberry Software License Manager -ibm-cics 1435/tcp # IBM CICS -ibm-cics 1435/udp # IBM CICS -saism 1436/tcp # Satellite-data Acquisition System 2 -saism 1436/udp # Satellite-data Acquisition System 2 -tabula 1437/tcp # Tabula -tabula 1437/udp # Tabula -eicon-server 1438/tcp # Eicon Security Agent/Server -eicon-server 1438/udp # Eicon Security Agent/Server -eicon-x25 1439/tcp # Eicon X25/SNA Gateway -eicon-x25 1439/udp # Eicon X25/SNA Gateway -eicon-slp 1440/tcp # Eicon Service Location Protocol -eicon-slp 1440/udp # Eicon Service Location Protocol -cadis-1 1441/tcp # Cadis License Management -cadis-1 1441/udp # Cadis License Management -cadis-2 1442/tcp # Cadis License Management -cadis-2 1442/udp # Cadis License Management -ies-lm 1443/tcp # Integrated Engineering Software -ies-lm 1443/udp # Integrated Engineering Software -marcam-lm 1444/tcp # Marcam License Management -marcam-lm 1444/udp # Marcam License Management -proxima-lm 1445/tcp # Proxima License Manager -proxima-lm 1445/udp # Proxima License Manager -ora-lm 1446/tcp # Optical Research Associates License Manager -ora-lm 1446/udp # Optical Research Associates License Manager -apri-lm 1447/tcp # Applied Parallel Research LM -apri-lm 1447/udp # Applied Parallel Research LM -oc-lm 1448/tcp # OpenConnect License Manager -oc-lm 1448/udp # OpenConnect License Manager -peport 1449/tcp # PEport -peport 1449/udp # PEport -dwf 1450/tcp # Tandem Distributed Workbench Facility -dwf 1450/udp # Tandem Distributed Workbench Facility -infoman 1451/tcp # IBM Information Management -infoman 1451/udp # IBM Information Management -gtegsc-lm 1452/tcp # GTE Government Systems License Man -gtegsc-lm 1452/udp # GTE Government Systems License Man -genie-lm 1453/tcp # Genie License Manager -genie-lm 1453/udp # Genie License Manager -interhdl_elmd 1454/tcp # interHDL License Manager -interhdl_elmd 1454/udp # interHDL License Manager -esl-lm 1455/tcp # ESL License Manager -esl-lm 1455/udp # ESL License Manager -dca 1456/tcp # DCA -dca 1456/udp # DCA -valisys-lm 1457/tcp # Valisys License Manager -valisys-lm 1457/udp # Valisys License Manager -nrcabq-lm 1458/tcp # Nichols Research Corp. -nrcabq-lm 1458/udp # Nichols Research Corp. -proshare1 1459/tcp # Proshare Notebook Application -proshare1 1459/udp # Proshare Notebook Application -proshare2 1460/tcp # Proshare Notebook Application -proshare2 1460/udp # Proshare Notebook Application -ibm_wrless_lan 1461/tcp # IBM Wireless LAN -ibm_wrless_lan 1461/udp # IBM Wireless LAN -world-lm 1462/tcp # World License Manager -world-lm 1462/udp # World License Manager -nucleus 1463/tcp # Nucleus -nucleus 1463/udp # Nucleus -msl_lmd 1464/tcp # MSL License Manager -msl_lmd 1464/udp # MSL License Manager -pipes 1465/tcp # Pipes Platform -pipes 1465/udp # Pipes Platform -oceansoft-lm 1466/tcp # Ocean Software License Manager -oceansoft-lm 1466/udp # Ocean Software License Manager -csdmbase 1467/tcp # CSDMBASE -csdmbase 1467/udp # CSDMBASE -csdm 1468/tcp # CSDM -csdm 1468/udp # CSDM -aal-lm 1469/tcp # Active Analysis Limited License Manager -aal-lm 1469/udp # Active Analysis Limited License Manager -uaiact 1470/tcp # Universal Analytics -uaiact 1470/udp # Universal Analytics -openmath 1473/tcp # OpenMath -openmath 1473/udp # OpenMath -telefinder 1474/tcp # Telefinder -telefinder 1474/udp # Telefinder -taligent-lm 1475/tcp # Taligent License Manager -taligent-lm 1475/udp # Taligent License Manager -clvm-cfg 1476/tcp # clvm-cfg -clvm-cfg 1476/udp # clvm-cfg -ms-sna-server 1477/tcp # ms-sna-server -ms-sna-server 1477/udp # ms-sna-server -ms-sna-base 1478/tcp # ms-sna-base -ms-sna-base 1478/udp # ms-sna-base -dberegister 1479/tcp # dberegister -dberegister 1479/udp # dberegister -pacerforum 1480/tcp # PacerForum -pacerforum 1480/udp # PacerForum -airs 1481/tcp # AIRS -airs 1481/udp # AIRS -miteksys-lm 1482/tcp # Miteksys License Manager -miteksys-lm 1482/udp # Miteksys License Manager -afs 1483/tcp # AFS License Manager -afs 1483/udp # AFS License Manager -confluent 1484/tcp # Confluent License Manager -confluent 1484/udp # Confluent License Manager -lansource 1485/tcp # LANSource -lansource 1485/udp # LANSource -nms_topo_serv 1486/tcp # nms_topo_serv -nms_topo_serv 1486/udp # nms_topo_serv -localinfosrvr 1487/tcp # LocalInfoSrvr -localinfosrvr 1487/udp # LocalInfoSrvr -docstor 1488/tcp # DocStor -docstor 1488/udp # DocStor -dmdocbroker 1489/tcp # dmdocbroker -dmdocbroker 1489/udp # dmdocbroker -insitu-conf 1490/tcp # insitu-conf -insitu-conf 1490/udp # insitu-conf -stone-design-1 1492/tcp # stone-design-1 -stone-design-1 1492/udp # stone-design-1 -netmap_lm 1493/tcp # netmap_lm -netmap_lm 1493/udp # netmap_lm -cvc 1495/tcp # cvc -cvc 1495/udp # cvc -liberty-lm 1496/tcp # liberty-lm -liberty-lm 1496/udp # liberty-lm -rfx-lm 1497/tcp # rfx-lm -rfx-lm 1497/udp # rfx-lm -sybase-sqlany 1498/tcp # Sybase SQL Any -sybase-sqlany 1498/udp # Sybase SQL Any -fhc 1499/tcp # Federico Heinz Consultora -fhc 1499/udp # Federico Heinz Consultora -vlsi-lm 1500/tcp # VLSI License Manager -vlsi-lm 1500/udp # VLSI License Manager -saiscm 1501/tcp # Satellite-data Acquisition System 3 -saiscm 1501/udp # Satellite-data Acquisition System 3 -shivadiscovery 1502/tcp # Shiva -shivadiscovery 1502/udp # Shiva -imtc-mcs 1503/tcp # Databeam -imtc-mcs 1503/udp # Databeam -evb-elm 1504/tcp # EVB Software Engineering License Manager -evb-elm 1504/udp # EVB Software Engineering License Manager -funkproxy 1505/tcp # Funk Software, Inc. -funkproxy 1505/udp # Funk Software, Inc. -utcd 1506/tcp # Universal Time daemon (utcd) -utcd 1506/udp # Universal Time daemon (utcd) -symplex 1507/tcp # symplex -symplex 1507/udp # symplex -diagmond 1508/tcp # diagmond -diagmond 1508/udp # diagmond -robcad-lm 1509/tcp # Robcad, Ltd. License Manager -robcad-lm 1509/udp # Robcad, Ltd. License Manager -mvx-lm 1510/tcp # Midland Valley Exploration Ltd. Lic. Man. -mvx-lm 1510/udp # Midland Valley Exploration Ltd. Lic. Man. -3l-l1 1511/tcp # 3l-l1 -3l-l1 1511/udp # 3l-l1 -fujitsu-dtc 1513/tcp # Fujitsu Systems Business of America, Inc -fujitsu-dtc 1513/udp # Fujitsu Systems Business of America, Inc -fujitsu-dtcns 1514/tcp # Fujitsu Systems Business of America, Inc -fujitsu-dtcns 1514/udp # Fujitsu Systems Business of America, Inc -ifor-protocol 1515/tcp # ifor-protocol -ifor-protocol 1515/udp # ifor-protocol -vpad 1516/tcp # Virtual Places Audio data -vpad 1516/udp # Virtual Places Audio data -vpac 1517/tcp # Virtual Places Audio control -vpac 1517/udp # Virtual Places Audio control -vpvd 1518/tcp # Virtual Places Video data -vpvd 1518/udp # Virtual Places Video data -vpvc 1519/tcp # Virtual Places Video control -vpvc 1519/udp # Virtual Places Video control -atm-zip-office 1520/tcp # atm zip office -atm-zip-office 1520/udp # atm zip office -ncube-lm 1521/tcp # nCube License Manager -ncube-lm 1521/udp # nCube License Manager -ricardo-lm 1522/tcp # Ricardo North America License Manager -ricardo-lm 1522/udp # Ricardo North America License Manager -cichild-lm 1523/tcp # cichild -cichild-lm 1523/udp # cichild -pdap-np 1526/tcp # Prospero Data Access Prot non-priv -pdap-np 1526/udp # Prospero Data Access Prot non-priv -tlisrv 1527/tcp # oracle -tlisrv 1527/udp # oracle -coauthor 1529/udp # oracle -rap-service 1530/tcp # rap-service -rap-service 1530/udp # rap-service -rap-listen 1531/tcp # rap-listen -rap-listen 1531/udp # rap-listen -miroconnect 1532/tcp # miroconnect -miroconnect 1532/udp # miroconnect -virtual-places 1533/tcp # Virtual Places Software -virtual-places 1533/udp # Virtual Places Software -micromuse-lm 1534/tcp # micromuse-lm -micromuse-lm 1534/udp # micromuse-lm -ampr-info 1535/tcp # ampr-info -ampr-info 1535/udp # ampr-info -ampr-inter 1536/tcp # ampr-inter -ampr-inter 1536/udp # ampr-inter -sdsc-lm 1537/tcp # isi-lm -sdsc-lm 1537/udp # isi-lm -3ds-lm 1538/tcp # 3ds-lm -3ds-lm 1538/udp # 3ds-lm -intellistor-lm 1539/tcp # Intellistor License Manager -intellistor-lm 1539/udp # Intellistor License Manager -rds 1540/tcp # rds -rds 1540/udp # rds -rds2 1541/tcp # rds2 -rds2 1541/udp # rds2 -gridgen-elmd 1542/tcp # gridgen-elmd -gridgen-elmd 1542/udp # gridgen-elmd -simba-cs 1543/tcp # simba-cs -simba-cs 1543/udp # simba-cs -aspeclmd 1544/tcp # aspeclmd -aspeclmd 1544/udp # aspeclmd -vistium-share 1545/tcp # vistium-share -vistium-share 1545/udp # vistium-share -abbaccuray 1546/tcp # abbaccuray -abbaccuray 1546/udp # abbaccuray -laplink 1547/tcp # laplink -laplink 1547/udp # laplink -axon-lm 1548/tcp # Axon License Manager -axon-lm 1548/udp # Axon License Manager -shivahose 1549/tcp # Shiva Hose -shivasound 1549/udp # Shiva Sound -3m-image-lm 1550/tcp # Image Storage license manager 3M Company -3m-image-lm 1550/udp # Image Storage license manager 3M Company -hecmtl-db 1551/tcp # HECMTL-DB -hecmtl-db 1551/udp # HECMTL-DB -pciarray 1552/tcp # pciarray -pciarray 1552/udp # pciarray -sna-cs 1553/tcp # sna-cs -sna-cs 1553/udp # sna-cs -caci-lm 1554/tcp # CACI Products Company License Manager -caci-lm 1554/udp # CACI Products Company License Manager -livelan 1555/tcp # livelan -livelan 1555/udp # livelan -veritas_pbx 1556/tcp # VERITAS Private Branch Exchange -veritas_pbx 1556/udp # VERITAS Private Branch Exchange -arbortext-lm 1557/tcp # ArborText License Manager -arbortext-lm 1557/udp # ArborText License Manager -xingmpeg 1558/tcp # xingmpeg -xingmpeg 1558/udp # xingmpeg -web2host 1559/tcp # web2host -web2host 1559/udp # web2host -asci-val 1560/tcp # ASCI-RemoteSHADOW -asci-val 1560/udp # ASCI-RemoteSHADOW -facilityview 1561/tcp # facilityview -facilityview 1561/udp # facilityview -pconnectmgr 1562/tcp # pconnectmgr -pconnectmgr 1562/udp # pconnectmgr -cadabra-lm 1563/tcp # Cadabra License Manager -cadabra-lm 1563/udp # Cadabra License Manager -pay-per-view 1564/tcp # Pay-Per-View -pay-per-view 1564/udp # Pay-Per-View -winddlb 1565/tcp # WinDD -winddlb 1565/udp # WinDD -corelvideo 1566/tcp # CORELVIDEO -corelvideo 1566/udp # CORELVIDEO -jlicelmd 1567/tcp # jlicelmd -jlicelmd 1567/udp # jlicelmd -tsspmap 1568/tcp # tsspmap -tsspmap 1568/udp # tsspmap -ets 1569/tcp # ets -ets 1569/udp # ets -orbixd 1570/tcp # orbixd -orbixd 1570/udp # orbixd -rdb-dbs-disp 1571/tcp # Oracle Remote Data Base -rdb-dbs-disp 1571/udp # Oracle Remote Data Base -chip-lm 1572/tcp # Chipcom License Manager -chip-lm 1572/udp # Chipcom License Manager -itscomm-ns 1573/tcp # itscomm-ns -itscomm-ns 1573/udp # itscomm-ns -mvel-lm 1574/tcp # mvel-lm -mvel-lm 1574/udp # mvel-lm -oraclenames 1575/tcp # oraclenames -oraclenames 1575/udp # oraclenames -moldflow-lm 1576/tcp # Moldflow License Manager -moldflow-lm 1576/udp # Moldflow License Manager -hypercube-lm 1577/tcp # hypercube-lm -hypercube-lm 1577/udp # hypercube-lm -jacobus-lm 1578/tcp # Jacobus License Manager -jacobus-lm 1578/udp # Jacobus License Manager -ioc-sea-lm 1579/tcp # ioc-sea-lm -ioc-sea-lm 1579/udp # ioc-sea-lm -tn-tl-r1 1580/tcp # tn-tl-r1 -tn-tl-r2 1580/udp # tn-tl-r2 -mil-2045-47001 1581/tcp # MIL-2045-47001 -mil-2045-47001 1581/udp # MIL-2045-47001 -msims 1582/tcp # MSIMS -msims 1582/udp # MSIMS -simbaexpress 1583/tcp # simbaexpress -simbaexpress 1583/udp # simbaexpress -tn-tl-fd2 1584/tcp # tn-tl-fd2 -tn-tl-fd2 1584/udp # tn-tl-fd2 -intv 1585/tcp # intv -intv 1585/udp # intv -ibm-abtact 1586/tcp # ibm-abtact -ibm-abtact 1586/udp # ibm-abtact -pra_elmd 1587/tcp # pra_elmd -pra_elmd 1587/udp # pra_elmd -triquest-lm 1588/tcp # triquest-lm -triquest-lm 1588/udp # triquest-lm -vqp 1589/tcp # VQP -vqp 1589/udp # VQP -gemini-lm 1590/tcp # gemini-lm -gemini-lm 1590/udp # gemini-lm -ncpm-pm 1591/tcp # ncpm-pm -ncpm-pm 1591/udp # ncpm-pm -commonspace 1592/tcp # commonspace -commonspace 1592/udp # commonspace -mainsoft-lm 1593/tcp # mainsoft-lm -mainsoft-lm 1593/udp # mainsoft-lm -sixtrak 1594/tcp # sixtrak -sixtrak 1594/udp # sixtrak -radio 1595/tcp # radio -radio 1595/udp # radio -radio-sm 1596/tcp # radio-sm -radio-bc 1596/udp # radio-bc -orbplus-iiop 1597/tcp # orbplus-iiop -orbplus-iiop 1597/udp # orbplus-iiop -picknfs 1598/tcp # picknfs -picknfs 1598/udp # picknfs -simbaservices 1599/tcp # simbaservices -simbaservices 1599/udp # simbaservices -issd 1600/tcp # issd -issd 1600/udp # issd -aas 1601/tcp # aas -aas 1601/udp # aas -inspect 1602/tcp # inspect -inspect 1602/udp # inspect -picodbc 1603/tcp # pickodbc -picodbc 1603/udp # pickodbc -icabrowser 1604/tcp # icabrowser -icabrowser 1604/udp # icabrowser -slp 1605/tcp # Salutation Manager (Salutation Protocol) -slp 1605/udp # Salutation Manager (Salutation Protocol) -slm-api 1606/tcp # Salutation Manager (SLM-API) -slm-api 1606/udp # Salutation Manager (SLM-API) -stt 1607/tcp # stt -stt 1607/udp # stt -smart-lm 1608/tcp # Smart Corp. License Manager -smart-lm 1608/udp # Smart Corp. License Manager -isysg-lm 1609/tcp # isysg-lm -isysg-lm 1609/udp # isysg-lm -taurus-wh 1610/tcp # taurus-wh -taurus-wh 1610/udp # taurus-wh -ill 1611/tcp # Inter Library Loan -ill 1611/udp # Inter Library Loan -netbill-trans 1612/tcp # NetBill Transaction Server -netbill-trans 1612/udp # NetBill Transaction Server -netbill-keyrep 1613/tcp # NetBill Key Repository -netbill-keyrep 1613/udp # NetBill Key Repository -netbill-cred 1614/tcp # NetBill Credential Server -netbill-cred 1614/udp # NetBill Credential Server -netbill-auth 1615/tcp # NetBill Authorization Server -netbill-auth 1615/udp # NetBill Authorization Server -netbill-prod 1616/tcp # NetBill Product Server -netbill-prod 1616/udp # NetBill Product Server -nimrod-agent 1617/tcp # Nimrod Inter-Agent Communication -nimrod-agent 1617/udp # Nimrod Inter-Agent Communication -skytelnet 1618/tcp # skytelnet -skytelnet 1618/udp # skytelnet -xs-openstorage 1619/tcp # xs-openstorage -xs-openstorage 1619/udp # xs-openstorage -faxportwinport 1620/tcp # faxportwinport -faxportwinport 1620/udp # faxportwinport -softdataphone 1621/tcp # softdataphone -softdataphone 1621/udp # softdataphone -ontime 1622/tcp # ontime -ontime 1622/udp # ontime -jaleosnd 1623/tcp # jaleosnd -jaleosnd 1623/udp # jaleosnd -udp-sr-port 1624/tcp # udp-sr-port -udp-sr-port 1624/udp # udp-sr-port -svs-omagent 1625/tcp # svs-omagent -svs-omagent 1625/udp # svs-omagent -shockwave 1626/tcp # Shockwave -shockwave 1626/udp # Shockwave -t128-gateway 1627/tcp # T.128 Gateway -t128-gateway 1627/udp # T.128 Gateway -lontalk-norm 1628/tcp # LonTalk normal -lontalk-norm 1628/udp # LonTalk normal -lontalk-urgnt 1629/tcp # LonTalk urgent -lontalk-urgnt 1629/udp # LonTalk urgent -oraclenet8cman 1630/tcp # Oracle Net8 Cman -oraclenet8cman 1630/udp # Oracle Net8 Cman -visitview 1631/tcp # Visit view -visitview 1631/udp # Visit view -pammratc 1632/tcp # PAMMRATC -pammratc 1632/udp # PAMMRATC -pammrpc 1633/tcp # PAMMRPC -pammrpc 1633/udp # PAMMRPC -loaprobe 1634/tcp # Log On America Probe -loaprobe 1634/udp # Log On America Probe -edb-server1 1635/tcp # EDB Server 1 -edb-server1 1635/udp # EDB Server 1 -isdc 1636/tcp # ISP shared public data control -isdc 1636/udp # ISP shared public data control -islc 1637/tcp # ISP shared local data control -islc 1637/udp # ISP shared local data control -ismc 1638/tcp # ISP shared management control -ismc 1638/udp # ISP shared management control -cert-initiator 1639/tcp # cert-initiator -cert-initiator 1639/udp # cert-initiator -cert-responder 1640/tcp # cert-responder -cert-responder 1640/udp # cert-responder -invision 1641/tcp # InVision -invision 1641/udp # InVision -isis-am 1642/tcp # isis-am -isis-am 1642/udp # isis-am -isis-ambc 1643/tcp # isis-ambc -isis-ambc 1643/udp # isis-ambc -saiseh 1644/tcp # Satellite-data Acquisition System 4 -rsap 1647/tcp # rsap -rsap 1647/udp # rsap -concurrent-lm 1648/tcp # concurrent-lm -concurrent-lm 1648/udp # concurrent-lm -nkd 1650/tcp # nkdn -nkd 1650/udp # nkd -shiva_confsrvr 1651/tcp # shiva_confsrvr -shiva_confsrvr 1651/udp # shiva_confsrvr -xnmp 1652/tcp # xnmp -xnmp 1652/udp # xnmp -alphatech-lm 1653/tcp # alphatech-lm -alphatech-lm 1653/udp # alphatech-lm -stargatealerts 1654/tcp # stargatealerts -stargatealerts 1654/udp # stargatealerts -dec-mbadmin 1655/tcp # dec-mbadmin -dec-mbadmin 1655/udp # dec-mbadmin -dec-mbadmin-h 1656/tcp # dec-mbadmin-h -dec-mbadmin-h 1656/udp # dec-mbadmin-h -fujitsu-mmpdc 1657/tcp # fujitsu-mmpdc -fujitsu-mmpdc 1657/udp # fujitsu-mmpdc -sixnetudr 1658/tcp # sixnetudr -sixnetudr 1658/udp # sixnetudr -sg-lm 1659/tcp # Silicon Grail License Manager -sg-lm 1659/udp # Silicon Grail License Manager -skip-mc-gikreq 1660/tcp # skip-mc-gikreq -skip-mc-gikreq 1660/udp # skip-mc-gikreq -netview-aix-1 1661/tcp # netview-aix-1 -netview-aix-1 1661/udp # netview-aix-1 -netview-aix-2 1662/tcp # netview-aix-2 -netview-aix-2 1662/udp # netview-aix-2 -netview-aix-3 1663/tcp # netview-aix-3 -netview-aix-3 1663/udp # netview-aix-3 -netview-aix-4 1664/tcp # netview-aix-4 -netview-aix-4 1664/udp # netview-aix-4 -netview-aix-5 1665/tcp # netview-aix-5 -netview-aix-5 1665/udp # netview-aix-5 -netview-aix-6 1666/tcp # netview-aix-6 -netview-aix-6 1666/udp # netview-aix-6 -netview-aix-7 1667/tcp # netview-aix-7 -netview-aix-7 1667/udp # netview-aix-7 -netview-aix-8 1668/tcp # netview-aix-8 -netview-aix-8 1668/udp # netview-aix-8 -netview-aix-9 1669/tcp # netview-aix-9 -netview-aix-9 1669/udp # netview-aix-9 -netview-aix-10 1670/tcp # netview-aix-10 -netview-aix-10 1670/udp # netview-aix-10 -netview-aix-11 1671/tcp # netview-aix-11 -netview-aix-11 1671/udp # netview-aix-11 -netview-aix-12 1672/tcp # netview-aix-12 -netview-aix-12 1672/udp # netview-aix-12 -proshare-mc-1 1673/tcp # Intel Proshare Multicast -proshare-mc-1 1673/udp # Intel Proshare Multicast -proshare-mc-2 1674/tcp # Intel Proshare Multicast -proshare-mc-2 1674/udp # Intel Proshare Multicast -pdp 1675/tcp # Pacific Data Products -pdp 1675/udp # Pacific Data Products -netcomm1 1676/tcp # netcomm1 -netcomm2 1676/udp # netcomm2 -groupwise 1677/tcp # groupwise -groupwise 1677/udp # groupwise -prolink 1678/tcp # prolink -prolink 1678/udp # prolink -darcorp-lm 1679/tcp # darcorp-lm -darcorp-lm 1679/udp # darcorp-lm -microcom-sbp 1680/tcp # microcom-sbp -microcom-sbp 1680/udp # microcom-sbp -sd-elmd 1681/tcp # sd-elmd -sd-elmd 1681/udp # sd-elmd -lanyon-lantern 1682/tcp # lanyon-lantern -lanyon-lantern 1682/udp # lanyon-lantern -ncpm-hip 1683/tcp # ncpm-hip -ncpm-hip 1683/udp # ncpm-hip -snaresecure 1684/tcp # SnareSecure -snaresecure 1684/udp # SnareSecure -n2nremote 1685/tcp # n2nremote -n2nremote 1685/udp # n2nremote -cvmon 1686/tcp # cvmon -cvmon 1686/udp # cvmon -nsjtp-ctrl 1687/tcp # nsjtp-ctrl -nsjtp-ctrl 1687/udp # nsjtp-ctrl -nsjtp-data 1688/tcp # nsjtp-data -nsjtp-data 1688/udp # nsjtp-data -firefox 1689/tcp # firefox -firefox 1689/udp # firefox -ng-umds 1690/tcp # ng-umds -ng-umds 1690/udp # ng-umds -empire-empuma 1691/tcp # empire-empuma -empire-empuma 1691/udp # empire-empuma -sstsys-lm 1692/tcp # sstsys-lm -sstsys-lm 1692/udp # sstsys-lm -rrirtr 1693/tcp # rrirtr -rrirtr 1693/udp # rrirtr -rrimwm 1694/tcp # rrimwm -rrimwm 1694/udp # rrimwm -rrilwm 1695/tcp # rrilwm -rrilwm 1695/udp # rrilwm -rrifmm 1696/tcp # rrifmm -rrifmm 1696/udp # rrifmm -rrisat 1697/tcp # rrisat -rrisat 1697/udp # rrisat -rsvp-encap-1 1698/tcp # RSVP-ENCAPSULATION-1 -rsvp-encap-1 1698/udp # RSVP-ENCAPSULATION-1 -rsvp-encap-2 1699/tcp # RSVP-ENCAPSULATION-2 -rsvp-encap-2 1699/udp # RSVP-ENCAPSULATION-2 -mps-raft 1700/tcp # mps-raft -mps-raft 1700/udp # mps-raft -deskshare 1702/tcp # deskshare -deskshare 1702/udp # deskshare -hb-engine 1703/tcp # hb-engine -hb-engine 1703/udp # hb-engine -bcs-broker 1704/tcp # bcs-broker -bcs-broker 1704/udp # bcs-broker -slingshot 1705/tcp # slingshot -slingshot 1705/udp # slingshot -jetform 1706/tcp # jetform -jetform 1706/udp # jetform -vdmplay 1707/tcp # vdmplay -vdmplay 1707/udp # vdmplay -gat-lmd 1708/tcp # gat-lmd -gat-lmd 1708/udp # gat-lmd -centra 1709/tcp # centra -centra 1709/udp # centra -impera 1710/tcp # impera -impera 1710/udp # impera -pptconference 1711/tcp # pptconference -pptconference 1711/udp # pptconference -registrar 1712/tcp # resource monitoring service -registrar 1712/udp # resource monitoring service -conferencetalk 1713/tcp # ConferenceTalk -conferencetalk 1713/udp # ConferenceTalk -sesi-lm 1714/tcp # sesi-lm -sesi-lm 1714/udp # sesi-lm -houdini-lm 1715/tcp # houdini-lm -houdini-lm 1715/udp # houdini-lm -xmsg 1716/tcp # xmsg -xmsg 1716/udp # xmsg -fj-hdnet 1717/tcp # fj-hdnet -fj-hdnet 1717/udp # fj-hdnet -caicci 1721/tcp # caicci -caicci 1721/udp # caicci -hks-lm 1722/tcp # HKS License Manager -hks-lm 1722/udp # HKS License Manager -pptp 1723/tcp # pptp -pptp 1723/udp # pptp -csbphonemaster 1724/tcp # csbphonemaster -csbphonemaster 1724/udp # csbphonemaster -iden-ralp 1725/tcp # iden-ralp -iden-ralp 1725/udp # iden-ralp -iberiagames 1726/tcp # IBERIAGAMES -iberiagames 1726/udp # IBERIAGAMES -winddx 1727/tcp # winddx -winddx 1727/udp # winddx -telindus 1728/tcp # TELINDUS -telindus 1728/udp # TELINDUS -citynl 1729/tcp # CityNL License Management -citynl 1729/udp # CityNL License Management -roketz 1730/tcp # roketz -roketz 1730/udp # roketz -msiccp 1731/tcp # MSICCP -msiccp 1731/udp # MSICCP -proxim 1732/tcp # proxim -proxim 1732/udp # proxim -siipat 1733/tcp # SIMS - SIIPAT Protocol for Alarm Transmission -siipat 1733/udp # SIMS - SIIPAT Protocol for Alarm Transmission -cambertx-lm 1734/tcp # Camber Corporation License Management -cambertx-lm 1734/udp # Camber Corporation License Management -privatechat 1735/tcp # PrivateChat -privatechat 1735/udp # PrivateChat -street-stream 1736/tcp # street-stream -street-stream 1736/udp # street-stream -ultimad 1737/tcp # ultimad -ultimad 1737/udp # ultimad -gamegen1 1738/tcp # GameGen1 -gamegen1 1738/udp # GameGen1 -webaccess 1739/tcp # webaccess -webaccess 1739/udp # webaccess -encore 1740/tcp # encore -encore 1740/udp # encore -cisco-net-mgmt 1741/tcp # cisco-net-mgmt -cisco-net-mgmt 1741/udp # cisco-net-mgmt -3Com-nsd 1742/tcp # 3Com-nsd -3Com-nsd 1742/udp # 3Com-nsd -cinegrfx-lm 1743/tcp # Cinema Graphics License Manager -cinegrfx-lm 1743/udp # Cinema Graphics License Manager -ncpm-ft 1744/tcp # ncpm-ft -ncpm-ft 1744/udp # ncpm-ft -remote-winsock 1745/tcp # remote-winsock -remote-winsock 1745/udp # remote-winsock -ftrapid-1 1746/tcp # ftrapid-1 -ftrapid-1 1746/udp # ftrapid-1 -ftrapid-2 1747/tcp # ftrapid-2 -ftrapid-2 1747/udp # ftrapid-2 -oracle-em1 1748/tcp # oracle-em1 -oracle-em1 1748/udp # oracle-em1 -aspen-services 1749/tcp # aspen-services -aspen-services 1749/udp # aspen-services -sslp 1750/tcp # Simple Socket Library's PortMaster -sslp 1750/udp # Simple Socket Library's PortMaster -swiftnet 1751/tcp # SwiftNet -swiftnet 1751/udp # SwiftNet -lofr-lm 1752/tcp # Leap of Faith Research License Manager -lofr-lm 1752/udp # Leap of Faith Research License Manager -oracle-em2 1754/tcp # oracle-em2 -oracle-em2 1754/udp # oracle-em2 -ms-streaming 1755/tcp # ms-streaming -ms-streaming 1755/udp # ms-streaming -capfast-lmd 1756/tcp # capfast-lmd -capfast-lmd 1756/udp # capfast-lmd -cnhrp 1757/tcp # cnhrp -cnhrp 1757/udp # cnhrp -spss-lm 1759/tcp # SPSS License Manager -www-ldap-gw 1760/tcp # www-ldap-gw -www-ldap-gw 1760/udp # www-ldap-gw -cft-0 1761/tcp # cft-0 -cft-0 1761/udp # cft-0 -cft-1 1762/tcp # cft-1 -cft-1 1762/udp # cft-1 -cft-2 1763/tcp # cft-2 -cft-2 1763/udp # cft-2 -cft-3 1764/tcp # cft-3 -cft-3 1764/udp # cft-3 -cft-4 1765/tcp # cft-4 -cft-4 1765/udp # cft-4 -cft-5 1766/tcp # cft-5 -cft-5 1766/udp # cft-5 -cft-6 1767/tcp # cft-6 -cft-6 1767/udp # cft-6 -cft-7 1768/tcp # cft-7 -cft-7 1768/udp # cft-7 -bmc-net-adm 1769/tcp # bmc-net-adm -bmc-net-adm 1769/udp # bmc-net-adm -bmc-net-svc 1770/tcp # bmc-net-svc -bmc-net-svc 1770/udp # bmc-net-svc -vaultbase 1771/tcp # vaultbase -vaultbase 1771/udp # vaultbase -essweb-gw 1772/tcp # EssWeb Gateway -essweb-gw 1772/udp # EssWeb Gateway -kmscontrol 1773/tcp # KMSControl -kmscontrol 1773/udp # KMSControl -global-dtserv 1774/tcp # global-dtserv -global-dtserv 1774/udp # global-dtserv -femis 1776/tcp # Federal Emergency Management Information System -femis 1776/udp # Federal Emergency Management Information System -powerguardian 1777/tcp # powerguardian -powerguardian 1777/udp # powerguardian -prodigy-intrnet 1778/tcp # prodigy-internet -prodigy-intrnet 1778/udp # prodigy-internet -pharmasoft 1779/tcp # pharmasoft -pharmasoft 1779/udp # pharmasoft -dpkeyserv 1780/tcp # dpkeyserv -dpkeyserv 1780/udp # dpkeyserv -answersoft-lm 1781/tcp # answersoft-lm -answersoft-lm 1781/udp # answersoft-lm -hp-hcip 1782/tcp # hp-hcip -hp-hcip 1782/udp # hp-hcip -finle-lm 1784/tcp # Finle License Manager -finle-lm 1784/udp # Finle License Manager -windlm 1785/tcp # Wind River Systems License Manager -windlm 1785/udp # Wind River Systems License Manager -funk-logger 1786/tcp # funk-logger -funk-logger 1786/udp # funk-logger -funk-license 1787/tcp # funk-license -funk-license 1787/udp # funk-license -psmond 1788/tcp # psmond -psmond 1788/udp # psmond -ea1 1791/tcp # EA1 -ea1 1791/udp # EA1 -ibm-dt-2 1792/tcp # ibm-dt-2 -ibm-dt-2 1792/udp # ibm-dt-2 -rsc-robot 1793/tcp # rsc-robot -rsc-robot 1793/udp # rsc-robot -cera-bcm 1794/tcp # cera-bcm -cera-bcm 1794/udp # cera-bcm -dpi-proxy 1795/tcp # dpi-proxy -dpi-proxy 1795/udp # dpi-proxy -vocaltec-admin 1796/tcp # Vocaltec Server Administration -vocaltec-admin 1796/udp # Vocaltec Server Administration -etp 1798/tcp # Event Transfer Protocol -etp 1798/udp # Event Transfer Protocol -netrisk 1799/tcp # NETRISK -netrisk 1799/udp # NETRISK -ansys-lm 1800/tcp # ANSYS-License manager -ansys-lm 1800/udp # ANSYS-License manager -msmq 1801/tcp # Microsoft Message Que -msmq 1801/udp # Microsoft Message Que -concomp1 1802/tcp # ConComp1 -concomp1 1802/udp # ConComp1 -hp-hcip-gwy 1803/tcp # HP-HCIP-GWY -hp-hcip-gwy 1803/udp # HP-HCIP-GWY -enl 1804/tcp # ENL -enl 1804/udp # ENL -enl-name 1805/tcp # ENL-Name -enl-name 1805/udp # ENL-Name -musiconline 1806/tcp # Musiconline -musiconline 1806/udp # Musiconline -fhsp 1807/tcp # Fujitsu Hot Standby Protocol -fhsp 1807/udp # Fujitsu Hot Standby Protocol -oracle-vp2 1808/tcp # Oracle-VP2 -oracle-vp2 1808/udp # Oracle-VP2 -oracle-vp1 1809/tcp # Oracle-VP1 -oracle-vp1 1809/udp # Oracle-VP1 -jerand-lm 1810/tcp # Jerand License Manager -jerand-lm 1810/udp # Jerand License Manager -scientia-sdb 1811/tcp # Scientia-SDB -scientia-sdb 1811/udp # Scientia-SDB -tdp-suite 1814/tcp # TDP Suite -tdp-suite 1814/udp # TDP Suite -mmpft 1815/tcp # MMPFT -mmpft 1815/udp # MMPFT -harp 1816/tcp # HARP -harp 1816/udp # HARP -rkb-oscs 1817/tcp # RKB-OSCS -rkb-oscs 1817/udp # RKB-OSCS -etftp 1818/tcp # Enhanced Trivial File Transfer Protocol -etftp 1818/udp # Enhanced Trivial File Transfer Protocol -plato-lm 1819/tcp # Plato License Manager -plato-lm 1819/udp # Plato License Manager -mcagent 1820/tcp # mcagent -mcagent 1820/udp # mcagent -donnyworld 1821/tcp # donnyworld -donnyworld 1821/udp # donnyworld -es-elmd 1822/tcp # es-elmd -es-elmd 1822/udp # es-elmd -unisys-lm 1823/tcp # Unisys Natural Language License Manager -unisys-lm 1823/udp # Unisys Natural Language License Manager -metrics-pas 1824/tcp # metrics-pas -metrics-pas 1824/udp # metrics-pas -direcpc-video 1825/tcp # DirecPC Video -direcpc-video 1825/udp # DirecPC Video -ardt 1826/tcp # ARDT -ardt 1826/udp # ARDT -asi 1827/tcp # ASI -asi 1827/udp # ASI -itm-mcell-u 1828/tcp # itm-mcell-u -itm-mcell-u 1828/udp # itm-mcell-u -optika-emedia 1829/tcp # Optika eMedia -optika-emedia 1829/udp # Optika eMedia -net8-cman 1830/tcp # Oracle Net8 CMan Admin -net8-cman 1830/udp # Oracle Net8 CMan Admin -myrtle 1831/tcp # Myrtle -myrtle 1831/udp # Myrtle -tht-treasure 1832/tcp # ThoughtTreasure -tht-treasure 1832/udp # ThoughtTreasure -udpradio 1833/tcp # udpradio -udpradio 1833/udp # udpradio -ardusuni 1834/tcp # ARDUS Unicast -ardusuni 1834/udp # ARDUS Unicast -ardusmul 1835/tcp # ARDUS Multicast -ardusmul 1835/udp # ARDUS Multicast -ste-smsc 1836/tcp # ste-smsc -ste-smsc 1836/udp # ste-smsc -csoft1 1837/tcp # csoft1 -csoft1 1837/udp # csoft1 -talnet 1838/tcp # TALNET -talnet 1838/udp # TALNET -netopia-vo1 1839/tcp # netopia-vo1 -netopia-vo1 1839/udp # netopia-vo1 -netopia-vo2 1840/tcp # netopia-vo2 -netopia-vo2 1840/udp # netopia-vo2 -netopia-vo3 1841/tcp # netopia-vo3 -netopia-vo3 1841/udp # netopia-vo3 -netopia-vo4 1842/tcp # netopia-vo4 -netopia-vo4 1842/udp # netopia-vo4 -netopia-vo5 1843/tcp # netopia-vo5 -netopia-vo5 1843/udp # netopia-vo5 -direcpc-dll 1844/tcp # DirecPC-DLL -direcpc-dll 1844/udp # DirecPC-DLL -altalink 1845/tcp # altalink -altalink 1845/udp # altalink -tunstall-pnc 1846/tcp # Tunstall PNC -tunstall-pnc 1846/udp # Tunstall PNC -slp-notify 1847/tcp # SLP Notification -slp-notify 1847/udp # SLP Notification -fjdocdist 1848/tcp # fjdocdist -fjdocdist 1848/udp # fjdocdist -alpha-sms 1849/tcp # ALPHA-SMS -alpha-sms 1849/udp # ALPHA-SMS -gsi 1850/tcp # GSI -gsi 1850/udp # GSI -ctcd 1851/tcp # ctcd -ctcd 1851/udp # ctcd -virtual-time 1852/tcp # Virtual Time -virtual-time 1852/udp # Virtual Time -vids-avtp 1853/tcp # VIDS-AVTP -vids-avtp 1853/udp # VIDS-AVTP -buddy-draw 1854/tcp # Buddy Draw -buddy-draw 1854/udp # Buddy Draw -fiorano-rtrsvc 1855/tcp # Fiorano RtrSvc -fiorano-rtrsvc 1855/udp # Fiorano RtrSvc -fiorano-msgsvc 1856/tcp # Fiorano MsgSvc -fiorano-msgsvc 1856/udp # Fiorano MsgSvc -datacaptor 1857/tcp # DataCaptor -datacaptor 1857/udp # DataCaptor -privateark 1858/tcp # PrivateArk -privateark 1858/udp # PrivateArk -gammafetchsvr 1859/tcp # Gamma Fetcher Server -gammafetchsvr 1859/udp # Gamma Fetcher Server -sunscalar-svc 1860/tcp # SunSCALAR Services -sunscalar-svc 1860/udp # SunSCALAR Services -lecroy-vicp 1861/tcp # LeCroy VICP -lecroy-vicp 1861/udp # LeCroy VICP -mysql-cm-agent 1862/tcp # MySQL Cluster Manager Agent -mysql-cm-agent 1862/udp # MySQL Cluster Manager Agent -msnp 1863/tcp # MSNP -msnp 1863/udp # MSNP -paradym-31port 1864/tcp # Paradym 31 Port -paradym-31port 1864/udp # Paradym 31 Port -entp 1865/tcp # ENTP -entp 1865/udp # ENTP -swrmi 1866/tcp # swrmi -swrmi 1866/udp # swrmi -udrive 1867/tcp # UDRIVE -udrive 1867/udp # UDRIVE -viziblebrowser 1868/tcp # VizibleBrowser -viziblebrowser 1868/udp # VizibleBrowser -transact 1869/tcp # TransAct -transact 1869/udp # TransAct -sunscalar-dns 1870/tcp # SunSCALAR DNS Service -sunscalar-dns 1870/udp # SunSCALAR DNS Service -canocentral0 1871/tcp # Cano Central 0 -canocentral0 1871/udp # Cano Central 0 -canocentral1 1872/tcp # Cano Central 1 -canocentral1 1872/udp # Cano Central 1 -fjmpjps 1873/tcp # Fjmpjps -fjmpjps 1873/udp # Fjmpjps -fjswapsnp 1874/tcp # Fjswapsnp -fjswapsnp 1874/udp # Fjswapsnp -westell-stats 1875/tcp # westell stats -westell-stats 1875/udp # westell stats -ewcappsrv 1876/tcp # ewcappsrv -ewcappsrv 1876/udp # ewcappsrv -hp-webqosdb 1877/tcp # hp-webqosdb -hp-webqosdb 1877/udp # hp-webqosdb -drmsmc 1878/tcp # drmsmc -drmsmc 1878/udp # drmsmc -nettgain-nms 1879/tcp # NettGain NMS -nettgain-nms 1879/udp # NettGain NMS -vsat-control 1880/tcp # Gilat VSAT Control -vsat-control 1880/udp # Gilat VSAT Control -ibm-mqseries2 1881/tcp # IBM WebSphere MQ Everyplace -ibm-mqseries2 1881/udp # IBM WebSphere MQ Everyplace -ecsqdmn 1882/tcp # CA eTrust Common Services -ecsqdmn 1882/udp # CA eTrust Common Services -ibm-mqisdp 1883/tcp # IBM MQSeries SCADA -ibm-mqisdp 1883/udp # IBM MQSeries SCADA -idmaps 1884/tcp # Internet Distance Map Svc -idmaps 1884/udp # Internet Distance Map Svc -vrtstrapserver 1885/tcp # Veritas Trap Server -vrtstrapserver 1885/udp # Veritas Trap Server -leoip 1886/tcp # Leonardo over IP -leoip 1886/udp # Leonardo over IP -filex-lport 1887/tcp # FileX Listening Port -filex-lport 1887/udp # FileX Listening Port -ncconfig 1888/tcp # NC Config Port -ncconfig 1888/udp # NC Config Port -unify-adapter 1889/tcp # Unify Web Adapter Service -unify-adapter 1889/udp # Unify Web Adapter Service -wilkenlistener 1890/tcp # wilkenListener -wilkenlistener 1890/udp # wilkenListener -childkey-notif 1891/tcp # ChildKey Notification -childkey-notif 1891/udp # ChildKey Notification -childkey-ctrl 1892/tcp # ChildKey Control -childkey-ctrl 1892/udp # ChildKey Control -elad 1893/tcp # ELAD Protocol -elad 1893/udp # ELAD Protocol -o2server-port 1894/tcp # O2Server Port -o2server-port 1894/udp # O2Server Port -b-novative-ls 1896/tcp # b-novative license server -b-novative-ls 1896/udp # b-novative license server -metaagent 1897/tcp # MetaAgent -metaagent 1897/udp # MetaAgent -cymtec-port 1898/tcp # Cymtec secure management -cymtec-port 1898/udp # Cymtec secure management -mc2studios 1899/tcp # MC2Studios -mc2studios 1899/udp # MC2Studios -ssdp 1900/tcp # SSDP -ssdp 1900/udp # SSDP -fjicl-tep-a 1901/tcp # Fujitsu ICL Terminal Emulator Program A -fjicl-tep-a 1901/udp # Fujitsu ICL Terminal Emulator Program A -fjicl-tep-b 1902/tcp # Fujitsu ICL Terminal Emulator Program B -fjicl-tep-b 1902/udp # Fujitsu ICL Terminal Emulator Program B -linkname 1903/tcp # Local Link Name Resolution -linkname 1903/udp # Local Link Name Resolution -fjicl-tep-c 1904/tcp # Fujitsu ICL Terminal Emulator Program C -fjicl-tep-c 1904/udp # Fujitsu ICL Terminal Emulator Program C -sugp 1905/tcp # Secure UP.Link Gateway Protocol -sugp 1905/udp # Secure UP.Link Gateway Protocol -tpmd 1906/tcp # TPortMapperReq -tpmd 1906/udp # TPortMapperReq -intrastar 1907/tcp # IntraSTAR -intrastar 1907/udp # IntraSTAR -dawn 1908/tcp # Dawn -dawn 1908/udp # Dawn -global-wlink 1909/tcp # Global World Link -global-wlink 1909/udp # Global World Link -ultrabac 1910/tcp # UltraBac Software communications port -ultrabac 1910/udp # UltraBac Software communications port -rhp-iibp 1912/tcp # rhp-iibp -rhp-iibp 1912/udp # rhp-iibp -armadp 1913/tcp # armadp -armadp 1913/udp # armadp -elm-momentum 1914/tcp # Elm-Momentum -elm-momentum 1914/udp # Elm-Momentum -facelink 1915/tcp # FACELINK -facelink 1915/udp # FACELINK -persona 1916/tcp # Persoft Persona -persona 1916/udp # Persoft Persona -noagent 1917/tcp # nOAgent -noagent 1917/udp # nOAgent -can-nds 1918/tcp # IBM Tivole Directory Service - NDS -can-nds 1918/udp # IBM Tivole Directory Service - NDS -can-dch 1919/tcp # IBM Tivoli Directory Service - DCH -can-dch 1919/udp # IBM Tivoli Directory Service - DCH -can-ferret 1920/tcp # IBM Tivoli Directory Service - FERRET -can-ferret 1920/udp # IBM Tivoli Directory Service - FERRET -noadmin 1921/tcp # NoAdmin -noadmin 1921/udp # NoAdmin -tapestry 1922/tcp # Tapestry -tapestry 1922/udp # Tapestry -spice 1923/tcp # SPICE -spice 1923/udp # SPICE -xiip 1924/tcp # XIIP -xiip 1924/udp # XIIP -discovery-port 1925/tcp # Surrogate Discovery Port -discovery-port 1925/udp # Surrogate Discovery Port -egs 1926/tcp # Evolution Game Server -egs 1926/udp # Evolution Game Server -videte-cipc 1927/tcp # Videte CIPC Port -videte-cipc 1927/udp # Videte CIPC Port -emsd-port 1928/tcp # Expnd Maui Srvr Dscovr -emsd-port 1928/udp # Expnd Maui Srvr Dscovr -bandwiz-system 1929/tcp # Bandwiz System - Server -bandwiz-system 1929/udp # Bandwiz System - Server -driveappserver 1930/tcp # Drive AppServer -driveappserver 1930/udp # Drive AppServer -amdsched 1931/tcp # AMD SCHED -amdsched 1931/udp # AMD SCHED -ctt-broker 1932/tcp # CTT Broker -ctt-broker 1932/udp # CTT Broker -xmapi 1933/tcp # IBM LM MT Agent -xmapi 1933/udp # IBM LM MT Agent -xaapi 1934/tcp # IBM LM Appl Agent -xaapi 1934/udp # IBM LM Appl Agent -macromedia-fcs 1935/tcp # Macromedia Flash Communications Server MX -macromedia-fcs 1935/udp # Macromedia Flash Communications server MX -jetcmeserver 1936/tcp # JetCmeServer Server Port -jetcmeserver 1936/udp # JetCmeServer Server Port -jwserver 1937/tcp # JetVWay Server Port -jwserver 1937/udp # JetVWay Server Port -jwclient 1938/tcp # JetVWay Client Port -jwclient 1938/udp # JetVWay Client Port -jvserver 1939/tcp # JetVision Server Port -jvserver 1939/udp # JetVision Server Port -jvclient 1940/tcp # JetVision Client Port -jvclient 1940/udp # JetVision Client Port -dic-aida 1941/tcp # DIC-Aida -dic-aida 1941/udp # DIC-Aida -res 1942/tcp # Real Enterprise Service -res 1942/udp # Real Enterprise Service -beeyond-media 1943/tcp # Beeyond Media -beeyond-media 1943/udp # Beeyond Media -close-combat 1944/tcp # close-combat -close-combat 1944/udp # close-combat -dialogic-elmd 1945/tcp # dialogic-elmd -dialogic-elmd 1945/udp # dialogic-elmd -tekpls 1946/tcp # tekpls -tekpls 1946/udp # tekpls -hlserver 1947/tcp # hlserver -hlserver 1947/udp # hlserver -eye2eye 1948/tcp # eye2eye -eye2eye 1948/udp # eye2eye -ismaeasdaqlive 1949/tcp # ISMA Easdaq Live -ismaeasdaqlive 1949/udp # ISMA Easdaq Live -ismaeasdaqtest 1950/tcp # ISMA Easdaq Test -ismaeasdaqtest 1950/udp # ISMA Easdaq Test -bcs-lmserver 1951/tcp # bcs-lmserver -bcs-lmserver 1951/udp # bcs-lmserver -mpnjsc 1952/tcp # mpnjsc -mpnjsc 1952/udp # mpnjsc -rapidbase 1953/tcp # Rapid Base -rapidbase 1953/udp # Rapid Base -abr-api 1954/tcp # ABR-API (diskbridge) -abr-api 1954/udp # ABR-API (diskbridge) -abr-secure 1955/tcp # ABR-Secure Data (diskbridge) -abr-secure 1955/udp # ABR-Secure Data (diskbridge) -vrtl-vmf-ds 1956/tcp # Vertel VMF DS -vrtl-vmf-ds 1956/udp # Vertel VMF DS -unix-status 1957/tcp # unix-status -unix-status 1957/udp # unix-status -dxadmind 1958/tcp # CA Administration Daemon -dxadmind 1958/udp # CA Administration Daemon -simp-all 1959/tcp # SIMP Channel -simp-all 1959/udp # SIMP Channel -nasmanager 1960/tcp # Merit DAC NASmanager -nasmanager 1960/udp # Merit DAC NASmanager -bts-appserver 1961/tcp # BTS APPSERVER -bts-appserver 1961/udp # BTS APPSERVER -biap-mp 1962/tcp # BIAP-MP -biap-mp 1962/udp # BIAP-MP -webmachine 1963/tcp # WebMachine -webmachine 1963/udp # WebMachine -solid-e-engine 1964/tcp # SOLID E ENGINE -solid-e-engine 1964/udp # SOLID E ENGINE -tivoli-npm 1965/tcp # Tivoli NPM -tivoli-npm 1965/udp # Tivoli NPM -slush 1966/tcp # Slush -slush 1966/udp # Slush -sns-quote 1967/tcp # SNS Quote -sns-quote 1967/udp # SNS Quote -lipsinc 1968/tcp # LIPSinc -lipsinc 1968/udp # LIPSinc -lipsinc1 1969/tcp # LIPSinc 1 -lipsinc1 1969/udp # LIPSinc 1 -netop-rc 1970/tcp # NetOp Remote Control -netop-rc 1970/udp # NetOp Remote Control -netop-school 1971/tcp # NetOp School -netop-school 1971/udp # NetOp School -intersys-cache 1972/tcp # Cache -intersys-cache 1972/udp # Cache -dlsrap 1973/tcp # Data Link Switching Remote Access Protocol -dlsrap 1973/udp # Data Link Switching Remote Access Protocol -drp 1974/tcp # DRP -drp 1974/udp # DRP -tcoflashagent 1975/tcp # TCO Flash Agent -tcoflashagent 1975/udp # TCO Flash Agent -tcoregagent 1976/tcp # TCO Reg Agent -tcoregagent 1976/udp # TCO Reg Agent -tcoaddressbook 1977/tcp # TCO Address Book -tcoaddressbook 1977/udp # TCO Address Book -unisql 1978/tcp # UniSQL -unisql 1978/udp # UniSQL -unisql-java 1979/tcp # UniSQL Java -unisql-java 1979/udp # UniSQL Java -pearldoc-xact 1980/tcp # PearlDoc XACT -pearldoc-xact 1980/udp # PearlDoc XACT -p2pq 1981/tcp # p2pQ -p2pq 1981/udp # p2pQ -estamp 1982/tcp # Evidentiary Timestamp -estamp 1982/udp # Evidentiary Timestamp -lhtp 1983/tcp # Loophole Test Protocol -lhtp 1983/udp # Loophole Test Protocol -bb 1984/tcp # BB -bb 1984/udp # BB -tr-rsrb-p1 1987/tcp # cisco RSRB Priority 1 port -tr-rsrb-p1 1987/udp # cisco RSRB Priority 1 port -tr-rsrb-p2 1988/tcp # cisco RSRB Priority 2 port -tr-rsrb-p2 1988/udp # cisco RSRB Priority 2 port -tr-rsrb-p3 1989/tcp # cisco RSRB Priority 3 port -tr-rsrb-p3 1989/udp # cisco RSRB Priority 3 port -#mshnet 1989/tcp # MHSnet system -#mshnet 1989/udp # MHSnet system -stun-p1 1990/tcp # cisco STUN Priority 1 port -stun-p1 1990/udp # cisco STUN Priority 1 port -stun-p2 1991/tcp # cisco STUN Priority 2 port -stun-p2 1991/udp # cisco STUN Priority 2 port -stun-p3 1992/tcp # cisco STUN Priority 3 port -stun-p3 1992/udp # cisco STUN Priority 3 port -#ipsendmsg 1992/tcp # IPsendmsg -#ipsendmsg 1992/udp # IPsendmsg -snmp-tcp-port 1993/tcp # cisco SNMP TCP port -snmp-tcp-port 1993/udp # cisco SNMP TCP port -stun-port 1994/tcp # cisco serial tunnel port -stun-port 1994/udp # cisco serial tunnel port -perf-port 1995/tcp # cisco perf port -perf-port 1995/udp # cisco perf port -tr-rsrb-port 1996/tcp # cisco Remote SRB port -tr-rsrb-port 1996/udp # cisco Remote SRB port -x25-svc-port 1998/tcp # cisco X.25 service (XOT) -x25-svc-port 1998/udp # cisco X.25 service (XOT) -tcp-id-port 1999/tcp # cisco identification port -tcp-id-port 1999/udp # cisco identification port -dc 2001/tcp # -wizard 2001/udp # curry -globe 2002/tcp # -globe 2002/udp # -brutus 2003/udp # Brutus Server -mailbox 2004/tcp # -emce 2004/udp # CCWS mm conf -berknet 2005/tcp csync # csync for cyrus-imapd -oracle 2005/udp csync # csync for cyrus-imapd -invokator 2006/tcp # -raid-cd 2006/udp # raid -dectalk 2007/tcp # -raid-am 2007/udp # -conf 2008/tcp # -terminaldb 2008/udp # -news 2009/tcp # -whosockami 2009/udp # -search 2010/tcp # -pipe_server 2010/udp # -raid-cc 2011/tcp # raid -servserv 2011/udp # -ttyinfo 2012/tcp # -raid-ac 2012/udp # -raid-am 2013/tcp # -troff 2014/tcp # -raid-sf 2014/udp # -cypress 2015/tcp # -raid-cs 2015/udp # -bootserver 2016/tcp # -bootserver 2016/udp # -cypress-stat 2017/tcp # -bootclient 2017/udp # -terminaldb 2018/tcp # -rellpack 2018/udp # -whosockami 2019/tcp # -about 2019/udp # -xinupageserver 2020/tcp # -xinupageserver 2020/udp # -servexec 2021/tcp # -xinuexpansion1 2021/udp # -down 2022/tcp # -xinuexpansion2 2022/udp # -xinuexpansion3 2023/tcp # -xinuexpansion3 2023/udp # -xinuexpansion4 2024/tcp # -xinuexpansion4 2024/udp # -ellpack 2025/tcp # -xribs 2025/udp # -scrabble 2026/tcp # -scrabble 2026/udp # -shadowserver 2027/tcp # -shadowserver 2027/udp # -submitserver 2028/tcp # -submitserver 2028/udp # -hsrpv6 2029/tcp # Hot Standby Router Protocol IPv6 -hsrpv6 2029/udp # Hot Standby Router Protocol IPv6 -device2 2030/tcp # -device2 2030/udp # -mobrien-chat 2031/tcp # mobrien-chat -mobrien-chat 2031/udp # mobrien-chat -blackboard 2032/tcp # -blackboard 2032/udp # -glogger 2033/tcp # -glogger 2033/udp # -scoremgr 2034/tcp # -scoremgr 2034/udp # -imsldoc 2035/tcp # -imsldoc 2035/udp # -e-dpnet 2036/tcp # Ethernet WS DP network -e-dpnet 2036/udp # Ethernet WS DP network -applus 2037/tcp # APplus Application Server -applus 2037/udp # APplus Application Server -objectmanager 2038/tcp # -objectmanager 2038/udp # -prizma 2039/tcp # Prizma Monitoring Service -prizma 2039/udp # Prizma Monitoring Service -lam 2040/tcp # -lam 2040/udp # -interbase 2041/tcp # -interbase 2041/udp # -isis 2042/tcp # isis -isis 2042/udp # isis -isis-bcast 2043/tcp # isis-bcast -isis-bcast 2043/udp # isis-bcast -rimsl 2044/tcp # -rimsl 2044/udp # -cdfunc 2045/tcp # -cdfunc 2045/udp # -sdfunc 2046/tcp # -sdfunc 2046/udp # -dls-monitor 2048/tcp # -dls-monitor 2048/udp # -av-emb-config 2050/tcp # Avaya EMB Config Port -av-emb-config 2050/udp # Avaya EMB Config Port -epnsdp 2051/tcp # EPNSDP -epnsdp 2051/udp # EPNSDP -clearvisn 2052/tcp # clearVisn Services Port -clearvisn 2052/udp # clearVisn Services Port -lot105-ds-upd 2053/udp # Lot105 DSuper Updates -weblogin 2054/tcp # Weblogin Port -weblogin 2054/udp # Weblogin Port -iop 2055/tcp # Iliad-Odyssey Protocol -iop 2055/udp # Iliad-Odyssey Protocol -omnisky 2056/tcp # OmniSky Port -omnisky 2056/udp # OmniSky Port -rich-cp 2057/tcp # Rich Content Protocol -rich-cp 2057/udp # Rich Content Protocol -newwavesearch 2058/tcp # NewWaveSearchables RMI -newwavesearch 2058/udp # NewWaveSearchables RMI -bmc-messaging 2059/tcp # BMC Messaging Service -bmc-messaging 2059/udp # BMC Messaging Service -teleniumdaemon 2060/tcp # Telenium Daemon IF -teleniumdaemon 2060/udp # Telenium Daemon IF -netmount 2061/tcp # NetMount -netmount 2061/udp # NetMount -icg-swp 2062/tcp # ICG SWP Port -icg-swp 2062/udp # ICG SWP Port -icg-bridge 2063/tcp # ICG Bridge Port -icg-bridge 2063/udp # ICG Bridge Port -icg-iprelay 2064/tcp # ICG IP Relay Port -icg-iprelay 2064/udp # ICG IP Relay Port -dlsrpn 2065/tcp # Data Link Switch Read Port Number -dlsrpn 2065/udp # Data Link Switch Read Port Number -aura 2066/tcp # AVM USB Remote Architecture -aura 2066/udp # AVM USB Remote Architecture -dlswpn 2067/tcp # Data Link Switch Write Port Number -dlswpn 2067/udp # Data Link Switch Write Port Number -avauthsrvprtcl 2068/tcp # Avocent AuthSrv Protocol -avauthsrvprtcl 2068/udp # Avocent AuthSrv Protocol -event-port 2069/tcp # HTTP Event Port -event-port 2069/udp # HTTP Event Port -ah-esp-encap 2070/tcp # AH and ESP Encapsulated in UDP packet -ah-esp-encap 2070/udp # AH and ESP Encapsulated in UDP packet -acp-port 2071/tcp # Axon Control Protocol -acp-port 2071/udp # Axon Control Protocol -msync 2072/tcp # GlobeCast mSync -msync 2072/udp # GlobeCast mSync -gxs-data-port 2073/tcp # DataReel Database Socket -gxs-data-port 2073/udp # DataReel Database Socket -vrtl-vmf-sa 2074/tcp # Vertel VMF SA -vrtl-vmf-sa 2074/udp # Vertel VMF SA -newlixengine 2075/tcp # Newlix ServerWare Engine -newlixengine 2075/udp # Newlix ServerWare Engine -newlixconfig 2076/tcp # Newlix JSPConfig -newlixconfig 2076/udp # Newlix JSPConfig -tsrmagt 2077/tcp # Old Tivoli Storage Manager -tsrmagt 2077/udp # Old Tivoli Storage Manager -tpcsrvr 2078/tcp # IBM Total Productivity Center Server -tpcsrvr 2078/udp # IBM Total Productivity Center Server -idware-router 2079/tcp # IDWARE Router Port -idware-router 2079/udp # IDWARE Router Port -autodesk-nlm 2080/tcp # Autodesk NLM (FLEXlm) -autodesk-nlm 2080/udp # Autodesk NLM (FLEXlm) -kme-trap-port 2081/tcp # KME PRINTER TRAP PORT -kme-trap-port 2081/udp # KME PRINTER TRAP PORT -infowave 2082/tcp # Infowave Mobility Server -infowave 2082/udp # Infowave Mobiltiy Server -radsec 2083/tcp # Secure Radius Service -radsec 2083/udp # Secure Radius Service -sunclustergeo 2084/tcp # SunCluster Geographic -sunclustergeo 2084/udp # SunCluster Geographic -ada-cip 2085/tcp # ADA Control -ada-cip 2085/udp # ADA Control -gnunet 2086/tcp # GNUnet -gnunet 2086/udp # GNUnet -eli 2087/tcp # ELI - Event Logging Integration -eli 2087/udp # ELI - Event Logging Integration -ip-blf 2088/tcp # IP Busy Lamp Field -ip-blf 2088/udp # IP Busy Lamp Field -sep 2089/tcp # Security Encapsulation Protocol - SEP -sep 2089/udp # Security Encapsulation Protocol - SEP -lrp 2090/tcp # Load Report Protocol -lrp 2090/udp # Load Report Protocol -prp 2091/tcp # PRP -prp 2091/udp # PRP -descent3 2092/tcp # Descent 3 -descent3 2092/udp # Descent 3 -nbx-cc 2093/tcp # NBX CC -nbx-cc 2093/udp # NBX CC -nbx-au 2094/tcp # NBX AU -nbx-au 2094/udp # NBX AU -nbx-ser 2095/tcp # NBX SER -nbx-ser 2095/udp # NBX SER -nbx-dir 2096/tcp # NBX DIR -nbx-dir 2096/udp # NBX DIR -jetformpreview 2097/tcp # Jet Form Preview -jetformpreview 2097/udp # Jet Form Preview -dialog-port 2098/tcp # Dialog Port -dialog-port 2098/udp # Dialog Port -h2250-annex-g 2099/tcp # H.225.0 Annex G -h2250-annex-g 2099/udp # H.225.0 Annex G -amiganetfs 2100/tcp # Amiga Network Filesystem -amiganetfs 2100/udp # Amiga Network Filesystem -rtcm-sc104 2101/tcp # rtcm-sc104 -rtcm-sc104 2101/udp # rtcm-sc104 -minipay 2105/udp # MiniPay -mzap 2106/tcp # MZAP -mzap 2106/udp # MZAP -bintec-admin 2107/tcp # BinTec Admin -bintec-admin 2107/udp # BinTec Admin -comcam 2108/tcp # Comcam -comcam 2108/udp # Comcam -ergolight 2109/tcp # Ergolight -ergolight 2109/udp # Ergolight -umsp 2110/tcp # UMSP -umsp 2110/udp # UMSP -dsatp 2111/tcp # DSATP -dsatp 2111/udp # DSATP -idonix-metanet 2112/tcp # Idonix MetaNet -idonix-metanet 2112/udp # Idonix MetaNet -hsl-storm 2113/tcp # HSL StoRM -hsl-storm 2113/udp # HSL StoRM -newheights 2114/tcp # NEWHEIGHTS -newheights 2114/udp # NEWHEIGHTS -kdm 2115/tcp # Key Distribution Manager -kdm 2115/udp # Key Distribution Manager -ccowcmr 2116/tcp # CCOWCMR -ccowcmr 2116/udp # CCOWCMR -mentaclient 2117/tcp # MENTACLIENT -mentaclient 2117/udp # MENTACLIENT -mentaserver 2118/tcp # MENTASERVER -mentaserver 2118/udp # MENTASERVER -gsigatekeeper 2119/tcp # GSIGATEKEEPER -gsigatekeeper 2119/udp # GSIGATEKEEPER -qencp 2120/tcp # Quick Eagle Networks CP -qencp 2120/udp # Quick Eagle Networks CP -scientia-ssdb 2121/tcp # SCIENTIA-SSDB -scientia-ssdb 2121/udp # SCIENTIA-SSDB -caupc-remote 2122/tcp # CauPC Remote Control -caupc-remote 2122/udp # CauPC Remote Control -gtp-control 2123/tcp # GTP-Control Plane (3GPP) -gtp-control 2123/udp # GTP-Control Plane (3GPP) -elatelink 2124/tcp # ELATELINK -elatelink 2124/udp # ELATELINK -lockstep 2125/tcp # LOCKSTEP -lockstep 2125/udp # LOCKSTEP -pktcable-cops 2126/tcp # PktCable-COPS -pktcable-cops 2126/udp # PktCable-COPS -index-pc-wb 2127/tcp # INDEX-PC-WB -index-pc-wb 2127/udp # INDEX-PC-WB -net-steward 2128/tcp # Net Steward Control -net-steward 2128/udp # Net Steward Control -cs-live 2129/tcp # cs-live.com -cs-live 2129/udp # cs-live.com -xds 2130/tcp # XDS -xds 2130/udp # XDS -avantageb2b 2131/tcp # Avantageb2b -avantageb2b 2131/udp # Avantageb2b -solera-epmap 2132/tcp # SoleraTec End Point Map -solera-epmap 2132/udp # SoleraTec End Point Map -zymed-zpp 2133/tcp # ZYMED-ZPP -zymed-zpp 2133/udp # ZYMED-ZPP -avenue 2134/tcp # AVENUE -avenue 2134/udp # AVENUE -gris 2135/tcp # Grid Resource Information Server -gris 2135/udp # Grid Resource Information Server -appworxsrv 2136/tcp # APPWORXSRV -appworxsrv 2136/udp # APPWORXSRV -connect 2137/tcp # CONNECT -connect 2137/udp # CONNECT -unbind-cluster 2138/tcp # UNBIND-CLUSTER -unbind-cluster 2138/udp # UNBIND-CLUSTER -ias-auth 2139/tcp # IAS-AUTH -ias-auth 2139/udp # IAS-AUTH -ias-reg 2140/tcp # IAS-REG -ias-reg 2140/udp # IAS-REG -ias-admind 2141/tcp # IAS-ADMIND -ias-admind 2141/udp # IAS-ADMIND -tdmoip 2142/tcp # TDM OVER IP -tdmoip 2142/udp # TDM OVER IP -lv-jc 2143/tcp # Live Vault Job Control -lv-jc 2143/udp # Live Vault Job Control -lv-ffx 2144/tcp # Live Vault Fast Object Transfer -lv-ffx 2144/udp # Live Vault Fast Object Transfer -lv-pici 2145/tcp # Live Vault Remote Diagnostic Console Support -lv-pici 2145/udp # Live Vault Remote Diagnostic Console Support -lv-not 2146/tcp # Live Vault Admin Event Notification -lv-not 2146/udp # Live Vault Admin Event Notification -lv-auth 2147/tcp # Live Vault Authentication -lv-auth 2147/udp # Live Vault Authentication -veritas-ucl 2148/tcp # VERITAS UNIVERSAL COMMUNICATION LAYER -veritas-ucl 2148/udp # VERITAS UNIVERSAL COMMUNICATION LAYER -acptsys 2149/tcp # ACPTSYS -acptsys 2149/udp # ACPTSYS -docent 2151/tcp # DOCENT -docent 2151/udp # DOCENT -gtp-user 2152/tcp # GTP-User Plane (3GPP) -gtp-user 2152/udp # GTP-User Plane (3GPP) -ctlptc 2153/tcp # Control Protocol -ctlptc 2153/udp # Control Protocol -stdptc 2154/tcp # Standard Protocol -stdptc 2154/udp # Standard Protocol -brdptc 2155/tcp # Bridge Protocol -brdptc 2155/udp # Bridge Protocol -trp 2156/tcp # Talari Reliable Protocol -trp 2156/udp # Talari Reliable Protocol -xnds 2157/tcp # Xerox Network Document Scan Protocol -xnds 2157/udp # Xerox Network Document Scan Protocol -touchnetplus 2158/tcp # TouchNetPlus Service -touchnetplus 2158/udp # TouchNetPlus Service -gdbremote 2159/tcp # GDB Remote Debug Port -gdbremote 2159/udp # GDB Remote Debug Port -apc-2160 2160/tcp # APC 2160 -apc-2160 2160/udp # APC 2160 -apc-2161 2161/tcp # APC 2161 -apc-2161 2161/udp # APC 2161 -navisphere 2162/tcp # Navisphere -navisphere 2162/udp # Navisphere -navisphere-sec 2163/tcp # Navisphere Secure -navisphere-sec 2163/udp # Navisphere Secure -ddns-v3 2164/tcp # Dynamic DNS Version 3 -ddns-v3 2164/udp # Dynamic DNS Version 3 -x-bone-api 2165/tcp # X-Bone API -x-bone-api 2165/udp # X-Bone API -iwserver 2166/tcp # iwserver -iwserver 2166/udp # iwserver -raw-serial 2167/tcp # Raw Async Serial Link -raw-serial 2167/udp # Raw Async Serial Link -easy-soft-mux 2168/tcp # easy-soft Multiplexer -easy-soft-mux 2168/udp # easy-soft Multiplexer -brain 2169/tcp # Backbone for Academic Information Notification (BRAIN) -brain 2169/udp # Backbone for Academic Information Notification (BRAIN) -eyetv 2170/tcp # EyeTV Server Port -eyetv 2170/udp # EyeTV Server Port -msfw-storage 2171/tcp # MS Firewall Storage -msfw-storage 2171/udp # MS Firewall Storage -msfw-s-storage 2172/tcp # MS Firewall SecureStorage -msfw-s-storage 2172/udp # MS Firewall SecureStorage -msfw-replica 2173/tcp # MS Firewall Replication -msfw-replica 2173/udp # MS Firewall Replication -msfw-array 2174/tcp # MS Firewall Intra Array -msfw-array 2174/udp # MS Firewall Intra Array -airsync 2175/tcp # Microsoft Desktop AirSync Protocol -airsync 2175/udp # Microsoft Desktop AirSync Protocol -rapi 2176/tcp # Microsoft ActiveSync Remote API -rapi 2176/udp # Microsoft ActiveSync Remote API -qwave 2177/tcp # qWAVE Bandwidth Estimate -qwave 2177/udp # qWAVE Bandwidth Estimate -bitspeer 2178/tcp # Peer Services for BITS -bitspeer 2178/udp # Peer Services for BITS -vmrdp 2179/tcp # Microsoft RDP for virtual machines -vmrdp 2179/udp # Microsoft RDP for virtual machines -mc-gt-srv 2180/tcp # Millicent Vendor Gateway Server -mc-gt-srv 2180/udp # Millicent Vendor Gateway Server -eforward 2181/tcp # eforward -eforward 2181/udp # eforward -cgn-stat 2182/tcp # CGN status -cgn-stat 2182/udp # CGN status -cgn-config 2183/tcp # Code Green configuration -cgn-config 2183/udp # Code Green configuration -nvd 2184/tcp # NVD User -nvd 2184/udp # NVD User -onbase-dds 2185/tcp # OnBase Distributed Disk Services -onbase-dds 2185/udp # OnBase Distributed Disk Services -gtaua 2186/tcp # Guy-Tek Automated Update Applications -gtaua 2186/udp # Guy-Tek Automated Update Applications -ssmc 2187/tcp # Sepehr System Management Control -ssmd 2187/udp # Sepehr System Management Data -tivoconnect 2190/tcp # TiVoConnect Beacon -tivoconnect 2190/udp # TiVoConnect Beacon -tvbus 2191/tcp # TvBus Messaging -tvbus 2191/udp # TvBus Messaging -asdis 2192/tcp # ASDIS software management -asdis 2192/udp # ASDIS software management -drwcs 2193/tcp # Dr.Web Enterprise Management Service -drwcs 2193/udp # Dr.Web Enterprise Management Service -mnp-exchange 2197/tcp # MNP data exchange -mnp-exchange 2197/udp # MNP data exchange -onehome-remote 2198/tcp # OneHome Remote Access -onehome-remote 2198/udp # OneHome Remote Access -onehome-help 2199/tcp # OneHome Service Port -onehome-help 2199/udp # OneHome Service Port -ici 2200/tcp # ICI -ici 2200/udp # ICI -ats 2201/tcp # Advanced Training System Program -ats 2201/udp # Advanced Training System Program -imtc-map 2202/tcp # Int. Multimedia Teleconferencing Cosortium -imtc-map 2202/udp # Int. Multimedia Teleconferencing Cosortium -b2-runtime 2203/tcp # b2 Runtime Protocol -b2-runtime 2203/udp # b2 Runtime Protocol -b2-license 2204/tcp # b2 License Server -b2-license 2204/udp # b2 License Server -jps 2205/tcp # Java Presentation Server -jps 2205/udp # Java Presentation Server -hpocbus 2206/tcp # HP OpenCall bus -hpocbus 2206/udp # HP OpenCall bus -hpssd 2207/tcp # HP Status and Services -hpssd 2207/udp # HP Status and Services -hpiod 2208/tcp # HP I/O Backend -hpiod 2208/udp # HP I/O Backend -rimf-ps 2209/tcp # HP RIM for Files Portal Service -rimf-ps 2209/udp # HP RIM for Files Portal Service -noaaport 2210/tcp # NOAAPORT Broadcast Network -noaaport 2210/udp # NOAAPORT Broadcast Network -emwin 2211/tcp # EMWIN -emwin 2211/udp # EMWIN -leecoposserver 2212/tcp # LeeCO POS Server Service -leecoposserver 2212/udp # LeeCO POS Server Service -kali 2213/tcp # Kali -kali 2213/udp # Kali -rpi 2214/tcp # RDQ Protocol Interface -rpi 2214/udp # RDQ Protocol Interface -ipcore 2215/tcp # IPCore.co.za GPRS -ipcore 2215/udp # IPCore.co.za GPRS -vtu-comms 2216/tcp # VTU data service -vtu-comms 2216/udp # VTU data service -gotodevice 2217/tcp # GoToDevice Device Management -gotodevice 2217/udp # GoToDevice Device Management -bounzza 2218/tcp # Bounzza IRC Proxy -bounzza 2218/udp # Bounzza IRC Proxy -netiq-ncap 2219/tcp # NetIQ NCAP Protocol -netiq-ncap 2219/udp # NetIQ NCAP Protocol -netiq 2220/tcp # NetIQ End2End -netiq 2220/udp # NetIQ End2End -rockwell-csp1 2221/tcp # Rockwell CSP1 -rockwell-csp1 2221/udp # Rockwell CSP1 -EtherNet/IP-1 2222/tcp # EtherNet/IP I/O -EtherNet/IP-1 2222/udp # EtherNet/IP I/O -rockwell-csp2 2223/tcp # Rockwell CSP2 -rockwell-csp2 2223/udp # Rockwell CSP2 -efi-mg 2224/tcp # Easy Flexible Internet/Multiplayer Games -efi-mg 2224/udp # Easy Flexible Internet/Multiplayer Games -rcip-itu 2225/tcp # Resource Connection Initiation Protocol -rcip-itu 2225/sctp # Resource Connection Initiation Protocol -di-drm 2226/tcp # Digital Instinct DRM -di-drm 2226/udp # Digital Instinct DRM -di-msg 2227/tcp # DI Messaging Service -di-msg 2227/udp # DI Messaging Service -ehome-ms 2228/tcp # eHome Message Server -ehome-ms 2228/udp # eHome Message Server -datalens 2229/tcp # DataLens Service -datalens 2229/udp # DataLens Service -queueadm 2230/tcp # MetaSoft Job Queue Administration Service -queueadm 2230/udp # MetaSoft Job Queue Administration Service -wimaxasncp 2231/tcp # WiMAX ASN Control Plane Protocol -wimaxasncp 2231/udp # WiMAX ASN Control Plane Protocol -ivs-video 2232/tcp # IVS Video default -ivs-video 2232/udp # IVS Video default -infocrypt 2233/tcp # INFOCRYPT -infocrypt 2233/udp # INFOCRYPT -directplay 2234/tcp # DirectPlay -directplay 2234/udp # DirectPlay -sercomm-wlink 2235/tcp # Sercomm-WLink -sercomm-wlink 2235/udp # Sercomm-WLink -nani 2236/tcp # Nani -nani 2236/udp # Nani -optech-port1-lm 2237/tcp # Optech Port1 License Manager -optech-port1-lm 2237/udp # Optech Port1 License Manager -aviva-sna 2238/tcp # AVIVA SNA SERVER -aviva-sna 2238/udp # AVIVA SNA SERVER -imagequery 2239/tcp # Image Query -imagequery 2239/udp # Image Query -recipe 2240/tcp # RECIPe -recipe 2240/udp # RECIPe -ivsd 2241/tcp # IVS Daemon -ivsd 2241/udp # IVS Daemon -foliocorp 2242/tcp # Folio Remote Server -foliocorp 2242/udp # Folio Remote Server -magicom 2243/tcp # Magicom Protocol -magicom 2243/udp # Magicom Protocol -nmsserver 2244/tcp # NMS Server -nmsserver 2244/udp # NMS Server -hao 2245/tcp # HaO -hao 2245/udp # HaO -pc-mta-addrmap 2246/tcp # PacketCable MTA Addr Map -pc-mta-addrmap 2246/udp # PacketCable MTA Addr Map -antidotemgrsvr 2247/tcp # Antidote Deployment Manager Service -antidotemgrsvr 2247/udp # Antidote Deployment Manager Service -ums 2248/tcp # User Management Service -ums 2248/udp # User Management Service -rfmp 2249/tcp # RISO File Manager Protocol -rfmp 2249/udp # RISO File Manager Protocol -remote-collab 2250/tcp # remote-collab -remote-collab 2250/udp # remote-collab -dif-port 2251/tcp # Distributed Framework Port -dif-port 2251/udp # Distributed Framework Port -njenet-ssl 2252/tcp # NJENET using SSL -njenet-ssl 2252/udp # NJENET using SSL -dtv-chan-req 2253/tcp # DTV Channel Request -dtv-chan-req 2253/udp # DTV Channel Request -seispoc 2254/tcp # Seismic P.O.C. Port -seispoc 2254/udp # Seismic P.O.C. Port -vrtp 2255/tcp # VRTP - ViRtue Transfer Protocol -vrtp 2255/udp # VRTP - ViRtue Transfer Protocol -pcc-mfp 2256/tcp # PCC MFP -pcc-mfp 2256/udp # PCC MFP -simple-tx-rx 2257/tcp # simple text/file transfer -simple-tx-rx 2257/udp # simple text/file transfer -rcts 2258/tcp # Rotorcraft Communications Test System -rcts 2258/udp # Rotorcraft Communications Test System -acd-pm 2259/tcp # Accedian Performance Measurement -acd-pm 2259/udp # Accedian Performance Measurement -apc-2260 2260/tcp # APC 2260 -apc-2260 2260/udp # APC 2260 -comotionmaster 2261/tcp # CoMotion Master Server -comotionmaster 2261/udp # CoMotion Master Server -comotionback 2262/tcp # CoMotion Backup Server -comotionback 2262/udp # CoMotion Backup Server -ecwcfg 2263/tcp # ECweb Configuration Service -ecwcfg 2263/udp # ECweb Configuration Service -apx500api-1 2264/tcp # Audio Precision Apx500 API Port 1 -apx500api-1 2264/udp # Audio Precision Apx500 API Port 1 -apx500api-2 2265/tcp # Audio Precision Apx500 API Port 2 -apx500api-2 2265/udp # Audio Precision Apx500 API Port 2 -mfserver 2266/tcp # M-Files Server -mfserver 2266/udp # M-files Server -ontobroker 2267/tcp # OntoBroker -ontobroker 2267/udp # OntoBroker -amt 2268/tcp # AMT -amt 2268/udp # AMT -mikey 2269/tcp # MIKEY -mikey 2269/udp # MIKEY -starschool 2270/tcp # starSchool -starschool 2270/udp # starSchool -mmcals 2271/tcp # Secure Meeting Maker Scheduling -mmcals 2271/udp # Secure Meeting Maker Scheduling -mmcal 2272/tcp # Meeting Maker Scheduling -mmcal 2272/udp # Meeting Maker Scheduling -mysql-im 2273/tcp # MySQL Instance Manager -mysql-im 2273/udp # MySQL Instance Manager -pcttunnell 2274/tcp # PCTTunneller -pcttunnell 2274/udp # PCTTunneller -ibridge-data 2275/tcp # iBridge Conferencing -ibridge-data 2275/udp # iBridge Conferencing -ibridge-mgmt 2276/tcp # iBridge Management -ibridge-mgmt 2276/udp # iBridge Management -bluectrlproxy 2277/tcp # Bt device control proxy -bluectrlproxy 2277/udp # Bt device control proxy -s3db 2278/tcp # Simple Stacked Sequences Database -s3db 2278/udp # Simple Stacked Sequences Database -xmquery 2279/tcp # xmquery -xmquery 2279/udp # xmquery -lnvpoller 2280/tcp # LNVPOLLER -lnvpoller 2280/udp # LNVPOLLER -lnvconsole 2281/tcp # LNVCONSOLE -lnvconsole 2281/udp # LNVCONSOLE -lnvalarm 2282/tcp # LNVALARM -lnvalarm 2282/udp # LNVALARM -lnvstatus 2283/tcp # LNVSTATUS -lnvstatus 2283/udp # LNVSTATUS -lnvmaps 2284/tcp # LNVMAPS -lnvmaps 2284/udp # LNVMAPS -lnvmailmon 2285/tcp # LNVMAILMON -lnvmailmon 2285/udp # LNVMAILMON -nas-metering 2286/tcp # NAS-Metering -nas-metering 2286/udp # NAS-Metering -dna 2287/tcp # DNA -dna 2287/udp # DNA -netml 2288/tcp # NETML -netml 2288/udp # NETML -dict-lookup 2289/tcp # Lookup dict server -dict-lookup 2289/udp # Lookup dict server -sonus-logging 2290/tcp # Sonus Logging Services -sonus-logging 2290/udp # Sonus Logging Services -eapsp 2291/tcp # EPSON Advanced Printer Share Protocol -eapsp 2291/udp # EPSON Advanced Printer Share Protocol -mib-streaming 2292/tcp # Sonus Element Management Services -mib-streaming 2292/udp # Sonus Element Management Services -npdbgmngr 2293/tcp # Network Platform Debug Manager -npdbgmngr 2293/udp # Network Platform Debug Manager -konshus-lm 2294/tcp # Konshus License Manager (FLEX) -konshus-lm 2294/udp # Konshus License Manager (FLEX) -advant-lm 2295/tcp # Advant License Manager -advant-lm 2295/udp # Advant License Manager -theta-lm 2296/tcp # Theta License Manager (Rainbow) -theta-lm 2296/udp # Theta License Manager (Rainbow) -d2k-datamover1 2297/tcp # D2K DataMover 1 -d2k-datamover1 2297/udp # D2K DataMover 1 -d2k-datamover2 2298/tcp # D2K DataMover 2 -d2k-datamover2 2298/udp # D2K DataMover 2 -pc-telecommute 2299/tcp # PC Telecommute -pc-telecommute 2299/udp # PC Telecommute -cvmmon 2300/tcp # CVMMON -cvmmon 2300/udp # CVMMON -cpq-wbem 2301/tcp # Compaq HTTP -cpq-wbem 2301/udp # Compaq HTTP -binderysupport 2302/tcp # Bindery Support -binderysupport 2302/udp # Bindery Support -proxy-gateway 2303/tcp # Proxy Gateway -proxy-gateway 2303/udp # Proxy Gateway -attachmate-uts 2304/tcp # Attachmate UTS -attachmate-uts 2304/udp # Attachmate UTS -mt-scaleserver 2305/tcp # MT ScaleServer -mt-scaleserver 2305/udp # MT ScaleServer -tappi-boxnet 2306/tcp # TAPPI BoxNet -tappi-boxnet 2306/udp # TAPPI BoxNet -pehelp 2307/tcp # pehelp -pehelp 2307/udp # pehelp -sdhelp 2308/tcp # sdhelp -sdhelp 2308/udp # sdhelp -sdserver 2309/tcp # SD Server -sdserver 2309/udp # SD Server -sdclient 2310/tcp # SD Client -sdclient 2310/udp # SD Client -messageservice 2311/tcp # Message Service -messageservice 2311/udp # Message Service -wanscaler 2312/tcp # WANScaler Communication Service -wanscaler 2312/udp # WANScaler Communication Service -iapp 2313/tcp # IAPP (Inter Access Point Protocol) -iapp 2313/udp # IAPP (Inter Access Point Protocol) -cr-websystems 2314/tcp # CR WebSystems -cr-websystems 2314/udp # CR WebSystems -precise-sft 2315/tcp # Precise Sft. -precise-sft 2315/udp # Precise Sft. -sent-lm 2316/tcp # SENT License Manager -sent-lm 2316/udp # SENT License Manager -attachmate-g32 2317/tcp # Attachmate G32 -attachmate-g32 2317/udp # Attachmate G32 -cadencecontrol 2318/tcp # Cadence Control -cadencecontrol 2318/udp # Cadence Control -infolibria 2319/tcp # InfoLibria -infolibria 2319/udp # InfoLibria -siebel-ns 2320/tcp # Siebel NS -siebel-ns 2320/udp # Siebel NS -rdlap 2321/tcp # RDLAP -rdlap 2321/udp # RDLAP -ofsd 2322/tcp # ofsd -ofsd 2322/udp # ofsd -3d-nfsd 2323/tcp # 3d-nfsd -3d-nfsd 2323/udp # 3d-nfsd -cosmocall 2324/tcp # Cosmocall -cosmocall 2324/udp # Cosmocall -ansysli 2325/tcp # ANSYS Licensing Interconnect -ansysli 2325/udp # ANSYS Licensing Interconnect -idcp 2326/tcp # IDCP -idcp 2326/udp # IDCP -xingcsm 2327/tcp # xingcsm -xingcsm 2327/udp # xingcsm -netrix-sftm 2328/tcp # Netrix SFTM -netrix-sftm 2328/udp # Netrix SFTM -tscchat 2330/tcp # TSCCHAT -tscchat 2330/udp # TSCCHAT -agentview 2331/tcp # AGENTVIEW -agentview 2331/udp # AGENTVIEW -rcc-host 2332/tcp # RCC Host -rcc-host 2332/udp # RCC Host -snapp 2333/tcp # SNAPP -snapp 2333/udp # SNAPP -ace-client 2334/tcp # ACE Client Auth -ace-client 2334/udp # ACE Client Auth -ace-proxy 2335/tcp # ACE Proxy -ace-proxy 2335/udp # ACE Proxy -appleugcontrol 2336/tcp # Apple UG Control -appleugcontrol 2336/udp # Apple UG Control -ideesrv 2337/tcp # ideesrv -ideesrv 2337/udp # ideesrv -norton-lambert 2338/tcp # Norton Lambert -norton-lambert 2338/udp # Norton Lambert -3com-webview 2339/tcp # 3Com WebView -3com-webview 2339/udp # 3Com WebView -wrs_registry 2340/tcp # WRS Registry -wrs_registry 2340/udp # WRS Registry -xiostatus 2341/tcp # XIO Status -xiostatus 2341/udp # XIO Status -manage-exec 2342/tcp # Seagate Manage Exec -manage-exec 2342/udp # Seagate Manage Exec -nati-logos 2343/tcp # nati logos -nati-logos 2343/udp # nati logos -fcmsys 2344/tcp # fcmsys -fcmsys 2344/udp # fcmsys -dbm 2345/tcp # dbm -dbm 2345/udp # dbm -redstorm_join 2346/tcp # Game Connection Port -redstorm_join 2346/udp # Game Connection Port -redstorm_find 2347/tcp # Game Announcement and Location -redstorm_find 2347/udp # Game Announcement and Location -redstorm_info 2348/tcp # Information to query for game status -redstorm_info 2348/udp # Information to query for game status -redstorm_diag 2349/tcp # Diagnostics Port -redstorm_diag 2349/udp # Diagnostics Port -psbserver 2350/tcp # Pharos Booking Server -psbserver 2350/udp # Pharos Booking Server -psrserver 2351/tcp # psrserver -psrserver 2351/udp # psrserver -pslserver 2352/tcp # pslserver -pslserver 2352/udp # pslserver -pspserver 2353/tcp # pspserver -pspserver 2353/udp # pspserver -psprserver 2354/tcp # psprserver -psprserver 2354/udp # psprserver -psdbserver 2355/tcp # psdbserver -psdbserver 2355/udp # psdbserver -gxtelmd 2356/tcp # GXT License Managemant -gxtelmd 2356/udp # GXT License Managemant -unihub-server 2357/tcp # UniHub Server -unihub-server 2357/udp # UniHub Server -futrix 2358/tcp # Futrix -futrix 2358/udp # Futrix -flukeserver 2359/tcp # FlukeServer -flukeserver 2359/udp # FlukeServer -nexstorindltd 2360/tcp # NexstorIndLtd -nexstorindltd 2360/udp # NexstorIndLtd -tl1 2361/tcp # TL1 -tl1 2361/udp # TL1 -digiman 2362/tcp # digiman -digiman 2362/udp # digiman -mediacntrlnfsd 2363/tcp # Media Central NFSD -mediacntrlnfsd 2363/udp # Media Central NFSD -oi-2000 2364/tcp # OI-2000 -oi-2000 2364/udp # OI-2000 -dbref 2365/tcp # dbref -dbref 2365/udp # dbref -qip-login 2366/tcp # qip-login -qip-login 2366/udp # qip-login -service-ctrl 2367/tcp # Service Control -service-ctrl 2367/udp # Service Control -opentable 2368/tcp # OpenTable -opentable 2368/udp # OpenTable -l3-hbmon 2370/tcp # L3-HBMon -l3-hbmon 2370/udp # L3-HBMon -worldwire 2371/tcp # Compaq WorldWire Port -worldwire 2371/udp # Compaq WorldWire Port -lanmessenger 2372/tcp # LanMessenger -lanmessenger 2372/udp # LanMessenger -remographlm 2373/tcp # Remograph License Manager -hydra 2374/tcp # Hydra RPC -compaq-https 2381/tcp # Compaq HTTPS -compaq-https 2381/udp # Compaq HTTPS -ms-olap3 2382/tcp # Microsoft OLAP -ms-olap3 2382/udp # Microsoft OLAP -ms-olap4 2383/tcp # Microsoft OLAP -ms-olap4 2383/udp # Microsoft OLAP -sd-request 2384/tcp # SD-REQUEST -sd-capacity 2384/udp # SD-CAPACITY -sd-data 2385/tcp # SD-DATA -sd-data 2385/udp # SD-DATA -virtualtape 2386/tcp # Virtual Tape -virtualtape 2386/udp # Virtual Tape -vsamredirector 2387/tcp # VSAM Redirector -vsamredirector 2387/udp # VSAM Redirector -mynahautostart 2388/tcp # MYNAH AutoStart -mynahautostart 2388/udp # MYNAH AutoStart -ovsessionmgr 2389/tcp # OpenView Session Mgr -ovsessionmgr 2389/udp # OpenView Session Mgr -rsmtp 2390/tcp # RSMTP -rsmtp 2390/udp # RSMTP -3com-net-mgmt 2391/tcp # 3COM Net Management -3com-net-mgmt 2391/udp # 3COM Net Management -tacticalauth 2392/tcp # Tactical Auth -tacticalauth 2392/udp # Tactical Auth -ms-olap1 2393/tcp # MS OLAP 1 -ms-olap1 2393/udp # MS OLAP 1 -ms-olap2 2394/tcp # MS OLAP 2 -ms-olap2 2394/udp # MS OLAP 2 -lan900_remote 2395/tcp # LAN900 Remote -lan900_remote 2395/udp # LAN900 Remote -wusage 2396/tcp # Wusage -wusage 2396/udp # Wusage -ncl 2397/tcp # NCL -ncl 2397/udp # NCL -orbiter 2398/tcp # Orbiter -orbiter 2398/udp # Orbiter -fmpro-fdal 2399/tcp # FileMaker, Inc. - Data Access Layer -fmpro-fdal 2399/udp # FileMaker, Inc. - Data Access Layer -opequus-server 2400/tcp # OpEquus Server -opequus-server 2400/udp # OpEquus Server -taskmaster2000 2402/tcp # TaskMaster 2000 Server -taskmaster2000 2402/udp # TaskMaster 2000 Server -#taskmaster2000 2403/tcp # TaskMaster 2000 Web -#taskmaster2000 2403/udp # TaskMaster 2000 Web -iec-104 2404/tcp # IEC 60870-5-104 process control over IP -iec-104 2404/udp # IEC 60870-5-104 process control over IP -trc-netpoll 2405/tcp # TRC Netpoll -trc-netpoll 2405/udp # TRC Netpoll -jediserver 2406/tcp # JediServer -jediserver 2406/udp # JediServer -orion 2407/tcp # Orion -orion 2407/udp # Orion -optimanet 2408/tcp # OptimaNet -optimanet 2408/udp # OptimaNet -sns-protocol 2409/tcp # SNS Protocol -sns-protocol 2409/udp # SNS Protocol -vrts-registry 2410/tcp # VRTS Registry -vrts-registry 2410/udp # VRTS Registry -netwave-ap-mgmt 2411/tcp # Netwave AP Management -netwave-ap-mgmt 2411/udp # Netwave AP Management -cdn 2412/tcp # CDN -cdn 2412/udp # CDN -orion-rmi-reg 2413/tcp # orion-rmi-reg -orion-rmi-reg 2413/udp # orion-rmi-reg -beeyond 2414/tcp # Beeyond -beeyond 2414/udp # Beeyond -codima-rtp 2415/tcp # Codima Remote Transaction Protocol -codima-rtp 2415/udp # Codima Remote Transaction Protocol -rmtserver 2416/tcp # RMT Server -rmtserver 2416/udp # RMT Server -composit-server 2417/tcp # Composit Server -composit-server 2417/udp # Composit Server -cas 2418/tcp # cas -cas 2418/udp # cas -attachmate-s2s 2419/tcp # Attachmate S2S -attachmate-s2s 2419/udp # Attachmate S2S -dslremote-mgmt 2420/tcp # DSL Remote Management -dslremote-mgmt 2420/udp # DSL Remote Management -g-talk 2421/tcp # G-Talk -g-talk 2421/udp # G-Talk -crmsbits 2422/tcp # CRMSBITS -crmsbits 2422/udp # CRMSBITS -rnrp 2423/tcp # RNRP -rnrp 2423/udp # RNRP -kofax-svr 2424/tcp # KOFAX-SVR -kofax-svr 2424/udp # KOFAX-SVR -fjitsuappmgr 2425/tcp # Fujitsu App Manager -fjitsuappmgr 2425/udp # Fujitsu App Manager -mgcp-gateway 2427/tcp # Media Gateway Control Protocol Gateway -mgcp-gateway 2427/udp # Media Gateway Control Protocol Gateway -ott 2428/tcp # One Way Trip Time -ott 2428/udp # One Way Trip Time -ft-role 2429/tcp # FT-ROLE -ft-role 2429/udp # FT-ROLE -pxc-epmap 2434/tcp # pxc-epmap -pxc-epmap 2434/udp # pxc-epmap -optilogic 2435/tcp # OptiLogic -optilogic 2435/udp # OptiLogic -topx 2436/tcp # TOP/X -topx 2436/udp # TOP/X -unicontrol 2437/tcp # UniControl -unicontrol 2437/udp # UniControl -sybasedbsynch 2439/tcp # SybaseDBSynch -sybasedbsynch 2439/udp # SybaseDBSynch -spearway 2440/tcp # Spearway Lockers -spearway 2440/udp # Spearway Lockers -pvsw-inet 2441/tcp # Pervasive I*net Data Server -pvsw-inet 2441/udp # Pervasive I*net Data Server -netangel 2442/tcp # Netangel -netangel 2442/udp # Netangel -powerclientcsf 2443/tcp # PowerClient Central Storage Facility -powerclientcsf 2443/udp # PowerClient Central Storage Facility -btpp2sectrans 2444/tcp # BT PP2 Sectrans -btpp2sectrans 2444/udp # BT PP2 Sectrans -dtn1 2445/tcp # DTN1 -dtn1 2445/udp # DTN1 -bues_service 2446/tcp # bues_service -bues_service 2446/udp # bues_service -ovwdb 2447/tcp # OpenView NNM daemon -ovwdb 2447/udp # OpenView NNM daemon -hpppssvr 2448/tcp # hpppsvr -hpppssvr 2448/udp # hpppsvr -ratl 2449/tcp # RATL -ratl 2449/udp # RATL -netadmin 2450/tcp # netadmin -netadmin 2450/udp # netadmin -netchat 2451/tcp # netchat -netchat 2451/udp # netchat -snifferclient 2452/tcp # SnifferClient -snifferclient 2452/udp # SnifferClient -madge-ltd 2453/tcp # madge ltd -madge-ltd 2453/udp # madge ltd -indx-dds 2454/tcp # IndX-DDS -indx-dds 2454/udp # IndX-DDS -wago-io-system 2455/tcp # WAGO-IO-SYSTEM -wago-io-system 2455/udp # WAGO-IO-SYSTEM -altav-remmgt 2456/tcp # altav-remmgt -altav-remmgt 2456/udp # altav-remmgt -rapido-ip 2457/tcp # Rapido_IP -rapido-ip 2457/udp # Rapido_IP -griffin 2458/tcp # griffin -griffin 2458/udp # griffin -community 2459/tcp # Community -community 2459/udp # Community -ms-theater 2460/tcp # ms-theater -ms-theater 2460/udp # ms-theater -qadmifoper 2461/tcp # qadmifoper -qadmifoper 2461/udp # qadmifoper -qadmifevent 2462/tcp # qadmifevent -qadmifevent 2462/udp # qadmifevent -lsi-raid-mgmt 2463/tcp # LSI RAID Management -lsi-raid-mgmt 2463/udp # LSI RAID Management -direcpc-si 2464/tcp # DirecPC SI -direcpc-si 2464/udp # DirecPC SI -lbm 2465/tcp # Load Balance Management -lbm 2465/udp # Load Balance Management -lbf 2466/tcp # Load Balance Forwarding -lbf 2466/udp # Load Balance Forwarding -high-criteria 2467/tcp # High Criteria -high-criteria 2467/udp # High Criteria -qip-msgd 2468/tcp # qip_msgd -qip-msgd 2468/udp # qip_msgd -mti-tcs-comm 2469/tcp # MTI-TCS-COMM -mti-tcs-comm 2469/udp # MTI-TCS-COMM -taskman-port 2470/tcp # taskman port -taskman-port 2470/udp # taskman port -seaodbc 2471/tcp # SeaODBC -seaodbc 2471/udp # SeaODBC -c3 2472/tcp # C3 -c3 2472/udp # C3 -aker-cdp 2473/tcp # Aker-cdp -aker-cdp 2473/udp # Aker-cdp -vitalanalysis 2474/tcp # Vital Analysis -vitalanalysis 2474/udp # Vital Analysis -ace-server 2475/tcp # ACE Server -ace-server 2475/udp # ACE Server -ace-svr-prop 2476/tcp # ACE Server Propagation -ace-svr-prop 2476/udp # ACE Server Propagation -ssm-cvs 2477/tcp # SecurSight Certificate Valifation Service -ssm-cvs 2477/udp # SecurSight Certificate Valifation Service -ssm-cssps 2478/tcp # SecurSight Authentication Server (SSL) -ssm-cssps 2478/udp # SecurSight Authentication Server (SSL) -ssm-els 2479/tcp # SecurSight Event Logging Server (SSL) -ssm-els 2479/udp # SecurSight Event Logging Server (SSL) -powerexchange 2480/tcp # Informatica PowerExchange Listener -powerexchange 2480/udp # Informatica PowerExchange Listener -giop 2481/tcp # Oracle GIOP -giop 2481/udp # Oracle GIOP -giop-ssl 2482/tcp # Oracle GIOP SSL -giop-ssl 2482/udp # Oracle GIOP SSL -ttc 2483/tcp # Oracle TTC -ttc 2483/udp # Oracle TTC -ttc-ssl 2484/tcp # Oracle TTC SSL -ttc-ssl 2484/udp # Oracle TTC SSL -netobjects1 2485/tcp # Net Objects1 -netobjects1 2485/udp # Net Objects1 -netobjects2 2486/tcp # Net Objects2 -netobjects2 2486/udp # Net Objects2 -pns 2487/tcp # Policy Notice Service -pns 2487/udp # Policy Notice Service -moy-corp 2488/tcp # Moy Corporation -moy-corp 2488/udp # Moy Corporation -tsilb 2489/tcp # TSILB -tsilb 2489/udp # TSILB -qip-qdhcp 2490/tcp # qip_qdhcp -qip-qdhcp 2490/udp # qip_qdhcp -conclave-cpp 2491/tcp # Conclave CPP -conclave-cpp 2491/udp # Conclave CPP -groove 2492/tcp # GROOVE -groove 2492/udp # GROOVE -talarian-mqs 2493/tcp # Talarian MQS -talarian-mqs 2493/udp # Talarian MQS -bmc-ar 2494/tcp # BMC AR -bmc-ar 2494/udp # BMC AR -fast-rem-serv 2495/tcp # Fast Remote Services -fast-rem-serv 2495/udp # Fast Remote Services -dirgis 2496/tcp # DIRGIS -dirgis 2496/udp # DIRGIS -quaddb 2497/tcp # Quad DB -quaddb 2497/udp # Quad DB -odn-castraq 2498/tcp # ODN-CasTraq -odn-castraq 2498/udp # ODN-CasTraq -rtsserv 2500/tcp # Resource Tracking system server -rtsserv 2500/udp # Resource Tracking system server -rtsclient 2501/tcp # Resource Tracking system client -rtsclient 2501/udp # Resource Tracking system client -kentrox-prot 2502/tcp # Kentrox Protocol -kentrox-prot 2502/udp # Kentrox Protocol -nms-dpnss 2503/tcp # NMS-DPNSS -nms-dpnss 2503/udp # NMS-DPNSS -wlbs 2504/tcp # WLBS -wlbs 2504/udp # WLBS -ppcontrol 2505/tcp # PowerPlay Control -ppcontrol 2505/udp # PowerPlay Control -jbroker 2506/tcp # jbroker -jbroker 2506/udp # jbroker -spock 2507/tcp # spock -spock 2507/udp # spock -jdatastore 2508/tcp # JDataStore -jdatastore 2508/udp # JDataStore -fjmpss 2509/tcp # fjmpss -fjmpss 2509/udp # fjmpss -fjappmgrbulk 2510/tcp # fjappmgrbulk -fjappmgrbulk 2510/udp # fjappmgrbulk -metastorm 2511/tcp # Metastorm -metastorm 2511/udp # Metastorm -citrixima 2512/tcp # Citrix IMA -citrixima 2512/udp # Citrix IMA -citrixadmin 2513/tcp # Citrix ADMIN -citrixadmin 2513/udp # Citrix ADMIN -facsys-ntp 2514/tcp # Facsys NTP -facsys-ntp 2514/udp # Facsys NTP -facsys-router 2515/tcp # Facsys Router -facsys-router 2515/udp # Facsys Router -maincontrol 2516/tcp # Main Control -maincontrol 2516/udp # Main Control -call-sig-trans 2517/tcp # H.323 Annex E call signaling transport -call-sig-trans 2517/udp # H.323 Annex E call signaling transport -willy 2518/tcp # Willy -willy 2518/udp # Willy -globmsgsvc 2519/tcp # globmsgsvc -globmsgsvc 2519/udp # globmsgsvc -pvsw 2520/tcp # Pervasive Listener -pvsw 2520/udp # Pervasive Listener -adaptecmgr 2521/tcp # Adaptec Manager -adaptecmgr 2521/udp # Adaptec Manager -windb 2522/tcp # WinDb -windb 2522/udp # WinDb -qke-llc-v3 2523/tcp # Qke LLC V.3 -qke-llc-v3 2523/udp # Qke LLC V.3 -optiwave-lm 2524/tcp # Optiwave License Management -optiwave-lm 2524/udp # Optiwave License Management -ms-v-worlds 2525/tcp # MS V-Worlds -ms-v-worlds 2525/udp # MS V-Worlds -ema-sent-lm 2526/tcp # EMA License Manager -ema-sent-lm 2526/udp # EMA License Manager -iqserver 2527/tcp # IQ Server -iqserver 2527/udp # IQ Server -ncr_ccl 2528/tcp # NCR CCL -ncr_ccl 2528/udp # NCR CCL -utsftp 2529/tcp # UTS FTP -utsftp 2529/udp # UTS FTP -vrcommerce 2530/tcp # VR Commerce -vrcommerce 2530/udp # VR Commerce -ito-e-gui 2531/tcp # ITO-E GUI -ito-e-gui 2531/udp # ITO-E GUI -ovtopmd 2532/tcp # OVTOPMD -ovtopmd 2532/udp # OVTOPMD -snifferserver 2533/tcp # SnifferServer -snifferserver 2533/udp # SnifferServer -combox-web-acc 2534/tcp # Combox Web Access -combox-web-acc 2534/udp # Combox Web Access -madcap 2535/tcp # MADCAP -madcap 2535/udp # MADCAP -btpp2audctr1 2536/tcp # btpp2audctr1 -btpp2audctr1 2536/udp # btpp2audctr1 -upgrade 2537/tcp # Upgrade Protocol -upgrade 2537/udp # Upgrade Protocol -vnwk-prapi 2538/tcp # vnwk-prapi -vnwk-prapi 2538/udp # vnwk-prapi -vsiadmin 2539/tcp # VSI Admin -vsiadmin 2539/udp # VSI Admin -lonworks 2540/tcp # LonWorks -lonworks 2540/udp # LonWorks -lonworks2 2541/tcp # LonWorks2 -lonworks2 2541/udp # LonWorks2 -udrawgraph 2542/tcp # uDraw(Graph) -udrawgraph 2542/udp # uDraw(Graph) -reftek 2543/tcp # REFTEK -reftek 2543/udp # REFTEK -novell-zen 2544/tcp # Management Daemon Refresh -novell-zen 2544/udp # Management Daemon Refresh -sis-emt 2545/tcp # sis-emt -sis-emt 2545/udp # sis-emt -vytalvaultbrtp 2546/tcp # vytalvaultbrtp -vytalvaultbrtp 2546/udp # vytalvaultbrtp -vytalvaultvsmp 2547/tcp # vytalvaultvsmp -vytalvaultvsmp 2547/udp # vytalvaultvsmp -vytalvaultpipe 2548/tcp # vytalvaultpipe -vytalvaultpipe 2548/udp # vytalvaultpipe -ipass 2549/tcp # IPASS -ipass 2549/udp # IPASS -ads 2550/tcp # ADS -ads 2550/udp # ADS -isg-uda-server 2551/tcp # ISG UDA Server -isg-uda-server 2551/udp # ISG UDA Server -call-logging 2552/tcp # Call Logging -call-logging 2552/udp # Call Logging -efidiningport 2553/tcp # efidiningport -efidiningport 2553/udp # efidiningport -vcnet-link-v10 2554/tcp # VCnet-Link v10 -vcnet-link-v10 2554/udp # VCnet-Link v10 -compaq-wcp 2555/tcp # Compaq WCP -compaq-wcp 2555/udp # Compaq WCP -nicetec-nmsvc 2556/tcp # nicetec-nmsvc -nicetec-nmsvc 2556/udp # nicetec-nmsvc -nicetec-mgmt 2557/tcp # nicetec-mgmt -nicetec-mgmt 2557/udp # nicetec-mgmt -pclemultimedia 2558/tcp # PCLE Multi Media -pclemultimedia 2558/udp # PCLE Multi Media -lstp 2559/tcp # LSTP -lstp 2559/udp # LSTP -labrat 2560/tcp # labrat -labrat 2560/udp # labrat -mosaixcc 2561/tcp # MosaixCC -mosaixcc 2561/udp # MosaixCC -delibo 2562/tcp # Delibo -delibo 2562/udp # Delibo -cti-redwood 2563/tcp # CTI Redwood -cti-redwood 2563/udp # CTI Redwood -hp-3000-telnet 2564/tcp # HP 3000 NS/VT block mode telnet -coord-svr 2565/tcp # Coordinator Server -coord-svr 2565/udp # Coordinator Server -pcs-pcw 2566/tcp # pcs-pcw -pcs-pcw 2566/udp # pcs-pcw -clp 2567/tcp # Cisco Line Protocol -clp 2567/udp # Cisco Line Protocol -spamtrap 2568/tcp # SPAM TRAP -spamtrap 2568/udp # SPAM TRAP -sonuscallsig 2569/tcp # Sonus Call Signal -sonuscallsig 2569/udp # Sonus Call Signal -hs-port 2570/tcp # HS Port -hs-port 2570/udp # HS Port -cecsvc 2571/tcp # CECSVC -cecsvc 2571/udp # CECSVC -ibp 2572/tcp # IBP -ibp 2572/udp # IBP -trustestablish 2573/tcp # Trust Establish -trustestablish 2573/udp # Trust Establish -blockade-bpsp 2574/tcp # Blockade BPSP -blockade-bpsp 2574/udp # Blockade BPSP -hl7 2575/tcp # HL7 -hl7 2575/udp # HL7 -tclprodebugger 2576/tcp # TCL Pro Debugger -tclprodebugger 2576/udp # TCL Pro Debugger -scipticslsrvr 2577/tcp # Scriptics Lsrvr -scipticslsrvr 2577/udp # Scriptics Lsrvr -rvs-isdn-dcp 2578/tcp # RVS ISDN DCP -rvs-isdn-dcp 2578/udp # RVS ISDN DCP -mpfoncl 2579/tcp # mpfoncl -mpfoncl 2579/udp # mpfoncl -tributary 2580/tcp # Tributary -tributary 2580/udp # Tributary -argis-te 2581/tcp # ARGIS TE -argis-te 2581/udp # ARGIS TE -argis-ds 2582/tcp # ARGIS DS -argis-ds 2582/udp # ARGIS DS -mon 2583/tcp # MON -mon 2583/udp # MON -cyaserv 2584/tcp # cyaserv -cyaserv 2584/udp # cyaserv -netx-server 2585/tcp # NETX Server -netx-server 2585/udp # NETX Server -netx-agent 2586/tcp # NETX Agent -netx-agent 2586/udp # NETX Agent -masc 2587/tcp # MASC -masc 2587/udp # MASC -privilege 2588/tcp # Privilege -privilege 2588/udp # Privilege -quartus-tcl 2589/tcp # quartus tcl -quartus-tcl 2589/udp # quartus tcl -idotdist 2590/tcp # idotdist -idotdist 2590/udp # idotdist -maytagshuffle 2591/tcp # Maytag Shuffle -maytagshuffle 2591/udp # Maytag Shuffle -netrek 2592/tcp # netrek -netrek 2592/udp # netrek -mns-mail 2593/tcp # MNS Mail Notice Service -mns-mail 2593/udp # MNS Mail Notice Service -dts 2594/tcp # Data Base Server -dts 2594/udp # Data Base Server -worldfusion1 2595/tcp # World Fusion 1 -worldfusion1 2595/udp # World Fusion 1 -worldfusion2 2596/tcp # World Fusion 2 -worldfusion2 2596/udp # World Fusion 2 -homesteadglory 2597/tcp # Homestead Glory -homesteadglory 2597/udp # Homestead Glory -citriximaclient 2598/tcp # Citrix MA Client -citriximaclient 2598/udp # Citrix MA Client -snapd 2599/tcp # Snap Discovery -snapd 2599/udp # Snap Discovery -connection 2607/tcp # Dell Connection -connection 2607/udp # Dell Connection -wag-service 2608/tcp # Wag Service -wag-service 2608/udp # Wag Service -system-monitor 2609/tcp # System Monitor -system-monitor 2609/udp # System Monitor -versa-tek 2610/tcp # VersaTek -versa-tek 2610/udp # VersaTek -lionhead 2611/tcp # LIONHEAD -lionhead 2611/udp # LIONHEAD -qpasa-agent 2612/tcp # Qpasa Agent -qpasa-agent 2612/udp # Qpasa Agent -smntubootstrap 2613/tcp # SMNTUBootstrap -smntubootstrap 2613/udp # SMNTUBootstrap -neveroffline 2614/tcp # Never Offline -neveroffline 2614/udp # Never Offline -firepower 2615/tcp # firepower -firepower 2615/udp # firepower -appswitch-emp 2616/tcp # appswitch-emp -appswitch-emp 2616/udp # appswitch-emp -cmadmin 2617/tcp # Clinical Context Managers -cmadmin 2617/udp # Clinical Context Managers -priority-e-com 2618/tcp # Priority E-Com -priority-e-com 2618/udp # Priority E-Com -bruce 2619/tcp # bruce -bruce 2619/udp # bruce -lpsrecommender 2620/tcp # LPSRecommender -lpsrecommender 2620/udp # LPSRecommender -miles-apart 2621/tcp # Miles Apart Jukebox Server -miles-apart 2621/udp # Miles Apart Jukebox Server -metricadbc 2622/tcp # MetricaDBC -metricadbc 2622/udp # MetricaDBC -lmdp 2623/tcp # LMDP -lmdp 2623/udp # LMDP -aria 2624/tcp # Aria -aria 2624/udp # Aria -blwnkl-port 2625/tcp # Blwnkl Port -blwnkl-port 2625/udp # Blwnkl Port -gbjd816 2626/tcp # gbjd816 -gbjd816 2626/udp # gbjd816 -moshebeeri 2627/tcp # Moshe Beeri -moshebeeri 2627/udp # Moshe Beeri -sitaraserver 2629/tcp # Sitara Server -sitaraserver 2629/udp # Sitara Server -sitaramgmt 2630/tcp # Sitara Management -sitaramgmt 2630/udp # Sitara Management -sitaradir 2631/tcp # Sitara Dir -sitaradir 2631/udp # Sitara Dir -irdg-post 2632/tcp # IRdg Post -irdg-post 2632/udp # IRdg Post -interintelli 2633/tcp # InterIntelli -interintelli 2633/udp # InterIntelli -pk-electronics 2634/tcp # PK Electronics -pk-electronics 2634/udp # PK Electronics -backburner 2635/tcp # Back Burner -backburner 2635/udp # Back Burner -solve 2636/tcp # Solve -solve 2636/udp # Solve -imdocsvc 2637/tcp # Import Document Service -imdocsvc 2637/udp # Import Document Service -sybaseanywhere 2638/tcp # Sybase Anywhere -sybaseanywhere 2638/udp # Sybase Anywhere -aminet 2639/tcp # AMInet -aminet 2639/udp # AMInet -sai_sentlm 2640/tcp # Sabbagh Associates Licence Manager -sai_sentlm 2640/udp # Sabbagh Associates Licence Manager -hdl-srv 2641/tcp # HDL Server -hdl-srv 2641/udp # HDL Server -tragic 2642/tcp # Tragic -tragic 2642/udp # Tragic -gte-samp 2643/tcp # GTE-SAMP -gte-samp 2643/udp # GTE-SAMP -travsoft-ipx-t 2644/tcp # Travsoft IPX Tunnel -travsoft-ipx-t 2644/udp # Travsoft IPX Tunnel -novell-ipx-cmd 2645/tcp # Novell IPX CMD -novell-ipx-cmd 2645/udp # Novell IPX CMD -and-lm 2646/tcp # AND License Manager -and-lm 2646/udp # AND License Manager -syncserver 2647/tcp # SyncServer -syncserver 2647/udp # SyncServer -upsnotifyprot 2648/tcp # Upsnotifyprot -upsnotifyprot 2648/udp # Upsnotifyprot -vpsipport 2649/tcp # VPSIPPORT -vpsipport 2649/udp # VPSIPPORT -eristwoguns 2650/tcp # eristwoguns -eristwoguns 2650/udp # eristwoguns -ebinsite 2651/tcp # EBInSite -ebinsite 2651/udp # EBInSite -interpathpanel 2652/tcp # InterPathPanel -interpathpanel 2652/udp # InterPathPanel -sonus 2653/tcp # Sonus -sonus 2653/udp # Sonus -corel_vncadmin 2654/tcp # Corel VNC Admin -corel_vncadmin 2654/udp # Corel VNC Admin -unglue 2655/tcp # UNIX Nt Glue -unglue 2655/udp # UNIX Nt Glue -kana 2656/tcp # Kana -kana 2656/udp # Kana -sns-dispatcher 2657/tcp # SNS Dispatcher -sns-dispatcher 2657/udp # SNS Dispatcher -sns-admin 2658/tcp # SNS Admin -sns-admin 2658/udp # SNS Admin -sns-query 2659/tcp # SNS Query -sns-query 2659/udp # SNS Query -gcmonitor 2660/tcp # GC Monitor -gcmonitor 2660/udp # GC Monitor -olhost 2661/tcp # OLHOST -olhost 2661/udp # OLHOST -bintec-capi 2662/tcp # BinTec-CAPI -bintec-capi 2662/udp # BinTec-CAPI -bintec-tapi 2663/tcp # BinTec-TAPI -bintec-tapi 2663/udp # BinTec-TAPI -patrol-mq-gm 2664/tcp # Patrol for MQ GM -patrol-mq-gm 2664/udp # Patrol for MQ GM -patrol-mq-nm 2665/tcp # Patrol for MQ NM -patrol-mq-nm 2665/udp # Patrol for MQ NM -extensis 2666/tcp # extensis -extensis 2666/udp # extensis -alarm-clock-s 2667/tcp # Alarm Clock Server -alarm-clock-s 2667/udp # Alarm Clock Server -alarm-clock-c 2668/tcp # Alarm Clock Client -alarm-clock-c 2668/udp # Alarm Clock Client -toad 2669/tcp # TOAD -toad 2669/udp # TOAD -tve-announce 2670/tcp # TVE Announce -tve-announce 2670/udp # TVE Announce -newlixreg 2671/tcp # newlixreg -newlixreg 2671/udp # newlixreg -nhserver 2672/tcp # nhserver -nhserver 2672/udp # nhserver -firstcall42 2673/tcp # First Call 42 -firstcall42 2673/udp # First Call 42 -ewnn 2674/tcp # ewnn -ewnn 2674/udp # ewnn -ttc-etap 2675/tcp # TTC ETAP -ttc-etap 2675/udp # TTC ETAP -simslink 2676/tcp # SIMSLink -simslink 2676/udp # SIMSLink -gadgetgate1way 2677/tcp # Gadget Gate 1 Way -gadgetgate1way 2677/udp # Gadget Gate 1 Way -gadgetgate2way 2678/tcp # Gadget Gate 2 Way -gadgetgate2way 2678/udp # Gadget Gate 2 Way -syncserverssl 2679/tcp # Sync Server SSL -syncserverssl 2679/udp # Sync Server SSL -pxc-sapxom 2680/tcp # pxc-sapxom -pxc-sapxom 2680/udp # pxc-sapxom -mpnjsomb 2681/tcp # mpnjsomb -mpnjsomb 2681/udp # mpnjsomb -ncdloadbalance 2683/tcp # NCDLoadBalance -ncdloadbalance 2683/udp # NCDLoadBalance -mpnjsosv 2684/tcp # mpnjsosv -mpnjsosv 2684/udp # mpnjsosv -mpnjsocl 2685/tcp # mpnjsocl -mpnjsocl 2685/udp # mpnjsocl -mpnjsomg 2686/tcp # mpnjsomg -mpnjsomg 2686/udp # mpnjsomg -pq-lic-mgmt 2687/tcp # pq-lic-mgmt -pq-lic-mgmt 2687/udp # pq-lic-mgmt -md-cg-http 2688/tcp # md-cf-http -md-cg-http 2688/udp # md-cf-http -fastlynx 2689/tcp # FastLynx -fastlynx 2689/udp # FastLynx -hp-nnm-data 2690/tcp # HP NNM Embedded Database -hp-nnm-data 2690/udp # HP NNM Embedded Database -itinternet 2691/tcp # ITInternet ISM Server -itinternet 2691/udp # ITInternet ISM Server -admins-lms 2692/tcp # Admins LMS -admins-lms 2692/udp # Admins LMS -pwrsevent 2694/tcp # pwrsevent -pwrsevent 2694/udp # pwrsevent -vspread 2695/tcp # VSPREAD -vspread 2695/udp # VSPREAD -unifyadmin 2696/tcp # Unify Admin -unifyadmin 2696/udp # Unify Admin -oce-snmp-trap 2697/tcp # Oce SNMP Trap Port -oce-snmp-trap 2697/udp # Oce SNMP Trap Port -mck-ivpip 2698/tcp # MCK-IVPIP -mck-ivpip 2698/udp # MCK-IVPIP -csoft-plusclnt 2699/tcp # Csoft Plus Client -csoft-plusclnt 2699/udp # Csoft Plus Client -tqdata 2700/tcp # tqdata -tqdata 2700/udp # tqdata -sms-rcinfo 2701/tcp # SMS RCINFO -sms-rcinfo 2701/udp # SMS RCINFO -sms-xfer 2702/tcp # SMS XFER -sms-xfer 2702/udp # SMS XFER -sms-chat 2703/tcp # SMS CHAT -sms-chat 2703/udp # SMS CHAT -sms-remctrl 2704/tcp # SMS REMCTRL -sms-remctrl 2704/udp # SMS REMCTRL -sds-admin 2705/tcp # SDS Admin -sds-admin 2705/udp # SDS Admin -ncdmirroring 2706/tcp # NCD Mirroring -ncdmirroring 2706/udp # NCD Mirroring -emcsymapiport 2707/tcp # EMCSYMAPIPORT -emcsymapiport 2707/udp # EMCSYMAPIPORT -banyan-net 2708/tcp # Banyan-Net -banyan-net 2708/udp # Banyan-Net -supermon 2709/tcp # Supermon -supermon 2709/udp # Supermon -sso-service 2710/tcp # SSO Service -sso-service 2710/udp # SSO Service -sso-control 2711/tcp # SSO Control -sso-control 2711/udp # SSO Control -aocp 2712/tcp # Axapta Object Communication Protocol -aocp 2712/udp # Axapta Object Communication Protocol -raventbs 2713/tcp # Raven Trinity Broker Service -raventbs 2713/udp # Raven Trinity Broker Service -raventdm 2714/tcp # Raven Trinity Data Mover -raventdm 2714/udp # Raven Trinity Data Mover -hpstgmgr2 2715/tcp # HPSTGMGR2 -hpstgmgr2 2715/udp # HPSTGMGR2 -inova-ip-disco 2716/tcp # Inova IP Disco -inova-ip-disco 2716/udp # Inova IP Disco -pn-requester 2717/tcp # PN REQUESTER -pn-requester 2717/udp # PN REQUESTER -pn-requester2 2718/tcp # PN REQUESTER 2 -pn-requester2 2718/udp # PN REQUESTER 2 -scan-change 2719/tcp # Scan & Change -scan-change 2719/udp # Scan & Change -wkars 2720/tcp # wkars -wkars 2720/udp # wkars -smart-diagnose 2721/tcp # Smart Diagnose -smart-diagnose 2721/udp # Smart Diagnose -proactivesrvr 2722/tcp # Proactive Server -proactivesrvr 2722/udp # Proactive Server -watchdog-nt 2723/tcp # WatchDog NT Protocol -watchdog-nt 2723/udp # WatchDog NT Protocol -qotps 2724/tcp # qotps -qotps 2724/udp # qotps -msolap-ptp2 2725/tcp # MSOLAP PTP2 -msolap-ptp2 2725/udp # MSOLAP PTP2 -tams 2726/tcp # TAMS -tams 2726/udp # TAMS -mgcp-callagent 2727/tcp # Media Gateway Control Protocol Call Agent -mgcp-callagent 2727/udp # Media Gateway Control Protocol Call Agent -sqdr 2728/tcp # SQDR -sqdr 2728/udp # SQDR -tcim-control 2729/tcp # TCIM Control -tcim-control 2729/udp # TCIM Control -nec-raidplus 2730/tcp # NEC RaidPlus -nec-raidplus 2730/udp # NEC RaidPlus -fyre-messanger 2731/tcp # Fyre Messanger -fyre-messanger 2731/udp # Fyre Messagner -g5m 2732/tcp # G5M -g5m 2732/udp # G5M -signet-ctf 2733/tcp # Signet CTF -signet-ctf 2733/udp # Signet CTF -ccs-software 2734/tcp # CCS Software -ccs-software 2734/udp # CCS Software -netiq-mc 2735/tcp # NetIQ Monitor Console -netiq-mc 2735/udp # NetIQ Monitor Console -radwiz-nms-srv 2736/tcp # RADWIZ NMS SRV -radwiz-nms-srv 2736/udp # RADWIZ NMS SRV -srp-feedback 2737/tcp # SRP Feedback -srp-feedback 2737/udp # SRP Feedback -ndl-tcp-ois-gw 2738/tcp # NDL TCP-OSI Gateway -ndl-tcp-ois-gw 2738/udp # NDL TCP-OSI Gateway -tn-timing 2739/tcp # TN Timing -tn-timing 2739/udp # TN Timing -alarm 2740/tcp # Alarm -alarm 2740/udp # Alarm -tsb 2741/tcp # TSB -tsb 2741/udp # TSB -tsb2 2742/tcp # TSB2 -tsb2 2742/udp # TSB2 -murx 2743/tcp # murx -murx 2743/udp # murx -honyaku 2744/tcp # honyaku -honyaku 2744/udp # honyaku -urbisnet 2745/tcp # URBISNET -urbisnet 2745/udp # URBISNET -cpudpencap 2746/tcp # CPUDPENCAP -cpudpencap 2746/udp # CPUDPENCAP -fjippol-swrly 2747/tcp # -fjippol-swrly 2747/udp # -fjippol-polsvr 2748/tcp # -fjippol-polsvr 2748/udp # -fjippol-cnsl 2749/tcp # -fjippol-cnsl 2749/udp # -fjippol-port1 2750/tcp # -fjippol-port1 2750/udp # -fjippol-port2 2751/tcp # -fjippol-port2 2751/udp # -rsisysaccess 2752/tcp # RSISYS ACCESS -rsisysaccess 2752/udp # RSISYS ACCESS -de-spot 2753/tcp # de-spot -de-spot 2753/udp # de-spot -apollo-cc 2754/tcp # APOLLO CC -apollo-cc 2754/udp # APOLLO CC -expresspay 2755/tcp # Express Pay -expresspay 2755/udp # Express Pay -simplement-tie 2756/tcp # simplement-tie -simplement-tie 2756/udp # simplement-tie -cnrp 2757/tcp # CNRP -cnrp 2757/udp # CNRP -apollo-status 2758/tcp # APOLLO Status -apollo-status 2758/udp # APOLLO Status -apollo-gms 2759/tcp # APOLLO GMS -apollo-gms 2759/udp # APOLLO GMS -sabams 2760/tcp # Saba MS -sabams 2760/udp # Saba MS -dicom-iscl 2761/tcp # DICOM ISCL -dicom-iscl 2761/udp # DICOM ISCL -dicom-tls 2762/tcp # DICOM TLS -dicom-tls 2762/udp # DICOM TLS -desktop-dna 2763/tcp # Desktop DNA -desktop-dna 2763/udp # Desktop DNA -data-insurance 2764/tcp # Data Insurance -data-insurance 2764/udp # Data Insurance -qip-audup 2765/tcp # qip-audup -qip-audup 2765/udp # qip-audup -compaq-scp 2766/tcp # Compaq SCP -compaq-scp 2766/udp # Compaq SCP -uadtc 2767/tcp # UADTC -uadtc 2767/udp # UADTC -uacs 2768/tcp # UACS -uacs 2768/udp # UACS -exce 2769/tcp # eXcE -exce 2769/udp # eXcE -veronica 2770/tcp # Veronica -veronica 2770/udp # Veronica -vergencecm 2771/tcp # Vergence CM -vergencecm 2771/udp # Vergence CM -auris 2772/tcp # auris -auris 2772/udp # auris -rbakcup1 2773/tcp # RBackup Remote Backup -rbakcup1 2773/udp # RBackup Remote Backup -rbakcup2 2774/tcp # RBackup Remote Backup -rbakcup2 2774/udp # RBackup Remote Backup -smpp 2775/tcp # SMPP -smpp 2775/udp # SMPP -ridgeway1 2776/tcp # Ridgeway Systems & Software -ridgeway1 2776/udp # Ridgeway Systems & Software -ridgeway2 2777/tcp # Ridgeway Systems & Software -ridgeway2 2777/udp # Ridgeway Systems & Software -gwen-sonya 2778/tcp # Gwen-Sonya -gwen-sonya 2778/udp # Gwen-Sonya -lbc-sync 2779/tcp # LBC Sync -lbc-sync 2779/udp # LBC Sync -lbc-control 2780/tcp # LBC Control -lbc-control 2780/udp # LBC Control -whosells 2781/tcp # whosells -whosells 2781/udp # whosells -everydayrc 2782/tcp # everydayrc -everydayrc 2782/udp # everydayrc -aises 2783/tcp # AISES -aises 2783/udp # AISES -www-dev 2784/tcp # world wide web - development -www-dev 2784/udp # world wide web - development -aic-np 2785/tcp # aic-np -aic-np 2785/udp # aic-np -aic-oncrpc 2786/tcp # aic-oncrpc - Destiny MCD database -aic-oncrpc 2786/udp # aic-oncrpc - Destiny MCD database -piccolo 2787/tcp # piccolo - Cornerstone Software -piccolo 2787/udp # piccolo - Cornerstone Software -fryeserv 2788/tcp # NetWare Loadable Module - Seagate Software -fryeserv 2788/udp # NetWare Loadable Module - Seagate Software -media-agent 2789/tcp # Media Agent -media-agent 2789/udp # Media Agent -plgproxy 2790/tcp # PLG Proxy -plgproxy 2790/udp # PLG Proxy -mtport-regist 2791/tcp # MT Port Registrator -mtport-regist 2791/udp # MT Port Registrator -f5-globalsite 2792/tcp # f5-globalsite -f5-globalsite 2792/udp # f5-globalsite -initlsmsad 2793/tcp # initlsmsad -initlsmsad 2793/udp # initlsmsad -livestats 2795/tcp # LiveStats -livestats 2795/udp # LiveStats -ac-tech 2796/tcp # ac-tech -ac-tech 2796/udp # ac-tech -esp-encap 2797/tcp # esp-encap -esp-encap 2797/udp # esp-encap -tmesis-upshot 2798/tcp # TMESIS-UPShot -tmesis-upshot 2798/udp # TMESIS-UPShot -icon-discover 2799/tcp # ICON Discover -icon-discover 2799/udp # ICON Discover -acc-raid 2800/tcp # ACC RAID -acc-raid 2800/udp # ACC RAID -igcp 2801/tcp # IGCP -igcp 2801/udp # IGCP -veritas-tcp1 2802/tcp # Veritas TCP1 -veritas-udp1 2802/udp # Veritas UDP1 -btprjctrl 2803/tcp # btprjctrl -btprjctrl 2803/udp # btprjctrl -dvr-esm 2804/tcp # March Networks Digital Video Recorders and Enterprise Service Manager products -dvr-esm 2804/udp # March Networks Digital Video Recorders and Enterprise Service Manager products -wta-wsp-s 2805/tcp # WTA WSP-S -wta-wsp-s 2805/udp # WTA WSP-S -cspuni 2806/tcp # cspuni -cspuni 2806/udp # cspuni -cspmulti 2807/tcp # cspmulti -cspmulti 2807/udp # cspmulti -j-lan-p 2808/tcp # J-LAN-P -j-lan-p 2808/udp # J-LAN-P -corbaloc 2809/udp # CORBA LOC -netsteward 2810/tcp # Active Net Steward -netsteward 2810/udp # Active Net Steward -gsiftp 2811/tcp # GSI FTP -gsiftp 2811/udp # GSI FTP -atmtcp 2812/tcp # atmtcp -atmtcp 2812/udp # atmtcp -llm-pass 2813/tcp # llm-pass -llm-pass 2813/udp # llm-pass -llm-csv 2814/tcp # llm-csv -llm-csv 2814/udp # llm-csv -lbc-measure 2815/tcp # LBC Measurement -lbc-measure 2815/udp # LBC Measurement -lbc-watchdog 2816/tcp # LBC Watchdog -lbc-watchdog 2816/udp # LBC Watchdog -nmsigport 2817/tcp # NMSig Port -nmsigport 2817/udp # NMSig Port -rmlnk 2818/tcp # rmlnk -rmlnk 2818/udp # rmlnk -fc-faultnotify 2819/tcp # FC Fault Notification -fc-faultnotify 2819/udp # FC Fault Notification -univision 2820/tcp # UniVision -univision 2820/udp # UniVision -vrts-at-port 2821/tcp # VERITAS Authentication Service -vrts-at-port 2821/udp # VERITAS Authentication Service -ka0wuc 2822/tcp # ka0wuc -ka0wuc 2822/udp # ka0wuc -cqg-netlan 2823/tcp # CQG Net/LAN -cqg-netlan 2823/udp # CQG Net/LAN -cqg-netlan-1 2824/tcp # CQG Net/LAN 1 -cqg-netlan-1 2824/udp # CQG Net/Lan 1 -slc-systemlog 2826/tcp # slc systemlog -slc-systemlog 2826/udp # slc systemlog -slc-ctrlrloops 2827/tcp # slc ctrlrloops -slc-ctrlrloops 2827/udp # slc ctrlrloops -itm-lm 2828/tcp # ITM License Manager -itm-lm 2828/udp # ITM License Manager -silkp1 2829/tcp # silkp1 -silkp1 2829/udp # silkp1 -silkp2 2830/tcp # silkp2 -silkp2 2830/udp # silkp2 -silkp3 2831/tcp # silkp3 -silkp3 2831/udp # silkp3 -silkp4 2832/tcp # silkp4 -silkp4 2832/udp # silkp4 -glishd 2833/tcp # glishd -glishd 2833/udp # glishd -evtp 2834/tcp # EVTP -evtp 2834/udp # EVTP -evtp-data 2835/tcp # EVTP-DATA -evtp-data 2835/udp # EVTP-DATA -catalyst 2836/tcp # catalyst -catalyst 2836/udp # catalyst -repliweb 2837/tcp # Repliweb -repliweb 2837/udp # Repliweb -starbot 2838/tcp # Starbot -starbot 2838/udp # Starbot -l3-exprt 2840/tcp # l3-exprt -l3-exprt 2840/udp # l3-exprt -l3-ranger 2841/tcp # l3-ranger -l3-ranger 2841/udp # l3-ranger -l3-hawk 2842/tcp # l3-hawk -l3-hawk 2842/udp # l3-hawk -pdnet 2843/tcp # PDnet -pdnet 2843/udp # PDnet -bpcp-poll 2844/tcp # BPCP POLL -bpcp-poll 2844/udp # BPCP POLL -bpcp-trap 2845/tcp # BPCP TRAP -bpcp-trap 2845/udp # BPCP TRAP -aimpp-hello 2846/tcp # AIMPP Hello -aimpp-hello 2846/udp # AIMPP Hello -aimpp-port-req 2847/tcp # AIMPP Port Req -aimpp-port-req 2847/udp # AIMPP Port Req -amt-blc-port 2848/tcp # AMT-BLC-PORT -amt-blc-port 2848/udp # AMT-BLC-PORT -metaconsole 2850/tcp # MetaConsole -metaconsole 2850/udp # MetaConsole -webemshttp 2851/tcp # webemshttp -webemshttp 2851/udp # webemshttp -bears-01 2852/tcp # bears-01 -bears-01 2852/udp # bears-01 -ispipes 2853/tcp # ISPipes -ispipes 2853/udp # ISPipes -infomover 2854/tcp # InfoMover -infomover 2854/udp # InfoMover -msrp 2855/tcp # MSRP over TCP -msrp 2855/udp # MSRP -cesdinv 2856/tcp # cesdinv -cesdinv 2856/udp # cesdinv -simctlp 2857/tcp # SimCtIP -simctlp 2857/udp # SimCtIP -ecnp 2858/tcp # ECNP -ecnp 2858/udp # ECNP -activememory 2859/tcp # Active Memory -activememory 2859/udp # Active Memory -dialpad-voice1 2860/tcp # Dialpad Voice 1 -dialpad-voice1 2860/udp # Dialpad Voice 1 -dialpad-voice2 2861/tcp # Dialpad Voice 2 -dialpad-voice2 2861/udp # Dialpad Voice 2 -ttg-protocol 2862/tcp # TTG Protocol -ttg-protocol 2862/udp # TTG Protocol -sonardata 2863/tcp # Sonar Data -sonardata 2863/udp # Sonar Data -astromed-main 2864/tcp # main 5001 cmd -astromed-main 2864/udp # main 5001 cmd -pit-vpn 2865/tcp # pit-vpn -pit-vpn 2865/udp # pit-vpn -iwlistener 2866/tcp # iwlistener -iwlistener 2866/udp # iwlistener -esps-portal 2867/tcp # esps-portal -esps-portal 2867/udp # esps-portal -npep-messaging 2868/tcp # NPEP Messaging -npep-messaging 2868/udp # NPEP Messaging -icslap 2869/tcp # ICSLAP -icslap 2869/udp # ICSLAP -daishi 2870/tcp # daishi -daishi 2870/udp # daishi -msi-selectplay 2871/tcp # MSI Select Play -msi-selectplay 2871/udp # MSI Select Play -radix 2872/tcp # RADIX -radix 2872/udp # RADIX -dxmessagebase1 2874/tcp # DX Message Base Transport Protocol -dxmessagebase1 2874/udp # DX Message Base Transport Protocol -dxmessagebase2 2875/tcp # DX Message Base Transport Protocol -dxmessagebase2 2875/udp # DX Message Base Transport Protocol -sps-tunnel 2876/tcp # SPS Tunnel -sps-tunnel 2876/udp # SPS Tunnel -bluelance 2877/tcp # BLUELANCE -bluelance 2877/udp # BLUELANCE -aap 2878/tcp # AAP -aap 2878/udp # AAP -ucentric-ds 2879/tcp # ucentric-ds -ucentric-ds 2879/udp # ucentric-ds -synapse 2880/tcp # Synapse Transport -synapse 2880/udp # Synapse Transport -ndsp 2881/tcp # NDSP -ndsp 2881/udp # NDSP -ndtp 2882/tcp # NDTP -ndtp 2882/udp # NDTP -ndnp 2883/tcp # NDNP -ndnp 2883/udp # NDNP -flashmsg 2884/tcp # Flash Msg -flashmsg 2884/udp # Flash Msg -topflow 2885/tcp # TopFlow -topflow 2885/udp # TopFlow -responselogic 2886/tcp # RESPONSELOGIC -responselogic 2886/udp # RESPONSELOGIC -aironetddp 2887/tcp # aironet -aironetddp 2887/udp # aironet -spcsdlobby 2888/tcp # SPCSDLOBBY -spcsdlobby 2888/udp # SPCSDLOBBY -rsom 2889/tcp # RSOM -rsom 2889/udp # RSOM -cspclmulti 2890/tcp # CSPCLMULTI -cspclmulti 2890/udp # CSPCLMULTI -cinegrfx-elmd 2891/tcp # CINEGRFX-ELMD License Manager -cinegrfx-elmd 2891/udp # CINEGRFX-ELMD License Manager -snifferdata 2892/tcp # SNIFFERDATA -snifferdata 2892/udp # SNIFFERDATA -vseconnector 2893/tcp # VSECONNECTOR -vseconnector 2893/udp # VSECONNECTOR -abacus-remote 2894/tcp # ABACUS-REMOTE -abacus-remote 2894/udp # ABACUS-REMOTE -natuslink 2895/tcp # NATUS LINK -natuslink 2895/udp # NATUS LINK -ecovisiong6-1 2896/tcp # ECOVISIONG6-1 -ecovisiong6-1 2896/udp # ECOVISIONG6-1 -citrix-rtmp 2897/tcp # Citrix RTMP -citrix-rtmp 2897/udp # Citrix RTMP -appliance-cfg 2898/tcp # APPLIANCE-CFG -appliance-cfg 2898/udp # APPLIANCE-CFG -powergemplus 2899/tcp # POWERGEMPLUS -powergemplus 2899/udp # POWERGEMPLUS -quicksuite 2900/tcp # QUICKSUITE -quicksuite 2900/udp # QUICKSUITE -allstorcns 2901/tcp # ALLSTORCNS -allstorcns 2901/udp # ALLSTORCNS -netaspi 2902/tcp # NET ASPI -netaspi 2902/udp # NET ASPI -suitcase 2903/tcp # SUITCASE -suitcase 2903/udp # SUITCASE -m2ua 2904/tcp # M2UA -m2ua 2904/udp # M2UA -m2ua 2904/sctp # M2UA -m3ua 2905/tcp # M3UA -m3ua 2905/sctp # M3UA -caller9 2906/tcp # CALLER9 -caller9 2906/udp # CALLER9 -webmethods-b2b 2907/tcp # WEBMETHODS B2B -webmethods-b2b 2907/udp # WEBMETHODS B2B -mao 2908/tcp # mao -mao 2908/udp # mao -funk-dialout 2909/tcp # Funk Dialout -funk-dialout 2909/udp # Funk Dialout -tdaccess 2910/tcp # TDAccess -tdaccess 2910/udp # TDAccess -blockade 2911/tcp # Blockade -blockade 2911/udp # Blockade -epicon 2912/tcp # Epicon -epicon 2912/udp # Epicon -boosterware 2913/tcp # Booster Ware -boosterware 2913/udp # Booster Ware -gamelobby 2914/tcp # Game Lobby -gamelobby 2914/udp # Game Lobby -tksocket 2915/tcp # TK Socket -tksocket 2915/udp # TK Socket -elvin_server 2916/tcp # Elvin Server -elvin_server 2916/udp # Elvin Server -elvin_client 2917/tcp # Elvin Client -elvin_client 2917/udp # Elvin Client -kastenchasepad 2918/tcp # Kasten Chase Pad -kastenchasepad 2918/udp # Kasten Chase Pad -roboer 2919/tcp # roboER -roboer 2919/udp # roboER -roboeda 2920/tcp # roboEDA -roboeda 2920/udp # roboEDA -cesdcdman 2921/tcp # CESD Contents Delivery Management -cesdcdman 2921/udp # CESD Contents Delivery Management -cesdcdtrn 2922/tcp # CESD Contents Delivery Data Transfer -cesdcdtrn 2922/udp # CESD Contents Delivery Data Transfer -wta-wsp-wtp-s 2923/tcp # WTA-WSP-WTP-S -wta-wsp-wtp-s 2923/udp # WTA-WSP-WTP-S -precise-vip 2924/tcp # PRECISE-VIP -precise-vip 2924/udp # PRECISE-VIP -mobile-file-dl 2926/tcp # MOBILE-FILE-DL -mobile-file-dl 2926/udp # MOBILE-FILE-DL -unimobilectrl 2927/tcp # UNIMOBILECTRL -unimobilectrl 2927/udp # UNIMOBILECTRL -redstone-cpss 2928/tcp # REDSTONE-CPSS -redstone-cpss 2928/udp # REDSTONE-CPSS -amx-webadmin 2929/tcp # AMX-WEBADMIN -amx-webadmin 2929/udp # AMX-WEBADMIN -amx-weblinx 2930/tcp # AMX-WEBLINX -amx-weblinx 2930/udp # AMX-WEBLINX -circle-x 2931/tcp # Circle-X -circle-x 2931/udp # Circle-X -incp 2932/tcp # INCP -incp 2932/udp # INCP -4-tieropmgw 2933/tcp # 4-TIER OPM GW -4-tieropmgw 2933/udp # 4-TIER OPM GW -4-tieropmcli 2934/tcp # 4-TIER OPM CLI -4-tieropmcli 2934/udp # 4-TIER OPM CLI -qtp 2935/tcp # QTP -qtp 2935/udp # QTP -otpatch 2936/tcp # OTPatch -otpatch 2936/udp # OTPatch -pnaconsult-lm 2937/tcp # PNACONSULT-LM -pnaconsult-lm 2937/udp # PNACONSULT-LM -sm-pas-1 2938/tcp # SM-PAS-1 -sm-pas-1 2938/udp # SM-PAS-1 -sm-pas-2 2939/tcp # SM-PAS-2 -sm-pas-2 2939/udp # SM-PAS-2 -sm-pas-3 2940/tcp # SM-PAS-3 -sm-pas-3 2940/udp # SM-PAS-3 -sm-pas-4 2941/tcp # SM-PAS-4 -sm-pas-4 2941/udp # SM-PAS-4 -sm-pas-5 2942/tcp # SM-PAS-5 -sm-pas-5 2942/udp # SM-PAS-5 -ttnrepository 2943/tcp # TTNRepository -ttnrepository 2943/udp # TTNRepository -megaco-h248 2944/tcp # Megaco H-248 -megaco-h248 2944/udp # Megaco H-248 -megaco-h248 2944/sctp # Megaco-H.248 text -h248-binary 2945/tcp # H248 Binary -h248-binary 2945/udp # H248 Binary -h248-binary 2945/sctp # Megaco/H.248 binary -fjsvmpor 2946/tcp # FJSVmpor -fjsvmpor 2946/udp # FJSVmpor -gpsd 2947/tcp # GPSD -gpsd 2947/udp # GPSD -wap-push 2948/tcp # WAP PUSH -wap-push 2948/udp # WAP PUSH -wap-pushsecure 2949/tcp # WAP PUSH SECURE -wap-pushsecure 2949/udp # WAP PUSH SECURE -esip 2950/tcp # ESIP -esip 2950/udp # ESIP -ottp 2951/tcp # OTTP -ottp 2951/udp # OTTP -mpfwsas 2952/tcp # MPFWSAS -mpfwsas 2952/udp # MPFWSAS -ovalarmsrv 2953/tcp # OVALARMSRV -ovalarmsrv 2953/udp # OVALARMSRV -ovalarmsrv-cmd 2954/tcp # OVALARMSRV-CMD -ovalarmsrv-cmd 2954/udp # OVALARMSRV-CMD -csnotify 2955/tcp # CSNOTIFY -csnotify 2955/udp # CSNOTIFY -ovrimosdbman 2956/tcp # OVRIMOSDBMAN -ovrimosdbman 2956/udp # OVRIMOSDBMAN -jmact5 2957/tcp # JAMCT5 -jmact5 2957/udp # JAMCT5 -jmact6 2958/tcp # JAMCT6 -jmact6 2958/udp # JAMCT6 -rmopagt 2959/tcp # RMOPAGT -rmopagt 2959/udp # RMOPAGT -dfoxserver 2960/tcp # DFOXSERVER -dfoxserver 2960/udp # DFOXSERVER -boldsoft-lm 2961/tcp # BOLDSOFT-LM -boldsoft-lm 2961/udp # BOLDSOFT-LM -iph-policy-cli 2962/tcp # IPH-POLICY-CLI -iph-policy-cli 2962/udp # IPH-POLICY-CLI -iph-policy-adm 2963/tcp # IPH-POLICY-ADM -iph-policy-adm 2963/udp # IPH-POLICY-ADM -bullant-srap 2964/tcp # BULLANT SRAP -bullant-srap 2964/udp # BULLANT SRAP -bullant-rap 2965/tcp # BULLANT RAP -bullant-rap 2965/udp # BULLANT RAP -idp-infotrieve 2966/tcp # IDP-INFOTRIEVE -idp-infotrieve 2966/udp # IDP-INFOTRIEVE -ssc-agent 2967/tcp # SSC-AGENT -ssc-agent 2967/udp # SSC-AGENT -enpp 2968/tcp # ENPP -enpp 2968/udp # ENPP -essp 2969/tcp # ESSP -essp 2969/udp # ESSP -index-net 2970/tcp # INDEX-NET -index-net 2970/udp # INDEX-NET -netclip 2971/tcp # NetClip clipboard daemon -netclip 2971/udp # NetClip clipboard daemon -pmsm-webrctl 2972/tcp # PMSM Webrctl -pmsm-webrctl 2972/udp # PMSM Webrctl -svnetworks 2973/tcp # SV Networks -svnetworks 2973/udp # SV Networks -signal 2974/tcp # Signal -signal 2974/udp # Signal -fjmpcm 2975/tcp # Fujitsu Configuration Management Service -fjmpcm 2975/udp # Fujitsu Configuration Management Service -cns-srv-port 2976/tcp # CNS Server Port -cns-srv-port 2976/udp # CNS Server Port -ttc-etap-ns 2977/tcp # TTCs Enterprise Test Access Protocol - NS -ttc-etap-ns 2977/udp # TTCs Enterprise Test Access Protocol - NS -ttc-etap-ds 2978/tcp # TTCs Enterprise Test Access Protocol - DS -ttc-etap-ds 2978/udp # TTCs Enterprise Test Access Protocol - DS -h263-video 2979/tcp # H.263 Video Streaming -h263-video 2979/udp # H.263 Video Streaming -wimd 2980/tcp # Instant Messaging Service -wimd 2980/udp # Instant Messaging Service -mylxamport 2981/tcp # MYLXAMPORT -mylxamport 2981/udp # MYLXAMPORT -iwb-whiteboard 2982/tcp # IWB-WHITEBOARD -iwb-whiteboard 2982/udp # IWB-WHITEBOARD -netplan 2983/tcp # NETPLAN -netplan 2983/udp # NETPLAN -hpidsadmin 2984/tcp # HPIDSADMIN -hpidsadmin 2984/udp # HPIDSADMIN -hpidsagent 2985/tcp # HPIDSAGENT -hpidsagent 2985/udp # HPIDSAGENT -stonefalls 2986/tcp # STONEFALLS -stonefalls 2986/udp # STONEFALLS -identify 2987/tcp # identify -identify 2987/udp # identify -zarkov 2989/tcp # ZARKOV Intelligent Agent Communication -zarkov 2989/udp # ZARKOV Intelligent Agent Communication -boscap 2990/tcp # BOSCAP -boscap 2990/udp # BOSCAP -wkstn-mon 2991/tcp # WKSTN-MON -wkstn-mon 2991/udp # WKSTN-MON -avenyo 2992/tcp # Avenyo Server -avenyo 2992/udp # Avenyo Server -veritas-vis1 2993/tcp # VERITAS VIS1 -veritas-vis1 2993/udp # VERITAS VIS1 -veritas-vis2 2994/tcp # VERITAS VIS2 -veritas-vis2 2994/udp # VERITAS VIS2 -idrs 2995/tcp # IDRS -idrs 2995/udp # IDRS -vsixml 2996/tcp # vsixml -vsixml 2996/udp # vsixml -rebol 2997/tcp # REBOL -rebol 2997/udp # REBOL -realsecure 2998/tcp # Real Secure -realsecure 2998/udp # Real Secure -remoteware-un 2999/tcp # RemoteWare Unassigned -remoteware-un 2999/udp # RemoteWare Unassigned -hbci 3000/tcp # HBCI -hbci 3000/udp # HBCI -#remoteware-cl 3000/tcp # RemoteWare Client -#remoteware-cl 3000/udp # RemoteWare Client -exlm-agent 3002/tcp # EXLM Agent -exlm-agent 3002/udp # EXLM Agent -#remoteware-srv 3002/tcp # RemoteWare Server -#remoteware-srv 3002/udp # RemoteWare Server -cgms 3003/tcp # CGMS -cgms 3003/udp # CGMS -csoftragent 3004/tcp # Csoft Agent -csoftragent 3004/udp # Csoft Agent -geniuslm 3005/tcp # Genius License Manager -geniuslm 3005/udp # Genius License Manager -ii-admin 3006/tcp # Instant Internet Admin -ii-admin 3006/udp # Instant Internet Admin -lotusmtap 3007/tcp # Lotus Mail Tracking Agent Protocol -lotusmtap 3007/udp # Lotus Mail Tracking Agent Protocol -midnight-tech 3008/tcp # Midnight Technologies -midnight-tech 3008/udp # Midnight Technologies -pxc-ntfy 3009/tcp # PXC-NTFY -pxc-ntfy 3009/udp # PXC-NTFY -gw 3010/tcp # Telerate Workstation -ping-pong 3010/udp # Telerate Workstation -trusted-web 3011/tcp # Trusted Web -trusted-web 3011/udp # Trusted Web -twsdss 3012/tcp # Trusted Web Client -twsdss 3012/udp # Trusted Web Client -gilatskysurfer 3013/tcp # Gilat Sky Surfer -gilatskysurfer 3013/udp # Gilat Sky Surfer -broker_service 3014/tcp # Broker Service -broker_service 3014/udp # Broker Service -nati-dstp 3015/tcp # NATI DSTP -nati-dstp 3015/udp # NATI DSTP -notify_srvr 3016/tcp # Notify Server -notify_srvr 3016/udp # Notify Server -event_listener 3017/tcp # Event Listener -event_listener 3017/udp # Event Listener -srvc_registry 3018/tcp # Service Registry -srvc_registry 3018/udp # Service Registry -resource_mgr 3019/tcp # Resource Manager -resource_mgr 3019/udp # Resource Manager -cifs 3020/tcp # CIFS -cifs 3020/udp # CIFS -agriserver 3021/tcp # AGRI Server -agriserver 3021/udp # AGRI Server -csregagent 3022/tcp # CSREGAGENT -csregagent 3022/udp # CSREGAGENT -magicnotes 3023/tcp # magicnotes -magicnotes 3023/udp # magicnotes -nds_sso 3024/tcp # NDS_SSO -nds_sso 3024/udp # NDS_SSO -arepa-raft 3025/tcp # Arepa Raft -arepa-raft 3025/udp # Arepa Raft -agri-gateway 3026/tcp # AGRI Gateway -agri-gateway 3026/udp # AGRI Gateway -LiebDevMgmt_C 3027/tcp # LiebDevMgmt_C -LiebDevMgmt_C 3027/udp # LiebDevMgmt_C -LiebDevMgmt_DM 3028/tcp # LiebDevMgmt_DM -LiebDevMgmt_DM 3028/udp # LiebDevMgmt_DM -LiebDevMgmt_A 3029/tcp # LiebDevMgmt_A -LiebDevMgmt_A 3029/udp # LiebDevMgmt_A -arepa-cas 3030/tcp # Arepa Cas -arepa-cas 3030/udp # Arepa Cas -eppc 3031/tcp # Remote AppleEvents/PPC Toolbox -eppc 3031/udp # Remote AppleEvents/PPC Toolbox -redwood-chat 3032/tcp # Redwood Chat -redwood-chat 3032/udp # Redwood Chat -pdb 3033/tcp # PDB -pdb 3033/udp # PDB -osmosis-aeea 3034/tcp # Osmosis / Helix (R) AEEA Port -osmosis-aeea 3034/udp # Osmosis / Helix (R) AEEA Port -fjsv-gssagt 3035/tcp # FJSV gssagt -fjsv-gssagt 3035/udp # FJSV gssagt -hagel-dump 3036/tcp # Hagel DUMP -hagel-dump 3036/udp # Hagel DUMP -hp-san-mgmt 3037/tcp # HP SAN Mgmt -hp-san-mgmt 3037/udp # HP SAN Mgmt -santak-ups 3038/tcp # Santak UPS -santak-ups 3038/udp # Santak UPS -cogitate 3039/tcp # Cogitate, Inc. -cogitate 3039/udp # Cogitate, Inc. -tomato-springs 3040/tcp # Tomato Springs -tomato-springs 3040/udp # Tomato Springs -di-traceware 3041/tcp # di-traceware -di-traceware 3041/udp # di-traceware -journee 3042/tcp # journee -journee 3042/udp # journee -brp 3043/tcp # Broadcast Routing Protocol -brp 3043/udp # Broadcast Routing Protocol -responsenet 3045/tcp # ResponseNet -responsenet 3045/udp # ResponseNet -di-ase 3046/tcp # di-ase -di-ase 3046/udp # di-ase -pctrader 3048/tcp # Sierra Net PC Trader -pctrader 3048/udp # Sierra Net PC Trader -nsws 3049/tcp # NSWS -nsws 3049/udp # NSWS -gds_db 3050/tcp # gds_db -gds_db 3050/udp # gds_db -galaxy-server 3051/tcp # Galaxy Server -galaxy-server 3051/udp # Galaxy Server -apc-3052 3052/tcp # APC 3052 -apc-3052 3052/udp # APC 3052 -dsom-server 3053/tcp # dsom-server -dsom-server 3053/udp # dsom-server -amt-cnf-prot 3054/tcp # AMT CNF PROT -amt-cnf-prot 3054/udp # AMT CNF PROT -policyserver 3055/tcp # Policy Server -policyserver 3055/udp # Policy Server -cdl-server 3056/tcp # CDL Server -cdl-server 3056/udp # CDL Server -goahead-fldup 3057/tcp # GoAhead FldUp -goahead-fldup 3057/udp # GoAhead FldUp -videobeans 3058/tcp # videobeans -videobeans 3058/udp # videobeans -qsoft 3059/tcp # qsoft -qsoft 3059/udp # qsoft -interserver 3060/tcp # interserver -interserver 3060/udp # interserver -cautcpd 3061/tcp # cautcpd -cautcpd 3061/udp # cautcpd -ncacn-ip-tcp 3062/tcp # ncacn-ip-tcp -ncacn-ip-tcp 3062/udp # ncacn-ip-tcp -ncadg-ip-udp 3063/tcp # ncadg-ip-udp -ncadg-ip-udp 3063/udp # ncadg-ip-udp -rprt 3064/tcp # Remote Port Redirector -rprt 3064/udp # Remote Port Redirector -slinterbase 3065/tcp # slinterbase -slinterbase 3065/udp # slinterbase -netattachsdmp 3066/tcp # NETATTACHSDMP -netattachsdmp 3066/udp # NETATTACHSDMP -fjhpjp 3067/tcp # FJHPJP -fjhpjp 3067/udp # FJHPJP -ls3bcast 3068/tcp # ls3 Broadcast -ls3bcast 3068/udp # ls3 Broadcast -ls3 3069/tcp # ls3 -ls3 3069/udp # ls3 -mgxswitch 3070/tcp # MGXSWITCH -mgxswitch 3070/udp # MGXSWITCH -csd-mgmt-port 3071/tcp # ContinuStor Manager Port -csd-mgmt-port 3071/udp # ContinuStor Manager Port -csd-monitor 3072/tcp # ContinuStor Monitor Port -csd-monitor 3072/udp # ContinuStor Monitor Port -vcrp 3073/tcp # Very simple chatroom prot -vcrp 3073/udp # Very simple chatroom prot -xbox 3074/tcp # Xbox game port -xbox 3074/udp # Xbox game port -orbix-locator 3075/tcp # Orbix 2000 Locator -orbix-locator 3075/udp # Orbix 2000 Locator -orbix-config 3076/tcp # Orbix 2000 Config -orbix-config 3076/udp # Orbix 2000 Config -orbix-loc-ssl 3077/tcp # Orbix 2000 Locator SSL -orbix-loc-ssl 3077/udp # Orbix 2000 Locator SSL -orbix-cfg-ssl 3078/tcp # Orbix 2000 Locator SSL -orbix-cfg-ssl 3078/udp # Orbix 2000 Locator SSL -lv-frontpanel 3079/tcp # LV Front Panel -lv-frontpanel 3079/udp # LV Front Panel -stm_pproc 3080/tcp # stm_pproc -stm_pproc 3080/udp # stm_pproc -tl1-lv 3081/tcp # TL1-LV -tl1-lv 3081/udp # TL1-LV -tl1-raw 3082/tcp # TL1-RAW -tl1-raw 3082/udp # TL1-RAW -tl1-telnet 3083/tcp # TL1-TELNET -tl1-telnet 3083/udp # TL1-TELNET -itm-mccs 3084/tcp # ITM-MCCS -itm-mccs 3084/udp # ITM-MCCS -pcihreq 3085/tcp # PCIHReq -pcihreq 3085/udp # PCIHReq -jdl-dbkitchen 3086/tcp # JDL-DBKitchen -jdl-dbkitchen 3086/udp # JDL-DBKitchen -asoki-sma 3087/tcp # Asoki SMA -asoki-sma 3087/udp # Asoki SMA -xdtp 3088/tcp # eXtensible Data Transfer Protocol -xdtp 3088/udp # eXtensible Data Transfer Protocol -ptk-alink 3089/tcp # ParaTek Agent Linking -ptk-alink 3089/udp # ParaTek Agent Linking -stss 3090/tcp # Senforce Session Services -stss 3090/udp # Senforce Session Services -1ci-smcs 3091/tcp # 1Ci Server Management -1ci-smcs 3091/udp # 1Ci Server Management -rapidmq-center 3093/tcp # Jiiva RapidMQ Center -rapidmq-center 3093/udp # Jiiva RapidMQ Center -rapidmq-reg 3094/tcp # Jiiva RapidMQ Registry -rapidmq-reg 3094/udp # Jiiva RapidMQ Registry -panasas 3095/tcp # Panasas rendevous port -panasas 3095/udp # Panasas rendevous port -ndl-aps 3096/tcp # Active Print Server Port -ndl-aps 3096/udp # Active Print Server Port -itu-bicc-stc 3097/sctp # ITU-T Q.1902.1/Q.2150.3 -umm-port 3098/tcp # Universal Message Manager -umm-port 3098/udp # Universal Message Manager -chmd 3099/tcp # CHIPSY Machine Daemon -chmd 3099/udp # CHIPSY Machine Daemon -opcon-xps 3100/tcp # OpCon/xps -opcon-xps 3100/udp # OpCon/xps -hp-pxpib 3101/tcp # HP PolicyXpert PIB Server -hp-pxpib 3101/udp # HP PolicyXpert PIB Server -slslavemon 3102/tcp # SoftlinK Slave Mon Port -slslavemon 3102/udp # SoftlinK Slave Mon Port -autocuesmi 3103/tcp # Autocue SMI Protocol -autocuesmi 3103/udp # Autocue SMI Protocol -autocuelog 3104/tcp # Autocue Logger Protocol -autocuetime 3104/udp # Autocue Time Service -cardbox 3105/tcp # Cardbox -cardbox 3105/udp # Cardbox -cardbox-http 3106/tcp # Cardbox HTTP -cardbox-http 3106/udp # Cardbox HTTP -business 3107/tcp # Business protocol -business 3107/udp # Business protocol -geolocate 3108/tcp # Geolocate protocol -geolocate 3108/udp # Geolocate protocol -personnel 3109/tcp # Personnel protocol -personnel 3109/udp # Personnel protocol -sim-control 3110/tcp # simulator control port -sim-control 3110/udp # simulator control port -wsynch 3111/tcp # Web Synchronous Services -wsynch 3111/udp # Web Synchronous Services -ksysguard 3112/tcp # KDE System Guard -ksysguard 3112/udp # KDE System Guard -cs-auth-svr 3113/tcp # CS-Authenticate Svr Port -cs-auth-svr 3113/udp # CS-Authenticate Svr Port -ccmad 3114/tcp # CCM AutoDiscover -ccmad 3114/udp # CCM AutoDiscover -mctet-master 3115/tcp # MCTET Master -mctet-master 3115/udp # MCTET Master -mctet-gateway 3116/tcp # MCTET Gateway -mctet-gateway 3116/udp # MCTET Gateway -mctet-jserv 3117/tcp # MCTET Jserv -mctet-jserv 3117/udp # MCTET Jserv -pkagent 3118/tcp # PKAgent -pkagent 3118/udp # PKAgent -d2000kernel 3119/tcp # D2000 Kernel Port -d2000kernel 3119/udp # D2000 Kernel Port -d2000webserver 3120/tcp # D2000 Webserver Port -d2000webserver 3120/udp # D2000 Webserver Port -vtr-emulator 3122/tcp # MTI VTR Emulator port -vtr-emulator 3122/udp # MTI VTR Emulator port -edix 3123/tcp # EDI Translation Protocol -edix 3123/udp # EDI Translation Protocol -beacon-port 3124/tcp # Beacon Port -beacon-port 3124/udp # Beacon Port -a13-an 3125/tcp # A13-AN Interface -a13-an 3125/udp # A13-AN Interface -ctx-bridge 3127/tcp # CTX Bridge Port -ctx-bridge 3127/udp # CTX Bridge Port -ndl-aas 3128/udp # Active API Server Port -netport-id 3129/tcp # NetPort Discovery Port -netport-id 3129/udp # NetPort Discovery Port -netbookmark 3131/tcp # Net Book Mark -netbookmark 3131/udp # Net Book Mark -ms-rule-engine 3132/tcp # Microsoft Business Rule Engine Update Service -ms-rule-engine 3132/udp # Microsoft Business Rule Engine Update Service -prism-deploy 3133/tcp # Prism Deploy User Port -prism-deploy 3133/udp # Prism Deploy User Port -ecp 3134/tcp # Extensible Code Protocol -ecp 3134/udp # Extensible Code Protocol -peerbook-port 3135/tcp # PeerBook Port -peerbook-port 3135/udp # PeerBook Port -grubd 3136/tcp # Grub Server Port -grubd 3136/udp # Grub Server Port -rtnt-1 3137/tcp # rtnt-1 data packets -rtnt-1 3137/udp # rtnt-1 data packets -rtnt-2 3138/tcp # rtnt-2 data packets -rtnt-2 3138/udp # rtnt-2 data packets -incognitorv 3139/tcp # Incognito Rendez-Vous -incognitorv 3139/udp # Incognito Rendez-Vous -ariliamulti 3140/tcp # Arilia Multiplexor -ariliamulti 3140/udp # Arilia Multiplexor -vmodem 3141/tcp # VMODEM -vmodem 3141/udp # VMODEM -rdc-wh-eos 3142/tcp # RDC WH EOS -rdc-wh-eos 3142/udp # RDC WH EOS -seaview 3143/tcp # Sea View -seaview 3143/udp # Sea View -tarantella 3144/tcp # Tarantella -tarantella 3144/udp # Tarantella -csi-lfap 3145/tcp # CSI-LFAP -csi-lfap 3145/udp # CSI-LFAP -bears-02 3146/tcp # bears-02 -bears-02 3146/udp # bears-02 -rfio 3147/tcp # RFIO -rfio 3147/udp # RFIO -nm-game-admin 3148/tcp # NetMike Game Administrator -nm-game-admin 3148/udp # NetMike Game Administrator -nm-game-server 3149/tcp # NetMike Game Server -nm-game-server 3149/udp # NetMike Game Server -nm-asses-admin 3150/tcp # NetMike Assessor Administrator -nm-asses-admin 3150/udp # NetMike Assessor Administrator -nm-assessor 3151/tcp # NetMike Assessor -nm-assessor 3151/udp # NetMike Assessor -feitianrockey 3152/tcp # FeiTian Port -feitianrockey 3152/udp # FeiTian Port -s8-client-port 3153/tcp # S8Cargo Client Port -s8-client-port 3153/udp # S8Cargo Client Port -ccmrmi 3154/tcp # ON RMI Registry -ccmrmi 3154/udp # ON RMI Registry -jpegmpeg 3155/tcp # JpegMpeg Port -jpegmpeg 3155/udp # JpegMpeg Port -indura 3156/tcp # Indura Collector -indura 3156/udp # Indura Collector -e3consultants 3157/tcp # CCC Listener Port -e3consultants 3157/udp # CCC Listener Port -stvp 3158/tcp # SmashTV Protocol -stvp 3158/udp # SmashTV Protocol -navegaweb-port 3159/tcp # NavegaWeb Tarification -navegaweb-port 3159/udp # NavegaWeb Tarification -tip-app-server 3160/tcp # TIP Application Server -tip-app-server 3160/udp # TIP Application Server -doc1lm 3161/tcp # DOC1 License Manager -doc1lm 3161/udp # DOC1 License Manager -sflm 3162/tcp # SFLM -sflm 3162/udp # SFLM -res-sap 3163/tcp # RES-SAP -res-sap 3163/udp # RES-SAP -imprs 3164/tcp # IMPRS -imprs 3164/udp # IMPRS -newgenpay 3165/tcp # Newgenpay Engine Service -newgenpay 3165/udp # Newgenpay Engine Service -sossecollector 3166/tcp # Quest Spotlight Out-Of-Process Collector -sossecollector 3166/udp # Quest Spotlight Out-Of-Process Collector -nowcontact 3167/tcp # Now Contact Public Server -nowcontact 3167/udp # Now Contact Public Server -poweronnud 3168/tcp # Now Up-to-Date Public Server -poweronnud 3168/udp # Now Up-to-Date Public Server -serverview-as 3169/tcp # SERVERVIEW-AS -serverview-as 3169/udp # SERVERVIEW-AS -serverview-asn 3170/tcp # SERVERVIEW-ASN -serverview-asn 3170/udp # SERVERVIEW-ASN -serverview-gf 3171/tcp # SERVERVIEW-GF -serverview-gf 3171/udp # SERVERVIEW-GF -serverview-rm 3172/tcp # SERVERVIEW-RM -serverview-rm 3172/udp # SERVERVIEW-RM -serverview-icc 3173/tcp # SERVERVIEW-ICC -serverview-icc 3173/udp # SERVERVIEW-ICC -armi-server 3174/tcp # ARMI Server -armi-server 3174/udp # ARMI Server -t1-e1-over-ip 3175/tcp # T1_E1_Over_IP -t1-e1-over-ip 3175/udp # T1_E1_Over_IP -ars-master 3176/tcp # ARS Master -ars-master 3176/udp # ARS Master -phonex-port 3177/tcp # Phonex Protocol -phonex-port 3177/udp # Phonex Protocol -radclientport 3178/tcp # Radiance UltraEdge Port -radclientport 3178/udp # Radiance UltraEdge Port -h2gf-w-2m 3179/tcp # H2GF W.2m Handover prot. -h2gf-w-2m 3179/udp # H2GF W.2m Handover prot. -mc-brk-srv 3180/tcp # Millicent Broker Server -mc-brk-srv 3180/udp # Millicent Broker Server -bmcpatrolagent 3181/tcp # BMC Patrol Agent -bmcpatrolagent 3181/udp # BMC Patrol Agent -bmcpatrolrnvu 3182/tcp # BMC Patrol Rendezvous -bmcpatrolrnvu 3182/udp # BMC Patrol Rendezvous -cops-tls 3183/tcp # COPS/TLS -cops-tls 3183/udp # COPS/TLS -apogeex-port 3184/tcp # ApogeeX Port -apogeex-port 3184/udp # ApogeeX Port -smpppd 3185/tcp # SuSE Meta PPPD -smpppd 3185/udp # SuSE Meta PPPD -iiw-port 3186/tcp # IIW Monitor User Port -iiw-port 3186/udp # IIW Monitor User Port -odi-port 3187/tcp # Open Design Listen Port -odi-port 3187/udp # Open Design Listen Port -brcm-comm-port 3188/tcp # Broadcom Port -brcm-comm-port 3188/udp # Broadcom Port -pcle-infex 3189/tcp # Pinnacle Sys InfEx Port -pcle-infex 3189/udp # Pinnacle Sys InfEx Port -csvr-proxy 3190/tcp # ConServR Proxy -csvr-proxy 3190/udp # ConServR Proxy -csvr-sslproxy 3191/tcp # ConServR SSL Proxy -csvr-sslproxy 3191/udp # ConServR SSL Proxy -firemonrcc 3192/tcp # FireMon Revision Control -firemonrcc 3192/udp # FireMon Revision Control -spandataport 3193/tcp # SpanDataPort -spandataport 3193/udp # SpanDataPort -magbind 3194/tcp # Rockstorm MAG protocol -magbind 3194/udp # Rockstorm MAG protocol -ncu-1 3195/tcp # Network Control Unit -ncu-1 3195/udp # Network Control Unit -ncu-2 3196/tcp # Network Control Unit -ncu-2 3196/udp # Network Control Unit -embrace-dp-s 3197/tcp # Embrace Device Protocol Server -embrace-dp-s 3197/udp # Embrace Device Protocol Server -embrace-dp-c 3198/tcp # Embrace Device Protocol Client -embrace-dp-c 3198/udp # Embrace Device Protocol Client -dmod-workspace 3199/tcp # DMOD WorkSpace -dmod-workspace 3199/udp # DMOD WorkSpace -tick-port 3200/tcp # Press-sense Tick Port -tick-port 3200/udp # Press-sense Tick Port -cpq-tasksmart 3201/tcp # CPQ-TaskSmart -cpq-tasksmart 3201/udp # CPQ-TaskSmart -intraintra 3202/tcp # IntraIntra -intraintra 3202/udp # IntraIntra -netwatcher-mon 3203/tcp # Network Watcher Monitor -netwatcher-mon 3203/udp # Network Watcher Monitor -netwatcher-db 3204/tcp # Network Watcher DB Access -netwatcher-db 3204/udp # Network Watcher DB Access -isns 3205/tcp # iSNS Server Port -isns 3205/udp # iSNS Server Port -ironmail 3206/tcp # IronMail POP Proxy -ironmail 3206/udp # IronMail POP Proxy -vx-auth-port 3207/tcp # Veritas Authentication Port -vx-auth-port 3207/udp # Veritas Authentication Port -pfu-prcallback 3208/tcp # PFU PR Callback -pfu-prcallback 3208/udp # PFU PR Callback -netwkpathengine 3209/tcp # HP OpenView Network Path Engine Server -netwkpathengine 3209/udp # HP OpenView Network Path Engine Server -flamenco-proxy 3210/tcp # Flamenco Networks Proxy -flamenco-proxy 3210/udp # Flamenco Networks Proxy -avsecuremgmt 3211/tcp # Avocent Secure Management -avsecuremgmt 3211/udp # Avocent Secure Management -surveyinst 3212/tcp # Survey Instrument -surveyinst 3212/udp # Survey Instrument -neon24x7 3213/tcp # NEON 24X7 Mission Control -neon24x7 3213/udp # NEON 24X7 Mission Control -jmq-daemon-1 3214/tcp # JMQ Daemon Port 1 -jmq-daemon-1 3214/udp # JMQ Daemon Port 1 -jmq-daemon-2 3215/tcp # JMQ Daemon Port 2 -jmq-daemon-2 3215/udp # JMQ Daemon Port 2 -ferrari-foam 3216/tcp # Ferrari electronic FOAM -ferrari-foam 3216/udp # Ferrari electronic FOAM -unite 3217/tcp # Unified IP & Telecomm Environment -unite 3217/udp # Unified IP & Telecomm Environment -smartpackets 3218/tcp # EMC SmartPackets -smartpackets 3218/udp # EMC SmartPackets -wms-messenger 3219/tcp # WMS Messenger -wms-messenger 3219/udp # WMS Messenger -xnm-ssl 3220/tcp # XML NM over SSL -xnm-ssl 3220/udp # XML NM over SSL -xnm-clear-text 3221/tcp # XML NM over TCP -xnm-clear-text 3221/udp # XML NM over TCP -glbp 3222/tcp # Gateway Load Balancing Pr -glbp 3222/udp # Gateway Load Balancing Pr -digivote 3223/tcp # DIGIVOTE (R) Vote-Server -digivote 3223/udp # DIGIVOTE (R) Vote-Server -aes-discovery 3224/tcp # AES Discovery Port -aes-discovery 3224/udp # AES Discovery Port -fcip-port 3225/tcp # FCIP -fcip-port 3225/udp # FCIP -isi-irp 3226/tcp # ISI Industry Software IRP -isi-irp 3226/udp # ISI Industry Software IRP -dwnmshttp 3227/tcp # DiamondWave NMS Server -dwnmshttp 3227/udp # DiamondWave NMS Server -dwmsgserver 3228/tcp # DiamondWave MSG Server -dwmsgserver 3228/udp # DiamondWave MSG Server -global-cd-port 3229/tcp # Global CD Port -global-cd-port 3229/udp # Global CD Port -sftdst-port 3230/tcp # Software Distributor Port -sftdst-port 3230/udp # Software Distributor Port -vidigo 3231/tcp # VidiGo communication -vidigo 3231/udp # VidiGo communication -mdtp 3232/tcp # MDT port -mdtp 3232/udp # MDT port -whisker 3233/tcp # WhiskerControl main port -whisker 3233/udp # WhiskerControl main port -alchemy 3234/tcp # Alchemy Server -alchemy 3234/udp # Alchemy Server -mdap-port 3235/tcp # MDAP port -mdap-port 3235/udp # MDAP Port -apparenet-ts 3236/tcp # appareNet Test Server -apparenet-ts 3236/udp # appareNet Test Server -apparenet-tps 3237/tcp # appareNet Test Packet Sequencer -apparenet-tps 3237/udp # appareNet Test Packet Sequencer -apparenet-as 3238/tcp # appareNet Analysis Server -apparenet-as 3238/udp # appareNet Analysis Server -apparenet-ui 3239/tcp # appareNet User Interface -apparenet-ui 3239/udp # appareNet User Interface -triomotion 3240/tcp # Trio Motion Control Port -triomotion 3240/udp # Trio Motion Control Port -sysorb 3241/tcp # SysOrb Monitoring Server -sysorb 3241/udp # SysOrb Monitoring Server -sdp-id-port 3242/tcp # Session Description ID -sdp-id-port 3242/udp # Session Description ID -timelot 3243/tcp # Timelot Port -timelot 3243/udp # Timelot Port -onesaf 3244/tcp # OneSAF -onesaf 3244/udp # OneSAF -vieo-fe 3245/tcp # VIEO Fabric Executive -vieo-fe 3245/udp # VIEO Fabric Executive -dvt-system 3246/tcp # DVT SYSTEM PORT -dvt-system 3246/udp # DVT SYSTEM PORT -dvt-data 3247/tcp # DVT DATA LINK -dvt-data 3247/udp # DVT DATA LINK -procos-lm 3248/tcp # PROCOS LM -procos-lm 3248/udp # PROCOS LM -ssp 3249/tcp # State Sync Protocol -ssp 3249/udp # State Sync Protocol -hicp 3250/tcp # HMS hicp port -hicp 3250/udp # HMS hicp port -sysscanner 3251/tcp # Sys Scanner -sysscanner 3251/udp # Sys Scanner -dhe 3252/tcp # DHE port -dhe 3252/udp # DHE port -pda-data 3253/tcp # PDA Data -pda-data 3253/udp # PDA Data -pda-sys 3254/tcp # PDA System -pda-sys 3254/udp # PDA System -semaphore 3255/tcp # Semaphore Connection Port -semaphore 3255/udp # Semaphore Connection Port -cpqrpm-agent 3256/tcp # Compaq RPM Agent Port -cpqrpm-agent 3256/udp # Compaq RPM Agent Port -cpqrpm-server 3257/tcp # Compaq RPM Server Port -cpqrpm-server 3257/udp # Compaq RPM Server Port -ivecon-port 3258/tcp # Ivecon Server Port -ivecon-port 3258/udp # Ivecon Server Port -epncdp2 3259/tcp # Epson Network Common Devi -epncdp2 3259/udp # Epson Network Common Devi -iscsi-target 3260/tcp # iSCSI port -iscsi-target 3260/udp # iSCSI port -winshadow 3261/tcp # winShadow -winshadow 3261/udp # winShadow -necp 3262/tcp # NECP -necp 3262/udp # NECP -ecolor-imager 3263/tcp # E-Color Enterprise Imager -ecolor-imager 3263/udp # E-Color Enterprise Imager -ccmail 3264/tcp # cc:mail/lotus -ccmail 3264/udp # cc:mail/lotus -altav-tunnel 3265/tcp # Altav Tunnel -altav-tunnel 3265/udp # Altav Tunnel -ns-cfg-server 3266/tcp # NS CFG Server -ns-cfg-server 3266/udp # NS CFG Server -ibm-dial-out 3267/tcp # IBM Dial Out -ibm-dial-out 3267/udp # IBM Dial Out -msft-gc 3268/tcp # Microsoft Global Catalog -msft-gc 3268/udp # Microsoft Global Catalog -msft-gc-ssl 3269/tcp # Microsoft Global Catalog with LDAP/SSL -msft-gc-ssl 3269/udp # Microsoft Global Catalog with LDAP/SSL -verismart 3270/tcp # Verismart -verismart 3270/udp # Verismart -csoft-prev 3271/tcp # CSoft Prev Port -csoft-prev 3271/udp # CSoft Prev Port -user-manager 3272/tcp # Fujitsu User Manager -user-manager 3272/udp # Fujitsu User Manager -sxmp 3273/tcp # Simple Extensible Multiplexed Protocol -sxmp 3273/udp # Simple Extensible Multiplexed Protocol -ordinox-server 3274/tcp # Ordinox Server -ordinox-server 3274/udp # Ordinox Server -samd 3275/tcp # SAMD -samd 3275/udp # SAMD -maxim-asics 3276/tcp # Maxim ASICs -maxim-asics 3276/udp # Maxim ASICs -awg-proxy 3277/tcp # AWG Proxy -awg-proxy 3277/udp # AWG Proxy -lkcmserver 3278/tcp # LKCM Server -lkcmserver 3278/udp # LKCM Server -admind 3279/tcp # admind -admind 3279/udp # admind -vs-server 3280/tcp # VS Server -vs-server 3280/udp # VS Server -sysopt 3281/tcp # SYSOPT -sysopt 3281/udp # SYSOPT -datusorb 3282/tcp # Datusorb -datusorb 3282/udp # Datusorb -net-assistant 3283/tcp # Net Assistant -net-assistant 3283/udp # Net Assistant -4talk 3284/tcp # 4Talk -4talk 3284/udp # 4Talk -plato 3285/tcp # Plato -plato 3285/udp # Plato -e-net 3286/tcp # E-Net -e-net 3286/udp # E-Net -directvdata 3287/tcp # DIRECTVDATA -directvdata 3287/udp # DIRECTVDATA -cops 3288/tcp # COPS -cops 3288/udp # COPS -enpc 3289/tcp # ENPC -enpc 3289/udp # ENPC -caps-lm 3290/tcp # CAPS LOGISTICS TOOLKIT - LM -caps-lm 3290/udp # CAPS LOGISTICS TOOLKIT - LM -sah-lm 3291/tcp # S A Holditch & Associates - LM -sah-lm 3291/udp # S A Holditch & Associates - LM -cart-o-rama 3292/tcp # Cart O Rama -cart-o-rama 3292/udp # Cart O Rama -fg-fps 3293/tcp # fg-fps -fg-fps 3293/udp # fg-fps -fg-gip 3294/tcp # fg-gip -fg-gip 3294/udp # fg-gip -dyniplookup 3295/tcp # Dynamic IP Lookup -dyniplookup 3295/udp # Dynamic IP Lookup -rib-slm 3296/tcp # Rib License Manager -rib-slm 3296/udp # Rib License Manager -cytel-lm 3297/tcp # Cytel License Manager -cytel-lm 3297/udp # Cytel License Manager -deskview 3298/tcp # DeskView -deskview 3298/udp # DeskView -pdrncs 3299/tcp # pdrncs -pdrncs 3299/udp # pdrncs -mcs-fastmail 3302/tcp # MCS Fastmail -mcs-fastmail 3302/udp # MCS Fastmail -opsession-clnt 3303/tcp # OP Session Client -opsession-clnt 3303/udp # OP Session Client -opsession-srvr 3304/tcp # OP Session Server -opsession-srvr 3304/udp # OP Session Server -odette-ftp 3305/tcp # ODETTE-FTP -odette-ftp 3305/udp # ODETTE-FTP -opsession-prxy 3307/tcp # OP Session Proxy -opsession-prxy 3307/udp # OP Session Proxy -tns-server 3308/tcp # TNS Server -tns-server 3308/udp # TNS Server -tns-adv 3309/tcp # TNS ADV -tns-adv 3309/udp # TNS ADV -dyna-access 3310/tcp # Dyna Access -dyna-access 3310/udp # Dyna Access -mcns-tel-ret 3311/tcp # MCNS Tel Ret -mcns-tel-ret 3311/udp # MCNS Tel Ret -appman-server 3312/tcp # Application Management Server -appman-server 3312/udp # Application Management Server -uorb 3313/tcp # Unify Object Broker -uorb 3313/udp # Unify Object Broker -uohost 3314/tcp # Unify Object Host -uohost 3314/udp # Unify Object Host -cdid 3315/tcp # CDID -cdid 3315/udp # CDID -aicc-cmi 3316/tcp # AICC/CMI -aicc-cmi 3316/udp # AICC/CMI -vsaiport 3317/tcp # VSAI PORT -vsaiport 3317/udp # VSAI PORT -ssrip 3318/tcp # Swith to Swith Routing Information Protocol -ssrip 3318/udp # Swith to Swith Routing Information Protocol -sdt-lmd 3319/tcp # SDT License Manager -sdt-lmd 3319/udp # SDT License Manager -officelink2000 3320/tcp # Office Link 2000 -officelink2000 3320/udp # Office Link 2000 -vnsstr 3321/tcp # VNSSTR -vnsstr 3321/udp # VNSSTR -sftu 3326/tcp # SFTU -sftu 3326/udp # SFTU -bbars 3327/tcp # BBARS -bbars 3327/udp # BBARS -egptlm 3328/tcp # Eaglepoint License Manager -egptlm 3328/udp # Eaglepoint License Manager -hp-device-disc 3329/tcp # HP Device Disc -hp-device-disc 3329/udp # HP Device Disc -mcs-calypsoicf 3330/tcp # MCS Calypso ICF -mcs-calypsoicf 3330/udp # MCS Calypso ICF -mcs-messaging 3331/tcp # MCS Messaging -mcs-messaging 3331/udp # MCS Messaging -mcs-mailsvr 3332/tcp # MCS Mail Server -mcs-mailsvr 3332/udp # MCS Mail Server -dec-notes 3333/tcp # DEC Notes -dec-notes 3333/udp # DEC Notes -directv-web 3334/tcp # Direct TV Webcasting -directv-web 3334/udp # Direct TV Webcasting -directv-soft 3335/tcp # Direct TV Software Updates -directv-soft 3335/udp # Direct TV Software Updates -directv-tick 3336/tcp # Direct TV Tickers -directv-tick 3336/udp # Direct TV Tickers -directv-catlg 3337/tcp # Direct TV Data Catalog -directv-catlg 3337/udp # Direct TV Data Catalog -anet-b 3338/tcp # OMF data b -anet-b 3338/udp # OMF data b -anet-l 3339/tcp # OMF data l -anet-l 3339/udp # OMF data l -anet-m 3340/tcp # OMF data m -anet-m 3340/udp # OMF data m -anet-h 3341/tcp # OMF data h -anet-h 3341/udp # OMF data h -webtie 3342/tcp # WebTIE -webtie 3342/udp # WebTIE -ms-cluster-net 3343/tcp # MS Cluster Net -ms-cluster-net 3343/udp # MS Cluster Net -bnt-manager 3344/tcp # BNT Manager -bnt-manager 3344/udp # BNT Manager -influence 3345/tcp # Influence -influence 3345/udp # Influence -phoenix-rpc 3347/tcp # Phoenix RPC -phoenix-rpc 3347/udp # Phoenix RPC -pangolin-laser 3348/tcp # Pangolin Laser -pangolin-laser 3348/udp # Pangolin Laser -chevinservices 3349/tcp # Chevin Services -chevinservices 3349/udp # Chevin Services -findviatv 3350/tcp # FINDVIATV -findviatv 3350/udp # FINDVIATV -btrieve 3351/tcp # Btrieve port -btrieve 3351/udp # Btrieve port -ssql 3352/tcp # Scalable SQL -ssql 3352/udp # Scalable SQL -fatpipe 3353/tcp # FATPIPE -fatpipe 3353/udp # FATPIPE -suitjd 3354/tcp # SUITJD -suitjd 3354/udp # SUITJD -ordinox-dbase 3355/tcp # Ordinox Dbase -ordinox-dbase 3355/udp # Ordinox Dbase -upnotifyps 3356/tcp # UPNOTIFYPS -upnotifyps 3356/udp # UPNOTIFYPS -adtech-test 3357/tcp # Adtech Test IP -adtech-test 3357/udp # Adtech Test IP -mpsysrmsvr 3358/tcp # Mp Sys Rmsvr -mpsysrmsvr 3358/udp # Mp Sys Rmsvr -wg-netforce 3359/tcp # WG NetForce -wg-netforce 3359/udp # WG NetForce -kv-server 3360/tcp # KV Server -kv-server 3360/udp # KV Server -kv-agent 3361/tcp # KV Agent -kv-agent 3361/udp # KV Agent -dj-ilm 3362/tcp # DJ ILM -dj-ilm 3362/udp # DJ ILM -nati-vi-server 3363/tcp # NATI Vi Server -nati-vi-server 3363/udp # NATI Vi Server -tip2 3372/tcp # TIP 2 -tip2 3372/udp # TIP 2 -lavenir-lm 3373/tcp # Lavenir License Manager -lavenir-lm 3373/udp # Lavenir License Manager -cluster-disc 3374/tcp # Cluster Disc -cluster-disc 3374/udp # Cluster Disc -vsnm-agent 3375/tcp # VSNM Agent -vsnm-agent 3375/udp # VSNM Agent -cdbroker 3376/tcp # CD Broker -cdbroker 3376/udp # CD Broker -cogsys-lm 3377/tcp # Cogsys Network License Manager -cogsys-lm 3377/udp # Cogsys Network License Manager -wsicopy 3378/tcp # WSICOPY -wsicopy 3378/udp # WSICOPY -socorfs 3379/tcp # SOCORFS -socorfs 3379/udp # SOCORFS -sns-channels 3380/tcp # SNS Channels -sns-channels 3380/udp # SNS Channels -geneous 3381/tcp # Geneous -geneous 3381/udp # Geneous -fujitsu-neat 3382/tcp # Fujitsu Network Enhanced Antitheft function -fujitsu-neat 3382/udp # Fujitsu Network Enhanced Antitheft function -esp-lm 3383/tcp # Enterprise Software Products License Manager -esp-lm 3383/udp # Enterprise Software Products License Manager -hp-clic 3384/tcp # Cluster Management Services -hp-clic 3384/udp # Hardware Management -qnxnetman 3385/tcp # qnxnetman -qnxnetman 3385/udp # qnxnetman -gprs-data 3386/tcp # GPRS Data -gprs-sig 3386/udp # GPRS SIG -backroomnet 3387/tcp # Back Room Net -backroomnet 3387/udp # Back Room Net -cbserver 3388/tcp # CB Server -cbserver 3388/udp # CB Server -ms-wbt-server 3389/tcp # MS WBT Server -ms-wbt-server 3389/udp # MS WBT Server -dsc 3390/tcp # Distributed Service Coordinator -dsc 3390/udp # Distributed Service Coordinator -savant 3391/tcp # SAVANT -savant 3391/udp # SAVANT -efi-lm 3392/tcp # EFI License Management -efi-lm 3392/udp # EFI License Management -d2k-tapestry1 3393/tcp # D2K Tapestry Client to Server -d2k-tapestry1 3393/udp # D2K Tapestry Client to Server -d2k-tapestry2 3394/tcp # D2K Tapestry Server to Server -d2k-tapestry2 3394/udp # D2K Tapestry Server to Server -dyna-lm 3395/tcp # Dyna License Manager (Elam) -dyna-lm 3395/udp # Dyna License Manager (Elam) -printer_agent 3396/tcp # Printer Agent -printer_agent 3396/udp # Printer Agent -cloanto-lm 3397/tcp # Cloanto License Manager -cloanto-lm 3397/udp # Cloanto License Manager -mercantile 3398/tcp # Mercantile -mercantile 3398/udp # Mercantile -csms 3399/tcp # CSMS -csms 3399/udp # CSMS -csms2 3400/tcp # CSMS2 -csms2 3400/udp # CSMS2 -filecast 3401/tcp # filecast -filecast 3401/udp # filecast -fxaengine-net 3402/tcp # FXa Engine Network Port -fxaengine-net 3402/udp # FXa Engine Network Port -nokia-ann-ch1 3405/tcp # Nokia Announcement ch 1 -nokia-ann-ch1 3405/udp # Nokia Announcement ch 1 -nokia-ann-ch2 3406/tcp # Nokia Announcement ch 2 -nokia-ann-ch2 3406/udp # Nokia Announcement ch 2 -ldap-admin 3407/tcp # LDAP admin server port -ldap-admin 3407/udp # LDAP admin server port -BESApi 3408/tcp # BES Api Port -BESApi 3408/udp # BES Api Port -networklens 3409/tcp # NetworkLens Event Port -networklens 3409/udp # NetworkLens Event Port -networklenss 3410/tcp # NetworkLens SSL Event -networklenss 3410/udp # NetworkLens SSL Event -biolink-auth 3411/tcp # BioLink Authenteon server -biolink-auth 3411/udp # BioLink Authenteon server -xmlblaster 3412/tcp # xmlBlaster -xmlblaster 3412/udp # xmlBlaster -svnet 3413/tcp # SpecView Networking -svnet 3413/udp # SpecView Networking -wip-port 3414/tcp # BroadCloud WIP Port -wip-port 3414/udp # BroadCloud WIP Port -bcinameservice 3415/tcp # BCI Name Service -bcinameservice 3415/udp # BCI Name Service -commandport 3416/tcp # AirMobile IS Command Port -commandport 3416/udp # AirMobile IS Command Port -csvr 3417/tcp # ConServR file translation -csvr 3417/udp # ConServR file translation -rnmap 3418/tcp # Remote nmap -rnmap 3418/udp # Remote nmap -softaudit 3419/tcp # Isogon SoftAudit -softaudit 3419/udp # ISogon SoftAudit -ifcp-port 3420/tcp # iFCP User Port -ifcp-port 3420/udp # iFCP User Port -bmap 3421/tcp # Bull Apprise portmapper -bmap 3421/udp # Bull Apprise portmapper -rusb-sys-port 3422/tcp # Remote USB System Port -rusb-sys-port 3422/udp # Remote USB System Port -xtrm 3423/tcp # xTrade Reliable Messaging -xtrm 3423/udp # xTrade Reliable Messaging -xtrms 3424/tcp # xTrade over TLS/SSL -xtrms 3424/udp # xTrade over TLS/SSL -agps-port 3425/tcp # AGPS Access Port -agps-port 3425/udp # AGPS Access Port -arkivio 3426/tcp # Arkivio Storage Protocol -arkivio 3426/udp # Arkivio Storage Protocol -websphere-snmp 3427/tcp # WebSphere SNMP -websphere-snmp 3427/udp # WebSphere SNMP -twcss 3428/tcp # 2Wire CSS -twcss 3428/udp # 2Wire CSS -gcsp 3429/tcp # GCSP user port -gcsp 3429/udp # GCSP user port -ssdispatch 3430/tcp # Scott Studios Dispatch -ssdispatch 3430/udp # Scott Studios Dispatch -ndl-als 3431/tcp # Active License Server Port -ndl-als 3431/udp # Active License Server Port -osdcp 3432/tcp # Secure Device Protocol -osdcp 3432/udp # Secure Device Protocol -alta-smp 3433/tcp # Altaworks Service Management Platform -alta-smp 3433/udp # Altaworks Service Management Platform -opencm 3434/tcp # OpenCM Server -opencm 3434/udp # OpenCM Server -pacom 3435/tcp # Pacom Security User Port -pacom 3435/udp # Pacom Security User Port -gc-config 3436/tcp # GuardControl Exchange Protocol -gc-config 3436/udp # GuardControl Exchange Protocol -autocueds 3437/tcp # Autocue Directory Service -autocueds 3437/udp # Autocue Directory Service -spiral-admin 3438/tcp # Spiralcraft Admin -spiral-admin 3438/udp # Spiralcraft Admin -hri-port 3439/tcp # HRI Interface Port -hri-port 3439/udp # HRI Interface Port -ans-console 3440/tcp # Net Steward Mgmt Console -ans-console 3440/udp # Net Steward Mgmt Console -connect-client 3441/tcp # OC Connect Client -connect-client 3441/udp # OC Connect Client -connect-server 3442/tcp # OC Connect Server -connect-server 3442/udp # OC Connect Server -ov-nnm-websrv 3443/tcp # OpenView Network Node Manager WEB Server -ov-nnm-websrv 3443/udp # OpenView Network Node Manager WEB Server -denali-server 3444/tcp # Denali Server -denali-server 3444/udp # Denali Server -monp 3445/tcp # Media Object Network -monp 3445/udp # Media Object Network -3comfaxrpc 3446/tcp # 3Com FAX RPC port -3comfaxrpc 3446/udp # 3Com FAX RPC port -directnet 3447/tcp # DirectNet IM System -directnet 3447/udp # DirectNet IM System -dnc-port 3448/tcp # Discovery and Net Config -dnc-port 3448/udp # Discovery and Net Config -hotu-chat 3449/tcp # HotU Chat -hotu-chat 3449/udp # HotU Chat -castorproxy 3450/tcp # CAStorProxy -castorproxy 3450/udp # CAStorProxy -asam 3451/tcp # ASAM Services -asam 3451/udp # ASAM Services -sabp-signal 3452/tcp # SABP-Signalling Protocol -sabp-signal 3452/udp # SABP-Signalling Protocol -pscupd 3453/tcp # PSC Update Port -pscupd 3453/udp # PSC Update Port -mira 3454/tcp # Apple Remote Access Protocol -vat 3456/tcp # VAT default data -vat 3456/udp # VAT default data -vat-control 3457/tcp # VAT default control -vat-control 3457/udp # VAT default control -d3winosfi 3458/tcp # D3WinOSFI -d3winosfi 3458/udp # D3WinOSFI -integral 3459/tcp # TIP Integral -integral 3459/udp # TIP Integral -edm-manager 3460/tcp # EDM Manger -edm-manager 3460/udp # EDM Manger -edm-stager 3461/tcp # EDM Stager -edm-stager 3461/udp # EDM Stager -edm-std-notify 3462/tcp # EDM STD Notify -edm-std-notify 3462/udp # EDM STD Notify -edm-adm-notify 3463/tcp # EDM ADM Notify -edm-adm-notify 3463/udp # EDM ADM Notify -edm-mgr-sync 3464/tcp # EDM MGR Sync -edm-mgr-sync 3464/udp # EDM MGR Sync -edm-mgr-cntrl 3465/tcp # EDM MGR Cntrl -edm-mgr-cntrl 3465/udp # EDM MGR Cntrl -workflow 3466/tcp # WORKFLOW -workflow 3466/udp # WORKFLOW -rcst 3467/tcp # RCST -rcst 3467/udp # RCST -ttcmremotectrl 3468/tcp # TTCM Remote Controll -ttcmremotectrl 3468/udp # TTCM Remote Controll -pluribus 3469/tcp # Pluribus -pluribus 3469/udp # Pluribus -jt400 3470/tcp # jt400 -jt400 3470/udp # jt400 -jt400-ssl 3471/tcp # jt400-ssl -jt400-ssl 3471/udp # jt400-ssl -jaugsremotec-1 3472/tcp # JAUGS N-G Remotec 1 -jaugsremotec-1 3472/udp # JAUGS N-G Remotec 1 -jaugsremotec-2 3473/tcp # JAUGS N-G Remotec 2 -jaugsremotec-2 3473/udp # JAUGS N-G Remotec 2 -ttntspauto 3474/tcp # TSP Automation -ttntspauto 3474/udp # TSP Automation -genisar-port 3475/tcp # Genisar Comm Port -genisar-port 3475/udp # Genisar Comm Port -nppmp 3476/tcp # NVIDIA Mgmt Protocol -nppmp 3476/udp # NVIDIA Mgmt Protocol -ecomm 3477/tcp # eComm link port -ecomm 3477/udp # eComm link port -stun 3478/tcp turn # Session Traversal Utilities for NAT (STUN) port, TURN over TCP -stun 3478/udp turn # Session Traversal Utilities for NAT (STUN) port, TURN over UDP -twrpc 3479/tcp # 2Wire RPC -twrpc 3479/udp # 2Wire RPC -plethora 3480/tcp # Secure Virtual Workspace -plethora 3480/udp # Secure Virtual Workspace -cleanerliverc 3481/tcp # CleanerLive remote ctrl -cleanerliverc 3481/udp # CleanerLive remote ctrl -vulture 3482/tcp # Vulture Monitoring System -vulture 3482/udp # Vulture Monitoring System -slim-devices 3483/tcp # Slim Devices Protocol -slim-devices 3483/udp # Slim Devices Protocol -gbs-stp 3484/tcp # GBS SnapTalk Protocol -gbs-stp 3484/udp # GBS SnapTalk Protocol -celatalk 3485/tcp # CelaTalk -celatalk 3485/udp # CelaTalk -ifsf-hb-port 3486/tcp # IFSF Heartbeat Port -ifsf-hb-port 3486/udp # IFSF Heartbeat Port -ltctcp 3487/tcp # LISA TCP Transfer Channel -ltcudp 3487/udp # LISA UDP Transfer Channel -fs-rh-srv 3488/tcp # FS Remote Host Server -fs-rh-srv 3488/udp # FS Remote Host Server -dtp-dia 3489/tcp # DTP/DIA -dtp-dia 3489/udp # DTP/DIA -colubris 3490/tcp # Colubris Management Port -colubris 3490/udp # Colubris Management Port -swr-port 3491/tcp # SWR Port -swr-port 3491/udp # SWR Port -tvdumtray-port 3492/tcp # TVDUM Tray Port -tvdumtray-port 3492/udp # TVDUM Tray Port -nut 3493/tcp # Network UPS Tools -nut 3493/udp # Network UPS Tools -ibm3494 3494/tcp # IBM 3494 -ibm3494 3494/udp # IBM 3494 -seclayer-tcp 3495/tcp # securitylayer over tcp -seclayer-tcp 3495/udp # securitylayer over tcp -seclayer-tls 3496/tcp # securitylayer over tls -seclayer-tls 3496/udp # securitylayer over tls -ipether232port 3497/tcp # ipEther232Port -ipether232port 3497/udp # ipEther232Port -dashpas-port 3498/tcp # DASHPAS user port -dashpas-port 3498/udp # DASHPAS user port -sccip-media 3499/tcp # SccIP Media -sccip-media 3499/udp # SccIP Media -rtmp-port 3500/tcp # RTMP Port -rtmp-port 3500/udp # RTMP Port -isoft-p2p 3501/tcp # iSoft-P2P -isoft-p2p 3501/udp # iSoft-P2P -avinstalldisc 3502/tcp # Avocent Install Discovery -avinstalldisc 3502/udp # Avocent Install Discovery -lsp-ping 3503/tcp # MPLS LSP-echo Port -lsp-ping 3503/udp # MPLS LSP-echo Port -ironstorm 3504/tcp # IronStorm game server -ironstorm 3504/udp # IronStorm game server -ccmcomm 3505/tcp # CCM communications port -ccmcomm 3505/udp # CCM communications port -apc-3506 3506/tcp # APC 3506 -apc-3506 3506/udp # APC 3506 -nesh-broker 3507/tcp # Nesh Broker Port -nesh-broker 3507/udp # Nesh Broker Port -interactionweb 3508/tcp # Interaction Web -interactionweb 3508/udp # Interaction Web -vt-ssl 3509/tcp # Virtual Token SSL Port -vt-ssl 3509/udp # Virtual Token SSL Port -xss-port 3510/tcp # XSS Port -xss-port 3510/udp # XSS Port -webmail-2 3511/tcp # WebMail/2 -webmail-2 3511/udp # WebMail/2 -aztec 3512/tcp # Aztec Distribution Port -aztec 3512/udp # Aztec Distribution Port -arcpd 3513/tcp # Adaptec Remote Protocol -arcpd 3513/udp # Adaptec Remote Protocol -must-p2p 3514/tcp # MUST Peer to Peer -must-p2p 3514/udp # MUST Peer to Peer -must-backplane 3515/tcp # MUST Backplane -must-backplane 3515/udp # MUST Backplane -smartcard-port 3516/tcp # Smartcard Port -smartcard-port 3516/udp # Smartcard Port -802-11-iapp 3517/tcp # IEEE 802.11 WLANs WG IAPP -802-11-iapp 3517/udp # IEEE 802.11 WLANs WG IAPP -artifact-msg 3518/tcp # Artifact Message Server -artifact-msg 3518/udp # Artifact Message Server -nvmsgd 3519/tcp # Netvion Messenger Port -galileo 3519/udp # Netvion Galileo Port -galileolog 3520/tcp # Netvion Galileo Log Port -galileolog 3520/udp # Netvion Galileo Log Port -mc3ss 3521/tcp # Telequip Labs MC3SS -mc3ss 3521/udp # Telequip Labs MC3SS -nssocketport 3522/tcp # DO over NSSocketPort -nssocketport 3522/udp # DO over NSSocketPort -odeumservlink 3523/tcp # Odeum Serverlink -odeumservlink 3523/udp # Odeum Serverlink -ecmport 3524/tcp # ECM Server port -ecmport 3524/udp # ECM Server port -eisport 3525/tcp # EIS Server port -eisport 3525/udp # EIS Server port -starquiz-port 3526/tcp # starQuiz Port -starquiz-port 3526/udp # starQuiz Port -beserver-msg-q 3527/tcp # VERITAS Backup Exec Server -beserver-msg-q 3527/udp # VERITAS Backup Exec Server -jboss-iiop 3528/tcp # JBoss IIOP -jboss-iiop 3528/udp # JBoss IIOP -jboss-iiop-ssl 3529/tcp # JBoss IIOP/SSL -jboss-iiop-ssl 3529/udp # JBoss IIOP/SSL -gf 3530/tcp # Grid Friendly -gf 3530/udp # Grid Friendly -joltid 3531/tcp # Joltid -joltid 3531/udp # Joltid -raven-rmp 3532/tcp # Raven Remote Management Control -raven-rmp 3532/udp # Raven Remote Management Control -raven-rdp 3533/tcp # Raven Remote Management Data -raven-rdp 3533/udp # Raven Remote Management Data -urld-port 3534/tcp # URL Daemon Port -urld-port 3534/udp # URL Daemon Port -ms-la 3535/tcp # MS-LA -ms-la 3535/udp # MS-LA -snac 3536/tcp # SNAC -snac 3536/udp # SNAC -ni-visa-remote 3537/tcp # Remote NI-VISA port -ni-visa-remote 3537/udp # Remote NI-VISA port -ibm-diradm 3538/tcp # IBM Directory Server -ibm-diradm 3538/udp # IBM Directory Server -ibm-diradm-ssl 3539/tcp # IBM Directory Server SSL -ibm-diradm-ssl 3539/udp # IBM Directory Server SSL -pnrp-port 3540/tcp # PNRP User Port -pnrp-port 3540/udp # PNRP User Port -voispeed-port 3541/tcp # VoiSpeed Port -voispeed-port 3541/udp # VoiSpeed Port -hacl-monitor 3542/tcp # HA cluster monitor -hacl-monitor 3542/udp # HA cluster monitor -qftest-lookup 3543/tcp # qftest Lookup Port -qftest-lookup 3543/udp # qftest Lookup Port -teredo 3544/tcp # Teredo Port -teredo 3544/udp # Teredo Port -camac 3545/tcp # CAMAC equipment -camac 3545/udp # CAMAC equipment -symantec-sim 3547/tcp # Symantec SIM -symantec-sim 3547/udp # Symantec SIM -interworld 3548/tcp # Interworld -interworld 3548/udp # Interworld -tellumat-nms 3549/tcp # Tellumat MDR NMS -tellumat-nms 3549/udp # Tellumat MDR NMS -ssmpp 3550/tcp # Secure SMPP -ssmpp 3550/udp # Secure SMPP -apcupsd 3551/tcp # Apcupsd Information Port -apcupsd 3551/udp # Apcupsd Information Port -taserver 3552/tcp # TeamAgenda Server Port -taserver 3552/udp # TeamAgenda Server Port -rbr-discovery 3553/tcp # Red Box Recorder ADP -rbr-discovery 3553/udp # Red Box Recorder ADP -questnotify 3554/tcp # Quest Notification Server -questnotify 3554/udp # Quest Notification Server -razor 3555/tcp # Vipul's Razor -razor 3555/udp # Vipul's Razor -sky-transport 3556/tcp # Sky Transport Protocol -sky-transport 3556/udp # Sky Transport Protocol -personalos-001 3557/tcp # PersonalOS Comm Port -personalos-001 3557/udp # PersonalOS Comm Port -mcp-port 3558/tcp # MCP user port -mcp-port 3558/udp # MCP user port -cctv-port 3559/tcp # CCTV control port -cctv-port 3559/udp # CCTV control port -iniserve-port 3560/tcp # INIServe port -iniserve-port 3560/udp # INIServe port -bmc-onekey 3561/tcp # BMC-OneKey -bmc-onekey 3561/udp # BMC-OneKey -sdbproxy 3562/tcp # SDBProxy -sdbproxy 3562/udp # SDBProxy -watcomdebug 3563/tcp # Watcom Debug -watcomdebug 3563/udp # Watcom Debug -esimport 3564/tcp # Electromed SIM port -esimport 3564/udp # Electromed SIM port -m2pa 3565/tcp # M2PA -m2pa 3565/sctp # M2PA -quest-launcher 3566/tcp # Quest Agent Manager -quest-launcher 3566/udp # Quest Agent Manager -oap 3567/tcp # Object Access Protocol -oap 3567/udp # Object Access Protocol -oap-s 3568/tcp # Object Access Protocol over SSL -oap-s 3568/udp # Object Access Protocol over SSL -mbg-ctrl 3569/tcp # Meinberg Control Service -mbg-ctrl 3569/udp # Meinberg Control Service -mccwebsvr-port 3570/tcp # MCC Web Server Port -mccwebsvr-port 3570/udp # MCC Web Server Port -megardsvr-port 3571/tcp # MegaRAID Server Port -megardsvr-port 3571/udp # MegaRAID Server Port -megaregsvrport 3572/tcp # Registration Server Port -megaregsvrport 3572/udp # Registration Server Port -tag-ups-1 3573/tcp # Advantage Group UPS Suite -tag-ups-1 3573/udp # Advantage Group UPS Suite -dmaf-server 3574/tcp # DMAF Server -dmaf-caster 3574/udp # DMAF Caster -ccm-port 3575/tcp # Coalsere CCM Port -ccm-port 3575/udp # Coalsere CCM Port -cmc-port 3576/tcp # Coalsere CMC Port -cmc-port 3576/udp # Coalsere CMC Port -config-port 3577/tcp # Configuration Port -config-port 3577/udp # Configuration Port -data-port 3578/tcp # Data Port -data-port 3578/udp # Data Port -ttat3lb 3579/tcp # Tarantella Load Balancing -ttat3lb 3579/udp # Tarantella Load Balancing -nati-svrloc 3580/tcp # NATI-ServiceLocator -nati-svrloc 3580/udp # NATI-ServiceLocator -kfxaclicensing 3581/tcp # Ascent Capture Licensing -kfxaclicensing 3581/udp # Ascent Capture Licensing -press 3582/tcp # PEG PRESS Server -press 3582/udp # PEG PRESS Server -canex-watch 3583/tcp # CANEX Watch System -canex-watch 3583/udp # CANEX Watch System -u-dbap 3584/tcp # U-DBase Access Protocol -u-dbap 3584/udp # U-DBase Access Protocol -emprise-lls 3585/tcp # Emprise License Server -emprise-lls 3585/udp # Emprise License Server -emprise-lsc 3586/tcp # License Server Console -emprise-lsc 3586/udp # License Server Console -p2pgroup 3587/tcp # Peer to Peer Grouping -p2pgroup 3587/udp # Peer to Peer Grouping -sentinel 3588/tcp # Sentinel Server -sentinel 3588/udp # Sentinel Server -isomair 3589/tcp # isomair -isomair 3589/udp # isomair -wv-csp-sms 3590/tcp # WV CSP SMS Binding -wv-csp-sms 3590/udp # WV CSP SMS Binding -gtrack-server 3591/tcp # LOCANIS G-TRACK Server -gtrack-server 3591/udp # LOCANIS G-TRACK Server -gtrack-ne 3592/tcp # LOCANIS G-TRACK NE Port -gtrack-ne 3592/udp # LOCANIS G-TRACK NE Port -bpmd 3593/tcp # BP Model Debugger -bpmd 3593/udp # BP Model Debugger -mediaspace 3594/tcp # MediaSpace -mediaspace 3594/udp # MediaSpace -shareapp 3595/tcp # ShareApp -shareapp 3595/udp # ShareApp -iw-mmogame 3596/tcp # Illusion Wireless MMOG -iw-mmogame 3596/udp # Illusion Wireless MMOG -a14 3597/tcp # A14 (AN-to-SC/MM) -a14 3597/udp # A14 (AN-to-SC/MM) -a15 3598/tcp # A15 (AN-to-AN) -a15 3598/udp # A15 (AN-to-AN) -quasar-server 3599/tcp # Quasar Accounting Server -quasar-server 3599/udp # Quasar Accounting Server -trap-daemon 3600/tcp # text relay-answer -trap-daemon 3600/udp # text relay-answer -visinet-gui 3601/tcp # Visinet Gui -visinet-gui 3601/udp # Visinet Gui -infiniswitchcl 3602/tcp # InfiniSwitch Mgr Client -infiniswitchcl 3602/udp # InfiniSwitch Mgr Client -int-rcv-cntrl 3603/tcp # Integrated Rcvr Control -int-rcv-cntrl 3603/udp # Integrated Rcvr Control -bmc-jmx-port 3604/tcp # BMC JMX Port -bmc-jmx-port 3604/udp # BMC JMX Port -comcam-io 3605/tcp # ComCam IO Port -comcam-io 3605/udp # ComCam IO Port -splitlock 3606/tcp # Splitlock Server -splitlock 3606/udp # Splitlock Server -precise-i3 3607/tcp # Precise I3 -precise-i3 3607/udp # Precise I3 -trendchip-dcp 3608/tcp # Trendchip control protocol -trendchip-dcp 3608/udp # Trendchip control protocol -cpdi-pidas-cm 3609/tcp # CPDI PIDAS Connection Mon -cpdi-pidas-cm 3609/udp # CPDI PIDAS Connection Mon -echonet 3610/tcp # ECHONET -echonet 3610/udp # ECHONET -six-degrees 3611/tcp # Six Degrees Port -six-degrees 3611/udp # Six Degrees Port -hp-dataprotect 3612/tcp # HP Data Protector -hp-dataprotect 3612/udp # HP Data Protector -alaris-disc 3613/tcp # Alaris Device Discovery -alaris-disc 3613/udp # Alaris Device Discovery -sigma-port 3614/tcp # Invensys Sigma Port -sigma-port 3614/udp # Invensys Sigma Port -start-network 3615/tcp # Start Messaging Network -start-network 3615/udp # Start Messaging Network -cd3o-protocol 3616/tcp # cd3o Control Protocol -cd3o-protocol 3616/udp # cd3o Control Protocol -sharp-server 3617/tcp # ATI SHARP Logic Engine -sharp-server 3617/udp # ATI SHARP Logic Engine -aairnet-1 3618/tcp # AAIR-Network 1 -aairnet-1 3618/udp # AAIR-Network 1 -aairnet-2 3619/tcp # AAIR-Network 2 -aairnet-2 3619/udp # AAIR-Network 2 -ep-pcp 3620/tcp # EPSON Projector Control Port -ep-pcp 3620/udp # EPSON Projector Control Port -ep-nsp 3621/tcp # EPSON Network Screen Port -ep-nsp 3621/udp # EPSON Network Screen Port -ff-lr-port 3622/tcp # FF LAN Redundancy Port -ff-lr-port 3622/udp # FF LAN Redundancy Port -haipe-discover 3623/tcp # HAIPIS Dynamic Discovery -haipe-discover 3623/udp # HAIPIS Dynamic Discovery -dist-upgrade 3624/tcp # Distributed Upgrade Port -dist-upgrade 3624/udp # Distributed Upgrade Port -volley 3625/tcp # Volley -volley 3625/udp # Volley -bvcdaemon-port 3626/tcp # bvControl Daemon -bvcdaemon-port 3626/udp # bvControl Daemon -jamserverport 3627/tcp # Jam Server Port -jamserverport 3627/udp # Jam Server Port -ept-machine 3628/tcp # EPT Machine Interface -ept-machine 3628/udp # EPT Machine Interface -escvpnet 3629/tcp # ESC/VP.net -escvpnet 3629/udp # ESC/VP.net -cs-remote-db 3630/tcp # C&S Remote Database Port -cs-remote-db 3630/udp # C&S Remote Database Port -cs-services 3631/tcp # C&S Web Services Port -cs-services 3631/udp # C&S Web Services Port -distcc 3632/udp # distributed compiler -wacp 3633/tcp # Wyrnix AIS port -wacp 3633/udp # Wyrnix AIS port -hlibmgr 3634/tcp # hNTSP Library Manager -hlibmgr 3634/udp # hNTSP Library Manager -sdo 3635/tcp # Simple Distributed Objects -sdo 3635/udp # Simple Distributed Objects -servistaitsm 3636/tcp # SerVistaITSM -servistaitsm 3636/udp # SerVistaITSM -scservp 3637/tcp # Customer Service Port -scservp 3637/udp # Customer Service Port -ehp-backup 3638/tcp # EHP Backup Protocol -ehp-backup 3638/udp # EHP Backup Protocol -xap-ha 3639/tcp # Extensible Automation -xap-ha 3639/udp # Extensible Automation -netplay-port1 3640/tcp # Netplay Port 1 -netplay-port1 3640/udp # Netplay Port 1 -netplay-port2 3641/tcp # Netplay Port 2 -netplay-port2 3641/udp # Netplay Port 2 -juxml-port 3642/tcp # Juxml Replication port -juxml-port 3642/udp # Juxml Replication port -audiojuggler 3643/tcp # AudioJuggler -audiojuggler 3643/udp # AudioJuggler -ssowatch 3644/tcp # ssowatch -ssowatch 3644/udp # ssowatch -cyc 3645/tcp # Cyc -cyc 3645/udp # Cyc -xss-srv-port 3646/tcp # XSS Server Port -xss-srv-port 3646/udp # XSS Server Port -splitlock-gw 3647/tcp # Splitlock Gateway -splitlock-gw 3647/udp # Splitlock Gateway -fjcp 3648/tcp # Fujitsu Cooperation Port -fjcp 3648/udp # Fujitsu Cooperation Port -nmmp 3649/tcp # Nishioka Miyuki Msg Protocol -nmmp 3649/udp # Nishioka Miyuki Msg Protocol -prismiq-plugin 3650/tcp # PRISMIQ VOD plug-in -prismiq-plugin 3650/udp # PRISMIQ VOD plug-in -xrpc-registry 3651/tcp # XRPC Registry -xrpc-registry 3651/udp # XRPC Registry -vxcrnbuport 3652/tcp # VxCR NBU Default Port -vxcrnbuport 3652/udp # VxCR NBU Default Port -tsp 3653/tcp # Tunnel Setup Protocol -tsp 3653/udp # Tunnel Setup Protocol -vaprtm 3654/tcp # VAP RealTime Messenger -vaprtm 3654/udp # VAP RealTime Messenger -abatemgr 3655/tcp # ActiveBatch Exec Agent -abatemgr 3655/udp # ActiveBatch Exec Agent -abatjss 3656/tcp # ActiveBatch Job Scheduler -abatjss 3656/udp # ActiveBatch Job Scheduler -immedianet-bcn 3657/tcp # ImmediaNet Beacon -immedianet-bcn 3657/udp # ImmediaNet Beacon -ps-ams 3658/tcp # PlayStation AMS (Secure) -ps-ams 3658/udp # PlayStation AMS (Secure) -apple-sasl 3659/tcp # Apple SASL -apple-sasl 3659/udp # Apple SASL -can-nds-ssl 3660/tcp # IBM Tivoli Directory Service using SSL -can-nds-ssl 3660/udp # IBM Tivoli Directory Service using SSL -can-ferret-ssl 3661/tcp # IBM Tivoli Directory Service using SSL -can-ferret-ssl 3661/udp # IBM Tivoli Directory Service using SSL -pserver 3662/tcp # pserver -pserver 3662/udp # pserver -dtp 3663/tcp # DIRECWAY Tunnel Protocol -dtp 3663/udp # DIRECWAY Tunnel Protocol -ups-engine 3664/tcp # UPS Engine Port -ups-engine 3664/udp # UPS Engine Port -ent-engine 3665/tcp # Enterprise Engine Port -ent-engine 3665/udp # Enterprise Engine Port -eserver-pap 3666/tcp # IBM eServer PAP -eserver-pap 3666/udp # IBM EServer PAP -infoexch 3667/tcp # IBM Information Exchange -infoexch 3667/udp # IBM Information Exchange -dell-rm-port 3668/tcp # Dell Remote Management -dell-rm-port 3668/udp # Dell Remote Management -casanswmgmt 3669/tcp # CA SAN Switch Management -casanswmgmt 3669/udp # CA SAN Switch Management -smile 3670/tcp # SMILE TCP/UDP Interface -smile 3670/udp # SMILE TCP/UDP Interface -efcp 3671/tcp # e Field Control (EIBnet) -efcp 3671/udp # e Field Control (EIBnet) -lispworks-orb 3672/tcp # LispWorks ORB -lispworks-orb 3672/udp # LispWorks ORB -mediavault-gui 3673/tcp # Openview Media Vault GUI -mediavault-gui 3673/udp # Openview Media Vault GUI -wininstall-ipc 3674/tcp # WinINSTALL IPC Port -wininstall-ipc 3674/udp # WinINSTALL IPC Port -calltrax 3675/tcp # CallTrax Data Port -calltrax 3675/udp # CallTrax Data Port -va-pacbase 3676/tcp # VisualAge Pacbase server -va-pacbase 3676/udp # VisualAge Pacbase server -roverlog 3677/tcp # RoverLog IPC -roverlog 3677/udp # RoverLog IPC -ipr-dglt 3678/tcp # DataGuardianLT -ipr-dglt 3678/udp # DataGuardianLT -newton-dock 3679/tcp # Newton Dock -newton-dock 3679/udp # Newton Dock -npds-tracker 3680/tcp # NPDS Tracker -npds-tracker 3680/udp # NPDS Tracker -bts-x73 3681/tcp # BTS X73 Port -bts-x73 3681/udp # BTS X73 Port -cas-mapi 3682/tcp # EMC SmartPackets-MAPI -cas-mapi 3682/udp # EMC SmartPackets-MAPI -bmc-ea 3683/tcp # BMC EDV/EA -bmc-ea 3683/udp # BMC EDV/EA -faxstfx-port 3684/tcp # FAXstfX -faxstfx-port 3684/udp # FAXstfX -dsx-agent 3685/tcp # DS Expert Agent -dsx-agent 3685/udp # DS Expert Agent -tnmpv2 3686/tcp # Trivial Network Management -tnmpv2 3686/udp # Trivial Network Management -simple-push 3687/tcp # simple-push -simple-push 3687/udp # simple-push -simple-push-s 3688/tcp # simple-push Secure -simple-push-s 3688/udp # simple-push Secure -daap 3689/tcp # Digital Audio Access Protocol -daap 3689/udp # Digital Audio Access Protocol -magaya-network 3691/tcp # Magaya Network Port -magaya-network 3691/udp # Magaya Network Port -intelsync 3692/tcp # Brimstone IntelSync -intelsync 3692/udp # Brimstone IntelSync -bmc-data-coll 3695/tcp # BMC Data Collection -bmc-data-coll 3695/udp # BMC Data Collection -telnetcpcd 3696/tcp # Telnet Com Port Control -telnetcpcd 3696/udp # Telnet Com Port Control -nw-license 3697/tcp # NavisWorks License System -nw-license 3697/udp # NavisWorks Licnese System -sagectlpanel 3698/tcp # SAGECTLPANEL -sagectlpanel 3698/udp # SAGECTLPANEL -kpn-icw 3699/tcp # Internet Call Waiting -kpn-icw 3699/udp # Internet Call Waiting -lrs-paging 3700/tcp # LRS NetPage -lrs-paging 3700/udp # LRS NetPage -netcelera 3701/tcp # NetCelera -netcelera 3701/udp # NetCelera -ws-discovery 3702/tcp # Web Service Discovery -ws-discovery 3702/udp # Web Service Discovery -adobeserver-3 3703/tcp # Adobe Server 3 -adobeserver-3 3703/udp # Adobe Server 3 -adobeserver-4 3704/tcp # Adobe Server 4 -adobeserver-4 3704/udp # Adobe Server 4 -adobeserver-5 3705/tcp # Adobe Server 5 -adobeserver-5 3705/udp # Adobe Server 5 -rt-event 3706/tcp # Real-Time Event Port -rt-event 3706/udp # Real-Time Event Port -rt-event-s 3707/tcp # Real-Time Event Secure Port -rt-event-s 3707/udp # Real-Time Event Secure Port -sun-as-iiops 3708/tcp # Sun App Svr - Naming -sun-as-iiops 3708/udp # Sun App Svr - Naming -ca-idms 3709/tcp # CA-IDMS Server -ca-idms 3709/udp # CA-IDMS Server -portgate-auth 3710/tcp # PortGate Authentication -portgate-auth 3710/udp # PortGate Authentication -edb-server2 3711/tcp # EBD Server 2 -edb-server2 3711/udp # EBD Server 2 -sentinel-ent 3712/tcp # Sentinel Enterprise -sentinel-ent 3712/udp # Sentinel Enterprise -tftps 3713/tcp # TFTP over TLS -tftps 3713/udp # TFTP over TLS -delos-dms 3714/tcp # DELOS Direct Messaging -delos-dms 3714/udp # DELOS Direct Messaging -anoto-rendezv 3715/tcp # Anoto Rendezvous Port -anoto-rendezv 3715/udp # Anoto Rendezvous Port -wv-csp-sms-cir 3716/tcp # WV CSP SMS CIR Channel -wv-csp-sms-cir 3716/udp # WV CSP SMS CIR Channel -wv-csp-udp-cir 3717/tcp # WV CSP UDP/IP CIR Channel -wv-csp-udp-cir 3717/udp # WV CSP UDP/IP CIR Channel -opus-services 3718/tcp # OPUS Server Port -opus-services 3718/udp # OPUS Server Port -itelserverport 3719/tcp # iTel Server Port -itelserverport 3719/udp # iTel Server Port -ufastro-instr 3720/tcp # UF Astro. Instr. Services -ufastro-instr 3720/udp # UF Astro. Instr. Services -xsync 3721/tcp # Xsync -xsync 3721/udp # Xsync -xserveraid 3722/tcp # Xserve RAID -xserveraid 3722/udp # Xserve RAID -sychrond 3723/tcp # Sychron Service Daemon -sychrond 3723/udp # Sychron Service Daemon -blizwow 3724/tcp # World of Warcraft -blizwow 3724/udp # World of Warcraft -na-er-tip 3725/tcp # Netia NA-ER Port -na-er-tip 3725/udp # Netia NA-ER Port -array-manager 3726/tcp # Xyratex Array Manager -array-manager 3726/udp # Xyartex Array Manager -e-mdu 3727/tcp # Ericsson Mobile Data Unit -e-mdu 3727/udp # Ericsson Mobile Data Unit -e-woa 3728/tcp # Ericsson Web on Air -e-woa 3728/udp # Ericsson Web on Air -fksp-audit 3729/tcp # Fireking Audit Port -fksp-audit 3729/udp # Fireking Audit Port -client-ctrl 3730/tcp # Client Control -client-ctrl 3730/udp # Client Control -smap 3731/tcp # Service Manager -smap 3731/udp # Service Manager -m-wnn 3732/tcp # Mobile Wnn -m-wnn 3732/udp # Mobile Wnn -multip-msg 3733/tcp # Multipuesto Msg Port -multip-msg 3733/udp # Multipuesto Msg Port -synel-data 3734/tcp # Synel Data Collection Port -synel-data 3734/udp # Synel Data Collection Port -pwdis 3735/tcp # Password Distribution -pwdis 3735/udp # Password Distribution -rs-rmi 3736/tcp # RealSpace RMI -rs-rmi 3736/udp # RealSpace RMI -xpanel 3737/tcp # Xpanel Daemon -versatalk 3738/tcp # versaTalk Server Port -versatalk 3738/udp # versaTalk Server Port -launchbird-lm 3739/tcp # Launchbird LicenseManager -launchbird-lm 3739/udp # Launchbird LicenseManager -heartbeat 3740/tcp # Heartbeat Protocol -heartbeat 3740/udp # Heartbeat Protocol -wysdma 3741/tcp # WysDM Agent -wysdma 3741/udp # WysDM Agent -cst-port 3742/tcp # CST - Configuration & Service Tracker -cst-port 3742/udp # CST - Configuration & Service Tracker -ipcs-command 3743/tcp # IP Control Systems Ltd. -ipcs-command 3743/udp # IP Control Systems Ltd. -sasg 3744/tcp # SASG -sasg 3744/udp # SASG -gw-call-port 3745/tcp # GWRTC Call Port -gw-call-port 3745/udp # GWRTC Call Port -linktest 3746/tcp # LXPRO.COM LinkTest -linktest 3746/udp # LXPRO.COM LinkTest -linktest-s 3747/tcp # LXPRO.COM LinkTest SSL -linktest-s 3747/udp # LXPRO.COM LinkTest SSL -webdata 3748/tcp # webData -webdata 3748/udp # webData -cimtrak 3749/tcp # CimTrak -cimtrak 3749/udp # CimTrak -cbos-ip-port 3750/tcp # CBOS/IP ncapsalation port -cbos-ip-port 3750/udp # CBOS/IP ncapsalatoin port -gprs-cube 3751/tcp # CommLinx GPRS Cube -gprs-cube 3751/udp # CommLinx GPRS Cube -vipremoteagent 3752/tcp # Vigil-IP RemoteAgent -vipremoteagent 3752/udp # Vigil-IP RemoteAgent -nattyserver 3753/tcp # NattyServer Port -nattyserver 3753/udp # NattyServer Port -timestenbroker 3754/tcp # TimesTen Broker Port -timestenbroker 3754/udp # TimesTen Broker Port -sas-remote-hlp 3755/tcp # SAS Remote Help Server -sas-remote-hlp 3755/udp # SAS Remote Help Server -canon-capt 3756/tcp # Canon CAPT Port -canon-capt 3756/udp # Canon CAPT Port -grf-port 3757/tcp # GRF Server Port -grf-port 3757/udp # GRF Server Port -apw-registry 3758/tcp # apw RMI registry -apw-registry 3758/udp # apw RMI registry -exapt-lmgr 3759/tcp # Exapt License Manager -exapt-lmgr 3759/udp # Exapt License Manager -adtempusclient 3760/tcp # adTempus Client -adtempusclient 3760/udp # adTEmpus Client -gsakmp 3761/tcp # gsakmp port -gsakmp 3761/udp # gsakmp port -gbs-smp 3762/tcp # GBS SnapMail Protocol -gbs-smp 3762/udp # GBS SnapMail Protocol -xo-wave 3763/tcp # XO Wave Control Port -xo-wave 3763/udp # XO Wave Control Port -mni-prot-rout 3764/tcp # MNI Protected Routing -mni-prot-rout 3764/udp # MNI Protected Routing -rtraceroute 3765/tcp # Remote Traceroute -rtraceroute 3765/udp # Remote Traceroute -listmgr-port 3767/tcp # ListMGR Port -listmgr-port 3767/udp # ListMGR Port -rblcheckd 3768/tcp # rblcheckd server daemon -rblcheckd 3768/udp # rblcheckd server daemon -haipe-otnk 3769/tcp # HAIPE Network Keying -haipe-otnk 3769/udp # HAIPE Network Keying -cindycollab 3770/tcp # Cinderella Collaboration -cindycollab 3770/udp # Cinderella Collaboration -paging-port 3771/tcp # RTP Paging Port -paging-port 3771/udp # RTP Paging Port -ctp 3772/tcp # Chantry Tunnel Protocol -ctp 3772/udp # Chantry Tunnel Protocol -ctdhercules 3773/tcp # ctdhercules -ctdhercules 3773/udp # ctdhercules -zicom 3774/tcp # ZICOM -zicom 3774/udp # ZICOM -ispmmgr 3775/tcp # ISPM Manager Port -ispmmgr 3775/udp # ISPM Manager Port -dvcprov-port 3776/tcp # Device Provisioning Port -dvcprov-port 3776/udp # Device Provisioning Port -jibe-eb 3777/tcp # Jibe EdgeBurst -jibe-eb 3777/udp # Jibe EdgeBurst -c-h-it-port 3778/tcp # Cutler-Hammer IT Port -c-h-it-port 3778/udp # Cutler-Hammer IT Port -cognima 3779/tcp # Cognima Replication -cognima 3779/udp # Cognima Replication -nnp 3780/tcp # Nuzzler Network Protocol -nnp 3780/udp # Nuzzler Network Protocol -abcvoice-port 3781/tcp # ABCvoice server port -abcvoice-port 3781/udp # ABCvoice server port -iso-tp0s 3782/tcp # Secure ISO TP0 port -iso-tp0s 3782/udp # Secure ISO TP0 port -bim-pem 3783/tcp # Impact Mgr./PEM Gateway -bim-pem 3783/udp # Impact Mgr./PEM Gateway -bfd-control 3784/tcp # BFD Control Protocol -bfd-control 3784/udp # BFD Control Protocol -bfd-echo 3785/tcp # BFD Echo Protocol -bfd-echo 3785/udp # BFD Echo Protocol -upstriggervsw 3786/tcp # VSW Upstrigger port -upstriggervsw 3786/udp # VSW Upstrigger port -fintrx 3787/tcp # Fintrx -fintrx 3787/udp # Fintrx -isrp-port 3788/tcp # SPACEWAY Routing port -isrp-port 3788/udp # SPACEWAY Routing port -remotedeploy 3789/tcp # RemoteDeploy Administration Port -remotedeploy 3789/udp # RemoteDeploy Administration Port -quickbooksrds 3790/tcp # QuickBooks RDS -quickbooksrds 3790/udp # QuickBooks RDS -tvnetworkvideo 3791/tcp # TV NetworkVideo Data port -tvnetworkvideo 3791/udp # TV NetworkVideo Data port -sitewatch 3792/tcp # e-Watch Corporation SiteWatch -sitewatch 3792/udp # e-Watch Corporation SiteWatch -dcsoftware 3793/tcp # DataCore Software -dcsoftware 3793/udp # DataCore Software -jaus 3794/tcp # JAUS Robots -jaus 3794/udp # JAUS Robots -myblast 3795/tcp # myBLAST Mekentosj port -myblast 3795/udp # myBLAST Mekentosj port -spw-dialer 3796/tcp # Spaceway Dialer -spw-dialer 3796/udp # Spaceway Dialer -idps 3797/tcp # idps -idps 3797/udp # idps -minilock 3798/tcp # Minilock -minilock 3798/udp # Minilock -radius-dynauth 3799/tcp # RADIUS Dynamic Authorization -radius-dynauth 3799/udp # RADIUS Dynamic Authorization -pwgpsi 3800/tcp # Print Services Interface -pwgpsi 3800/udp # Print Services Interface -ibm-mgr 3801/tcp # ibm manager service -ibm-mgr 3801/udp # ibm manager service -vhd 3802/tcp # VHD -vhd 3802/udp # VHD -soniqsync 3803/tcp # SoniqSync -soniqsync 3803/udp # SoniqSync -iqnet-port 3804/tcp # Harman IQNet Port -iqnet-port 3804/udp # Harman IQNet Port -tcpdataserver 3805/tcp # ThorGuard Server Port -tcpdataserver 3805/udp # ThorGuard Server Port -wsmlb 3806/tcp # Remote System Manager -wsmlb 3806/udp # Remote System Manager -spugna 3807/tcp # SpuGNA Communication Port -spugna 3807/udp # SpuGNA Communication Port -sun-as-iiops-ca 3808/tcp # Sun App Svr-IIOPClntAuth -sun-as-iiops-ca 3808/udp # Sun App Svr-IIOPClntAuth -apocd 3809/tcp # Java Desktop System Configuration Agent -apocd 3809/udp # Java Desktop System Configuration Agent -wlanauth 3810/tcp # WLAN AS server -wlanauth 3810/udp # WLAN AS server -amp 3811/tcp # AMP -amp 3811/udp # AMP -neto-wol-server 3812/tcp # netO WOL Server -neto-wol-server 3812/udp # netO WOL Server -rap-ip 3813/tcp # Rhapsody Interface Protocol -rap-ip 3813/udp # Rhapsody Interface Protocol -neto-dcs 3814/tcp # netO DCS -neto-dcs 3814/udp # netO DCS -lansurveyorxml 3815/tcp # LANsurveyor XML -lansurveyorxml 3815/udp # LANsurveyor XML -sunlps-http 3816/tcp # Sun Local Patch Server -sunlps-http 3816/udp # Sun Local Patch Server -tapeware 3817/tcp # Yosemite Tech Tapeware -tapeware 3817/udp # Yosemite Tech Tapeware -crinis-hb 3818/tcp # Crinis Heartbeat -crinis-hb 3818/udp # Crinis Heartbeat -epl-slp 3819/tcp # EPL Sequ Layer Protocol -epl-slp 3819/udp # EPL Sequ Layer Protocol -scp 3820/tcp # Siemens AuD SCP -scp 3820/udp # Siemens AuD SCP -pmcp 3821/tcp # ATSC PMCP Standard -pmcp 3821/udp # ATSC PMCP Standard -acp-discovery 3822/tcp # Compute Pool Discovery -acp-discovery 3822/udp # Compute Pool Discovery -acp-conduit 3823/tcp # Compute Pool Conduit -acp-conduit 3823/udp # Compute Pool Conduit -acp-policy 3824/tcp # Compute Pool Policy -acp-policy 3824/udp # Compute Pool Policy -ffserver 3825/tcp # Antera FlowFusion Process Simulation -ffserver 3825/udp # Antera FlowFusion Process Simulation -wormux 3826/tcp # Wormux server -wormux 3826/udp # Wormux server -netmpi 3827/tcp # Netadmin Systems MPI service -netmpi 3827/udp # Netadmin Systems MPI service -neteh 3828/tcp # Netadmin Systems Event Handler -neteh 3828/udp # Netadmin Systems Event Handler -neteh-ext 3829/tcp # Netadmin Systems Event Handler External -neteh-ext 3829/udp # Netadmin Systems Event Handler External -cernsysmgmtagt 3830/tcp # Cerner System Management Agent -cernsysmgmtagt 3830/udp # Cerner System Management Agent -dvapps 3831/tcp # Docsvault Application Service -dvapps 3831/udp # Docsvault Application Service -xxnetserver 3832/tcp # xxNETserver -xxnetserver 3832/udp # xxNETserver -aipn-auth 3833/tcp # AIPN LS Authentication -aipn-auth 3833/udp # AIPN LS Authentication -spectardata 3834/tcp # Spectar Data Stream Service -spectardata 3834/udp # Spectar Data Stream Service -spectardb 3835/tcp # Spectar Database Rights Service -spectardb 3835/udp # Spectar Database Rights Service -markem-dcp 3836/tcp # MARKEM NEXTGEN DCP -markem-dcp 3836/udp # MARKEM NEXTGEN DCP -mkm-discovery 3837/tcp # MARKEM Auto-Discovery -mkm-discovery 3837/udp # MARKEM Auto-Discovery -sos 3838/tcp # Scito Object Server -sos 3838/udp # Scito Object Server -amx-rms 3839/tcp # AMX Resource Management Suite -amx-rms 3839/udp # AMX Resource Management Suite -flirtmitmir 3840/tcp # www.FlirtMitMir.de -flirtmitmir 3840/udp # www.FlirtMitMir.de -zfirm-shiprush3 3841/tcp # Z-Firm ShipRush v3 -zfirm-shiprush3 3841/udp # Z-Firm ShipRush v3 -nhci 3842/tcp # NHCI status port -nhci 3842/udp # NHCI status port -quest-agent 3843/tcp # Quest Common Agent -quest-agent 3843/udp # Quest Common Agent -rnm 3844/tcp # RNM -rnm 3844/udp # RNM -v-one-spp 3845/tcp # V-ONE Single Port Proxy -v-one-spp 3845/udp # V-ONE Single Port Proxy -an-pcp 3846/tcp # Astare Network PCP -an-pcp 3846/udp # Astare Network PCP -msfw-control 3847/tcp # MS Firewall Control -msfw-control 3847/udp # MS Firewall Control -item 3848/tcp # IT Environmental Monitor -item 3848/udp # IT Environmental Monitor -spw-dnspreload 3849/tcp # SPACEWAY DNS Preload -spw-dnspreload 3849/udp # SPACEWAY DNS Prelaod -qtms-bootstrap 3850/tcp # QTMS Bootstrap Protocol -qtms-bootstrap 3850/udp # QTMS Bootstrap Protocol -spectraport 3851/tcp # SpectraTalk Port -spectraport 3851/udp # SpectraTalk Port -sse-app-config 3852/tcp # SSE App Configuration -sse-app-config 3852/udp # SSE App Configuration -sscan 3853/tcp # SONY scanning protocol -sscan 3853/udp # SONY scanning protocol -stryker-com 3854/tcp # Stryker Comm Port -stryker-com 3854/udp # Stryker Comm Port -opentrac 3855/tcp # OpenTRAC -opentrac 3855/udp # OpenTRAC -informer 3856/tcp # INFORMER -informer 3856/udp # INFORMER -trap-port 3857/tcp # Trap Port -trap-port 3857/udp # Trap Port -trap-port-mom 3858/tcp # Trap Port MOM -trap-port-mom 3858/udp # Trap Port MOM -nav-port 3859/tcp # Navini Port -nav-port 3859/udp # Navini Port -sasp 3860/tcp # Server/Application State Protocol (SASP) -sasp 3860/udp # Server/Application State Protocol (SASP) -winshadow-hd 3861/tcp # winShadow Host Discovery -winshadow-hd 3861/udp # winShadow Host Discovery -giga-pocket 3862/tcp # GIGA-POCKET -giga-pocket 3862/udp # GIGA-POCKET -asap-tcp 3863/tcp # asap tcp port -asap-udp 3863/udp # asap udp port -asap-sctp 3863/sctp # asap sctp -asap-tcp-tls 3864/tcp # asap/tls tcp port -asap-sctp-tls 3864/sctp # asap-sctp/tls -xpl 3865/tcp # xpl automation protocol -xpl 3865/udp # xpl automation protocol -dzdaemon 3866/tcp # Sun SDViz DZDAEMON Port -dzdaemon 3866/udp # Sun SDViz DZDAEMON Port -dzoglserver 3867/tcp # Sun SDViz DZOGLSERVER Port -dzoglserver 3867/udp # Sun SDViz DZOGLSERVER Port -diameter 3868/tcp # DIAMETER -diameter 3868/sctp # DIAMETER -ovsam-mgmt 3869/tcp # hp OVSAM MgmtServer Disco -ovsam-mgmt 3869/udp # hp OVSAM MgmtServer Disco -ovsam-d-agent 3870/tcp # hp OVSAM HostAgent Disco -ovsam-d-agent 3870/udp # hp OVSAM HostAgent Disco -avocent-adsap 3871/tcp # Avocent DS Authorization -avocent-adsap 3871/udp # Avocent DS Authorization -oem-agent 3872/tcp # OEM Agent -oem-agent 3872/udp # OEM Agent -fagordnc 3873/tcp # fagordnc -fagordnc 3873/udp # fagordnc -sixxsconfig 3874/tcp # SixXS Configuration -sixxsconfig 3874/udp # SixXS Configuration -pnbscada 3875/tcp # PNBSCADA -pnbscada 3875/udp # PNBSCADA -dl_agent 3876/tcp # DirectoryLockdown Agent -dl_agent 3876/udp # DirectoryLockdown Agent -xmpcr-interface 3877/tcp # XMPCR Interface Port -xmpcr-interface 3877/udp # XMPCR Interface Port -fotogcad 3878/tcp # FotoG CAD interface -fotogcad 3878/udp # FotoG CAD interface -appss-lm 3879/tcp # appss license manager -appss-lm 3879/udp # appss license manager -igrs 3880/tcp # IGRS -igrs 3880/udp # IGRS -idac 3881/tcp # Data Acquisition and Control -idac 3881/udp # Data Acquisition and Control -msdts1 3882/tcp # DTS Service Port -msdts1 3882/udp # DTS Service Port -vrpn 3883/tcp # VR Peripheral Network -vrpn 3883/udp # VR Peripheral Network -softrack-meter 3884/tcp # SofTrack Metering -softrack-meter 3884/udp # SofTrack Metering -topflow-ssl 3885/tcp # TopFlow SSL -topflow-ssl 3885/udp # TopFlow SSL -nei-management 3886/tcp # NEI management port -nei-management 3886/udp # NEI management port -ciphire-data 3887/tcp # Ciphire Data Transport -ciphire-data 3887/udp # Ciphire Data Transport -ciphire-serv 3888/tcp # Ciphire Services -ciphire-serv 3888/udp # Ciphire Services -dandv-tester 3889/tcp # D and V Tester Control Port -dandv-tester 3889/udp # D and V Tester Control Port -ndsconnect 3890/tcp # Niche Data Server Connect -ndsconnect 3890/udp # Niche Data Server Connect -rtc-pm-port 3891/tcp # Oracle RTC-PM port -rtc-pm-port 3891/udp # Oracle RTC-PM port -pcc-image-port 3892/tcp # PCC-image-port -pcc-image-port 3892/udp # PCC-image-port -cgi-starapi 3893/tcp # CGI StarAPI Server -cgi-starapi 3893/udp # CGI StarAPI Server -syam-agent 3894/tcp # SyAM Agent Port -syam-agent 3894/udp # SyAM Agent Port -syam-smc 3895/tcp # SyAm SMC Service Port -syam-smc 3895/udp # SyAm SMC Service Port -sdo-tls 3896/tcp # Simple Distributed Objects over TLS -sdo-tls 3896/udp # Simple Distributed Objects over TLS -sdo-ssh 3897/tcp # Simple Distributed Objects over SSH -sdo-ssh 3897/udp # Simple Distributed Objects over SSH -senip 3898/tcp # IAS, Inc. SmartEye NET Internet Protocol -senip 3898/udp # IAS, Inc. SmartEye NET Internet Protocol -itv-control 3899/tcp # ITV Port -itv-control 3899/udp # ITV Port -nimsh 3901/tcp # NIM Service Handler -nimsh 3901/udp # NIM Service Handler -nimaux 3902/tcp # NIMsh Auxiliary Port -nimaux 3902/udp # NIMsh Auxiliary Port -charsetmgr 3903/tcp # CharsetMGR -charsetmgr 3903/udp # CharsetMGR -omnilink-port 3904/tcp # Arnet Omnilink Port -omnilink-port 3904/udp # Arnet Omnilink Port -mupdate 3905/tcp # Mailbox Update (MUPDATE) protocol -mupdate 3905/udp # Mailbox Update (MUPDATE) protocol -topovista-data 3906/tcp # TopoVista elevation data -topovista-data 3906/udp # TopoVista elevation data -imoguia-port 3907/tcp # Imoguia Port -imoguia-port 3907/udp # Imoguia Port -hppronetman 3908/tcp # HP Procurve NetManagement -hppronetman 3908/udp # HP Procurve NetManagement -surfcontrolcpa 3909/tcp # SurfControl CPA -surfcontrolcpa 3909/udp # SurfControl CPA -prnrequest 3910/tcp # Printer Request Port -prnrequest 3910/udp # Printer Request Port -prnstatus 3911/tcp # Printer Status Port -prnstatus 3911/udp # Printer Status Port -gbmt-stars 3912/tcp # Global Maintech Stars -gbmt-stars 3912/udp # Global Maintech Stars -listcrt-port 3913/tcp # ListCREATOR Port -listcrt-port 3913/udp # ListCREATOR Port -listcrt-port-2 3914/tcp # ListCREATOR Port 2 -listcrt-port-2 3914/udp # ListCREATOR Port 2 -agcat 3915/tcp # Auto-Graphics Cataloging -agcat 3915/udp # Auto-Graphics Cataloging -wysdmc 3916/tcp # WysDM Controller -wysdmc 3916/udp # WysDM Controller -aftmux 3917/tcp # AFT multiplex port -aftmux 3917/udp # AFT multiples port -pktcablemmcops 3918/tcp # PacketCableMultimediaCOPS -pktcablemmcops 3918/udp # PacketCableMultimediaCOPS -hyperip 3919/tcp # HyperIP -hyperip 3919/udp # HyperIP -exasoftport1 3920/tcp # Exasoft IP Port -exasoftport1 3920/udp # Exasoft IP Port -herodotus-net 3921/tcp # Herodotus Net -herodotus-net 3921/udp # Herodotus Net -sor-update 3922/tcp # Soronti Update Port -sor-update 3922/udp # Soronti Update Port -symb-sb-port 3923/tcp # Symbian Service Broker -symb-sb-port 3923/udp # Symbian Service Broker -mpl-gprs-port 3924/tcp # MPL_GPRS_PORT -mpl-gprs-port 3924/udp # MPL_GPRS_Port -zmp 3925/tcp # Zoran Media Port -zmp 3925/udp # Zoran Media Port -winport 3926/tcp # WINPort -winport 3926/udp # WINPort -natdataservice 3927/tcp # ScsTsr -natdataservice 3927/udp # ScsTsr -netboot-pxe 3928/tcp # PXE NetBoot Manager -netboot-pxe 3928/udp # PXE NetBoot Manager -smauth-port 3929/tcp # AMS Port -smauth-port 3929/udp # AMS Port -syam-webserver 3930/tcp # Syam Web Server Port -syam-webserver 3930/udp # Syam Web Server Port -msr-plugin-port 3931/tcp # MSR Plugin Port -msr-plugin-port 3931/udp # MSR Plugin Port -dyn-site 3932/tcp # Dynamic Site System -dyn-site 3932/udp # Dynamic Site System -plbserve-port 3933/tcp # PL/B App Server User Port -plbserve-port 3933/udp # PL/B App Server User Port -sunfm-port 3934/tcp # PL/B File Manager Port -sunfm-port 3934/udp # PL/B File Manager Port -sdp-portmapper 3935/tcp # SDP Port Mapper Protocol -sdp-portmapper 3935/udp # SDP Port Mapper Protocol -mailprox 3936/tcp # Mailprox -mailprox 3936/udp # Mailprox -dvbservdsc 3937/tcp # DVB Service Discovery -dvbservdsc 3937/udp # DVB Service Discovery -dbcontrol_agent 3938/tcp # Oracle dbControl Agent po -dbcontrol_agent 3938/udp # Oracel dbControl Agent po -aamp 3939/tcp # Anti-virus Application Management Port -aamp 3939/udp # Anti-virus Application Management Port -xecp-node 3940/tcp # XeCP Node Service -xecp-node 3940/udp # XeCP Node Service -homeportal-web 3941/tcp # Home Portal Web Server -homeportal-web 3941/udp # Home Portal Web Server -srdp 3942/tcp # satellite distribution -srdp 3942/udp # satellite distribution -tig 3943/tcp # TetraNode Ip Gateway -tig 3943/udp # TetraNode Ip Gateway -sops 3944/tcp # S-Ops Management -sops 3944/udp # S-Ops Management -emcads 3945/tcp # EMCADS Server Port -emcads 3945/udp # EMCADS Server Port -backupedge 3946/tcp # BackupEDGE Server -backupedge 3946/udp # BackupEDGE Server -ccp 3947/tcp # Connect and Control Protocol for Consumer, Commercial, and Industrial Electronic Devices -ccp 3947/udp # Connect and Control Protocol for Consumer, Commercial, and Industrial Electronic Devices -apdap 3948/tcp # Anton Paar Device Administration Protocol -apdap 3948/udp # Anton Paar Device Administration Protocol -drip 3949/tcp # Dynamic Routing Information Protocol -drip 3949/udp # Dynamic Routing Information Protocol -namemunge 3950/tcp # Name Munging -namemunge 3950/udp # Name Munging -pwgippfax 3951/tcp # PWG IPP Facsimile -pwgippfax 3951/udp # PWG IPP Facsimile -i3-sessionmgr 3952/tcp # I3 Session Manager -i3-sessionmgr 3952/udp # I3 Session Manager -xmlink-connect 3953/tcp # Eydeas XMLink Connect -xmlink-connect 3953/udp # Eydeas XMLink Connect -adrep 3954/tcp # AD Replication RPC -adrep 3954/udp # AD Replication RPC -p2pcommunity 3955/tcp # p2pCommunity -p2pcommunity 3955/udp # p2pCommunity -gvcp 3956/tcp # GigE Vision Control -gvcp 3956/udp # GigE Vision Control -mqe-broker 3957/tcp # MQEnterprise Broker -mqe-broker 3957/udp # MQEnterprise Broker -mqe-agent 3958/tcp # MQEnterprise Agent -mqe-agent 3958/udp # MQEnterprise Agent -treehopper 3959/tcp # Tree Hopper Networking -treehopper 3959/udp # Tree Hopper Networking -bess 3960/tcp # Bess Peer Assessment -bess 3960/udp # Bess Peer Assessment -proaxess 3961/tcp # ProAxess Server -proaxess 3961/udp # ProAxess Server -sbi-agent 3962/tcp # SBI Agent Protocol -sbi-agent 3962/udp # SBI Agent Protocol -thrp 3963/tcp # Teran Hybrid Routing Protocol -thrp 3963/udp # Teran Hybrid Routing Protocol -sasggprs 3964/tcp # SASG GPRS -sasggprs 3964/udp # SASG GPRS -ati-ip-to-ncpe 3965/tcp # Avanti IP to NCPE API -ati-ip-to-ncpe 3965/udp # Avanti IP to NCPE API -bflckmgr 3966/tcp # BuildForge Lock Manager -bflckmgr 3966/udp # BuildForge Lock Manager -ppsms 3967/tcp # PPS Message Service -ppsms 3967/udp # PPS Message Service -ianywhere-dbns 3968/tcp # iAnywhere DBNS -ianywhere-dbns 3968/udp # iAnywhere DBNS -landmarks 3969/tcp # Landmark Messages -landmarks 3969/udp # Landmark Messages -lanrevagent 3970/tcp # LANrev Agent -lanrevagent 3970/udp # LANrev Agent -lanrevserver 3971/tcp # LANrev Server -lanrevserver 3971/udp # LANrev Server -iconp 3972/tcp # ict-control Protocol -iconp 3972/udp # ict-control Protocol -progistics 3973/tcp # ConnectShip Progistics -progistics 3973/udp # ConnectShip Progistics -citysearch 3974/tcp # Remote Applicant Tracking Service -citysearch 3974/udp # Remote Applicant Tracking Service -airshot 3975/tcp # Air Shot -airshot 3975/udp # Air Shot -opswagent 3976/tcp # Opsware Agent -opswagent 3976/udp # Opsware Agent -opswmanager 3977/tcp # Opsware Manager -opswmanager 3977/udp # Opsware Manager -secure-cfg-svr 3978/tcp # Secured Configuration Server -secure-cfg-svr 3978/udp # Secured Configuration Server -smwan 3979/tcp # Smith Micro Wide Area Network Service -smwan 3979/udp # Smith Micro Wide Area Network Service -acms 3980/tcp # Aircraft Cabin Management System -acms 3980/udp # Aircraft Cabin Management System -starfish 3981/tcp # Starfish System Admin -starfish 3981/udp # Starfish System Admin -eis 3982/tcp # ESRI Image Server -eis 3982/udp # ESRI Image Server -eisp 3983/tcp # ESRI Image Service -eisp 3983/udp # ESRI Image Service -mapper-nodemgr 3984/tcp # MAPPER network node manager -mapper-nodemgr 3984/udp # MAPPER network node manager -mapper-mapethd 3985/tcp # MAPPER TCP/IP server -mapper-mapethd 3985/udp # MAPPER TCP/IP server -mapper-ws_ethd 3986/tcp # MAPPER workstation server -mapper-ws_ethd 3986/udp # MAPPER workstation server -centerline 3987/tcp # Centerline -centerline 3987/udp # Centerline -dcs-config 3988/tcp # DCS Configuration Port -dcs-config 3988/udp # DCS Configuration Port -bv-queryengine 3989/tcp # BindView-Query Engine -bv-queryengine 3989/udp # BindView-Query Engine -bv-is 3990/tcp # BindView-IS -bv-is 3990/udp # BindView-IS -bv-smcsrv 3991/tcp # BindView-SMCServer -bv-smcsrv 3991/udp # BindView-SMCServer -bv-ds 3992/tcp # BindView-DirectoryServer -bv-ds 3992/udp # BindView-DirectoryServer -bv-agent 3993/tcp # BindView-Agent -bv-agent 3993/udp # BindView-Agent -iss-mgmt-ssl 3995/tcp # ISS Management Svcs SSL -iss-mgmt-ssl 3995/udp # ISS Management Svcs SSL -abcsoftware 3996/tcp # abcsoftware-01 -abcsoftware 3996/udp # abcsoftware-01 -agentsease-db 3997/tcp # aes_db -agentsease-db 3997/udp # aes_db -dnx 3998/tcp # Distributed Nagios Executor Service -dnx 3998/udp # Distributed Nagios Executor Service -nvcnet 3999/tcp # Norman distributes scanning service -nvcnet 3999/udp # Norman distributes scanning service -terabase 4000/tcp # Terabase -terabase 4000/udp # Terabase -newoak 4001/tcp # NewOak -newoak 4001/udp # NewOak -pxc-spvr-ft 4002/tcp # pxc-spvr-ft -pxc-spvr-ft 4002/udp # pxc-spvr-ft -pxc-splr-ft 4003/tcp # pxc-splr-ft -pxc-splr-ft 4003/udp # pxc-splr-ft -pxc-roid 4004/tcp # pxc-roid -pxc-roid 4004/udp # pxc-roid -pxc-pin 4005/tcp # pxc-pin -pxc-pin 4005/udp # pxc-pin -pxc-spvr 4006/tcp # pxc-spvr -pxc-spvr 4006/udp # pxc-spvr -pxc-splr 4007/tcp # pxc-splr -pxc-splr 4007/udp # pxc-splr -netcheque 4008/tcp # NetCheque accounting -netcheque 4008/udp # NetCheque accounting -chimera-hwm 4009/tcp # Chimera HWM -chimera-hwm 4009/udp # Chimera HWM -samsung-unidex 4010/tcp # Samsung Unidex -samsung-unidex 4010/udp # Samsung Unidex -altserviceboot 4011/tcp # Alternate Service Boot -pda-gate 4012/tcp # PDA Gate -pda-gate 4012/udp # PDA Gate -acl-manager 4013/tcp # ACL Manager -acl-manager 4013/udp # ACL Manager -taiclock 4014/tcp # TAICLOCK -taiclock 4014/udp # TAICLOCK -talarian-mcast1 4015/tcp # Talarian Mcast -talarian-mcast1 4015/udp # Talarian Mcast -talarian-mcast2 4016/tcp # Talarian Mcast -talarian-mcast2 4016/udp # Talarian Mcast -talarian-mcast3 4017/tcp # Talarian Mcast -talarian-mcast3 4017/udp # Talarian Mcast -talarian-mcast4 4018/tcp # Talarian Mcast -talarian-mcast4 4018/udp # Talarian Mcast -talarian-mcast5 4019/tcp # Talarian Mcast -talarian-mcast5 4019/udp # Talarian Mcast -trap 4020/tcp # TRAP Port -trap 4020/udp # TRAP Port -nexus-portal 4021/tcp # Nexus Portal -nexus-portal 4021/udp # Nexus Portal -dnox 4022/tcp # DNOX -dnox 4022/udp # DNOX -esnm-zoning 4023/tcp # ESNM Zoning Port -esnm-zoning 4023/udp # ESNM Zoning Port -tnp1-port 4024/tcp # TNP1 User Port -tnp1-port 4024/udp # TNP1 User Port -partimage 4025/tcp # Partition Image Port -partimage 4025/udp # Partition Image Port -as-debug 4026/tcp # Graphical Debug Server -as-debug 4026/udp # Graphical Debug Server -bxp 4027/tcp # bitxpress -bxp 4027/udp # bitxpress -dtserver-port 4028/tcp # DTServer Port -dtserver-port 4028/udp # DTServer Port -ip-qsig 4029/tcp # IP Q signaling protocol -ip-qsig 4029/udp # IP Q signaling protocol -jdmn-port 4030/tcp # Accell/JSP Daemon Port -jdmn-port 4030/udp # Accell/JSP Daemon Port -suucp 4031/tcp # UUCP over SSL -suucp 4031/udp # UUCP over SSL -vrts-auth-port 4032/tcp # VERITAS Authorization Service -vrts-auth-port 4032/udp # VERITAS Authorization Service -sanavigator 4033/tcp # SANavigator Peer Port -sanavigator 4033/udp # SANavigator Peer Port -ubxd 4034/tcp # Ubiquinox Daemon -ubxd 4034/udp # Ubiquinox Daemon -wap-push-http 4035/tcp # WAP Push OTA-HTTP port -wap-push-http 4035/udp # WAP Push OTA-HTTP port -wap-push-https 4036/tcp # WAP Push OTA-HTTP secure -wap-push-https 4036/udp # WAP Push OTA-HTTP secure -ravehd 4037/tcp # RaveHD network control -ravehd 4037/udp # RaveHD network control -fazzt-ptp 4038/tcp # Fazzt Point-To-Point -fazzt-ptp 4038/udp # Fazzt Point-To-Point -fazzt-admin 4039/tcp # Fazzt Administration -fazzt-admin 4039/udp # Fazzt Administration -yo-main 4040/tcp # Yo.net main service -yo-main 4040/udp # Yo.net main service -houston 4041/tcp # Rocketeer-Houston -houston 4041/udp # Rocketeer-Houston -ldxp 4042/tcp # LDXP -ldxp 4042/udp # LDXP -nirp 4043/tcp # Neighbour Identity Resolution -nirp 4043/udp # Neighbour Identity Resolution -ltp 4044/tcp # Location Tracking Protocol -ltp 4044/udp # Location Tracking Protocol -acp-proto 4046/tcp # Accounting Protocol -acp-proto 4046/udp # Accounting Protocol -ctp-state 4047/tcp # Context Transfer Protocol -ctp-state 4047/udp # Context Transfer Protocol -wafs 4049/tcp # Wide Area File Services -wafs 4049/udp # Wide Area File Services -cisco-wafs 4050/tcp # Wide Area File Services -cisco-wafs 4050/udp # Wide Area File Services -cppdp 4051/tcp # Cisco Peer to Peer Distribution Protocol -cppdp 4051/udp # Cisco Peer to Peer Distribution Protocol -interact 4052/tcp # VoiceConnect Interact -interact 4052/udp # VoiceConnect Interact -ccu-comm-1 4053/tcp # CosmoCall Universe Communications Port 1 -ccu-comm-1 4053/udp # CosmoCall Universe Communications Port 1 -ccu-comm-2 4054/tcp # CosmoCall Universe Communications Port 2 -ccu-comm-2 4054/udp # CosmoCall Universe Communications Port 2 -ccu-comm-3 4055/tcp # CosmoCall Universe Communications Port 3 -ccu-comm-3 4055/udp # CosmoCall Universe Communications Port 3 -lms 4056/tcp # Location Message Service -lms 4056/udp # Location Message Service -wfm 4057/tcp # Servigistics WFM server -wfm 4057/udp # Servigistics WFM server -kingfisher 4058/tcp # Kingfisher protocol -kingfisher 4058/udp # Kingfisher protocol -dlms-cosem 4059/tcp # DLMS/COSEM -dlms-cosem 4059/udp # DLMS/COSEM -dsmeter_iatc 4060/tcp # DSMETER Inter-Agent Transfer Channel -dsmeter_iatc 4060/udp # DSMETER Inter-Agent Transfer Channel -ice-location 4061/tcp # Ice Location Service (TCP) -ice-location 4061/udp # Ice Location Service (TCP) -ice-slocation 4062/tcp # Ice Location Service (SSL) -ice-slocation 4062/udp # Ice Location Service (SSL) -ice-router 4063/tcp # Ice Firewall Traversal Service (TCP) -ice-router 4063/udp # Ice Firewall Traversal Service (TCP) -ice-srouter 4064/tcp # Ice Firewall Traversal Service (SSL) -ice-srouter 4064/udp # Ice Firewall Traversal Service (SSL) -avanti_cdp 4065/tcp # Avanti Common Data -avanti_cdp 4065/udp # Avanti Common Data -pmas 4066/tcp # Performance Measurement and Analysis -pmas 4066/udp # Performance Measurement and Analysis -idp 4067/tcp # Information Distribution Protocol -idp 4067/udp # Information Distribution Protocol -ipfltbcst 4068/tcp # IP Fleet Broadcast -ipfltbcst 4068/udp # IP Fleet Broadcast -minger 4069/tcp # Minger Email Address Validation Service -minger 4069/udp # Minger Email Address Validation Service -tripe 4070/tcp # Trivial IP Encryption (TrIPE) -tripe 4070/udp # Trivial IP Encryption (TrIPE) -aibkup 4071/tcp # Automatically Incremental Backup -aibkup 4071/udp # Automatically Incremental Backup -zieto-sock 4072/tcp # Zieto Socket Communications -zieto-sock 4072/udp # Zieto Socket Communications -iRAPP 4073/tcp # iRAPP Server Protocol -iRAPP 4073/udp # iRAPP Server Protocol -cequint-cityid 4074/tcp # Cequint City ID UI trigger -cequint-cityid 4074/udp # Cequint City ID UI trigger -perimlan 4075/tcp # ISC Alarm Message Service -perimlan 4075/udp # ISC Alarm Message Service -seraph 4076/tcp # Seraph DCS -seraph 4076/udp # Seraph DCS -ascomalarm 4077/udp # Ascom IP Alarming -cssp 4078/tcp # Coordinated Security Service Protocol -lorica-in 4080/tcp # Lorica inside facing -lorica-in 4080/udp # Lorica inside facing -lorica-in-sec 4081/tcp # Lorica inside facing (SSL) -lorica-in-sec 4081/udp # Lorica inside facing (SSL) -lorica-out 4082/tcp # Lorica outside facing -lorica-out 4082/udp # Lorica outside facing -lorica-out-sec 4083/tcp # Lorica outside facing (SSL) -lorica-out-sec 4083/udp # Lorica outside facing (SSL) -fortisphere-vm 4084/udp # Fortisphere VM Service -ezmessagesrv 4085/tcp # EZNews Newsroom Message Service -ftsync 4086/udp # Firewall/NAT state table synchronization -applusservice 4087/tcp # APplus Service -npsp 4088/tcp # Noah Printing Service Protocol -opencore 4089/tcp # OpenCORE Remote Control Service -opencore 4089/udp # OpenCORE Remote Control Service -omasgport 4090/tcp # OMA BCAST Service Guide -omasgport 4090/udp # OMA BCAST Service Guide -ewinstaller 4091/tcp # EminentWare Installer -ewinstaller 4091/udp # EminentWare Installer -ewdgs 4092/tcp # EminentWare DGS -ewdgs 4092/udp # EminentWare DGS -pvxpluscs 4093/tcp # Pvx Plus CS Host -pvxpluscs 4093/udp # Pvx Plus CS Host -sysrqd 4094/tcp # sysrq daemon -sysrqd 4094/udp # sysrq daemon -xtgui 4095/tcp # xtgui information service -xtgui 4095/udp # xtgui information service -bre 4096/tcp # BRE (Bridge Relay Element) -bre 4096/udp # BRE (Bridge Relay Element) -patrolview 4097/tcp # Patrol View -patrolview 4097/udp # Patrol View -drmsfsd 4098/tcp # drmsfsd -drmsfsd 4098/udp # drmsfsd -dpcp 4099/tcp # DPCP -dpcp 4099/udp # DPCP -igo-incognito 4100/tcp # IGo Incognito Data Port -igo-incognito 4100/udp # IGo Incognito Data Port -brlp-0 4101/tcp # Braille protocol -brlp-0 4101/udp # Braille protocol -brlp-1 4102/tcp # Braille protocol -brlp-1 4102/udp # Braille protocol -brlp-2 4103/tcp # Braille protocol -brlp-2 4103/udp # Braille protocol -brlp-3 4104/tcp # Braille protocol -brlp-3 4104/udp # Braille protocol -shofarplayer 4105/tcp # ShofarPlayer -shofarplayer 4105/udp # ShofarPlayer -synchronite 4106/tcp # Synchronite -synchronite 4106/udp # Synchronite -j-ac 4107/tcp # JDL Accounting LAN Service -j-ac 4107/udp # JDL Accounting LAN Service -accel 4108/tcp # ACCEL -accel 4108/udp # ACCEL -izm 4109/tcp # Instantiated Zero-control Messaging -izm 4109/udp # Instantiated Zero-control Messaging -g2tag 4110/tcp # G2 RFID Tag Telemetry Data -g2tag 4110/udp # G2 RFID Tag Telemetry Data -xgrid 4111/tcp # Xgrid -xgrid 4111/udp # Xgrid -apple-vpns-rp 4112/tcp # Apple VPN Server Reporting Protocol -apple-vpns-rp 4112/udp # Apple VPN Server Reporting Protocol -aipn-reg 4113/tcp # AIPN LS Registration -aipn-reg 4113/udp # AIPN LS Registration -jomamqmonitor 4114/tcp # JomaMQMonitor -jomamqmonitor 4114/udp # JomaMQMonitor -cds 4115/tcp # CDS Transfer Agent -cds 4115/udp # CDS Transfer Agent -smartcard-tls 4116/tcp # smartcard-TLS -smartcard-tls 4116/udp # smartcard-TLS -hillrserv 4117/tcp # Hillr Connection Manager -hillrserv 4117/udp # Hillr Connection Manager -netscript 4118/tcp # Netadmin Systems NETscript service -netscript 4118/udp # Netadmin Systems NETscript service -assuria-slm 4119/tcp # Assuria Log Manager -assuria-slm 4119/udp # Assuria Log Manager -e-builder 4121/tcp # e-Builder Application Communication -e-builder 4121/udp # e-Builder Application Communication -fprams 4122/tcp # Fiber Patrol Alarm Service -fprams 4122/udp # Fiber Patrol Alarm Service -z-wave 4123/tcp # Zensys Z-Wave Control Protocol -z-wave 4123/udp # Zensys Z-Wave Control Protocol -tigv2 4124/tcp # Rohill TetraNode Ip Gateway v2 -tigv2 4124/udp # Rohill TetraNode Ip Gateway v2 -opsview-envoy 4125/tcp # Opsview Envoy -opsview-envoy 4125/udp # Opsview Envoy -ddrepl 4126/tcp # Data Domain Replication Service -ddrepl 4126/udp # Data Domain Replication Service -unikeypro 4127/tcp # NetUniKeyServer -unikeypro 4127/udp # NetUniKeyServer -nufw 4128/tcp # NuFW decision delegation protocol -nufw 4128/udp # NuFW decision delegation protocol -nuauth 4129/tcp # NuFW authentication protocol -nuauth 4129/udp # NuFW authentication protocol -fronet 4130/tcp # FRONET message protocol -fronet 4130/udp # FRONET message protocol -stars 4131/tcp # Global Maintech Stars -stars 4131/udp # Global Maintech Stars -nuts_dem 4132/tcp # NUTS Daemon -nuts_dem 4132/udp # NUTS Daemon -nuts_bootp 4133/tcp # NUTS Bootp Server -nuts_bootp 4133/udp # NUTS Bootp Server -nifty-hmi 4134/tcp # NIFTY-Serve HMI protocol -nifty-hmi 4134/udp # NIFTY-Serve HMI protocol -cl-db-attach 4135/tcp # Classic Line Database Server Attach -cl-db-attach 4135/udp # Classic Line Database Server Attach -cl-db-request 4136/tcp # Classic Line Database Server Request -cl-db-request 4136/udp # Classic Line Database Server Request -cl-db-remote 4137/tcp # Classic Line Database Server Remote -cl-db-remote 4137/udp # Classic Line Database Server Remote -nettest 4138/tcp # nettest -nettest 4138/udp # nettest -thrtx 4139/tcp # Imperfect Networks Server -thrtx 4139/udp # Imperfect Networks Server -cedros_fds 4140/tcp # Cedros Fraud Detection System -cedros_fds 4140/udp # Cedros Fraud Detection System -oirtgsvc 4141/tcp # Workflow Server -oirtgsvc 4141/udp # Workflow Server -oidocsvc 4142/tcp # Document Server -oidocsvc 4142/udp # Document Server -oidsr 4143/tcp # Document Replication -oidsr 4143/udp # Document Replication -vvr-control 4145/tcp # VVR Control -vvr-control 4145/udp # VVR Control -tgcconnect 4146/tcp # TGCConnect Beacon -tgcconnect 4146/udp # TGCConnect Beacon -vrxpservman 4147/tcp # Multum Service Manager -vrxpservman 4147/udp # Multum Service Manager -hhb-handheld 4148/tcp # HHB Handheld Client -hhb-handheld 4148/udp # HHB Handheld Client -agslb 4149/tcp # A10 GSLB Service -agslb 4149/udp # A10 GSLB Service -PowerAlert-nsa 4150/tcp # PowerAlert Network Shutdown Agent -PowerAlert-nsa 4150/udp # PowerAlert Network Shutdown Agent -menandmice_noh 4151/tcp # Men & Mice Remote Control -menandmice_noh 4151/udp # Men & Mice Remote Control -idig_mux 4152/tcp # iDigTech Multiplex -idig_mux 4152/udp # iDigTech Multiplex -mbl-battd 4153/tcp # MBL Remote Battery Monitoring -mbl-battd 4153/udp # MBL Remote Battery Monitoring -atlinks 4154/tcp # atlinks device discovery -atlinks 4154/udp # atlinks device discovery -bzr 4155/tcp # Bazaar version control system -bzr 4155/udp # Bazaar version control system -stat-results 4156/tcp # STAT Results -stat-results 4156/udp # STAT Results -stat-scanner 4157/tcp # STAT Scanner Control -stat-scanner 4157/udp # STAT Scanner Control -stat-cc 4158/tcp # STAT Command Center -stat-cc 4158/udp # STAT Command Center -nss 4159/tcp # Network Security Service -nss 4159/udp # Network Security Service -jini-discovery 4160/tcp # Jini Discovery -jini-discovery 4160/udp # Jini Discovery -omscontact 4161/tcp # OMS Contact -omscontact 4161/udp # OMS Contact -omstopology 4162/tcp # OMS Topology -omstopology 4162/udp # OMS Topology -silverpeakpeer 4163/tcp # Silver Peak Peer Protocol -silverpeakpeer 4163/udp # Silver Peak Peer Protocol -silverpeakcomm 4164/tcp # Silver Peak Communication Protocol -silverpeakcomm 4164/udp # Silver Peak Communication Protocol -altcp 4165/tcp # ArcLink over Ethernet -altcp 4165/udp # ArcLink over Ethernet -joost 4166/tcp # Joost Peer to Peer Protocol -joost 4166/udp # Joost Peer to Peer Protocol -ddgn 4167/tcp # DeskDirect Global Network -ddgn 4167/udp # DeskDirect Global Network -pslicser 4168/tcp # PrintSoft License Server -pslicser 4168/udp # PrintSoft License Server -iadt 4169/tcp # Automation Drive Interface Transport -iadt-disc 4169/udp # Internet ADT Discovery Protocol -d-cinema-csp 4170/tcp # SMPTE Content Synchonization Protocol -ml-svnet 4171/tcp # Maxlogic Supervisor Communication -pcoip 4172/tcp # PC over IP -pcoip 4172/udp # PC over IP -tl-ipcproxy 4176/tcp # Translattice Cluster IPC Proxy -wello 4177/tcp # Wello P2P pubsub service -wello 4177/udp # Wello P2P pubsub service -storman 4178/tcp # StorMan -storman 4178/udp # StorMan -MaxumSP 4179/tcp # Maxum Services -MaxumSP 4179/udp # Maxum Services -httpx 4180/tcp # HTTPX -httpx 4180/udp # HTTPX -macbak 4181/tcp # MacBak -macbak 4181/udp # MacBak -pcptcpservice 4182/tcp # Production Company Pro TCP Service -pcptcpservice 4182/udp # Production Company Pro TCP Service -gmmp 4183/tcp # General Metaverse Messaging Protocol -gmmp 4183/udp # General Metaverse Messaging Protocol -universe_suite 4184/tcp # UNIVERSE SUITE MESSAGE SERVICE -universe_suite 4184/udp # UNIVERSE SUITE MESSAGE SERVICE -wcpp 4185/tcp # Woven Control Plane Protocol -wcpp 4185/udp # Woven Control Plane Protocol -boxbackupstore 4186/tcp # Box Backup Store Service -csc_proxy 4187/tcp # Cascade Proxy -vatata 4188/tcp # Vatata Peer to Peer Protocol -vatata 4188/udp # Vatata Peer to Peer Protocol -pcep 4189/tcp # Path Computation Element Communication Protocol -sieve 4190/tcp # ManageSieve Protocol -dsmipv6 4191/udp # Dual Stack MIPv6 NAT Traversal -azeti 4192/tcp # Azeti Agent Service -azeti-bd 4192/udp # azeti blinddate -pvxplusio 4193/tcp # PxPlus remote file srvr -eims-admin 4199/tcp # EIMS ADMIN -eims-admin 4199/udp # EIMS ADMIN -corelccam 4300/tcp # Corel CCam -corelccam 4300/udp # Corel CCam -d-data 4301/tcp # Diagnostic Data -d-data 4301/udp # Diagnostic Data -d-data-control 4302/tcp # Diagnostic Data Control -d-data-control 4302/udp # Diagnostic Data Control -srcp 4303/tcp # Simple Railroad Command Protocol -srcp 4303/udp # Simple Railroad Command Protocol -owserver 4304/tcp # One-Wire Filesystem Server -owserver 4304/udp # One-Wire Filesystem Server -batman 4305/tcp # better approach to mobile ad-hoc networking -batman 4305/udp # better approach to mobile ad-hoc networking -pinghgl 4306/tcp # Hellgate London -pinghgl 4306/udp # Hellgate London -visicron-vs 4307/tcp # Visicron Videoconference Service -visicron-vs 4307/udp # Visicron Videoconference Service -compx-lockview 4308/tcp # CompX-LockView -compx-lockview 4308/udp # CompX-LockView -dserver 4309/tcp # Exsequi Appliance Discovery -dserver 4309/udp # Exsequi Appliance Discovery -mirrtex 4310/tcp # Mir-RT exchange service -mirrtex 4310/udp # Mir-RT exchange service -p6ssmc 4311/tcp # P6R Secure Server Management Console -pscl-mgt 4312/tcp # Parascale Membership Manager -perrla 4313/tcp # PERRLA User Services -fdt-rcatp 4320/tcp # FDT Remote Categorization Protocol -fdt-rcatp 4320/udp # FDT Remote Categorization Protocol -trim-event 4322/tcp # TRIM Event Service -trim-event 4322/udp # TRIM Event Service -trim-ice 4323/tcp # TRIM ICE Service -trim-ice 4323/udp # TRIM ICE Service -balour 4324/tcp # Balour Game Server -balour 4324/udp # Balour Game Server -geognosisman 4325/tcp # Cadcorp GeognoSIS Manager Service -geognosisman 4325/udp # Cadcorp GeognoSIS Manager Service -geognosis 4326/tcp # Cadcorp GeognoSIS Service -geognosis 4326/udp # Cadcorp GeognoSIS Service -jaxer-web 4327/tcp # Jaxer Web Protocol -jaxer-web 4327/udp # Jaxer Web Protocol -jaxer-manager 4328/tcp # Jaxer Manager Command Protocol -jaxer-manager 4328/udp # Jaxer Manager Command Protocol -gaia 4340/tcp # Gaia Connector Protocol -gaia 4340/udp # Gaia Connector Protocol -lisp-data 4341/tcp # LISP Data Packets -lisp-data 4341/udp # LISP Data Packets -lisp-cons 4342/tcp # LISP-CONS Control -lisp-control 4342/udp # LISP Data-Triggered Control -unicall 4343/tcp # UNICALL -unicall 4343/udp # UNICALL -vinainstall 4344/tcp # VinaInstall -vinainstall 4344/udp # VinaInstall -m4-network-as 4345/tcp # Macro 4 Network AS -m4-network-as 4345/udp # Macro 4 Network AS -elanlm 4346/tcp # ELAN LM -elanlm 4346/udp # ELAN LM -lansurveyor 4347/tcp # LAN Surveyor -lansurveyor 4347/udp # LAN Surveyor -itose 4348/tcp # ITOSE -itose 4348/udp # ITOSE -fsportmap 4349/tcp # File System Port Map -fsportmap 4349/udp # File System Port Map -net-device 4350/tcp # Net Device -net-device 4350/udp # Net Device -plcy-net-svcs 4351/tcp # PLCY Net Services -plcy-net-svcs 4351/udp # PLCY Net Services -pjlink 4352/tcp # Projector Link -pjlink 4352/udp # Projector Link -f5-iquery 4353/tcp # F5 iQuery -f5-iquery 4353/udp # F5 iQuery -qsnet-trans 4354/tcp # QSNet Transmitter -qsnet-trans 4354/udp # QSNet Transmitter -qsnet-workst 4355/tcp # QSNet Workstation -qsnet-workst 4355/udp # QSNet Workstation -qsnet-assist 4356/tcp # QSNet Assistant -qsnet-assist 4356/udp # QSNet Assistant -qsnet-cond 4357/tcp # QSNet Conductor -qsnet-cond 4357/udp # QSNet Conductor -qsnet-nucl 4358/tcp # QSNet Nucleus -qsnet-nucl 4358/udp # QSNet Nucleus -omabcastltkm 4359/tcp # OMA BCAST Long-Term Key Messages -omabcastltkm 4359/udp # OMA BCAST Long-Term Key Messages -matrix_vnet 4360/tcp # Matrix VNet Communication Protocol -nacnl 4361/udp # Navcom Discovery and Control Port -wxbrief 4368/tcp # WeatherBrief Direct -wxbrief 4368/udp # WeatherBrief Direct -epmd 4369/tcp # Erlang Port Mapper Daemon -epmd 4369/udp # Erlang Port Mapper Daemon -elpro_tunnel 4370/tcp # ELPRO V2 Protocol Tunnel -elpro_tunnel 4370/udp # ELPRO V2 Protocol Tunnel - -l2c-control 4371/tcp # LAN2CAN Control -l2c-disc 4371/udp # LAN2CAN Discovery -l2c-data 4372/tcp # LAN2CAN Data -l2c-data 4372/udp # LAN2CAN Data -remctl 4373/tcp # Remote Authenticated Command Service -remctl 4373/udp # Remote Authenticated Command Service -psi-ptt 4374/tcp # PSI Push-to-Talk Protocol -tolteces 4375/tcp # Toltec EasyShare -tolteces 4375/udp # Toltec EasyShare -bip 4376/tcp # BioAPI Interworking -bip 4376/udp # BioAPI Interworking -cp-spxsvr 4377/tcp # Cambridge Pixel SPx Server -cp-spxsvr 4377/udp # Cambridge Pixel SPx Server -cp-spxdpy 4378/tcp # Cambridge Pixel SPx Display -cp-spxdpy 4378/udp # Cambridge Pixel SPx Display -ctdb 4379/tcp # CTDB -ctdb 4379/udp # CTDB -xandros-cms 4389/tcp # Xandros Community Management Service -xandros-cms 4389/udp # Xandros Community Management Service -wiegand 4390/tcp # Physical Access Control -wiegand 4390/udp # Physical Access Control -apwi-imserver 4391/tcp # American Printware IMServer Protocol -apwi-rxserver 4392/tcp # American Printware RXServer Protocol -apwi-rxspooler 4393/tcp # American Printware RXSpooler Protocol -apwi-disc 4394/udp # American Printware Discovery -omnivisionesx 4395/tcp # OmniVision communication for Virtual environments -omnivisionesx 4395/udp # OmniVision communication for Virtual environments -fly 4396/tcp # Fly Object Space -ds-srv 4400/tcp # ASIGRA Services -ds-srv 4400/udp # ASIGRA Services -ds-srvr 4401/tcp # ASIGRA Televaulting DS-System Service -ds-srvr 4401/udp # ASIGRA Televaulting DS-System Service -ds-clnt 4402/tcp # ASIGRA Televaulting DS-Client Service -ds-clnt 4402/udp # ASIGRA Televaulting DS-Client Service -ds-user 4403/tcp # ASIGRA Televaulting DS-Client Monitoring/Management -ds-user 4403/udp # ASIGRA Televaulting DS-Client Monitoring/Management -ds-admin 4404/tcp # ASIGRA Televaulting DS-System Monitoring/Management -ds-admin 4404/udp # ASIGRA Televaulting DS-System Monitoring/Management -ds-mail 4405/tcp # ASIGRA Televaulting Message Level Restore service -ds-mail 4405/udp # ASIGRA Televaulting Message Level Restore service -ds-slp 4406/tcp # ASIGRA Televaulting DS-Sleeper Service -ds-slp 4406/udp # ASIGRA Televaulting DS-Sleeper Service -nacagent 4407/tcp # Network Access Control Agent -slscc 4408/tcp # SLS Technology Control Centre -netcabinet-com 4409/tcp # Net-Cabinet comunication -itwo-server 4410/tcp # RIB iTWO Application Server -beacon-port-2 4426/tcp # SMARTS Beacon Port -beacon-port-2 4426/udp # SMARTS Beacon Port -drizzle 4427/tcp # Drizzle database server -omviserver 4428/tcp # OMV-Investigation Server-Client -omviagent 4429/tcp # OMV Investigation Agent-Server -sqlserver 4430/tcp # REAL SQL Server -rsqlserver 4430/udp # REAL SQL Server -wspipe 4431/tcp # adWISE Pipe -netblox 4441/udp # Netblox Protocol -saris 4442/tcp # Saris -saris 4442/udp # Saris -pharos 4443/tcp # Pharos -pharos 4443/udp # Pharos -upnotifyp 4445/tcp # UPNOTIFYP -upnotifyp 4445/udp # UPNOTIFYP -n1-fwp 4446/tcp # N1-FWP -n1-fwp 4446/udp # N1-FWP -n1-rmgmt 4447/tcp # N1-RMGMT -n1-rmgmt 4447/udp # N1-RMGMT -asc-slmd 4448/tcp # ASC Licence Manager -asc-slmd 4448/udp # ASC Licence Manager -privatewire 4449/tcp # PrivateWire -privatewire 4449/udp # PrivateWire -camp 4450/tcp # Camp -camp 4450/udp # Camp -ctisystemmsg 4451/tcp # CTI System Msg -ctisystemmsg 4451/udp # CTI System Msg -ctiprogramload 4452/tcp # CTI Program Load -ctiprogramload 4452/udp # CTI Program Load -nssalertmgr 4453/tcp # NSS Alert Manager -nssalertmgr 4453/udp # NSS Alert Manager -nssagentmgr 4454/tcp # NSS Agent Manager -nssagentmgr 4454/udp # NSS Agent Manager -prchat-user 4455/tcp # PR Chat User -prchat-user 4455/udp # PR Chat User -prchat-server 4456/tcp # PR Chat Server -prchat-server 4456/udp # PR Chat Server -prRegister 4457/tcp # PR Register -prRegister 4457/udp # PR Register -mcp 4458/tcp # Matrix Configuration Protocol -mcp 4458/udp # Matrix Configuration Protocol -hpssmgmt 4484/tcp # hpssmgmt service -hpssmgmt 4484/udp # hpssmgmt service -assyst-dr 4485/tcp # Assyst Data Repository Service -ipsec-nat-t 4500/tcp # IPsec NAT-Traversal -ipsec-nat-t 4500/udp # IPsec NAT-Traversal -ehs 4535/tcp # Event Heap Server -ehs 4535/udp # Event Heap Server -ehs-ssl 4536/tcp # Event Heap Server SSL -ehs-ssl 4536/udp # Event Heap Server SSL -wssauthsvc 4537/tcp # WSS Security Service -wssauthsvc 4537/udp # WSS Security Service -isigate 4538/tcp # isigate -isigate 4538/udp # isigate -worldscores 4545/tcp # WorldScores -worldscores 4545/udp # WorldScores -sf-lm 4546/tcp # SF License Manager (Sentinel) -sf-lm 4546/udp # SF License Manager (Sentinel) -lanner-lm 4547/tcp # Lanner License Manager -lanner-lm 4547/udp # Lanner License Manager -synchromesh 4548/tcp # Synchromesh -synchromesh 4548/udp # Synchromesh -aegate 4549/tcp # Aegate PMR Service -aegate 4549/udp # Aegate PMR Service -gds-adppiw-db 4550/tcp # Perman I Interbase Server -gds-adppiw-db 4550/udp # Perman I Interbase Server -ieee-mih 4551/tcp # MIH Services -ieee-mih 4551/udp # MIH Services -menandmice-mon 4552/tcp # Men and Mice Monitoring -menandmice-mon 4552/udp # Men and Mice Monitoring -icshostsvc 4553/tcp # ICS host services -msfrs 4554/tcp # MS FRS Replication -msfrs 4554/udp # MS FRS Replication -rsip 4555/tcp # RSIP Port -rsip 4555/udp # RSIP Port -dtn-bundle-tcp 4556/tcp # DTN Bundle TCP CL Protocol -dtn-bundle-udp 4556/udp # DTN Bundle UDP CL Protocol -mtcevrunqss 4557/udp # Marathon everRun Quorum Service Server -mtcevrunqman 4558/udp # Marathon everRun Quorum Service Manager -hylafax 4559/udp # HylaFAX -kwtc 4566/tcp # Kids Watch Time Control Service -kwtc 4566/udp # Kids Watch Time Control Service -tram 4567/tcp # TRAM -tram 4567/udp # TRAM -bmc-reporting 4568/tcp # BMC Reporting -bmc-reporting 4568/udp # BMC Reporting -iax 4569/tcp # Inter-Asterisk eXchange -iax 4569/udp # Inter-Asterisk eXchange -l3t-at-an 4591/tcp # HRPD L3T (AT-AN) -l3t-at-an 4591/udp # HRPD L3T (AT-AN) -hrpd-ith-at-an 4592/udp # HRPD-ITH (AT-AN) -ipt-anri-anri 4593/tcp # IPT (ANRI-ANRI) -ipt-anri-anri 4593/udp # IPT (ANRI-ANRI) -ias-session 4594/tcp # IAS-Session (ANRI-ANRI) -ias-session 4594/udp # IAS-Session (ANRI-ANRI) -ias-paging 4595/tcp # IAS-Paging (ANRI-ANRI) -ias-paging 4595/udp # IAS-Paging (ANRI-ANRI) -ias-neighbor 4596/tcp # IAS-Neighbor (ANRI-ANRI) -ias-neighbor 4596/udp # IAS-Neighbor (ANRI-ANRI) -a21-an-1xbs 4597/tcp # A21 (AN-1xBS) -a21-an-1xbs 4597/udp # A21 (AN-1xBS) -a16-an-an 4598/tcp # A16 (AN-AN) -a16-an-an 4598/udp # A16 (AN-AN) -a17-an-an 4599/tcp # A17 (AN-AN) -a17-an-an 4599/udp # A17 (AN-AN) -piranha1 4600/tcp # Piranha1 -piranha1 4600/udp # Piranha1 -piranha2 4601/tcp # Piranha2 -piranha2 4601/udp # Piranha2 -mtsserver 4602/tcp # EAX MTS Server -menandmice-upg 4603/tcp # Men & Mice Upgrade Agent -playsta2-app 4658/tcp # PlayStation2 App Port -playsta2-app 4658/udp # PlayStation2 App Port -playsta2-lob 4659/tcp # PlayStation2 Lobby Port -playsta2-lob 4659/udp # PlayStation2 Lobby Port -smaclmgr 4660/tcp # smaclmgr -smaclmgr 4660/udp # smaclmgr -kar2ouche 4661/tcp # Kar2ouche Peer location service -kar2ouche 4661/udp # Kar2ouche Peer location service -oms 4662/tcp # OrbitNet Message Service -oms 4662/udp # OrbitNet Message Service -noteit 4663/tcp # Note It! Message Service -noteit 4663/udp # Note It! Message Service -ems 4664/tcp # Rimage Messaging Server -ems 4664/udp # Rimage Messaging Server -contclientms 4665/tcp # Container Client Message Service -contclientms 4665/udp # Container Client Message Service -eportcomm 4666/tcp # E-Port Message Service -eportcomm 4666/udp # E-Port Message Service -mmacomm 4667/tcp # MMA Comm Services -mmacomm 4667/udp # MMA Comm Services -mmaeds 4668/tcp # MMA EDS Service -mmaeds 4668/udp # MMA EDS Service -eportcommdata 4669/tcp # E-Port Data Service -eportcommdata 4669/udp # E-Port Data Service -light 4670/tcp # Light packets transfer protocol -light 4670/udp # Light packets transfer protocol -acter 4671/tcp # Bull RSF action server -acter 4671/udp # Bull RSF action server -rfa 4672/tcp # remote file access server -rfa 4672/udp # remote file access server -cxws 4673/tcp # CXWS Operations -cxws 4673/udp # CXWS Operations -appiq-mgmt 4674/tcp # AppIQ Agent Management -appiq-mgmt 4674/udp # AppIQ Agent Management -dhct-status 4675/tcp # BIAP Device Status -dhct-status 4675/udp # BIAP Device Status -dhct-alerts 4676/tcp # BIAP Generic Alert -dhct-alerts 4676/udp # BIAP Generic Alert -bcs 4677/tcp # Business Continuity Servi -bcs 4677/udp # Business Continuity Servi -traversal 4678/tcp # boundary traversal -traversal 4678/udp # boundary traversal -mgesupervision 4679/tcp # MGE UPS Supervision -mgesupervision 4679/udp # MGE UPS Supervision -mgemanagement 4680/tcp # MGE UPS Management -mgemanagement 4680/udp # MGE UPS Management -parliant 4681/tcp # Parliant Telephony System -parliant 4681/udp # Parliant Telephony System -finisar 4682/tcp # finisar -finisar 4682/udp # finisar -spike 4683/tcp # Spike Clipboard Service -spike 4683/udp # Spike Clipboard Service -rfid-rp1 4684/tcp # RFID Reader Protocol 1.0 -rfid-rp1 4684/udp # RFID Reader Protocol 1.0 -autopac 4685/tcp # Autopac Protocol -autopac 4685/udp # Autopac Protocol -msp-os 4686/tcp # Manina Service Protocol -msp-os 4686/udp # Manina Service Protocol -nst 4687/tcp # Network Scanner Tool FTP -nst 4687/udp # Network Scanner Tool FTP -mobile-p2p 4688/tcp # Mobile P2P Service -mobile-p2p 4688/udp # Mobile P2P Service -altovacentral 4689/tcp # Altova DatabaseCentral -altovacentral 4689/udp # Altova DatabaseCentral -prelude 4690/tcp # Prelude IDS message proto -prelude 4690/udp # Prelude IDS message proto -monotone 4691/tcp # Monotone Network Protocol -monotone 4691/udp # Monotone Network Protocol -conspiracy 4692/tcp # Conspiracy messaging -conspiracy 4692/udp # Conspiracy messaging -netxms-agent 4700/tcp # NetXMS Agent -netxms-agent 4700/udp # NetXMS Agent -netxms-mgmt 4701/tcp # NetXMS Management -netxms-mgmt 4701/udp # NetXMS Management -netxms-sync 4702/tcp # NetXMS Server Synchronization -netxms-sync 4702/udp # NetXMS Server Synchronization -capmux 4728/tcp # CA Port Multiplexer -capmux 4728/udp # CA Port Multiplexer -gsmtap 4729/udp # GSM Interface Tap -gearman 4730/tcp # Gearman Job Queue System -gearman 4730/udp # Gearman Job Queue System -remcap 4731/tcp # Remote Capture Protocol -ohmtrigger 4732/udp # OHM server trigger -resorcs 4733/tcp # RES Orchestration Catalog Services -ipdr-sp 4737/tcp # IPDR/SP -ipdr-sp 4737/udp # IPDR/SP -solera-lpn 4738/tcp # SoleraTec Locator -solera-lpn 4738/udp # SoleraTec Locator -ipfix 4739/tcp # IP Flow Info Export -ipfix 4739/udp # IP Flow Info Export -ipfix 4739/sctp # IP Flow Info Export -ipfixs 4740/tcp # ipfix protocol over TLS -ipfixs 4740/sctp # ipfix protocol over DTLS -ipfixs 4740/udp # ipfix protocol over DTLS -lumimgrd 4741/tcp # Luminizer Manager -lumimgrd 4741/udp # Luminizer Manager -sicct 4742/tcp # SICCT -sicct-sdp 4742/udp # SICCT Service Discovery Protocol -openhpid 4743/tcp # openhpi HPI service -openhpid 4743/udp # openhpi HPI service -ifsp 4744/tcp # Internet File Synchronization Protocol -ifsp 4744/udp # Internet File Synchronization Protocol -fmp 4745/tcp # Funambol Mobile Push -fmp 4745/udp # Funambol Mobile Push -profilemac 4749/tcp # Profile for Mac -profilemac 4749/udp # Profile for Mac -ssad 4750/tcp # Simple Service Auto Discovery -ssad 4750/udp # Simple Service Auto Discovery -spocp 4751/tcp # Simple Policy Control Protocol -spocp 4751/udp # Simple Policy Control Protocol -snap 4752/tcp # Simple Network Audio Protocol -snap 4752/udp # Simple Network Audio Protocol -bfd-multi-ctl 4784/tcp # BFD Multihop Control -bfd-multi-ctl 4784/udp # BFD Multihop Control -cncp 4785/udp # Cisco Nexus Control Protocol -smart-install 4786/tcp # Smart Install Service -sia-ctrl-plane 4787/tcp # Service Insertion Architecture (SIA) Control-Plane -iims 4800/tcp # Icona Instant Messenging System -iims 4800/udp # Icona Instant Messenging System -iwec 4801/tcp # Icona Web Embedded Chat -iwec 4801/udp # Icona Web Embedded Chat -ilss 4802/tcp # Icona License System Server -ilss 4802/udp # Icona License System Server -notateit 4803/tcp # Notateit Messaging -notateit-disc 4803/udp # Notateit Messaging Discovery -htcp 4827/tcp # HTCP -htcp 4827/udp # HTCP -varadero-0 4837/tcp # Varadero-0 -varadero-0 4837/udp # Varadero-0 -varadero-1 4838/tcp # Varadero-1 -varadero-1 4838/udp # Varadero-1 -varadero-2 4839/tcp # Varadero-2 -varadero-2 4839/udp # Varadero-2 -opcua-tcp 4840/tcp # OPC UA TCP Protocol -opcua-udp 4840/udp # OPC UA TCP Protocol -quosa 4841/tcp # QUOSA Virtual Library Service -quosa 4841/udp # QUOSA Virtual Library Service -gw-asv 4842/tcp # nCode ICE-flow Library AppServer -gw-asv 4842/udp # nCode ICE-flow Library AppServer -opcua-tls 4843/tcp # OPC UA TCP Protocol over TLS/SSL -opcua-tls 4843/udp # OPC UA TCP Protocol over TLS/SSL -gw-log 4844/tcp # nCode ICE-flow Library LogServer -gw-log 4844/udp # nCode ICE-flow Library LogServer -wcr-remlib 4845/tcp # WordCruncher Remote Library Service -wcr-remlib 4845/udp # WordCruncher Remote Library Service -contamac_icm 4846/tcp # Contamac ICM Service -contamac_icm 4846/udp # Contamac ICM Service -wfc 4847/tcp # Web Fresh Communication -wfc 4847/udp # Web Fresh Communication -appserv-http 4848/tcp # App Server - Admin HTTP -appserv-http 4848/udp # App Server - Admin HTTP -appserv-https 4849/tcp # App Server - Admin HTTPS -appserv-https 4849/udp # App Server - Admin HTTPS -sun-as-nodeagt 4850/tcp # Sun App Server - NA -sun-as-nodeagt 4850/udp # Sun App Server - NA -derby-repli 4851/tcp # Apache Derby Replication -derby-repli 4851/udp # Apache Derby Replication -unify-debug 4867/tcp # Unify Debugger -unify-debug 4867/udp # Unify Debugger -phrelay 4868/tcp # Photon Relay -phrelay 4868/udp # Photon Relay -phrelaydbg 4869/tcp # Photon Relay Debug -phrelaydbg 4869/udp # Photon Relay Debug -cc-tracking 4870/tcp # Citcom Tracking Service -cc-tracking 4870/udp # Citcom Tracking Service -wired 4871/tcp # Wired -wired 4871/udp # Wired -hislip 4880/tcp # IVI High-Speed LAN Instrument Protocol -socp-t 4881/udp # SOCP Time Synchronization Protocol -socp-c 4882/udp # SOCP Control Protocol -wmlserver 4883/tcp # Meier-Phelps License Server -hivestor 4884/tcp # HiveStor Distributed File System -hivestor 4884/udp # HiveStor Distributed File System -abbs 4885/tcp # ABBS -abbs 4885/udp # ABBS -lyskom 4894/tcp # LysKOM Protocol A -lyskom 4894/udp # LysKOM Protocol A -radmin-port 4899/tcp # RAdmin Port -radmin-port 4899/udp # RAdmin Port -hfcs 4900/tcp # Hyper File Client/Server Database Engine -hfcs 4900/udp # Hyper File Client/Server Database Engine -flr_agent 4901/tcp # FileLocator Remote Search Agent -magiccontrol 4902/tcp # magicCONROL RF and Data Interface -lutap 4912/tcp # Technicolor LUT Access Protocol -lutcp 4913/tcp # LUTher Control Protocol -bones 4914/tcp # Bones Remote Control -bones 4914/udp # Bones Remote Control -frcs 4915/tcp # Fibics Remote Control Service -atsc-mh-ssc 4937/udp # ATSC-M/H Service Signaling Channel -eq-office-4940 4940/tcp # Equitrac Office -eq-office-4940 4940/udp # Equitrac Office -eq-office-4941 4941/tcp # Equitrac Office -eq-office-4941 4941/udp # Equitrac Office -eq-office-4942 4942/tcp # Equitrac Office -eq-office-4942 4942/udp # Equitrac Office -munin 4949/tcp # Munin Graphing Framework -munin 4949/udp # Munin Graphing Framework -sybasesrvmon 4950/tcp # Sybase Server Monitor -sybasesrvmon 4950/udp # Sybase Server Monitor -pwgwims 4951/tcp # PWG WIMS -pwgwims 4951/udp # PWG WIMS -sagxtsds 4952/tcp # SAG Directory Server -sagxtsds 4952/udp # SAG Directory Server -dbsyncarbiter 4953/tcp # Synchronization Arbiter -ccss-qmm 4969/tcp # CCSS QMessageMonitor -ccss-qmm 4969/udp # CCSS QMessageMonitor -ccss-qsm 4970/tcp # CCSS QSystemMonitor -ccss-qsm 4970/udp # CCSS QSystemMonitor -webyast 4984/tcp # WebYast -gerhcs 4985/tcp # GER HC Standard -mrip 4986/tcp # Model Railway Interface Program -mrip 4986/udp # Model Railway Interface Program -smar-se-port1 4987/tcp # SMAR Ethernet Port 1 -smar-se-port1 4987/udp # SMAR Ethernet Port 1 -smar-se-port2 4988/tcp # SMAR Ethernet Port 2 -smar-se-port2 4988/udp # SMAR Ethernet Port 2 -parallel 4989/tcp # Parallel for GAUSS (tm) -parallel 4989/udp # Parallel for GAUSS (tm) -busycal 4990/tcp # BusySync Calendar Synch. Protocol -busycal 4990/udp # BusySync Calendar Synch. Protocol -vrt 4991/tcp # VITA Radio Transport -vrt 4991/udp # VITA Radio Transport -hfcs-manager 4999/tcp # Hyper File Client/Server Database Engine Manager -hfcs-manager 4999/udp # Hyper File Client/Server Database Engine Manager -commplex-main 5000/tcp # -commplex-main 5000/udp # -commplex-link 5001/tcp # -commplex-link 5001/udp # -fmpro-internal 5003/tcp # FileMaker, Inc. - Proprietary transport -fmpro-internal 5003/udp # FileMaker, Inc. - Proprietary name binding -avt-profile-1 5004/tcp # RTP media data [RFC 3551, RFC 4571] -avt-profile-1 5004/udp # RTP media data [RFC 3551] -avt-profile-1 5004/dccp # RTP media data [RFC 3551, RFC-ietf-dccp-rtp-07.txt] -avt-profile-2 5005/tcp # RTP control protocol [RFC 3551, RFC 4571] -avt-profile-2 5005/udp # RTP control protocol [RFC 3551] -avt-profile-2 5005/dccp # RTP control protocol [RFC 3551, RFC-ietf-dccp-rtp-07.txt] -wsm-server 5006/tcp # wsm server -wsm-server 5006/udp # wsm server -wsm-server-ssl 5007/tcp # wsm server ssl -wsm-server-ssl 5007/udp # wsm server ssl -synapsis-edge 5008/tcp # Synapsis EDGE -synapsis-edge 5008/udp # Synapsis EDGE -winfs 5009/tcp # Microsoft Windows Filesystem -winfs 5009/udp # Microsoft Windows Filesystem -telelpathstart 5010/tcp # TelepathStart -telelpathstart 5010/udp # TelepathStart -telelpathattack 5011/tcp # TelepathAttack -telelpathattack 5011/udp # TelepathAttack -nsp 5012/tcp # NetOnTap Service -nsp 5012/udp # NetOnTap Service -fmpro-v6 5013/tcp # FileMaker, Inc. - Proprietary transport -fmpro-v6 5013/udp # FileMaker, Inc. - Proprietary transport -onpsocket 5014/udp # Overlay Network Protocol -fmwp 5015/tcp # FileMaker, Inc. - Web publishing -zenginkyo-1 5020/tcp # zenginkyo-1 -zenginkyo-1 5020/udp # zenginkyo-1 -zenginkyo-2 5021/tcp # zenginkyo-2 -zenginkyo-2 5021/udp # zenginkyo-2 -mice 5022/tcp # mice server -mice 5022/udp # mice server -htuilsrv 5023/tcp # Htuil Server for PLD2 -htuilsrv 5023/udp # Htuil Server for PLD2 -scpi-telnet 5024/tcp # SCPI-TELNET -scpi-telnet 5024/udp # SCPI-TELNET -scpi-raw 5025/tcp # SCPI-RAW -scpi-raw 5025/udp # SCPI-RAW -strexec-d 5026/tcp # Storix I/O daemon (data) -strexec-d 5026/udp # Storix I/O daemon (data) -strexec-s 5027/tcp # Storix I/O daemon (stat) -strexec-s 5027/udp # Storix I/O daemon (stat) -qvr 5028/tcp # Quiqum Virtual Relais -infobright 5029/tcp # Infobright Database Server -infobright 5029/udp # Infobright Database Server -surfpass 5030/tcp # SurfPass -surfpass 5030/udp # SurfPass -dmp 5031/udp # Direct Message Protocol -asnaacceler8db 5042/tcp # asnaacceler8db -asnaacceler8db 5042/udp # asnaacceler8db -swxadmin 5043/tcp # ShopWorX Administration -swxadmin 5043/udp # ShopWorX Administration -lxi-evntsvc 5044/tcp # LXI Event Service -lxi-evntsvc 5044/udp # LXI Event Service -osp 5045/tcp # Open Settlement Protocol -ivocalize 5049/tcp # iVocalize Web Conference -ivocalize 5049/udp # iVocalize Web Conference -mmcc 5050/tcp # multimedia conference control tool -mmcc 5050/udp # multimedia conference control tool -ita-agent 5051/tcp # ITA Agent -ita-agent 5051/udp # ITA Agent -ita-manager 5052/tcp # ITA Manager -ita-manager 5052/udp # ITA Manager -rlm 5053/tcp # RLM License Server -rlm-admin 5054/tcp # RLM administrative interface -unot 5055/tcp # UNOT -unot 5055/udp # UNOT -intecom-ps1 5056/tcp # Intecom Pointspan 1 -intecom-ps1 5056/udp # Intecom Pointspan 1 -intecom-ps2 5057/tcp # Intecom Pointspan 2 -intecom-ps2 5057/udp # Intecom Pointspan 2 -locus-disc 5058/udp # Locus Discovery -sds 5059/tcp # SIP Directory Services -sds 5059/udp # SIP Directory Services -sip 5060/tcp # SIP -sip 5060/udp # SIP -sip-tls 5061/tcp # SIP-TLS -sip-tls 5061/udp # SIP-TLS -na-localise 5062/tcp # Localisation access -na-localise 5062/udp # Localisation access -csrpc 5063/tcp # centrify secure RPC -ca-1 5064/tcp # Channel Access 1 -ca-1 5064/udp # Channel Access 1 -ca-2 5065/tcp # Channel Access 2 -ca-2 5065/udp # Channel Access 2 -stanag-5066 5066/tcp # STANAG-5066-SUBNET-INTF -stanag-5066 5066/udp # STANAG-5066-SUBNET-INTF -authentx 5067/tcp # Authentx Service -authentx 5067/udp # Authentx Service -bitforestsrv 5068/tcp # Bitforest Data Service -i-net-2000-npr 5069/tcp # I/Net 2000-NPR -i-net-2000-npr 5069/udp # I/Net 2000-NPR -vtsas 5070/tcp # VersaTrans Server Agent Service -vtsas 5070/udp # VersaTrans Server Agent Service -powerschool 5071/tcp # PowerSchool -powerschool 5071/udp # PowerSchool -ayiya 5072/tcp # Anything In Anything -ayiya 5072/udp # Anything In Anything -tag-pm 5073/tcp # Advantage Group Port Mgr -tag-pm 5073/udp # Advantage Group Port Mgr -alesquery 5074/tcp # ALES Query -alesquery 5074/udp # ALES Query -cp-spxrpts 5079/udp # Cambridge Pixel SPx Reports -onscreen 5080/tcp # OnScreen Data Collection Service -onscreen 5080/udp # OnScreen Data Collection Service -sdl-ets 5081/tcp # SDL - Ent Trans Server -sdl-ets 5081/udp # SDL - Ent Trans Server -qcp 5082/tcp # Qpur Communication Protocol -qcp 5082/udp # Qpur Communication Protocol -qfp 5083/tcp # Qpur File Protocol -qfp 5083/udp # Qpur File Protocol -llrp 5084/tcp # EPCglobal Low-Level Reader Protocol -llrp 5084/udp # EPCglobal Low-Level Reader Protocol -encrypted-llrp 5085/tcp # EPCglobal Encrypted LLRP -encrypted-llrp 5085/udp # EPCglobal Encrypted LLRP -car 5090/sctp # Candidate AR -cxtp 5091/sctp # Context Transfer Protocol -magpie 5092/udp # Magpie Binary -sentinel-lm 5093/tcp # Sentinel LM -sentinel-lm 5093/udp # Sentinel LM -hart-ip 5094/tcp # HART-IP -hart-ip 5094/udp # HART-IP -sentlm-srv2srv 5099/tcp # SentLM Srv2Srv -sentlm-srv2srv 5099/udp # SentLM Srv2Srv -socalia 5100/tcp # Socalia service mux -socalia 5100/udp # Socalia service mux -talarian-tcp 5101/tcp # Talarian_TCP -talarian-udp 5101/udp # Talarian_UDP -oms-nonsecure 5102/tcp # Oracle OMS non-secure -oms-nonsecure 5102/udp # Oracle OMS non-secure -taep-as-svc 5111/tcp # TAEP AS service -taep-as-svc 5111/udp # TAEP AS service -pm-cmdsvr 5112/tcp # PeerMe Msg Cmd Service -pm-cmdsvr 5112/udp # PeerMe Msg Cmd Service -ni-conf 5113/tcp # NI Device Configuration Protocol -ni-dc 5113/udp # NI Device Discovery and Configuration Protocol -ev-services 5114/tcp # Enterprise Vault Services -autobuild 5115/tcp # Symantec Autobuild Service -emb-proj-cmd 5116/udp # EPSON Projecter Image Transfer -gradecam 5117/tcp # GradeCam Image Processing -nbt-pc 5133/tcp # Policy Commander -nbt-pc 5133/udp # Policy Commander -ppactivation 5134/tcp # PP ActivationServer -erp-scale 5135/tcp # ERP-Scale -minotaur-sa 5136/udp # Minotaur SA -ctsd 5137/tcp # MyCTS server port -ctsd 5137/udp # MyCTS server port -rmonitor_secure 5145/tcp # RMONITOR SECURE -rmonitor_secure 5145/udp # RMONITOR SECURE -social-alarm 5146/tcp # Social Alarm Service -atmp 5150/tcp # Ascend Tunnel Management Protocol -atmp 5150/udp # Ascend Tunnel Management Protocol -esri_sde 5151/tcp # ESRI SDE Instance -esri_sde 5151/udp # ESRI SDE Remote Start -sde-discovery 5152/tcp # ESRI SDE Instance Discovery -sde-discovery 5152/udp # ESRI SDE Instance Discovery -toruxserver 5153/tcp # ToruX Game Server -bzflag 5154/tcp # BZFlag game server -bzflag 5154/udp # BZFlag game server -asctrl-agent 5155/tcp # Oracle asControl Agent -asctrl-agent 5155/udp # Oracle asControl Agent -snmpssh 5161/tcp # SNMP over SSH Transport Model -snmpssh-trap 5162/tcp # SNMP Notification over SSH Transport Model -sbackup 5163/tcp # Shadow Backup -vpa 5164/tcp # Virtual Protocol Adapter -vpa-disc 5164/udp # Virtual Protocol Adapter Discovery -ife_icorp 5165/tcp # ife_1corp -ife_icorp 5165/udp # ife_1corp -winpcs 5166/tcp # WinPCS Service Connection -winpcs 5166/udp # WinPCS Service Connection -scte104 5167/tcp # SCTE104 Connection -scte104 5167/udp # SCTE104 Connection -scte30 5168/tcp # SCTE30 Connection -scte30 5168/udp # SCTE30 Connection -aol 5190/tcp # America-Online -aol 5190/udp # America-Online -aol-1 5191/tcp # AmericaOnline1 -aol-1 5191/udp # AmericaOnline1 -aol-2 5192/tcp # AmericaOnline2 -aol-2 5192/udp # AmericaOnline2 -aol-3 5193/tcp # AmericaOnline3 -aol-3 5193/udp # AmericaOnline3 -cpscomm 5194/tcp # CipherPoint Config Service -targus-getdata 5200/tcp # TARGUS GetData -targus-getdata 5200/udp # TARGUS GetData -targus-getdata1 5201/tcp # TARGUS GetData 1 -targus-getdata1 5201/udp # TARGUS GetData 1 -targus-getdata2 5202/tcp # TARGUS GetData 2 -targus-getdata2 5202/udp # TARGUS GetData 2 -targus-getdata3 5203/tcp # TARGUS GetData 3 -targus-getdata3 5203/udp # TARGUS GetData 3 -xmpp-client 5222/tcp # XMPP Client Connection -xmpp-client 5222/udp # XMPP Client Connection -hpvirtgrp 5223/tcp # HP Virtual Machine Group Management -hpvirtgrp 5223/udp # HP Virtual Machine Group Management -hpvirtctrl 5224/tcp # HP Virtual Machine Console Operations -hpvirtctrl 5224/udp # HP Virtual Machine Console Operations -hp-server 5225/tcp # HP Server -hp-server 5225/udp # HP Server -hp-status 5226/tcp # HP Status -hp-status 5226/udp # HP Status -perfd 5227/tcp # HP System Performance Metric Service -perfd 5227/udp # HP System Performance Metric Service -hpvroom 5228/tcp # HP Virtual Room Service -eenet 5234/tcp # EEnet communications -eenet 5234/udp # EEnet communications -galaxy-network 5235/tcp # Galaxy Network Service -galaxy-network 5235/udp # Galaxy Network Service -padl2sim 5236/tcp # -padl2sim 5236/udp # -mnet-discovery 5237/tcp # m-net discovery -mnet-discovery 5237/udp # m-net discovery -downtools 5245/tcp # DownTools Control Protocol -downtools-disc 5245/udp # DownTools Discovery Protocol -capwap-control 5246/udp # CAPWAP Control Protocol -capwap-data 5247/udp # CAPWAP Data Protocol -caacws 5248/tcp # CA Access Control Web Service -caacws 5248/udp # CA Access Control Web Service -caaclang2 5249/tcp # CA AC Lang Service -caaclang2 5249/udp # CA AC Lang Service -soagateway 5250/tcp # soaGateway -soagateway 5250/udp # soaGateway -caevms 5251/tcp # CA eTrust VM Service -caevms 5251/udp # CA eTrust VM Service -movaz-ssc 5252/tcp # Movaz SSC -movaz-ssc 5252/udp # Movaz SSC -3com-njack-1 5264/tcp # 3Com Network Jack Port 1 -3com-njack-1 5264/udp # 3Com Network Jack Port 1 -3com-njack-2 5265/tcp # 3Com Network Jack Port 2 -3com-njack-2 5265/udp # 3Com Network Jack Port 2 -xmpp-server 5269/tcp # XMPP Server Connection -xmpp-server 5269/udp # XMPP Server Connection -xmp 5270/tcp # Cartographer XMP -xmp 5270/udp # Cartographer XMP -pk 5272/tcp # PK -pk 5272/udp # PK -xmpp-bosh 5280/tcp # Bidirectional-streams Over Synchronous HTTP (BOSH) -transmit-port 5282/tcp # Marimba Transmitter Port -transmit-port 5282/udp # Marimba Transmitter Port -presence 5298/tcp # XMPP Link-Local Messaging -presence 5298/udp # XMPP Link-Local Messaging -nlg-data 5299/tcp # NLG Data Service -nlg-data 5299/udp # NLG Data Service -hacl-hb 5300/tcp # HA cluster heartbeat -hacl-hb 5300/udp # HA cluster heartbeat -hacl-gs 5301/tcp # HA cluster general services -hacl-gs 5301/udp # HA cluster general services -hacl-cfg 5302/tcp # HA cluster configuration -hacl-cfg 5302/udp # HA cluster configuration -hacl-probe 5303/tcp # HA cluster probing -hacl-probe 5303/udp # HA cluster probing -hacl-local 5304/tcp # HA Cluster Commands -hacl-local 5304/udp # HA Cluster Commands -hacl-test 5305/tcp # HA Cluster Test -hacl-test 5305/udp # HA Cluster Test -sun-mc-grp 5306/tcp # Sun MC Group -sun-mc-grp 5306/udp # Sun MC Group -sco-aip 5307/tcp # SCO AIP -sco-aip 5307/udp # SCO AIP -jprinter 5309/tcp # J Printer -jprinter 5309/udp # J Printer -outlaws 5310/tcp # Outlaws -outlaws 5310/udp # Outlaws -permabit-cs 5312/tcp # Permabit Client-Server -permabit-cs 5312/udp # Permabit Client-Server -rrdp 5313/tcp # Real-time & Reliable Data -rrdp 5313/udp # Real-time & Reliable Data -opalis-rbt-ipc 5314/tcp # opalis-rbt-ipc -opalis-rbt-ipc 5314/udp # opalis-rbt-ipc -hacl-poll 5315/tcp # HA Cluster UDP Polling -hacl-poll 5315/udp # HA Cluster UDP Polling -hpdevms 5316/tcp # HP Device Monitor Service -hpdevms 5316/udp # HP Device Monitor Service -bsfserver-zn 5320/tcp # Webservices-based Zn interface of BSF -bsfsvr-zn-ssl 5321/tcp # Webservices-based Zn interface of BSF over SSL -kfserver 5343/tcp # Sculptor Database Server -kfserver 5343/udp # Sculptor Database Server -xkotodrcp 5344/tcp # xkoto DRCP -xkotodrcp 5344/udp # xkoto DRCP -stuns 5349/tcp turns # STUN over TLS, TURN over TLS -stuns 5349/udp turns # Reserved for a future enhancement of STUN, Reserved for a future enhancement of TURN -nat-pmp-status 5350/tcp # NAT-PMP Status Announcements -nat-pmp-status 5350/udp # NAT-PMP Status Announcements -nat-pmp 5351/tcp # NAT Port Mapping Protocol -nat-pmp 5351/udp # NAT Port Mapping Protocol -dns-llq 5352/tcp # DNS Long-Lived Queries -dns-llq 5352/udp # DNS Long-Lived Queries -mdns 5353/tcp # Multicast DNS -mdns 5353/udp # Multicast DNS -mdnsresponder 5354/tcp noclog # Multicast DNS Responder IPC -mdnsresponder 5354/udp noclog # Multicast DNS Responder IPC -ms-smlbiz 5356/tcp # Microsoft Small Business -ms-smlbiz 5356/udp # Microsoft Small Business -wsdapi 5357/tcp # Web Services for Devices -wsdapi 5357/udp # Web Services for Devices -wsdapi-s 5358/tcp # WS for Devices Secured -wsdapi-s 5358/udp # WS for Devices Secured -ms-alerter 5359/tcp # Microsoft Alerter -ms-alerter 5359/udp # Microsoft Alerter -ms-sideshow 5360/tcp # Protocol for Windows SideShow -ms-sideshow 5360/udp # Protocol for Windows SideShow -ms-s-sideshow 5361/tcp # Secure Protocol for Windows SideShow -ms-s-sideshow 5361/udp # Secure Protocol for Windows SideShow -serverwsd2 5362/tcp # Microsoft Windows Server WSD2 Service -serverwsd2 5362/udp # Microsoft Windows Server WSD2 Service -net-projection 5363/tcp # Windows Network Projection -net-projection 5363/udp # Windows Network Projection -stresstester 5397/tcp # StressTester(tm) Injector -stresstester 5397/udp # StressTester(tm) Injector -elektron-admin 5398/tcp # Elektron Administration -elektron-admin 5398/udp # Elektron Administration -securitychase 5399/tcp # SecurityChase -securitychase 5399/udp # SecurityChase -excerpt 5400/tcp # Excerpt Search -excerpt 5400/udp # Excerpt Search -excerpts 5401/tcp # Excerpt Search Secure -excerpts 5401/udp # Excerpt Search Secure -hpoms-ci-lstn 5403/tcp # HPOMS-CI-LSTN -hpoms-ci-lstn 5403/udp # HPOMS-CI-LSTN -hpoms-dps-lstn 5404/tcp # HPOMS-DPS-LSTN -hpoms-dps-lstn 5404/udp # HPOMS-DPS-LSTN -netsupport 5405/tcp # NetSupport -netsupport 5405/udp # NetSupport -systemics-sox 5406/tcp # Systemics Sox -systemics-sox 5406/udp # Systemics Sox -foresyte-clear 5407/tcp # Foresyte-Clear -foresyte-clear 5407/udp # Foresyte-Clear -foresyte-sec 5408/tcp # Foresyte-Sec -foresyte-sec 5408/udp # Foresyte-Sec -salient-dtasrv 5409/tcp # Salient Data Server -salient-dtasrv 5409/udp # Salient Data Server -salient-usrmgr 5410/tcp # Salient User Manager -salient-usrmgr 5410/udp # Salient User Manager -actnet 5411/tcp # ActNet -actnet 5411/udp # ActNet -continuus 5412/tcp # Continuus -continuus 5412/udp # Continuus -wwiotalk 5413/tcp # WWIOTALK -wwiotalk 5413/udp # WWIOTALK -statusd 5414/tcp # StatusD -statusd 5414/udp # StatusD -ns-server 5415/tcp # NS Server -ns-server 5415/udp # NS Server -sns-gateway 5416/tcp # SNS Gateway -sns-gateway 5416/udp # SNS Gateway -sns-agent 5417/tcp # SNS Agent -sns-agent 5417/udp # SNS Agent -mcntp 5418/tcp # MCNTP -mcntp 5418/udp # MCNTP -dj-ice 5419/tcp # DJ-ICE -dj-ice 5419/udp # DJ-ICE -cylink-c 5420/tcp # Cylink-C -cylink-c 5420/udp # Cylink-C -netsupport2 5421/tcp # Net Support 2 -netsupport2 5421/udp # Net Support 2 -salient-mux 5422/tcp # Salient MUX -salient-mux 5422/udp # Salient MUX -virtualuser 5423/tcp # VIRTUALUSER -virtualuser 5423/udp # VIRTUALUSER -beyond-remote 5424/tcp # Beyond Remote -beyond-remote 5424/udp # Beyond Remote -br-channel 5425/tcp # Beyond Remote Command Channel -br-channel 5425/udp # Beyond Remote Command Channel -devbasic 5426/tcp # DEVBASIC -devbasic 5426/udp # DEVBASIC -sco-peer-tta 5427/tcp # SCO-PEER-TTA -sco-peer-tta 5427/udp # SCO-PEER-TTA -telaconsole 5428/tcp # TELACONSOLE -telaconsole 5428/udp # TELACONSOLE -base 5429/tcp # Billing and Accounting System Exchange -base 5429/udp # Billing and Accounting System Exchange -radec-corp 5430/tcp # RADEC CORP -radec-corp 5430/udp # RADEC CORP -park-agent 5431/tcp # PARK AGENT -park-agent 5431/udp # PARK AGENT -pyrrho 5433/tcp # Pyrrho DBMS -pyrrho 5433/udp # Pyrrho DBMS -sgi-arrayd 5434/tcp # SGI Array Services Daemon -sgi-arrayd 5434/udp # SGI Array Services Daemon -sceanics 5435/tcp # SCEANICS situation and action notification -sceanics 5435/udp # SCEANICS situation and action notification -spss 5443/tcp # Pearson HTTPS -spss 5443/udp # Pearson HTTPS -surebox 5453/tcp # SureBox -surebox 5453/udp # SureBox -apc-5454 5454/tcp # APC 5454 -apc-5454 5454/udp # APC 5454 -apc-5455 5455/tcp # APC 5455 -apc-5455 5455/udp # APC 5455 -apc-5456 5456/tcp # APC 5456 -apc-5456 5456/udp # APC 5456 -silkmeter 5461/tcp # SILKMETER -silkmeter 5461/udp # SILKMETER -ttl-publisher 5462/tcp # TTL Publisher -ttl-publisher 5462/udp # TTL Publisher -ttlpriceproxy 5463/tcp # TTL Price Proxy -ttlpriceproxy 5463/udp # TTL Price Proxy -quailnet 5464/tcp # Quail Networks Object Broker -quailnet 5464/udp # Quail Networks Object Broker -netops-broker 5465/tcp # NETOPS-BROKER -netops-broker 5465/udp # NETOPS-BROKER -fcp-addr-srvr1 5500/tcp # fcp-addr-srvr1 -fcp-addr-srvr1 5500/udp # fcp-addr-srvr1 -fcp-addr-srvr2 5501/tcp # fcp-addr-srvr2 -fcp-addr-srvr2 5501/udp # fcp-addr-srvr2 -fcp-srvr-inst1 5502/tcp # fcp-srvr-inst1 -fcp-srvr-inst1 5502/udp # fcp-srvr-inst1 -fcp-srvr-inst2 5503/tcp # fcp-srvr-inst2 -fcp-srvr-inst2 5503/udp # fcp-srvr-inst2 -fcp-cics-gw1 5504/tcp # fcp-cics-gw1 -fcp-cics-gw1 5504/udp # fcp-cics-gw1 -checkoutdb 5505/tcp # Checkout Database -checkoutdb 5505/udp # Checkout Database -sgi-eventmond 5553/tcp # SGI Eventmond Port -sgi-eventmond 5553/udp # SGI Eventmond Port -sgi-esphttp 5554/tcp # SGI ESP HTTP -sgi-esphttp 5554/udp # SGI ESP HTTP -personal-agent 5555/tcp # Personal Agent -personal-agent 5555/udp # Personal Agent -freeciv 5556/tcp # Freeciv gameplay -freeciv 5556/udp # Freeciv gameplay -westec-connect 5566/tcp # Westec Connect -m-oap 5567/tcp # Multicast Object Access Protocol -m-oap 5567/udp # Multicast Object Access Protocol -sdt 5568/tcp # Session Data Transport Multicast -sdt 5568/udp # Session Data Transport Multicast -sdmmp 5573/tcp # SAS Domain Management Messaging Protocol -sdmmp 5573/udp # SAS Domain Management Messaging Protocol -lsi-bobcat 5574/tcp # SAS IO Forwarding -fdtracks 5579/tcp # FleetDisplay Tracking Service -tmosms0 5580/tcp # T-Mobile SMS Protocol Message 0 -tmosms0 5580/udp # T-Mobile SMS Protocol Message 0 -tmosms1 5581/tcp # T-Mobile SMS Protocol Message 1 -tmosms1 5581/udp # T-Mobile SMS Protocol Message 1 -fac-restore 5582/tcp # T-Mobile SMS Protocol Message 3 -fac-restore 5582/udp # T-Mobile SMS Protocol Message 3 -tmo-icon-sync 5583/tcp # T-Mobile SMS Protocol Message 2 -tmo-icon-sync 5583/udp # T-Mobile SMS Protocol Message 2 -bis-web 5584/tcp # BeInSync-Web -bis-web 5584/udp # BeInSync-Web -bis-sync 5585/tcp # BeInSync-sync -bis-sync 5585/udp # BeInSync-sync -ininmessaging 5597/tcp # inin secure messaging -ininmessaging 5597/udp # inin secure messaging -mctfeed 5598/tcp # MCT Market Data Feed -mctfeed 5598/udp # MCT Market Data Feed -esinstall 5599/tcp # Enterprise Security Remote Install -esinstall 5599/udp # Enterprise Security Remote Install -esmmanager 5600/tcp # Enterprise Security Manager -esmmanager 5600/udp # Enterprise Security Manager -esmagent 5601/tcp # Enterprise Security Agent -esmagent 5601/udp # Enterprise Security Agent -a1-msc 5602/tcp # A1-MSC -a1-msc 5602/udp # A1-MSC -a1-bs 5603/tcp # A1-BS -a1-bs 5603/udp # A1-BS -a3-sdunode 5604/tcp # A3-SDUNode -a3-sdunode 5604/udp # A3-SDUNode -a4-sdunode 5605/tcp # A4-SDUNode -a4-sdunode 5605/udp # A4-SDUNode -ninaf 5627/tcp # Node Initiated Network Association Forma -ninaf 5627/udp # Node Initiated Network Association Forma -htrust 5628/tcp # HTrust API -htrust 5628/udp # HTrust API -symantec-sfdb 5629/tcp # Symantec Storage Foundation for Database -symantec-sfdb 5629/udp # Symantec Storage Foundation for Database -precise-comm 5630/tcp # PreciseCommunication -precise-comm 5630/udp # PreciseCommunication -pcanywheredata 5631/tcp # pcANYWHEREdata -pcanywheredata 5631/udp # pcANYWHEREdata -pcanywherestat 5632/tcp # pcANYWHEREstat -pcanywherestat 5632/udp # pcANYWHEREstat -beorl 5633/tcp # BE Operations Request Listener -beorl 5633/udp # BE Operations Request Listener -xprtld 5634/tcp # SF Message Service -xprtld 5634/udp # SF Message Service -sfmsso 5635/tcp # SFM Authentication Subsystem -sfm-db-server 5636/tcp # SFMdb - SFM DB server -amqps 5671/tcp # amqp protocol over TLS/SSL -amqps 5671/udp # amqp protocol over TLS/SSL -amqp 5672/tcp # AMQP -amqp 5672/udp # AMQP -amqp 5672/sctp # AMQP -jms 5673/tcp # JACL Message Server -jms 5673/udp # JACL Message Server -hyperscsi-port 5674/tcp # HyperSCSI Port -hyperscsi-port 5674/udp # HyperSCSI Port -v5ua 5675/tcp # V5UA application port -v5ua 5675/udp # V5UA application port -v5ua 5675/sctp # V5UA application port -raadmin 5676/tcp # RA Administration -raadmin 5676/udp # RA Administration -questdb2-lnchr 5677/tcp # Quest Central DB2 Launchr -questdb2-lnchr 5677/udp # Quest Central DB2 Launchr -rrac 5678/tcp # Remote Replication Agent Connection -rrac 5678/udp # Remote Replication Agent Connection -dccm 5679/tcp # Direct Cable Connect Manager -dccm 5679/udp # Direct Cable Connect Manager -auriga-router 5680/udp # Auriga Router Service -ncxcp 5681/tcp # Net-coneX Control Protocol -ncxcp 5681/udp # Net-coneX Control Protocol -ggz 5688/tcp # GGZ Gaming Zone -ggz 5688/udp # GGZ Gaming Zone -qmvideo 5689/tcp # QM video network management protocol -qmvideo 5689/udp # QM video network management protocol -proshareaudio 5713/tcp # proshare conf audio -proshareaudio 5713/udp # proshare conf audio -prosharevideo 5714/tcp # proshare conf video -prosharevideo 5714/udp # proshare conf video -prosharedata 5715/tcp # proshare conf data -prosharedata 5715/udp # proshare conf data -prosharerequest 5716/tcp # proshare conf request -prosharerequest 5716/udp # proshare conf request -prosharenotify 5717/tcp # proshare conf notify -prosharenotify 5717/udp # proshare conf notify -dpm 5718/tcp # DPM Communication Server -dpm 5718/udp # DPM Communication Server -dpm-agent 5719/tcp # DPM Agent Coordinator -dpm-agent 5719/udp # DPM Agent Coordinator -ms-licensing 5720/tcp # MS-Licensing -ms-licensing 5720/udp # MS-Licensing -dtpt 5721/tcp # Desktop Passthru Service -dtpt 5721/udp # Desktop Passthru Service -msdfsr 5722/tcp # Microsoft DFS Replication Service -msdfsr 5722/udp # Microsoft DFS Replication Service -omhs 5723/tcp # Operations Manager - Health Service -omhs 5723/udp # Operations Manager - Health Service -omsdk 5724/tcp # Operations Manager - SDK Service -omsdk 5724/udp # Operations Manager - SDK Service -ms-ilm 5725/tcp # Microsoft Identity Lifecycle Manager -ms-ilm-sts 5726/tcp # Microsoft Lifecycle Manager Secure Token Service -asgenf 5727/tcp # ASG Event Notification Framework -io-dist-data 5728/tcp # Dist. I/O Comm. Service Data and Control -io-dist-group 5728/udp # Dist. I/O Comm. Service Group Membership -openmail 5729/tcp # Openmail User Agent Layer -openmail 5729/udp # Openmail User Agent Layer -unieng 5730/tcp # Steltor's calendar access -unieng 5730/udp # Steltor's calendar access -ida-discover1 5741/tcp # IDA Discover Port 1 -ida-discover1 5741/udp # IDA Discover Port 1 -ida-discover2 5742/tcp # IDA Discover Port 2 -ida-discover2 5742/udp # IDA Discover Port 2 -watchdoc-pod 5743/tcp # Watchdoc NetPOD Protocol -watchdoc-pod 5743/udp # Watchdoc NetPOD Protocol -watchdoc 5744/tcp # Watchdoc Server -watchdoc 5744/udp # Watchdoc Server -fcopy-server 5745/tcp # fcopy-server -fcopy-server 5745/udp # fcopy-server -fcopys-server 5746/tcp # fcopys-server -fcopys-server 5746/udp # fcopys-server -tunatic 5747/tcp # Wildbits Tunatic -tunatic 5747/udp # Wildbits Tunatic -tunalyzer 5748/tcp # Wildbits Tunalyzer -tunalyzer 5748/udp # Wildbits Tunalyzer -rscd 5750/tcp # Bladelogic Agent Service -rscd 5750/udp # Bladelogic Agent Service -openmailg 5755/tcp # OpenMail Desk Gateway server -openmailg 5755/udp # OpenMail Desk Gateway server -x500ms 5757/tcp # OpenMail X.500 Directory Server -x500ms 5757/udp # OpenMail X.500 Directory Server -openmailns 5766/tcp # OpenMail NewMail Server -openmailns 5766/udp # OpenMail NewMail Server -s-openmail 5767/tcp # OpenMail Suer Agent Layer (Secure) -s-openmail 5767/udp # OpenMail Suer Agent Layer (Secure) -openmailpxy 5768/tcp # OpenMail CMTS Server -openmailpxy 5768/udp # OpenMail CMTS Server -spramsca 5769/tcp # x509solutions Internal CA -spramsca 5769/udp # x509solutions Internal CA -spramsd 5770/tcp # x509solutions Secure Data -spramsd 5770/udp # x509solutions Secure Data -netagent 5771/tcp # NetAgent -netagent 5771/udp # NetAgent -dali-port 5777/tcp # DALI Port -dali-port 5777/udp # DALI Port -vts-rpc 5780/tcp # Visual Tag System RPC -3par-evts 5781/tcp # 3PAR Event Reporting Service -3par-evts 5781/udp # 3PAR Event Reporting Service -3par-mgmt 5782/tcp # 3PAR Management Service -3par-mgmt 5782/udp # 3PAR Management Service -3par-mgmt-ssl 5783/tcp # 3PAR Management Service with SSL -3par-mgmt-ssl 5783/udp # 3PAR Management Service with SSL -ibar 5784/udp # Cisco Interbox Application Redundancy -3par-rcopy 5785/tcp # 3PAR Inform Remote Copy -3par-rcopy 5785/udp # 3PAR Inform Remote Copy -cisco-redu 5786/udp # redundancy notification -xtreamx 5793/tcp # XtreamX Supervised Peer message -xtreamx 5793/udp # XtreamX Supervised Peer message -icmpd 5813/tcp # ICMPD -icmpd 5813/udp # ICMPD -spt-automation 5814/tcp # Support Automation -spt-automation 5814/udp # Support Automation -wherehoo 5859/tcp # WHEREHOO -wherehoo 5859/udp # WHEREHOO -ppsuitemsg 5863/tcp # PlanetPress Suite Messeng -ppsuitemsg 5863/udp # PlanetPress Suite Messeng -vnc-server 5900/tcp # VNC Server -vnc-server 5900/udp # VNC Server -cm 5910/tcp # Context Management -cm 5910/udp # Context Management -cpdlc 5911/tcp # Controller Pilot Data Link Communication -cpdlc 5911/udp # Controller Pilot Data Link Communication -fis 5912/tcp # Flight Information Services -fis 5912/udp # Flight Information Services -ads-c 5913/tcp # Automatic Dependent Surveillance -ads-c 5913/udp # Automatic Dependent Surveillance -indy 5963/tcp # Indy Application Server -indy 5963/udp # Indy Application Server -mppolicy-v5 5968/tcp # mppolicy-v5 -mppolicy-v5 5968/udp # mppolicy-v5 -mppolicy-mgr 5969/tcp # mppolicy-mgr -mppolicy-mgr 5969/udp # mppolicy-mgr -couchdb 5984/tcp # CouchDB -couchdb 5984/udp # CouchDB -wsman 5985/tcp # WBEM WS-Management HTTP -wsman 5985/udp # WBEM WS-Management HTTP -wsmans 5986/tcp # WBEM WS-Management HTTP over TLS/SSL -wsmans 5986/udp # WBEM WS-Management HTTP over TLS/SSL -wbem-rmi 5987/tcp # WBEM RMI -wbem-rmi 5987/udp # WBEM RMI -wbem-http 5988/tcp # WBEM CIM-XML (HTTP) -wbem-http 5988/udp # WBEM CIM-XML (HTTP) -wbem-https 5989/tcp # WBEM CIM-XML (HTTPS) -wbem-https 5989/udp # WBEM CIM-XML (HTTPS) -wbem-exp-https 5990/tcp # WBEM Export HTTPS -wbem-exp-https 5990/udp # WBEM Export HTTPS -nuxsl 5991/tcp # NUXSL -nuxsl 5991/udp # NUXSL -consul-insight 5992/tcp # Consul InSight Security -consul-insight 5992/udp # Consul InSight Security -ndl-ahp-svc 6064/tcp # NDL-AHP-SVC -ndl-ahp-svc 6064/udp # NDL-AHP-SVC -winpharaoh 6065/tcp # WinPharaoh -winpharaoh 6065/udp # WinPharaoh -ewctsp 6066/tcp # EWCTSP -ewctsp 6066/udp # EWCTSP -gsmp 6068/tcp # GSMP -gsmp 6068/udp # GSMP -trip 6069/tcp # TRIP -trip 6069/udp # TRIP -messageasap 6070/tcp # Messageasap -messageasap 6070/udp # Messageasap -ssdtp 6071/tcp # SSDTP -ssdtp 6071/udp # SSDTP -diagnose-proc 6072/tcp # DIAGNOSE-PROC -diagnose-proc 6072/udp # DIAGNOSE-PROC -directplay8 6073/tcp # DirectPlay8 -directplay8 6073/udp # DirectPlay8 -max 6074/tcp # Microsoft Max -max 6074/udp # Microsoft Max -dpm-acm 6075/tcp # Microsoft DPM Access Control Manager -p2p-sip 6084/tcp # Peer to Peer Infrastructure Protocol -konspire2b 6085/tcp # konspire2b p2p network -konspire2b 6085/udp # konspire2b p2p network -pdtp 6086/tcp # PDTP P2P -pdtp 6086/udp # PDTP P2P -ldss 6087/tcp # Local Download Sharing Service -ldss 6087/udp # Local Download Sharing Service -raxa-mgmt 6099/tcp # RAXA Management -synchronet-db 6100/tcp # SynchroNet-db -synchronet-db 6100/udp # SynchroNet-db -synchronet-rtc 6101/tcp # SynchroNet-rtc -synchronet-rtc 6101/udp # SynchroNet-rtc -synchronet-upd 6102/tcp # SynchroNet-upd -synchronet-upd 6102/udp # SynchroNet-upd -rets 6103/tcp # RETS -rets 6103/udp # RETS -dbdb 6104/tcp # DBDB -dbdb 6104/udp # DBDB -primaserver 6105/tcp # Prima Server -primaserver 6105/udp # Prima Server -mpsserver 6106/tcp # MPS Server -mpsserver 6106/udp # MPS Server -etc-control 6107/tcp # ETC Control -etc-control 6107/udp # ETC Control -sercomm-scadmin 6108/tcp # Sercomm-SCAdmin -sercomm-scadmin 6108/udp # Sercomm-SCAdmin -globecast-id 6109/tcp # GLOBECAST-ID -globecast-id 6109/udp # GLOBECAST-ID -softcm 6110/tcp # HP SoftBench CM -softcm 6110/udp # HP SoftBench CM -spc 6111/tcp # HP SoftBench Sub-Process Control -spc 6111/udp # HP SoftBench Sub-Process Control -dtspcd 6112/tcp # dtspcd -dtspcd 6112/udp # dtspcd -dayliteserver 6113/tcp # Daylite Server -daylitetouch 6117/tcp # Daylite Touch Sync -bex-webadmin 6122/tcp # Backup Express Web Server -bex-webadmin 6122/udp # Backup Express Web Server -backup-express 6123/tcp # Backup Express -backup-express 6123/udp # Backup Express -pnbs 6124/tcp # Phlexible Network Backup Service -pnbs 6124/udp # Phlexible Network Backup Service -nbt-wol 6133/tcp # New Boundary Tech WOL -nbt-wol 6133/udp # New Boundary Tech WOL -pulsonixnls 6140/tcp # Pulsonix Network License Service -pulsonixnls 6140/udp # Pulsonix Network License Service -meta-corp 6141/tcp # Meta Corporation License Manager -meta-corp 6141/udp # Meta Corporation License Manager -aspentec-lm 6142/tcp # Aspen Technology License Manager -aspentec-lm 6142/udp # Aspen Technology License Manager -watershed-lm 6143/tcp # Watershed License Manager -watershed-lm 6143/udp # Watershed License Manager -statsci1-lm 6144/tcp # StatSci License Manager - 1 -statsci1-lm 6144/udp # StatSci License Manager - 1 -statsci2-lm 6145/tcp # StatSci License Manager - 2 -statsci2-lm 6145/udp # StatSci License Manager - 2 -lonewolf-lm 6146/tcp # Lone Wolf Systems License Manager -lonewolf-lm 6146/udp # Lone Wolf Systems License Manager -montage-lm 6147/tcp # Montage License Manager -montage-lm 6147/udp # Montage License Manager -tal-pod 6149/tcp # tal-pod -tal-pod 6149/udp # tal-pod -efb-aci 6159/tcp # EFB Application Control Interface -patrol-ism 6161/tcp # PATROL Internet Srv Mgr -patrol-ism 6161/udp # PATROL Internet Srv Mgr -patrol-coll 6162/tcp # PATROL Collector -patrol-coll 6162/udp # PATROL Collector -pscribe 6163/tcp # Precision Scribe Cnx Port -pscribe 6163/udp # Precision Scribe Cnx Port -lm-x 6200/tcp # LM-X License Manager by X-Formation -lm-x 6200/udp # LM-X License Manager by X-Formation -radmind 6222/tcp # Radmind Access Protocol -radmind 6222/udp # Radmind Access Protocol -jeol-nsdtp-1 6241/tcp # JEOL Network Services Data Transport Protocol 1 -jeol-nsddp-1 6241/udp # JEOL Network Services Dynamic Discovery Protocol 1 -jeol-nsdtp-2 6242/tcp # JEOL Network Services Data Transport Protocol 2 -jeol-nsddp-2 6242/udp # JEOL Network Services Dynamic Discovery Protocol 2 -jeol-nsdtp-3 6243/tcp # JEOL Network Services Data Transport Protocol 3 -jeol-nsddp-3 6243/udp # JEOL Network Services Dynamic Discovery Protocol 3 -jeol-nsdtp-4 6244/tcp # JEOL Network Services Data Transport Protocol 4 -jeol-nsddp-4 6244/udp # JEOL Network Services Dynamic Discovery Protocol 4 -tl1-raw-ssl 6251/tcp # TL1 Raw Over SSL/TLS -tl1-raw-ssl 6251/udp # TL1 Raw Over SSL/TLS -tl1-ssh 6252/tcp # TL1 over SSH -tl1-ssh 6252/udp # TL1 over SSH -crip 6253/tcp # CRIP -crip 6253/udp # CRIP -grid 6268/tcp # Grid Authentication -grid 6268/udp # Grid Authentication -grid-alt 6269/tcp # Grid Authentication Alt -grid-alt 6269/udp # Grid Authentication Alt -bmc-grx 6300/tcp # BMC GRX -bmc-grx 6300/udp # BMC GRX -bmc_ctd_ldap 6301/tcp # BMC CONTROL-D LDAP SERVER -bmc_ctd_ldap 6301/udp # BMC CONTROL-D LDAP SERVER -ufmp 6306/tcp # Unified Fabric Management Protocol -ufmp 6306/udp # Unified Fabric Management Protocol -abb-escp 6316/tcp # Ethernet Sensor Communications Protocol -abb-escp 6316/udp # Ethernet Sensor Communications Protocol -repsvc 6320/tcp # Double-Take Replication Service -repsvc 6320/udp # Double-Take Replication Service -emp-server1 6321/tcp # Empress Software Connectivity Server 1 -emp-server1 6321/udp # Empress Software Connectivity Server 1 -emp-server2 6322/tcp # Empress Software Connectivity Server 2 -emp-server2 6322/udp # Empress Software Connectivity Server 2 -sflow 6343/tcp # sFlow traffic monitoring -sflow 6343/udp # sFlow traffic monitoring -gnutella-svc 6346/tcp # gnutella-svc -gnutella-svc 6346/udp # gnutella-svc -gnutella-rtr 6347/tcp # gnutella-rtr -gnutella-rtr 6347/udp # gnutella-rtr -pmcs 6355/tcp # PMCS applications -pmcs 6355/udp # PMCS applications -metaedit-mu 6360/tcp # MetaEdit+ Multi-User -metaedit-mu 6360/udp # MetaEdit+ Multi-User -metaedit-se 6370/tcp # MetaEdit+ Server Administration -metaedit-se 6370/udp # MetaEdit+ Server Administration -metatude-mds 6382/tcp # Metatude Dialogue Server -metatude-mds 6382/udp # Metatude Dialogue Server -clariion-evr01 6389/tcp # clariion-evr01 -clariion-evr01 6389/udp # clariion-evr01 -metaedit-ws 6390/tcp # MetaEdit+ WebService API -metaedit-ws 6390/udp # MetaEdit+ WebService API -boe-cms 6400/tcp # Business Objects CMS contact port -boe-cms 6400/udp # Business Objects CMS contact port -boe-was 6401/tcp # boe-was -boe-was 6401/udp # boe-was -boe-eventsrv 6402/tcp # boe-eventsrv -boe-eventsrv 6402/udp # boe-eventsrv -boe-cachesvr 6403/tcp # boe-cachesvr -boe-cachesvr 6403/udp # boe-cachesvr -boe-filesvr 6404/tcp # Business Objects Enterprise internal server -boe-filesvr 6404/udp # Business Objects Enterprise internal server -boe-pagesvr 6405/tcp # Business Objects Enterprise internal server -boe-pagesvr 6405/udp # Business Objects Enterprise internal server -boe-processsvr 6406/tcp # Business Objects Enterprise internal server -boe-processsvr 6406/udp # Business Objects Enterprise internal server -boe-resssvr1 6407/tcp # Business Objects Enterprise internal server -boe-resssvr1 6407/udp # Business Objects Enterprise internal server -boe-resssvr2 6408/tcp # Business Objects Enterprise internal server -boe-resssvr2 6408/udp # Business Objects Enterprise internal server -boe-resssvr3 6409/tcp # Business Objects Enterprise internal server -boe-resssvr3 6409/udp # Business Objects Enterprise internal server -boe-resssvr4 6410/tcp # Business Objects Enterprise internal server -boe-resssvr4 6410/udp # Business Objects Enterprise internal server -faxcomservice 6417/tcp # Faxcom Message Service -faxcomservice 6417/udp # Faxcom Message Service -syserverremote 6418/tcp # SYserver remote commands -svdrp 6419/tcp # Simple VDR Protocol -nim-vdrshell 6420/tcp # NIM_VDRShell -nim-vdrshell 6420/udp # NIM_VDRShell -nim-wan 6421/tcp # NIM_WAN -nim-wan 6421/udp # NIM_WAN -pgbouncer 6432/tcp # PgBouncer -sun-sr-https 6443/tcp # Service Registry Default HTTPS Domain -sun-sr-https 6443/udp # Service Registry Default HTTPS Domain -sge_qmaster 6444/tcp # Grid Engine Qmaster Service -sge_qmaster 6444/udp # Grid Engine Qmaster Service -sge_execd 6445/tcp # Grid Engine Execution Service -sge_execd 6445/udp # Grid Engine Execution Service -mysql-proxy 6446/tcp # MySQL Proxy -mysql-proxy 6446/udp # MySQL Proxy -skip-cert-recv 6455/tcp # SKIP Certificate Receive -skip-cert-send 6456/udp # SKIP Certificate Send -lvision-lm 6471/tcp # LVision License Manager -lvision-lm 6471/udp # LVision License Manager -sun-sr-http 6480/tcp # Service Registry Default HTTP Domain -sun-sr-http 6480/udp # Service Registry Default HTTP Domain -servicetags 6481/tcp # Service Tags -servicetags 6481/udp # Service Tags -ldoms-mgmt 6482/tcp # Logical Domains Management Interface -ldoms-mgmt 6482/udp # Logical Domains Management Interface -SunVTS-RMI 6483/tcp # SunVTS RMI -SunVTS-RMI 6483/udp # SunVTS RMI -sun-sr-jms 6484/tcp # Service Registry Default JMS Domain -sun-sr-jms 6484/udp # Service Registry Default JMS Domain -sun-sr-iiop 6485/tcp # Service Registry Default IIOP Domain -sun-sr-iiop 6485/udp # Service Registry Default IIOP Domain -sun-sr-iiops 6486/tcp # Service Registry Default IIOPS Domain -sun-sr-iiops 6486/udp # Service Registry Default IIOPS Domain -sun-sr-iiop-aut 6487/tcp # Service Registry Default IIOPAuth Domain -sun-sr-iiop-aut 6487/udp # Service Registry Default IIOPAuth Domain -sun-sr-jmx 6488/tcp # Service Registry Default JMX Domain -sun-sr-jmx 6488/udp # Service Registry Default JMX Domain -sun-sr-admin 6489/tcp # Service Registry Default Admin Domain -sun-sr-admin 6489/udp # Service Registry Default Admin Domain -boks 6500/tcp # BoKS Master -boks 6500/udp # BoKS Master -boks_servc 6501/tcp # BoKS Servc -boks_servc 6501/udp # BoKS Servc -boks_servm 6502/tcp # BoKS Servm -boks_servm 6502/udp # BoKS Servm -boks_clntd 6503/tcp # BoKS Clntd -boks_clntd 6503/udp # BoKS Clntd -badm_priv 6505/tcp # BoKS Admin Private Port -badm_priv 6505/udp # BoKS Admin Private Port -badm_pub 6506/tcp # BoKS Admin Public Port -badm_pub 6506/udp # BoKS Admin Public Port -bdir_priv 6507/tcp # BoKS Dir Server, Private Port -bdir_priv 6507/udp # BoKS Dir Server, Private Port -bdir_pub 6508/tcp # BoKS Dir Server, Public Port -bdir_pub 6508/udp # BoKS Dir Server, Public Port -mgcs-mfp-port 6509/tcp # MGCS-MFP Port -mgcs-mfp-port 6509/udp # MGCS-MFP Port -mcer-port 6510/tcp # MCER Port -mcer-port 6510/udp # MCER Port -netconf-tls 6513/tcp # NETCONF over TLS -syslog-tls 6514/tcp # Syslog over TLS -elipse-rec 6515/tcp # Elipse RPC Protocol -elipse-rec 6515/udp # Elipse RPC Protocol -lds-distrib 6543/tcp # lds_distrib -lds-distrib 6543/udp # lds_distrib -lds-dump 6544/tcp # LDS Dump Service -lds-dump 6544/udp # LDS Dump Service -apc-6547 6547/tcp # APC 6547 -apc-6547 6547/udp # APC 6547 -apc-6548 6548/tcp # APC 6548 -apc-6548 6548/udp # APC 6548 -apc-6549 6549/tcp # APC 6549 -apc-6549 6549/udp # APC 6549 -fg-sysupdate 6550/tcp # fg-sysupdate -fg-sysupdate 6550/udp # fg-sysupdate -sum 6551/tcp # Software Update Manager -sum 6551/udp # Software Update Manager -xdsxdm 6558/tcp # -xdsxdm 6558/udp # -sane-port 6566/tcp # SANE Control Port -sane-port 6566/udp # SANE Control Port -esp 6567/tcp # eSilo Storage Protocol -esp 6567/udp # eSilo Storage Protocol -canit_store 6568/tcp # CanIt Storage Manager -rp-reputation 6568/udp # Roaring Penguin IP Address Reputation Collection -affiliate 6579/tcp # Affiliate -affiliate 6579/udp # Affiliate -parsec-master 6580/tcp # Parsec Masterserver -parsec-master 6580/udp # Parsec Masterserver -parsec-peer 6581/tcp # Parsec Peer-to-Peer -parsec-peer 6581/udp # Parsec Peer-to-Peer -parsec-game 6582/tcp # Parsec Gameserver -parsec-game 6582/udp # Parsec Gameserver -joaJewelSuite 6583/tcp # JOA Jewel Suite -joaJewelSuite 6583/udp # JOA Jewel Suite -mshvlm 6600/tcp # Microsoft Hyper-V Live Migration -mstmg-sstp 6601/tcp # Microsoft Threat Management Gateway SSTP -odette-ftps 6619/tcp # ODETTE-FTP over TLS/SSL -odette-ftps 6619/udp # ODETTE-FTP over TLS/SSL -kftp-data 6620/tcp # Kerberos V5 FTP Data -kftp-data 6620/udp # Kerberos V5 FTP Data -kftp 6621/tcp # Kerberos V5 FTP Control -kftp 6621/udp # Kerberos V5 FTP Control -mcftp 6622/tcp # Multicast FTP -mcftp 6622/udp # Multicast FTP -ktelnet 6623/tcp # Kerberos V5 Telnet -ktelnet 6623/udp # Kerberos V5 Telnet -datascaler-db 6624/tcp # DataScaler database -datascaler-ctl 6625/tcp # DataScaler control -wago-service 6626/tcp # WAGO Service and Update -wago-service 6626/udp # WAGO Service and Update -nexgen 6627/tcp # Allied Electronics NeXGen -nexgen 6627/udp # Allied Electronics NeXGen -afesc-mc 6628/tcp # AFE Stock Channel M/C -afesc-mc 6628/udp # AFE Stock Channel M/C -mxodbc-connect 6632/tcp # eGenix mxODBC Connect -ircu 6665/tcp # IRCU -ircu 6665/udp # IRCU -ircu-2 6666/tcp # IRCU -ircu-2 6666/udp # IRCU -ircu-3 6667/tcp ircd # IRCU -ircu-3 6667/udp ircd # IRCU -ircu-4 6668/tcp # IRCU -ircu-4 6668/udp # IRCU -ircu-5 6669/tcp # IRCU -ircu-5 6669/udp # IRCU -vocaltec-gold 6670/tcp # Vocaltec Global Online Directory -vocaltec-gold 6670/udp # Vocaltec Global Online Directory -p4p-portal 6671/tcp # P4P Portal Service -p4p-portal 6671/udp # P4P Portal Service -vision_server 6672/tcp # vision_server -vision_server 6672/udp # vision_server -vision_elmd 6673/tcp # vision_elmd -vision_elmd 6673/udp # vision_elmd -clever-ctrace 6687/tcp # CleverView for cTrace Message Service -clever-tcpip 6688/tcp # CleverView for TCP/IP Message Service -tsa 6689/tcp # Tofino Security Appliance -tsa 6689/udp # Tofino Security Appliance -kti-icad-srvr 6701/tcp # KTI/ICAD Nameserver -kti-icad-srvr 6701/udp # KTI/ICAD Nameserver -e-design-net 6702/tcp # e-Design network -e-design-net 6702/udp # e-Design network -e-design-web 6703/tcp # e-Design web -e-design-web 6703/udp # e-Design web -frc-hp 6704/sctp # ForCES HP (High Priority) channel -frc-mp 6705/sctp # ForCES MP (Medium Priority) channel -frc-lp 6706/sctp # ForCES LP (Low priority) channel -ibprotocol 6714/tcp # Internet Backplane Protocol -ibprotocol 6714/udp # Internet Backplane Protocol -fibotrader-com 6715/tcp # Fibotrader Communications -fibotrader-com 6715/udp # Fibotrader Communications -bmc-perf-agent 6767/tcp # BMC PERFORM AGENT -bmc-perf-agent 6767/udp # BMC PERFORM AGENT -bmc-perf-mgrd 6768/tcp # BMC PERFORM MGRD -bmc-perf-mgrd 6768/udp # BMC PERFORM MGRD -adi-gxp-srvprt 6769/tcp # ADInstruments GxP Server -adi-gxp-srvprt 6769/udp # ADInstruments GxP Server -plysrv-http 6770/tcp # PolyServe http -plysrv-http 6770/udp # PolyServe http -plysrv-https 6771/tcp # PolyServe https -plysrv-https 6771/udp # PolyServe https -dgpf-exchg 6785/tcp # DGPF Individual Exchange -dgpf-exchg 6785/udp # DGPF Individual Exchange -smc-jmx 6786/tcp # Sun Java Web Console JMX -smc-jmx 6786/udp # Sun Java Web Console JMX -smc-admin 6787/tcp # Sun Web Console Admin -smc-admin 6787/udp # Sun Web Console Admin -smc-http 6788/tcp # SMC-HTTP -smc-http 6788/udp # SMC-HTTP -smc-https 6789/tcp # SMC-HTTPS -smc-https 6789/udp # SMC-HTTPS -hnmp 6790/tcp # HNMP -hnmp 6790/udp # HNMP -hnm 6791/tcp # Halcyon Network Manager -hnm 6791/udp # Halcyon Network Manager -acnet 6801/tcp # ACNET Control System Protocol -acnet 6801/udp # ACNET Control System Protocol -pentbox-sim 6817/tcp # PenTBox Secure IM Protocol -ambit-lm 6831/tcp # ambit-lm -ambit-lm 6831/udp # ambit-lm -netmo-default 6841/tcp # Netmo Default -netmo-default 6841/udp # Netmo Default -netmo-http 6842/tcp # Netmo HTTP -netmo-http 6842/udp # Netmo HTTP -iccrushmore 6850/tcp # ICCRUSHMORE -iccrushmore 6850/udp # ICCRUSHMORE -acctopus-cc 6868/tcp # Acctopus Command Channel -acctopus-st 6868/udp # Acctopus Status -muse 6888/tcp # MUSE -muse 6888/udp # MUSE -xsmsvc 6936/tcp # XenSource Management Service -xsmsvc 6936/udp # XenSource Management Service -bioserver 6946/tcp # Biometrics Server -bioserver 6946/udp # Biometrics Server -otlp 6951/tcp # OTLP -otlp 6951/udp # OTLP -jmact3 6961/tcp # JMACT3 -jmact3 6961/udp # JMACT3 -jmevt2 6962/tcp # jmevt2 -jmevt2 6962/udp # jmevt2 -swismgr1 6963/tcp # swismgr1 -swismgr1 6963/udp # swismgr1 -swismgr2 6964/tcp # swismgr2 -swismgr2 6964/udp # swismgr2 -swistrap 6965/tcp # swistrap -swistrap 6965/udp # swistrap -swispol 6966/tcp # swispol -swispol 6966/udp # swispol -acmsoda 6969/tcp # acmsoda -acmsoda 6969/udp # acmsoda -MobilitySrv 6997/tcp # Mobility XE Protocol -MobilitySrv 6997/udp # Mobility XE Protocol -iatp-highpri 6998/tcp # IATP-highPri -iatp-highpri 6998/udp # IATP-highPri -iatp-normalpri 6999/tcp # IATP-normalPri -iatp-normalpri 6999/udp # IATP-normalPri -ups-onlinet 7010/tcp # onlinet uninterruptable power supplies -ups-onlinet 7010/udp # onlinet uninterruptable power supplies -talon-disc 7011/tcp # Talon Discovery Port -talon-disc 7011/udp # Talon Discovery Port -talon-engine 7012/tcp # Talon Engine -talon-engine 7012/udp # Talon Engine -microtalon-dis 7013/tcp # Microtalon Discovery -microtalon-dis 7013/udp # Microtalon Discovery -microtalon-com 7014/tcp # Microtalon Communications -microtalon-com 7014/udp # Microtalon Communications -talon-webserver 7015/tcp # Talon Webserver -talon-webserver 7015/udp # Talon Webserver -dpserve 7020/tcp # DP Serve -dpserve 7020/udp # DP Serve -dpserveadmin 7021/tcp # DP Serve Admin -dpserveadmin 7021/udp # DP Serve Admin -ctdp 7022/tcp # CT Discovery Protocol -ctdp 7022/udp # CT Discovery Protocol -ct2nmcs 7023/tcp # Comtech T2 NMCS -ct2nmcs 7023/udp # Comtech T2 NMCS -vmsvc 7024/tcp # Vormetric service -vmsvc 7024/udp # Vormetric service -vmsvc-2 7025/tcp # Vormetric Service II -vmsvc-2 7025/udp # Vormetric Service II -op-probe 7030/tcp # ObjectPlanet probe -op-probe 7030/udp # ObjectPlanet probe -arcp 7070/tcp # ARCP -arcp 7070/udp # ARCP -iwg1 7071/tcp # IWGADTS Aircraft Housekeeping Message -iwg1 7071/udp # IWGADTS Aircraft Housekeeping Message -empowerid 7080/tcp # EmpowerID Communication -empowerid 7080/udp # EmpowerID Communication -lazy-ptop 7099/tcp # lazy-ptop -lazy-ptop 7099/udp # lazy-ptop -font-service 7100/udp # X Font Service -elcn 7101/tcp # Embedded Light Control Network -elcn 7101/udp # Embedded Light Control Network -virprot-lm 7121/tcp # Virtual Prototypes License Manager -virprot-lm 7121/udp # Virtual Prototypes License Manager -scenidm 7128/tcp # intelligent data manager -scenidm 7128/udp # intelligent data manager -scenccs 7129/tcp # Catalog Content Search -scenccs 7129/udp # Catalog Content Search -cabsm-comm 7161/tcp # CA BSM Comm -cabsm-comm 7161/udp # CA BSM Comm -caistoragemgr 7162/tcp # CA Storage Manager -caistoragemgr 7162/udp # CA Storage Manager -cacsambroker 7163/tcp # CA Connection Broker -cacsambroker 7163/udp # CA Connection Broker -fsr 7164/tcp # File System Repository Agent -fsr 7164/udp # File System Repository Agent -doc-server 7165/tcp # Document WCF Server -doc-server 7165/udp # Document WCF Server -aruba-server 7166/tcp # Aruba eDiscovery Server -aruba-server 7166/udp # Aruba eDiscovery Server -casrmagent 7167/tcp # CA SRM Agent -ccag-pib 7169/tcp # Consequor Consulting Process Integration Bridge -ccag-pib 7169/udp # Consequor Consulting Process Integration Bridge -nsrp 7170/tcp # Adaptive Name/Service Resolution -nsrp 7170/udp # Adaptive Name/Service Resolution -drm-production 7171/tcp # Discovery and Retention Mgt Production -drm-production 7171/udp # Discovery and Retention Mgt Production -clutild 7174/tcp # Clutild -clutild 7174/udp # Clutild -fodms 7200/tcp # FODMS FLIP -fodms 7200/udp # FODMS FLIP -dlip 7201/tcp # DLIP -dlip 7201/udp # DLIP -ramp 7227/tcp # Registry A & M Protocol -ramp 7227/udp # Registry A $ M Protocol -cnap 7262/tcp # Calypso Network Access Protocol -cnap 7262/udp # Calypso Network Access Protocol -watchme-7272 7272/tcp # WatchMe Monitoring 7272 -watchme-7272 7272/udp # WatchMe Monitoring 7272 -oma-rlp 7273/tcp # OMA Roaming Location -oma-rlp 7273/udp # OMA Roaming Location -oma-rlp-s 7274/tcp # OMA Roaming Location SEC -oma-rlp-s 7274/udp # OMA Roaming Location SEC -oma-ulp 7275/tcp # OMA UserPlane Location -oma-ulp 7275/udp # OMA UserPlane Location -oma-ilp 7276/tcp # OMA Internal Location Protocol -oma-ilp 7276/udp # OMA Internal Location Protocol -oma-ilp-s 7277/tcp # OMA Internal Location Secure Protocol -oma-ilp-s 7277/udp # OMA Internal Location Secure Protocol -oma-dcdocbs 7278/tcp # OMA Dynamic Content Delivery over CBS -oma-dcdocbs 7278/udp # OMA Dynamic Content Delivery over CBS -ctxlic 7279/tcp # Citrix Licensing -ctxlic 7279/udp # Citrix Licensing -itactionserver1 7280/tcp # ITACTIONSERVER 1 -itactionserver1 7280/udp # ITACTIONSERVER 1 -itactionserver2 7281/tcp # ITACTIONSERVER 2 -itactionserver2 7281/udp # ITACTIONSERVER 2 -mzca-action 7282/tcp # eventACTION/ussACTION (MZCA) server -mzca-alert 7282/udp # eventACTION/ussACTION (MZCA) alert -lcm-server 7365/tcp # LifeKeeper Communications -lcm-server 7365/udp # LifeKeeper Communications -mindfilesys 7391/tcp # mind-file system server -mindfilesys 7391/udp # mind-file system server -mrssrendezvous 7392/tcp # mrss-rendezvous server -mrssrendezvous 7392/udp # mrss-rendezvous server -nfoldman 7393/tcp # nFoldMan Remote Publish -nfoldman 7393/udp # nFoldMan Remote Publish -fse 7394/tcp # File system export of backup images -fse 7394/udp # File system export of backup images -winqedit 7395/tcp # winqedit -winqedit 7395/udp # winqedit -hexarc 7397/tcp # Hexarc Command Language -hexarc 7397/udp # Hexarc Command Language -rtps-discovery 7400/tcp # RTPS Discovery -rtps-discovery 7400/udp # RTPS Discovery -rtps-dd-ut 7401/tcp # RTPS Data-Distribution User-Traffic -rtps-dd-ut 7401/udp # RTPS Data-Distribution User-Traffic -rtps-dd-mt 7402/tcp # RTPS Data-Distribution Meta-Traffic -rtps-dd-mt 7402/udp # RTPS Data-Distribution Meta-Traffic -ionixnetmon 7410/tcp # Ionix Network Monitor -ionixnetmon 7410/udp # Ionix Network Monitor -mtportmon 7421/tcp # Matisse Port Monitor -mtportmon 7421/udp # Matisse Port Monitor -pmdmgr 7426/tcp # OpenView DM Postmaster Manager -pmdmgr 7426/udp # OpenView DM Postmaster Manager -oveadmgr 7427/tcp # OpenView DM Event Agent Manager -oveadmgr 7427/udp # OpenView DM Event Agent Manager -ovladmgr 7428/tcp # OpenView DM Log Agent Manager -ovladmgr 7428/udp # OpenView DM Log Agent Manager -opi-sock 7429/tcp # OpenView DM rqt communication -opi-sock 7429/udp # OpenView DM rqt communication -xmpv7 7430/tcp # OpenView DM xmpv7 api pipe -xmpv7 7430/udp # OpenView DM xmpv7 api pipe -pmd 7431/tcp # OpenView DM ovc/xmpv3 api pipe -pmd 7431/udp # OpenView DM ovc/xmpv3 api pipe -faximum 7437/tcp # Faximum -faximum 7437/udp # Faximum -oracleas-https 7443/tcp # Oracle Application Server HTTPS -oracleas-https 7443/udp # Oracle Application Server HTTPS -rise 7473/tcp # Rise: The Vieneo Province -rise 7473/udp # Rise: The Vieneo Province -telops-lmd 7491/tcp # telops-lmd -telops-lmd 7491/udp # telops-lmd -silhouette 7500/tcp # Silhouette User -silhouette 7500/udp # Silhouette User -ovbus 7501/tcp # HP OpenView Bus Daemon -ovbus 7501/udp # HP OpenView Bus Daemon -ovhpas 7510/tcp # HP OpenView Application Server -ovhpas 7510/udp # HP OpenView Application Server -pafec-lm 7511/tcp # pafec-lm -pafec-lm 7511/udp # pafec-lm -saratoga 7542/tcp # Saratoga Transfer Protocol -saratoga 7542/udp # Saratoga Transfer Protocol -atul 7543/tcp # atul server -atul 7543/udp # atul server -nta-ds 7544/tcp # FlowAnalyzer DisplayServer -nta-ds 7544/udp # FlowAnalyzer DisplayServer -nta-us 7545/tcp # FlowAnalyzer UtilityServer -nta-us 7545/udp # FlowAnalyzer UtilityServer -cfs 7546/tcp # Cisco Fabric service -cfs 7546/udp # Cisco Fabric service -cwmp 7547/tcp # DSL Forum CWMP -cwmp 7547/udp # DSL Forum CWMP -tidp 7548/tcp # Threat Information Distribution Protocol -tidp 7548/udp # Threat Information Distribution Protocol -nls-tl 7549/tcp # Network Layer Signaling Transport Layer -nls-tl 7549/udp # Network Layer Signaling Transport Layer -sncp 7560/tcp # Sniffer Command Protocol -sncp 7560/udp # Sniffer Command Protocol -vsi-omega 7566/tcp # VSI Omega -vsi-omega 7566/udp # VSI Omega -aries-kfinder 7570/tcp # Aries Kfinder -aries-kfinder 7570/udp # Aries Kfinder -sun-lm 7588/tcp # Sun License Manager -sun-lm 7588/udp # Sun License Manager -indi 7624/tcp # Instrument Neutral Distributed Interface -indi 7624/udp # Instrument Neutral Distributed Interface -simco 7626/tcp # SImple Middlebox COnfiguration (SIMCO) Server -simco 7626/sctp # SImple Middlebox COnfiguration (SIMCO) -soap-http 7627/tcp # SOAP Service Port -soap-http 7627/udp # SOAP Service Port -zen-pawn 7628/tcp # Primary Agent Work Notification -zen-pawn 7628/udp # Primary Agent Work Notification -xdas 7629/tcp # OpenXDAS Wire Protocol -xdas 7629/udp # OpenXDAS Wire Protocol -pmdfmgt 7633/tcp # PMDF Management -pmdfmgt 7633/udp # PMDF Management -cuseeme 7648/tcp # bonjour-cuseeme -cuseeme 7648/udp # bonjour-cuseeme -imqstomp 7672/tcp # iMQ STOMP Server -imqstomps 7673/tcp # iMQ STOMP Server over SSL -imqtunnels 7674/tcp # iMQ SSL tunnel -imqtunnels 7674/udp # iMQ SSL tunnel -imqtunnel 7675/tcp # iMQ Tunnel -imqtunnel 7675/udp # iMQ Tunnel -imqbrokerd 7676/tcp # iMQ Broker Rendezvous -imqbrokerd 7676/udp # iMQ Broker Rendezvous -sun-user-https 7677/tcp # Sun App Server - HTTPS -sun-user-https 7677/udp # Sun App Server - HTTPS -pando-pub 7680/tcp # Pando Media Public Distribution -pando-pub 7680/udp # Pando Media Public Distribution -collaber 7689/tcp # Collaber Network Service -collaber 7689/udp # Collaber Network Service -klio 7697/tcp # KLIO communications -klio 7697/udp # KLIO communications -em7-secom 7700/tcp # EM7 Secure Communications -sync-em7 7707/tcp # EM7 Dynamic Updates -sync-em7 7707/udp # EM7 Dynamic Updates -scinet 7708/tcp # scientia.net -scinet 7708/udp # scientia.net -medimageportal 7720/tcp # MedImage Portal -medimageportal 7720/udp # MedImage Portal -nsdeepfreezectl 7724/tcp # Novell Snap-in Deep Freeze Control -nsdeepfreezectl 7724/udp # Novell Snap-in Deep Freeze Control -nitrogen 7725/tcp # Nitrogen Service -nitrogen 7725/udp # Nitrogen Service -freezexservice 7726/tcp # FreezeX Console Service -freezexservice 7726/udp # FreezeX Console Service -trident-data 7727/tcp # Trident Systems Data -trident-data 7727/udp # Trident Systems Data -smip 7734/tcp # Smith Protocol over IP -smip 7734/udp # Smith Protocol over IP -aiagent 7738/tcp # HP Enterprise Discovery Agent -aiagent 7738/udp # HP Enterprise Discovery Agent -msss 7742/tcp # Mugginsoft Script Server Service -sstp-1 7743/tcp # Sakura Script Transfer Protocol -sstp-1 7743/udp # Sakura Script Transfer Protocol -raqmon-pdu 7744/tcp # RAQMON PDU -raqmon-pdu 7744/udp # RAQMON PDU -prgp 7747/tcp # Put/Run/Get Protocol -prgp 7747/udp # Put/Run/Get Protocol -cbt 7777/tcp # cbt -cbt 7777/udp # cbt -interwise 7778/tcp # Interwise -interwise 7778/udp # Interwise -vstat 7779/tcp # VSTAT -vstat 7779/udp # VSTAT -accu-lmgr 7781/tcp # accu-lmgr -accu-lmgr 7781/udp # accu-lmgr -minivend 7786/tcp # MINIVEND -minivend 7786/udp # MINIVEND -popup-reminders 7787/tcp # Popup Reminders Receive -popup-reminders 7787/udp # Popup Reminders Receive -office-tools 7789/tcp # Office Tools Pro Receive -office-tools 7789/udp # Office Tools Pro Receive -q3ade 7794/tcp # Q3ADE Cluster Service -q3ade 7794/udp # Q3ADE Cluster Service -pnet-conn 7797/tcp # Propel Connector port -pnet-conn 7797/udp # Propel Connector port -pnet-enc 7798/tcp # Propel Encoder port -pnet-enc 7798/udp # Propel Encoder port -altbsdp 7799/tcp # Alternate BSDP Service -altbsdp 7799/udp # Alternate BSDP Service -asr 7800/tcp # Apple Software Restore -asr 7800/udp # Apple Software Restore -ssp-client 7801/tcp # Secure Server Protocol - client -ssp-client 7801/udp # Secure Server Protocol - client -rbt-wanopt 7810/tcp # Riverbed WAN Optimization Protocol -rbt-wanopt 7810/udp # Riverbed WAN Optimization Protocol -apc-7845 7845/tcp # APC 7845 -apc-7845 7845/udp # APC 7845 -apc-7846 7846/tcp # APC 7846 -apc-7846 7846/udp # APC 7846 -mobileanalyzer 7869/tcp # MobileAnalyzer& MobileMonitor -rbt-smc 7870/tcp # Riverbed Steelhead Mobile Service -pss 7880/tcp # Pearson -pss 7880/udp # Pearson -ubroker 7887/tcp # Universal Broker -ubroker 7887/udp # Universal Broker -mevent 7900/tcp # Multicast Event -mevent 7900/udp # Multicast Event -tnos-sp 7901/tcp # TNOS Service Protocol -tnos-sp 7901/udp # TNOS Service Protocol -tnos-dp 7902/tcp # TNOS shell Protocol -tnos-dp 7902/udp # TNOS shell Protocol -tnos-dps 7903/tcp # TNOS Secure DiaguardProtocol -tnos-dps 7903/udp # TNOS Secure DiaguardProtocol -qo-secure 7913/tcp # QuickObjects secure port -qo-secure 7913/udp # QuickObjects secure port -t2-drm 7932/tcp # Tier 2 Data Resource Manager -t2-drm 7932/udp # Tier 2 Data Resource Manager -t2-brm 7933/tcp # Tier 2 Business Rules Manager -t2-brm 7933/udp # Tier 2 Business Rules Manager -supercell 7967/tcp # Supercell -supercell 7967/udp # Supercell -micromuse-ncps 7979/tcp # Micromuse-ncps -micromuse-ncps 7979/udp # Micromuse-ncps -quest-vista 7980/tcp # Quest Vista -quest-vista 7980/udp # Quest Vista -usicontentpush 7998/udp # USI Content Push Service -irdmi2 7999/tcp # iRDMI2 -irdmi2 7999/udp # iRDMI2 -irdmi 8000/tcp # iRDMI -irdmi 8000/udp # iRDMI -vcom-tunnel 8001/tcp # VCOM Tunnel -vcom-tunnel 8001/udp # VCOM Tunnel -teradataordbms 8002/tcp # Teradata ORDBMS -teradataordbms 8002/udp # Teradata ORDBMS -mcreport 8003/tcp # Mulberry Connect Reporting Service -mcreport 8003/udp # Mulberry Connect Reporting Service -mxi 8005/tcp # MXI Generation II for z/OS -mxi 8005/udp # MXI Generation II for z/OS -qbdb 8019/tcp # QB DB Dynamic Port -qbdb 8019/udp # QB DB Dynamic Port -intu-ec-svcdisc 8020/tcp # Intuit Entitlement Service and Discovery -intu-ec-svcdisc 8020/udp # Intuit Entitlement Service and Discovery -intu-ec-client 8021/tcp # Intuit Entitlement Client -intu-ec-client 8021/udp # Intuit Entitlement Client -oa-system 8022/tcp # oa-system -oa-system 8022/udp # oa-system -ca-audit-da 8025/tcp # CA Audit Distribution Agent -ca-audit-da 8025/udp # CA Audit Distribution Agent -ca-audit-ds 8026/tcp # CA Audit Distribution Server -ca-audit-ds 8026/udp # CA Audit Distribution Server -pro-ed 8032/tcp # ProEd -pro-ed 8032/udp # ProEd -mindprint 8033/tcp # MindPrint -mindprint 8033/udp # MindPrint -vantronix-mgmt 8034/tcp # .vantronix Management -vantronix-mgmt 8034/udp # .vantronix Management -fs-agent 8042/tcp # FireScope Agent -fs-server 8043/tcp # FireScope Server -fs-mgmt 8044/tcp # FireScope Management Interface -senomix01 8052/tcp # Senomix Timesheets Server -senomix01 8052/udp # Senomix Timesheets Server -senomix02 8053/tcp # Senomix Timesheets Client [1 year assignment] -senomix02 8053/udp # Senomix Timesheets Client [1 year assignment] -senomix03 8054/tcp # Senomix Timesheets Server [1 year assignment] -senomix03 8054/udp # Senomix Timesheets Server [1 year assignment] -senomix04 8055/tcp # Senomix Timesheets Server [1 year assignment] -senomix04 8055/udp # Senomix Timesheets Server [1 year assignment] -senomix05 8056/tcp # Senomix Timesheets Server [1 year assignment] -senomix05 8056/udp # Senomix Timesheets Server [1 year assignment] -senomix06 8057/tcp # Senomix Timesheets Client [1 year assignment] -senomix06 8057/udp # Senomix Timesheets Client [1 year assignment] -senomix07 8058/tcp # Senomix Timesheets Client [1 year assignment] -senomix07 8058/udp # Senomix Timesheets Client [1 year assignment] -senomix08 8059/tcp # Senomix Timesheets Client [1 year assignment] -senomix08 8059/udp # Senomix Timesheets Client [1 year assignment] -gadugadu 8074/tcp # Gadu-Gadu -gadugadu 8074/udp # Gadu-Gadu -us-cli 8082/tcp # Utilistor (Client) -us-cli 8082/udp # Utilistor (Client) -us-srv 8083/tcp # Utilistor (Server) -us-srv 8083/udp # Utilistor (Server) -d-s-n 8086/tcp # Distributed SCADA Networking Rendezvous Port -d-s-n 8086/udp # Distributed SCADA Networking Rendezvous Port -simplifymedia 8087/tcp # Simplify Media SPP Protocol -simplifymedia 8087/udp # Simplify Media SPP Protocol -radan-http 8088/tcp # Radan HTTP -radan-http 8088/udp # Radan HTTP -jamlink 8091/tcp # Jam Link Framework -sac 8097/tcp # SAC Port Id -sac 8097/udp # SAC Port Id -xprint-server 8100/tcp # Xprint Server -xprint-server 8100/udp # Xprint Server -ldoms-migr 8101/tcp # Logical Domains Migration -mtl8000-matrix 8115/tcp # MTL8000 Matrix -mtl8000-matrix 8115/udp # MTL8000 Matrix -cp-cluster 8116/tcp # Check Point Clustering -cp-cluster 8116/udp # Check Point Clustering -privoxy 8118/tcp # Privoxy HTTP proxy -privoxy 8118/udp # Privoxy HTTP proxy -apollo-data 8121/tcp # Apollo Data Port -apollo-data 8121/udp # Apollo Data Port -apollo-admin 8122/tcp # Apollo Admin Port -apollo-admin 8122/udp # Apollo Admin Port -paycash-online 8128/tcp # PayCash Online Protocol -paycash-online 8128/udp # PayCash Online Protocol -paycash-wbp 8129/tcp # PayCash Wallet-Browser -paycash-wbp 8129/udp # PayCash Wallet-Browser -indigo-vrmi 8130/tcp # INDIGO-VRMI -indigo-vrmi 8130/udp # INDIGO-VRMI -indigo-vbcp 8131/tcp # INDIGO-VBCP -indigo-vbcp 8131/udp # INDIGO-VBCP -dbabble 8132/tcp # dbabble -dbabble 8132/udp # dbabble -isdd 8148/tcp # i-SDD file transfer -isdd 8148/udp # i-SDD file transfer -patrol 8160/tcp # Patrol -patrol 8160/udp # Patrol -patrol-snmp 8161/tcp # Patrol SNMP -patrol-snmp 8161/udp # Patrol SNMP -proremote 8183/tcp # ProRemote -spytechphone 8192/tcp # SpyTech Phone Service -spytechphone 8192/udp # SpyTech Phone Service -blp1 8194/tcp # Bloomberg data API -blp1 8194/udp # Bloomberg data API -blp2 8195/tcp # Bloomberg feed -blp2 8195/udp # Bloomberg feed -vvr-data 8199/tcp # VVR DATA -vvr-data 8199/udp # VVR DATA -trivnet1 8200/tcp # TRIVNET -trivnet1 8200/udp # TRIVNET -trivnet2 8201/tcp # TRIVNET -trivnet2 8201/udp # TRIVNET -lm-perfworks 8204/tcp # LM Perfworks -lm-perfworks 8204/udp # LM Perfworks -lm-instmgr 8205/tcp # LM Instmgr -lm-instmgr 8205/udp # LM Instmgr -lm-dta 8206/tcp # LM Dta -lm-dta 8206/udp # LM Dta -lm-sserver 8207/tcp # LM SServer -lm-sserver 8207/udp # LM SServer -lm-webwatcher 8208/tcp # LM Webwatcher -lm-webwatcher 8208/udp # LM Webwatcher -rexecj 8230/tcp # RexecJ Server -rexecj 8230/udp # RexecJ Server -synapse-nhttps 8243/tcp # Synapse Non Blocking HTTPS -synapse-nhttps 8243/udp # Synapse Non Blocking HTTPS -pando-sec 8276/tcp # Pando Media Controlled Distribution -pando-sec 8276/udp # Pando Media Controlled Distribution -synapse-nhttp 8280/tcp # Synapse Non Blocking HTTP -synapse-nhttp 8280/udp # Synapse Non Blocking HTTP -blp3 8292/tcp # Bloomberg professional -blp3 8292/udp # Bloomberg professional -blp4 8294/tcp # Bloomberg intelligent client -blp4 8294/udp # Bloomberg intelligent client -hiperscan-id 8293/tcp # Hiperscan Identification Service -tmi 8300/tcp # Transport Management Interface -tmi 8300/udp # Transport Management Interface -amberon 8301/tcp # Amberon PPC/PPS -amberon 8301/udp # Amberon PPC/PPS -tnp-discover 8320/tcp # Thin(ium) Network Protocol -tnp-discover 8320/udp # Thin(ium) Network Protocol -tnp 8321/tcp # Thin(ium) Network Protocol -tnp 8321/udp # Thin(ium) Network Protocol -server-find 8351/tcp # Server Find -server-find 8351/udp # Server Find -cruise-enum 8376/tcp # Cruise ENUM -cruise-enum 8376/udp # Cruise ENUM -cruise-swroute 8377/tcp # Cruise SWROUTE -cruise-swroute 8377/udp # Cruise SWROUTE -cruise-config 8378/tcp # Cruise CONFIG -cruise-config 8378/udp # Cruise CONFIG -cruise-diags 8379/tcp # Cruise DIAGS -cruise-diags 8379/udp # Cruise DIAGS -cruise-update 8380/tcp # Cruise UPDATE -cruise-update 8380/udp # Cruise UPDATE -m2mservices 8383/tcp # M2m Services -m2mservices 8383/udp # M2m Services -cvd 8400/tcp # cvd -cvd 8400/udp # cvd -sabarsd 8401/tcp # sabarsd -sabarsd 8401/udp # sabarsd -abarsd 8402/tcp # abarsd -abarsd 8402/udp # abarsd -admind2 8403/tcp # admind -admind2 8403/udp # admind -svcloud 8404/tcp # SuperVault Cloud -svbackup 8405/tcp # SuperVault Backup -espeech 8416/tcp # eSpeech Session Protocol -espeech 8416/udp # eSpeech Session Protocol -espeech-rtp 8417/tcp # eSpeech RTP Protocol -espeech-rtp 8417/udp # eSpeech RTP Protocol -cybro-a-bus 8442/tcp # CyBro A-bus Protocol -cybro-a-bus 8442/udp # CyBro A-bus Protocol -pcsync-https 8443/tcp # PCsync HTTPS -pcsync-https 8443/udp # PCsync HTTPS -pcsync-http 8444/tcp # PCsync HTTP -pcsync-http 8444/udp # PCsync HTTP -npmp 8450/tcp # npmp -npmp 8450/udp # npmp -cisco-avp 8470/tcp # Cisco Address Validation Protocol -pim-port 8471/tcp # PIM over Reliable Transport -pim-port 8471/sctp # PIM over Reliable Transport -otv 8472/tcp # Overlay Transport Virtualization (OTV) -otv 8472/udp # Overlay Transport Virtualization (OTV) -vp2p 8473/tcp # Virtual Point to Point -vp2p 8473/udp # Virtual Point to Point -noteshare 8474/tcp # AquaMinds NoteShare -noteshare 8474/udp # AquaMinds NoteShare -fmtp 8500/tcp # Flight Message Transfer Protocol -fmtp 8500/udp # Flight Message Transfer Protocol -rtsp-alt 8554/tcp # RTSP Alternate (see port 554) -rtsp-alt 8554/udp # RTSP Alternate (see port 554) -d-fence 8555/tcp # SYMAX D-FENCE -d-fence 8555/udp # SYMAX D-FENCE -oap-admin 8567/tcp # Object Access Protocol Administration -oap-admin 8567/udp # Object Access Protocol Administration -asterix 8600/tcp # Surveillance Data -asterix 8600/udp # Surveillance Data -canon-mfnp 8610/tcp # Canon MFNP Service -canon-mfnp 8610/udp # Canon MFNP Service -canon-bjnp1 8611/tcp # Canon BJNP Port 1 -canon-bjnp1 8611/udp # Canon BJNP Port 1 -canon-bjnp2 8612/tcp # Canon BJNP Port 2 -canon-bjnp2 8612/udp # Canon BJNP Port 2 -canon-bjnp3 8613/tcp # Canon BJNP Port 3 -canon-bjnp3 8613/udp # Canon BJNP Port 3 -canon-bjnp4 8614/tcp # Canon BJNP Port 4 -canon-bjnp4 8614/udp # Canon BJNP Port 4 -sun-as-jmxrmi 8686/tcp # Sun App Server - JMX/RMI -sun-as-jmxrmi 8686/udp # Sun App Server - JMX/RMI -vnyx 8699/tcp # VNYX Primary Port -vnyx 8699/udp # VNYX Primary Port -dtp-net 8732/udp # DASGIP Net Services -ibus 8733/tcp # iBus -ibus 8733/udp # iBus -mc-appserver 8763/tcp # MC-APPSERVER -mc-appserver 8763/udp # MC-APPSERVER -openqueue 8764/tcp # OPENQUEUE -openqueue 8764/udp # OPENQUEUE -ultraseek-http 8765/tcp # Ultraseek HTTP -ultraseek-http 8765/udp # Ultraseek HTTP -dpap 8770/tcp # Digital Photo Access Protocol -dpap 8770/udp # Digital Photo Access Protocol -msgclnt 8786/tcp # Message Client -msgclnt 8786/udp # Message Client -msgsrvr 8787/tcp # Message Server -msgsrvr 8787/udp # Message Server -sunwebadmin 8800/tcp # Sun Web Server Admin Service -sunwebadmin 8800/udp # Sun Web Server Admin Service -truecm 8804/tcp # truecm -truecm 8804/udp # truecm -dxspider 8873/tcp # dxspider linking protocol -dxspider 8873/udp # dxspider linking protocol -cddbp-alt 8880/tcp # CDDBP -cddbp-alt 8880/udp # CDDBP -secure-mqtt 8883/tcp # Secure MQTT -secure-mqtt 8883/udp # Secure MQTT -ddi-tcp-1 8888/tcp # NewsEDGE server TCP (TCP 1) -ddi-udp-1 8888/udp # NewsEDGE server UDP (UDP 1) -ddi-tcp-2 8889/tcp # Desktop Data TCP 1 -ddi-udp-2 8889/udp # NewsEDGE server broadcast -ddi-tcp-3 8890/tcp # Desktop Data TCP 2 -ddi-udp-3 8890/udp # NewsEDGE client broadcast -ddi-tcp-4 8891/tcp # Desktop Data TCP 3: NESS application -ddi-udp-4 8891/udp # Desktop Data UDP 3: NESS application -ddi-tcp-5 8892/tcp # Desktop Data TCP 4: FARM product -ddi-udp-5 8892/udp # Desktop Data UDP 4: FARM product -ddi-tcp-6 8893/tcp # Desktop Data TCP 5: NewsEDGE/Web application -ddi-udp-6 8893/udp # Desktop Data UDP 5: NewsEDGE/Web application -ddi-tcp-7 8894/tcp # Desktop Data TCP 6: COAL application -ddi-udp-7 8894/udp # Desktop Data UDP 6: COAL application -ospf-lite 8899/tcp # ospf-lite -ospf-lite 8899/udp # ospf-lite -jmb-cds1 8900/tcp # JMB-CDS 1 -jmb-cds1 8900/udp # JMB-CDS 1 -jmb-cds2 8901/tcp # JMB-CDS 2 -jmb-cds2 8901/udp # JMB-CDS 2 -manyone-http 8910/tcp # manyone-http -manyone-http 8910/udp # manyone-http -manyone-xml 8911/tcp # manyone-xml -manyone-xml 8911/udp # manyone-xml -wcbackup 8912/tcp # Windows Client Backup -wcbackup 8912/udp # Windows Client Backup -dragonfly 8913/tcp # Dragonfly System Service -dragonfly 8913/udp # Dragonfly System Service -twds 8937/tcp # Transaction Warehouse Data Service -cumulus-admin 8954/tcp # Cumulus Admin Port -cumulus-admin 8954/udp # Cumulus Admin Port -sunwebadmins 8989/tcp # Sun Web Server SSL Admin Service -sunwebadmins 8989/udp # Sun Web Server SSL Admin Service -http-wmap 8990/tcp # webmail HTTP service -http-wmap 8990/udp # webmail HTTP service -https-wmap 8991/tcp # webmail HTTPS service -https-wmap 8991/udp # webmail HTTPS service -bctp 8999/tcp # Brodos Crypto Trade Protocol -bctp 8999/udp # Brodos Crypto Trade Protocol -cslistener 9000/tcp # CSlistener -cslistener 9000/udp # CSlistener -etlservicemgr 9001/tcp # ETL Service Manager -etlservicemgr 9001/udp # ETL Service Manager -dynamid 9002/tcp # DynamID authentication -dynamid 9002/udp # DynamID authentication -ogs-client 9007/udp # Open Grid Services Client -ogs-server 9008/tcp # Open Grid Services Server -pichat 9009/tcp # Pichat Server -pichat 9009/udp # Pichat Server -sdr 9010/tcp # Secure Data Replicator Protocol -tambora 9020/tcp # TAMBORA -tambora 9020/udp # TAMBORA -panagolin-ident 9021/tcp # Pangolin Identification -panagolin-ident 9021/udp # Pangolin Identification -paragent 9022/tcp # PrivateArk Remote Agent -paragent 9022/udp # PrivateArk Remote Agent -swa-1 9023/tcp # Secure Web Access - 1 -swa-1 9023/udp # Secure Web Access - 1 -swa-2 9024/tcp # Secure Web Access - 2 -swa-2 9024/udp # Secure Web Access - 2 -swa-3 9025/tcp # Secure Web Access - 3 -swa-3 9025/udp # Secure Web Access - 3 -swa-4 9026/tcp # Secure Web Access - 4 -swa-4 9026/udp # Secure Web Access - 4 -versiera 9050/tcp # Versiera Agent Listener -fio-cmgmt 9051/tcp # Fusion-io Central Manager Service -glrpc 9080/tcp # Groove GLRPC -glrpc 9080/udp # Groove GLRPC -aurora 9084/tcp # IBM AURORA Performance Visualizer -aurora 9084/udp # IBM AURORA Performance Visualizer -aurora 9084/sctp # IBM AURORA Performance Visualizer -ibm-rsyscon 9085/tcp # IBM Remote System Console -ibm-rsyscon 9085/udp # IBM Remote System Console -net2display 9086/tcp # Vesa Net2Display -net2display 9086/udp # Vesa Net2Display -classic 9087/tcp # Classic Data Server -classic 9087/udp # Classic Data Server -sqlexec 9088/tcp # IBM Informix SQL Interface -sqlexec 9088/udp # IBM Informix SQL Interface -sqlexec-ssl 9089/tcp # IBM Informix SQL Interface - Encrypted -sqlexec-ssl 9089/udp # IBM Informix SQL Interface - Encrypted -websm 9090/tcp # WebSM -websm 9090/udp # WebSM -xmltec-xmlmail 9091/tcp # xmltec-xmlmail -xmltec-xmlmail 9091/udp # xmltec-xmlmail -XmlIpcRegSvc 9092/tcp # Xml-Ipc Server Reg -XmlIpcRegSvc 9092/udp # Xml-Ipc Server Reg -hp-pdl-datastr 9100/udp pdl-datastream # PDL Data Streaming Port -bacula-dir 9101/tcp # Bacula Director -bacula-dir 9101/udp # Bacula Director -bacula-fd 9102/tcp # Bacula File Daemon -bacula-fd 9102/udp # Bacula File Daemon -bacula-sd 9103/tcp # Bacula Storage Daemon -bacula-sd 9103/udp # Bacula Storage Daemon -peerwire 9104/tcp # PeerWire -peerwire 9104/udp # PeerWire -xadmin 9105/tcp # Xadmin Control Service -xadmin 9105/udp # Xadmin Control Service -astergate 9106/tcp # Astergate Control Service -astergate-disc 9106/udp # Astergate Discovery Service -astergatefax 9107/tcp # AstergateFax Control Service -mxit 9119/tcp # MXit Instant Messaging -mxit 9119/udp # MXit Instant Messaging -dddp 9131/tcp # Dynamic Device Discovery -dddp 9131/udp # Dynamic Device Discovery -apani1 9160/tcp # apani1 -apani1 9160/udp # apani1 -apani2 9161/tcp # apani2 -apani2 9161/udp # apani2 -apani3 9162/tcp # apani3 -apani3 9162/udp # apani3 -apani4 9163/tcp # apani4 -apani4 9163/udp # apani4 -apani5 9164/tcp # apani5 -apani5 9164/udp # apani5 -sun-as-jpda 9191/tcp # Sun AppSvr JPDA -sun-as-jpda 9191/udp # Sun AppSvr JPDA -wap-wsp 9200/tcp # WAP connectionless session service -wap-wsp 9200/udp # WAP connectionless session service -wap-wsp-wtp 9201/tcp # WAP session service -wap-wsp-wtp 9201/udp # WAP session service -wap-wsp-s 9202/tcp # WAP secure connectionless session service -wap-wsp-s 9202/udp # WAP secure connectionless session service -wap-wsp-wtp-s 9203/tcp # WAP secure session service -wap-wsp-wtp-s 9203/udp # WAP secure session service -wap-vcard 9204/tcp # WAP vCard -wap-vcard 9204/udp # WAP vCard -wap-vcal 9205/tcp # WAP vCal -wap-vcal 9205/udp # WAP vCal -wap-vcard-s 9206/tcp # WAP vCard Secure -wap-vcard-s 9206/udp # WAP vCard Secure -wap-vcal-s 9207/tcp # WAP vCal Secure -wap-vcal-s 9207/udp # WAP vCal Secure -rjcdb-vcards 9208/tcp # rjcdb vCard -rjcdb-vcards 9208/udp # rjcdb vCard -almobile-system 9209/tcp # ALMobile System Service -almobile-system 9209/udp # ALMobile System Service -oma-mlp 9210/tcp # OMA Mobile Location Protocol -oma-mlp 9210/udp # OMA Mobile Location Protocol -oma-mlp-s 9211/tcp # OMA Mobile Location Protocol Secure -oma-mlp-s 9211/udp # OMA Mobile Location Protocol Secure -serverviewdbms 9212/tcp # Server View dbms access -serverviewdbms 9212/udp # Server View dbms access -serverstart 9213/tcp # ServerStart RemoteControl -serverstart 9213/udp # ServerStart RemoteControl -ipdcesgbs 9214/tcp # IPDC ESG BootstrapService -ipdcesgbs 9214/udp # IPDC ESG BootstrapService -insis 9215/tcp # Integrated Setup and Install Service -insis 9215/udp # Integrated Setup and Install Service -acme 9216/tcp # Aionex Communication Management Engine -acme 9216/udp # Aionex Communication Management Engine -fsc-port 9217/tcp # FSC Communication Port -fsc-port 9217/udp # FSC Communication Port -teamcoherence 9222/tcp # QSC Team Coherence -teamcoherence 9222/udp # QSC Team Coherence -Mon 9255/tcp # Manager On Network -Mon 9255/udp # Manager On Network -pegasus 9278/tcp # Pegasus GPS Platform -pegasus 9278/udp # Pegasus GPS Platform -pegasus-ctl 9279/tcp # Pegaus GPS System Control Interface -pegasus-ctl 9279/udp # Pegaus GPS System Control Interface -pgps 9280/tcp # Predicted GPS -pgps 9280/udp # Predicted GPS -swtp-port1 9281/tcp # SofaWare transport port 1 -swtp-port1 9281/udp # SofaWare transport port 1 -swtp-port2 9282/tcp # SofaWare transport port 2 -swtp-port2 9282/udp # SofaWare transport port 2 -callwaveiam 9283/tcp # CallWaveIAM -callwaveiam 9283/udp # CallWaveIAM -visd 9284/tcp # VERITAS Information Serve -visd 9284/udp # VERITAS Information Serve -n2h2server 9285/tcp # N2H2 Filter Service Port -n2h2server 9285/udp # N2H2 Filter Service Port -cumulus 9287/tcp # Cumulus -cumulus 9287/udp # Cumulus -armtechdaemon 9292/tcp # ArmTech Daemon -armtechdaemon 9292/udp # ArmTech Daemon -storview 9293/tcp # StorView Client -storview 9293/udp # StorView Client -armcenterhttp 9294/tcp # ARMCenter http Service -armcenterhttp 9294/udp # ARMCenter http Service -armcenterhttps 9295/tcp # ARMCenter https Service -armcenterhttps 9295/udp # ARMCenter https Service -vrace 9300/tcp # Virtual Racing Service -vrace 9300/udp # Virtual Racing Service -sphinxql 9306/tcp # Sphinx search server (MySQL listener) -sphinxapi 9312/tcp # Sphinx search server -secure-ts 9318/tcp # PKIX TimeStamp over TLS -secure-ts 9318/udp # PKIX TimeStamp over TLS -guibase 9321/tcp # guibase -guibase 9321/udp # guibase -mpidcmgr 9343/tcp # MpIdcMgr -mpidcmgr 9343/udp # MpIdcMgr -mphlpdmc 9344/tcp # Mphlpdmc -mphlpdmc 9344/udp # Mphlpdmc -ctechlicensing 9346/tcp # C Tech Licensing -ctechlicensing 9346/udp # C Tech Licensing -fjdmimgr 9374/tcp # fjdmimgr -fjdmimgr 9374/udp # fjdmimgr -boxp 9380/tcp # Brivs! Open Extensible Protocol -boxp 9380/udp # Brivs! Open Extensible Protocol -d2dconfig 9387/tcp # D2D Configuration Service -d2ddatatrans 9388/tcp # D2D Data Transfer Service -adws 9389/tcp # Active Directory Web Services -otp 9390/tcp # OpenVAS Transfer Protocol -fjinvmgr 9396/tcp # fjinvmgr -fjinvmgr 9396/udp # fjinvmgr -mpidcagt 9397/tcp # MpIdcAgt -mpidcagt 9397/udp # MpIdcAgt -sec-t4net-srv 9400/tcp # Samsung Twain for Network Server -sec-t4net-srv 9400/udp # Samsung Twain for Network Server -sec-t4net-clt 9401/tcp # Samsung Twain for Network Client -sec-t4net-clt 9401/udp # Samsung Twain for Network Client -sec-pc2fax-srv 9402/tcp # Samsung PC2FAX for Network Server -sec-pc2fax-srv 9402/udp # Samsung PC2FAX for Network Server -git 9418/tcp # git pack transfer service -git 9418/udp # git pack transfer service -tungsten-https 9443/tcp # WSO2 Tungsten HTTPS -tungsten-https 9443/udp # WSO2 Tungsten HTTPS -wso2esb-console 9444/tcp # WSO2 ESB Administration Console HTTPS -wso2esb-console 9444/udp # WSO2 ESB Administration Console HTTPS -sntlkeyssrvr 9450/tcp # Sentinel Keys Server -sntlkeyssrvr 9450/udp # Sentinel Keys Server -ismserver 9500/tcp # ismserver -ismserver 9500/udp # ismserver -mngsuite 9535/tcp # Management Suite Remote Control -mngsuite 9535/udp # Management Suite Remote Control -laes-bf 9536/tcp # Surveillance buffering function -laes-bf 9536/udp # Surveillance buffering function -trispen-sra 9555/tcp # Trispen Secure Remote Access -trispen-sra 9555/udp # Trispen Secure Remote Access -ldgateway 9592/tcp # LANDesk Gateway -ldgateway 9592/udp # LANDesk Gateway -cba8 9593/tcp # LANDesk Management Agent (cba8) -cba8 9593/udp # LANDesk Management Agent (cba8) -msgsys 9594/tcp # Message System -msgsys 9594/udp # Message System -pds 9595/tcp # Ping Discovery Service -pds 9595/udp # Ping Discovery Service -mercury-disc 9596/tcp # Mercury Discovery -mercury-disc 9596/udp # Mercury Discovery -pd-admin 9597/tcp # PD Administration -pd-admin 9597/udp # PD Administration -vscp 9598/tcp # Very Simple Ctrl Protocol -vscp 9598/udp # Very Simple Ctrl Protocol -robix 9599/tcp # Robix -robix 9599/udp # Robix -micromuse-ncpw 9600/tcp # MICROMUSE-NCPW -micromuse-ncpw 9600/udp # MICROMUSE-NCPW -streamcomm-ds 9612/tcp # StreamComm User Directory -streamcomm-ds 9612/udp # StreamComm User Directory -iadt-tls 9614/tcp # iADT Protocol over TLS -erunbook_agent 9616/tcp # eRunbook Agent -erunbook_server 9617/tcp # eRunbook Server -condor 9618/tcp # Condor Collector Service -condor 9618/udp # Condor Collector Service -odbcpathway 9628/tcp # ODBC Pathway Service -odbcpathway 9628/udp # ODBC Pathway Service -uniport 9629/tcp # UniPort SSO Controller -uniport 9629/udp # UniPort SSO Controller -peoctlr 9630/tcp # Peovica Controller -peocoll 9631/tcp # Peovica Collector -mc-comm 9632/udp # Mobile-C Communications -xmms2 9667/tcp # Cross-platform Music Multiplexing System -xmms2 9667/udp # Cross-platform Music Multiplexing System -tec5-sdctp 9668/tcp # tec5 Spectral Device Control Protocol -tec5-sdctp 9668/udp # tec5 Spectral Device Control Protocol -client-wakeup 9694/tcp # T-Mobile Client Wakeup Message -client-wakeup 9694/udp # T-Mobile Client Wakeup Message -ccnx 9695/tcp # Content Centric Networking -ccnx 9695/udp # Content Centric Networking -board-roar 9700/tcp # Board M.I.T. Service -board-roar 9700/udp # Board M.I.T. Service -l5nas-parchan 9747/tcp # L5NAS Parallel Channel -l5nas-parchan 9747/udp # L5NAS Parallel Channel -board-voip 9750/tcp # Board M.I.T. Synchronous Collaboration -board-voip 9750/udp # Board M.I.T. Synchronous Collaboration -rasadv 9753/tcp # rasadv -rasadv 9753/udp # rasadv -tungsten-http 9762/tcp # WSO2 Tungsten HTTP -tungsten-http 9762/udp # WSO2 Tungsten HTTP -davsrc 9800/tcp # WebDav Source Port -davsrc 9800/udp # WebDav Source Port -sstp-2 9801/tcp # Sakura Script Transfer Protocol-2 -sstp-2 9801/udp # Sakura Script Transfer Protocol-2 -davsrcs 9802/tcp # WebDAV Source TLS/SSL -davsrcs 9802/udp # WebDAV Source TLS/SSL -sapv1 9875/tcp # Session Announcement v1 -sapv1 9875/udp # Session Announcement v1 -cyborg-systems 9888/tcp # CYBORG Systems -cyborg-systems 9888/udp # CYBORG Systems -monkeycom 9898/tcp # MonkeyCom -monkeycom 9898/udp # MonkeyCom -sctp-tunneling 9899/tcp # SCTP TUNNELING -sctp-tunneling 9899/udp # SCTP TUNNELING -iua 9900/tcp # IUA -iua 9900/udp # IUA -iua 9900/sctp # IUA -enrp 9901/udp # enrp server channel -enrp-sctp 9901/sctp # enrp server channel -enrp-sctp-tls 9902/sctp # enrp/tls server channel -domaintime 9909/tcp # domaintime -domaintime 9909/udp # domaintime -sype-transport 9911/tcp # SYPECom Transport Protocol -sype-transport 9911/udp # SYPECom Transport Protocol -apc-9950 9950/tcp # APC 9950 -apc-9950 9950/udp # APC 9950 -apc-9951 9951/tcp # APC 9951 -apc-9951 9951/udp # APC 9951 -apc-9952 9952/tcp # APC 9952 -apc-9952 9952/udp # APC 9952 -acis 9953/tcp # 9953 -acis 9953/udp # 9953 -odnsp 9966/tcp # OKI Data Network Setting Protocol -odnsp 9966/udp # OKI Data Network Setting Protocol -dsm-scm-target 9987/tcp # DSM/SCM Target Interface -dsm-scm-target 9987/udp # DSM/SCM Target Interface -nsesrvr 9988/tcp # Software Essentials Secure HTTP server -osm-appsrvr 9990/tcp # OSM Applet Server -osm-appsrvr 9990/udp # OSM Applet Server -osm-oev 9991/tcp # OSM Event Server -osm-oev 9991/udp # OSM Event Server -palace-1 9992/tcp # OnLive-1 -palace-1 9992/udp # OnLive-1 -palace-2 9993/tcp # OnLive-2 -palace-2 9993/udp # OnLive-2 -palace-3 9994/tcp # OnLive-3 -palace-3 9994/udp # OnLive-3 -palace-4 9995/tcp # Palace-4 -palace-4 9995/udp # Palace-4 -palace-5 9996/tcp # Palace-5 -palace-5 9996/udp # Palace-5 -palace-6 9997/tcp # Palace-6 -palace-6 9997/udp # Palace-6 -distinct32 9998/tcp # Distinct32 -distinct32 9998/udp # Distinct32 -distinct 9999/tcp # distinct -distinct 9999/udp # distinct -ndmp 10000/tcp # Network Data Management Protocol -ndmp 10000/udp # Network Data Management Protocol -scp-config 10001/tcp # SCP Configuration Port -scp-config 10001/udp # SCP Configuration Port -documentum 10002/tcp # EMC-Documentum Content Server Product -documentum 10002/udp # EMC-Documentum Content Server Product -documentum_s 10003/tcp # EMC-Documentum Content Server Product -documentum_s 10003/udp # EMC-Documentum Content Server Product -emcrmirccd 10004/tcp # EMC Replication Manager Client -emcrmird 10005/tcp # EMC Replication Manager Server -mvs-capacity 10007/tcp # MVS Capacity -mvs-capacity 10007/udp # MVS Capacity -octopus 10008/tcp # Octopus Multiplexer -octopus 10008/udp # Octopus Multiplexer -swdtp-sv 10009/tcp # Systemwalker Desktop Patrol -swdtp-sv 10009/udp # Systemwalker Desktop Patrol -rxapi 10010/tcp # ooRexx rxapi services -zabbix-agent 10050/tcp # Zabbix Agent -zabbix-agent 10050/udp # Zabbix Agent -zabbix-trapper 10051/tcp # Zabbix Trapper -zabbix-trapper 10051/udp # Zabbix Trapper -itap-ddtp 10100/tcp # VERITAS ITAP DDTP -itap-ddtp 10100/udp # VERITAS ITAP DDTP -ezmeeting-2 10101/tcp # eZmeeting -ezmeeting-2 10101/udp # eZmeeting -ezproxy-2 10102/tcp # eZproxy -ezproxy-2 10102/udp # eZproxy -ezrelay 10103/tcp # eZrelay -ezrelay 10103/udp # eZrelay -swdtp 10104/tcp # Systemwalker Desktop Patrol -swdtp 10104/udp # Systemwalker Desktop Patrol -bctp-server 10107/tcp # VERITAS BCTP, server -bctp-server 10107/udp # VERITAS BCTP, server -nmea-0183 10110/tcp # NMEA-0183 Navigational Data -nmea-0183 10110/udp # NMEA-0183 Navigational Data -netiq-endpoint 10113/tcp # NetIQ Endpoint -netiq-endpoint 10113/udp # NetIQ Endpoint -netiq-qcheck 10114/tcp # NetIQ Qcheck -netiq-qcheck 10114/udp # NetIQ Qcheck -netiq-endpt 10115/tcp # NetIQ Endpoint -netiq-endpt 10115/udp # NetIQ Endpoint -netiq-voipa 10116/tcp # NetIQ VoIP Assessor -netiq-voipa 10116/udp # NetIQ VoIP Assessor -bmc-perf-sd 10128/tcp # BMC-PERFORM-SERVICE DAEMON -bmc-perf-sd 10128/udp # BMC-PERFORM-SERVICE DAEMON -bmc-gms 10129/tcp # BMC General Manager Server -qb-db-server 10160/tcp # QB Database Server -qb-db-server 10160/udp # QB Database Server -trisoap 10200/tcp # Trigence AE Soap Service -trisoap 10200/udp # Trigence AE Soap Service -rsms 10201/tcp # Remote Server Management Service -rscs 10201/udp # Remote Server Control and Test Service -apollo-relay 10252/tcp # Apollo Relay Port -apollo-relay 10252/udp # Apollo Relay Port -axis-wimp-port 10260/tcp # Axis WIMP Port -axis-wimp-port 10260/udp # Axis WIMP Port -blocks 10288/tcp # Blocks -blocks 10288/udp # Blocks -cosir 10321/tcp # Computer Op System Information Report -hip-nat-t 10500/udp # HIP NAT-traversal -MOS-lower 10540/tcp # MOS Media Object Metadata Port -MOS-lower 10540/udp # MOS Media Object Metadata Port -MOS-upper 10541/tcp # MOS Running Order Port -MOS-upper 10541/udp # MOS Running Order Port -MOS-aux 10542/tcp # MOS Low Priority Port -MOS-aux 10542/udp # MOS Low Priority Port -MOS-soap 10543/tcp # MOS SOAP Default Port -MOS-soap 10543/udp # MOS SOAP Default Port -MOS-soap-opt 10544/tcp # MOS SOAP Optional Port -MOS-soap-opt 10544/udp # MOS SOAP Optional Port -gap 10800/tcp # Gestor de Acaparamiento para Pocket PCs -gap 10800/udp # Gestor de Acaparamiento para Pocket PCs -lpdg 10805/tcp # LUCIA Pareja Data Group -lpdg 10805/udp # LUCIA Pareja Data Group -helix 10860/tcp # Helix Client/Server -helix 10860/udp # Helix Client/Server -rmiaux 10990/tcp # Auxiliary RMI Port -rmiaux 10990/udp # Auxiliary RMI Port -irisa 11000/tcp # IRISA -irisa 11000/udp # IRISA -metasys 11001/tcp # Metasys -metasys 11001/udp # Metasys -sgi-lk 11106/tcp # SGI LK Licensing service -sgi-lk 11106/udp # SGI LK Licensing service -vce 11111/tcp # Viral Computing Environment (VCE) -vce 11111/udp # Viral Computing Environment (VCE) -dicom 11112/tcp # DICOM -dicom 11112/udp # DICOM -suncacao-snmp 11161/tcp # sun cacao snmp access point -suncacao-snmp 11161/udp # sun cacao snmp access point -suncacao-jmxmp 11162/tcp # sun cacao JMX-remoting access point -suncacao-jmxmp 11162/udp # sun cacao JMX-remoting access point -suncacao-rmi 11163/tcp # sun cacao rmi registry access point -suncacao-rmi 11163/udp # sun cacao rmi registry access point -suncacao-csa 11164/tcp # sun cacao command-streaming access point -suncacao-csa 11164/udp # sun cacao command-streaming access point -suncacao-websvc 11165/tcp # sun cacao web service access point -suncacao-websvc 11165/udp # sun cacao web service access point -smsqp 11201/tcp # smsqp -smsqp 11201/udp # smsqp -wifree 11208/tcp # WiFree Service -wifree 11208/udp # WiFree Service -memcache 11211/tcp # Memory cache service -memcache 11211/udp # Memory cache service -imip 11319/tcp # IMIP -imip 11319/udp # IMIP -imip-channels 11320/tcp # IMIP Channels Port -imip-channels 11320/udp # IMIP Channels Port -arena-server 11321/tcp # Arena Server Listen -arena-server 11321/udp # Arena Server Listen -atm-uhas 11367/tcp # ATM UHAS -atm-uhas 11367/udp # ATM UHAS -tempest-port 11600/tcp # Tempest Protocol Port -tempest-port 11600/udp # Tempest Protocol Port -intrepid-ssl 11751/tcp # Intrepid SSL -intrepid-ssl 11751/udp # Intrepid SSL -sysinfo-sp 11967/tcp # SysInfo Service Protocol -sysinfo-sp 11967/udp # SysInfo Sercice Protocol -wmereceiving 11997/sctp # WorldMailExpress -wmedistribution 11998/sctp # WorldMailExpress -wmereporting 11999/sctp # WorldMailExpress -entextxid 12000/tcp # IBM Enterprise Extender SNA XID Exchange -entextxid 12000/udp # IBM Enterprise Extender SNA XID Exchange -entextnetwk 12001/tcp # IBM Enterprise Extender SNA COS Network Priority -entextnetwk 12001/udp # IBM Enterprise Extender SNA COS Network Priority -entexthigh 12002/tcp # IBM Enterprise Extender SNA COS High Priority -entexthigh 12002/udp # IBM Enterprise Extender SNA COS High Priority -entextmed 12003/tcp # IBM Enterprise Extender SNA COS Medium Priority -entextmed 12003/udp # IBM Enterprise Extender SNA COS Medium Priority -entextlow 12004/tcp # IBM Enterprise Extender SNA COS Low Priority -entextlow 12004/udp # IBM Enterprise Extender SNA COS Low Priority -dbisamserver1 12005/tcp # DBISAM Database Server - Regular -dbisamserver1 12005/udp # DBISAM Database Server - Regular -dbisamserver2 12006/tcp # DBISAM Database Server - Admin -dbisamserver2 12006/udp # DBISAM Database Server - Admin -accuracer 12007/tcp # Accuracer Database System ñ Server -accuracer 12007/udp # Accuracer Database System ñ Server -accuracer-dbms 12008/tcp # Accuracer Database System ñ Admin -accuracer-dbms 12008/udp # Accuracer Database System ñ Admin -edbsrvr 12010/tcp # ElevateDB Server -vipera 12012/tcp # Vipera Messaging Service -vipera 12012/udp # Vipera Messaging Service -vipera-ssl 12013/tcp # Vipera Messaging Service over SSL Communication -vipera-ssl 12013/udp # Vipera Messaging Service over SSL Communication -rets-ssl 12109/tcp # RETS over SSL -rets-ssl 12109/udp # RETS over SSL -nupaper-ss 12121/tcp # NuPaper Session Service -nupaper-ss 12121/udp # NuPaper Session Service -cawas 12168/tcp # CA Web Access Service -cawas 12168/udp # CA Web Access Service -hivep 12172/tcp # HiveP -hivep 12172/udp # HiveP -linogridengine 12300/tcp # LinoGrid Engine -linogridengine 12300/udp # LinoGrid Engine -warehouse-sss 12321/tcp # Warehouse Monitoring Syst SSS -warehouse-sss 12321/udp # Warehouse Monitoring Syst SSS -warehouse 12322/tcp # Warehouse Monitoring Syst -warehouse 12322/udp # Warehouse Monitoring Syst -italk 12345/tcp # Italk Chat System -italk 12345/udp # Italk Chat System -tsaf 12753/tcp # tsaf port -tsaf 12753/udp # tsaf port -i-zipqd 13160/tcp # I-ZIPQD -i-zipqd 13160/udp # I-ZIPQD -bcslogc 13216/tcp # Black Crow Software application logging -bcslogc 13216/udp # Black Crow Software application logging -rs-pias 13217/tcp # R&S Proxy Installation Assistant Service -rs-pias 13217/udp # R&S Proxy Installation Assistant Service -emc-vcas-tcp 13218/tcp # EMC Virtual CAS Service -emc-vcas-udp 13218/udp # EMV Virtual CAS Service Discovery -powwow-client 13223/tcp # PowWow Client -powwow-client 13223/udp # PowWow Client -powwow-server 13224/tcp # PowWow Server -powwow-server 13224/udp # PowWow Server -nbdb 13785/tcp # NetBackup Database -nbdb 13785/udp # NetBackup Database -nomdb 13786/tcp # Veritas-nomdb -nomdb 13786/udp # Veritas-nomdb -dsmcc-config 13818/tcp # DSMCC Config -dsmcc-config 13818/udp # DSMCC Config -dsmcc-session 13819/tcp # DSMCC Session Messages -dsmcc-session 13819/udp # DSMCC Session Messages -dsmcc-passthru 13820/tcp # DSMCC Pass-Thru Messages -dsmcc-passthru 13820/udp # DSMCC Pass-Thru Messages -dsmcc-download 13821/tcp # DSMCC Download Protocol -dsmcc-download 13821/udp # DSMCC Download Protocol -dsmcc-ccp 13822/tcp # DSMCC Channel Change Protocol -dsmcc-ccp 13822/udp # DSMCC Channel Change Protocol -dta-systems 13929/tcp # D-TA SYSTEMS -dta-systems 13929/udp # D-TA SYSTEMS -medevolve 13930/tcp # MedEvolve Port Requester -scotty-ft 14000/tcp # SCOTTY High-Speed Filetransfer -scotty-ft 14000/udp # SCOTTY High-Speed Filetransfer -sua 14001/tcp # SUA -sua 14001/udp # De-Registered (2001 June 06) -sua 14001/sctp # SUA -sage-best-com1 14033/tcp # sage Best! Config Server 1 -sage-best-com1 14033/udp # sage Best! Config Server 1 -sage-best-com2 14034/tcp # sage Best! Config Server 2 -sage-best-com2 14034/udp # sage Best! Config Server 2 -vcs-app 14141/tcp # VCS Application -vcs-app 14141/udp # VCS Application -icpp 14142/tcp # IceWall Cert Protocol -icpp 14142/udp # IceWall Cert Protocol -gcm-app 14145/tcp # GCM Application -gcm-app 14145/udp # GCM Application -vrts-tdd 14149/tcp # Veritas Traffic Director -vrts-tdd 14149/udp # Veritas Traffic Director -vcscmd 14150/tcp # Veritas Cluster Server Command Server -vad 14154/tcp # Veritas Application Director -vad 14154/udp # Veritas Application Director -cps 14250/tcp # Fencing Server -cps 14250/udp # Fencing Server -ca-web-update 14414/tcp # CA eTrust Web Update Service -ca-web-update 14414/udp # CA eTrust Web Update Service -hde-lcesrvr-1 14936/tcp # hde-lcesrvr-1 -hde-lcesrvr-1 14936/udp # hde-lcesrvr-1 -hde-lcesrvr-2 14937/tcp # hde-lcesrvr-2 -hde-lcesrvr-2 14937/udp # hde-lcesrvr-2 -hydap 15000/tcp # Hypack Data Aquisition -hydap 15000/udp # Hypack Data Aquisition -xpilot 15345/tcp # XPilot Contact Port -xpilot 15345/udp # XPilot Contact Port -3link 15363/tcp # 3Link Negotiation -3link 15363/udp # 3Link Negotiation -cisco-snat 15555/tcp # Cisco Stateful NAT -cisco-snat 15555/udp # Cisco Stateful NAT -bex-xr 15660/tcp # Backup Express Restore Server -bex-xr 15660/udp # Backup Express Restore Server -ptp 15740/tcp # Picture Transfer Protocol -ptp 15740/udp # Picture Transfer Protocol -sun-sea-port 16161/tcp # Solaris SEA Port -sun-sea-port 16161/udp # Solaris SEA Port -solaris-audit 16162/tcp # Solaris Audit - secure remote audit log -etb4j 16309/tcp # etb4j -etb4j 16309/udp # etb4j -pduncs 16310/tcp # Policy Distribute, Update Notification -pduncs 16310/udp # Policy Distribute, Update Notification -pdefmns 16311/tcp # Policy definition and update management -pdefmns 16311/udp # Policy definition and update management -netserialext1 16360/tcp # Network Serial Extension Ports One -netserialext1 16360/udp # Network Serial Extension Ports One -netserialext2 16361/tcp # Network Serial Extension Ports Two -netserialext2 16361/udp # Network Serial Extension Ports Two -netserialext3 16367/tcp # Network Serial Extension Ports Three -netserialext3 16367/udp # Network Serial Extension Ports Three -netserialext4 16368/tcp # Network Serial Extension Ports Four -netserialext4 16368/udp # Network Serial Extension Ports Four -connected 16384/tcp # Connected Corp -connected 16384/udp # Connected Corp -xoms 16619/tcp # X509 Objects Management Service -newbay-snc-mc 16900/tcp # Newbay Mobile Client Update Service -newbay-snc-mc 16900/udp # Newbay Mobile Client Update Service -sgcip 16950/tcp # Simple Generic Client Interface Protocol -sgcip 16950/udp # Simple Generic Client Interface Protocol -intel-rci-mp 16991/tcp # INTEL-RCI-MP -intel-rci-mp 16991/udp # INTEL-RCI-MP -amt-soap-http 16992/tcp # Intel(R) AMT SOAP/HTTP -amt-soap-http 16992/udp # Intel(R) AMT SOAP/HTTP -amt-soap-https 16993/tcp # Intel(R) AMT SOAP/HTTPS -amt-soap-https 16993/udp # Intel(R) AMT SOAP/HTTPS -amt-redir-tcp 16994/tcp # Intel(R) AMT Redirection/TCP -amt-redir-tcp 16994/udp # Intel(R) AMT Redirection/TCP -amt-redir-tls 16995/tcp # Intel(R) AMT Redirection/TLS -amt-redir-tls 16995/udp # Intel(R) AMT Redirection/TLS -isode-dua 17007/tcp # -isode-dua 17007/udp # -soundsvirtual 17185/tcp # Sounds Virtual -soundsvirtual 17185/udp # Sounds Virtual -chipper 17219/tcp # Chipper -chipper 17219/udp # Chipper -integrius-stp 17234/tcp # Integrius Secure Tunnel Protocol -integrius-stp 17234/udp # Integrius Secure Tunnel Protocol -ssh-mgmt 17235/tcp # SSH Tectia Manager -ssh-mgmt 17235/udp # SSH Tectia Manager -db-lsp 17500/tcp # Dropbox LanSync Protocol -db-lsp-disc 17500/udp # Dropbox LanSync Discovery -ea 17729/tcp # Eclipse Aviation -ea 17729/udp # Eclipse Aviation -zep 17754/tcp # Encap. ZigBee Packets -zep 17754/udp # Encap. ZigBee Packets -zigbee-ip 17755/tcp # ZigBee IP Transport Service -zigbee-ip 17755/udp # ZigBee IP Transport Service -zigbee-ips 17756/tcp # ZigBee IP Transport Secure Service -zigbee-ips 17756/udp # ZigBee IP Transport Secure Service -sw-orion 17777/tcp # SolarWinds Orion -biimenu 18000/tcp # Beckman Instruments, Inc. -biimenu 18000/udp # Beckman Instruments, Inc. -opsec-cvp 18181/tcp # OPSEC CVP -opsec-cvp 18181/udp # OPSEC CVP -opsec-ufp 18182/tcp # OPSEC UFP -opsec-ufp 18182/udp # OPSEC UFP -opsec-sam 18183/tcp # OPSEC SAM -opsec-sam 18183/udp # OPSEC SAM -opsec-lea 18184/tcp # OPSEC LEA -opsec-lea 18184/udp # OPSEC LEA -opsec-omi 18185/tcp # OPSEC OMI -opsec-omi 18185/udp # OPSEC OMI -ohsc 18186/tcp # Occupational Health SC -ohsc 18186/udp # Occupational Health Sc -opsec-ela 18187/tcp # OPSEC ELA -opsec-ela 18187/udp # OPSEC ELA -checkpoint-rtm 18241/tcp # Check Point RTM -checkpoint-rtm 18241/udp # Check Point RTM -gv-pf 18262/tcp # GV NetConfig Service -gv-pf 18262/udp # GV NetConfig Service -ac-cluster 18463/tcp # AC Cluster -ac-cluster 18463/udp # AC Cluster -rds-ib 18634/tcp # Reliable Datagram Service -rds-ib 18634/udp # Reliable Datagram Service -rds-ip 18635/tcp # Reliable Datagram Service over IP -rds-ip 18635/udp # Reliable Datagram Service over IP -ique 18769/tcp # IQue Protocol -ique 18769/udp # IQue Protocol -infotos 18881/tcp # Infotos -infotos 18881/udp # Infotos -apc-necmp 18888/tcp # APCNECMP -apc-necmp 18888/udp # APCNECMP -igrid 19000/tcp # iGrid Server -igrid 19000/udp # iGrid Server -j-link 19020/tcp # J-Link TCP/IP Protocol -opsec-uaa 19191/tcp # OPSEC UAA -opsec-uaa 19191/udp # OPSEC UAA -ua-secureagent 19194/tcp # UserAuthority SecureAgent -ua-secureagent 19194/udp # UserAuthority SecureAgent -keysrvr 19283/tcp # Key Server for SASSAFRAS -keysrvr 19283/udp # Key Server for SASSAFRAS -keyshadow 19315/tcp # Key Shadow for SASSAFRAS -keyshadow 19315/udp # Key Shadow for SASSAFRAS -mtrgtrans 19398/tcp # mtrgtrans -mtrgtrans 19398/udp # mtrgtrans -hp-sco 19410/tcp # hp-sco -hp-sco 19410/udp # hp-sco -hp-sca 19411/tcp # hp-sca -hp-sca 19411/udp # hp-sca -hp-sessmon 19412/tcp # HP-SESSMON -hp-sessmon 19412/udp # HP-SESSMON -fxuptp 19539/tcp # FXUPTP -fxuptp 19539/udp # FXUPTP -sxuptp 19540/tcp # SXUPTP -sxuptp 19540/udp # SXUPTP -jcp 19541/tcp # JCP Client -jcp 19541/udp # JCP Client -dnp-sec 19999/tcp # Distributed Network Protocol - Secure -dnp-sec 19999/udp # Distributed Network Protocol - Secure -dnp 20000/tcp # DNP -dnp 20000/udp # DNP -microsan 20001/tcp # MicroSAN -microsan 20001/udp # MicroSAN -commtact-http 20002/tcp # Commtact HTTP -commtact-http 20002/udp # Commtact HTTP -commtact-https 20003/tcp # Commtact HTTPS -commtact-https 20003/udp # Commtact HTTPS -openwebnet 20005/tcp # OpenWebNet protocol for electric network -openwebnet 20005/udp # OpenWebNet protocol for electric network -opendeploy 20014/tcp # OpenDeploy Listener -opendeploy 20014/udp # OpenDeploy Listener -nburn_id 20034/tcp # NetBurner ID Port -nburn_id 20034/udp # NetBurner ID Port -tmophl7mts 20046/tcp # TMOP HL7 Message Transfer Service -tmophl7mts 20046/udp # TMOP HL7 Message Transfer Service -nfsrdma 20049/tcp # Network File System (NFS) over RDMA -nfsrdma 20049/udp # Network File System (NFS) over RDMA -nfsrdma 20049/sctp # Network File System (NFS) over RDMA -tolfab 20167/tcp # TOLfab Data Change -tolfab 20167/udp # TOLfab Data Change -ipdtp-port 20202/tcp # IPD Tunneling Port -ipdtp-port 20202/udp # IPD Tunneling Port -ipulse-ics 20222/tcp # iPulse-ICS -ipulse-ics 20222/udp # iPulse-ICS -emwavemsg 20480/tcp # emWave Message Service -emwavemsg 20480/udp # emWave Message Service -track 20670/tcp # Track -track 20670/udp # Track -athand-mmp 20999/tcp # At Hand MMP -athand-mmp 20999/udp # AT Hand MMP -irtrans 21000/tcp # IRTrans Control -irtrans 21000/udp # IRTrans Control -dfserver 21554/tcp # MineScape Design File Server -dfserver 21554/udp # MineScape Design File Server -vofr-gateway 21590/tcp # VoFR Gateway -vofr-gateway 21590/udp # VoFR Gateway -tvpm 21800/tcp # TVNC Pro Multiplexing -tvpm 21800/udp # TVNC Pro Multiplexing -webphone 21845/tcp # webphone -webphone 21845/udp # webphone -netspeak-is 21846/tcp # NetSpeak Corp. Directory Services -netspeak-is 21846/udp # NetSpeak Corp. Directory Services -netspeak-cs 21847/tcp # NetSpeak Corp. Connection Services -netspeak-cs 21847/udp # NetSpeak Corp. Connection Services -netspeak-acd 21848/tcp # NetSpeak Corp. Automatic Call Distribution -netspeak-acd 21848/udp # NetSpeak Corp. Automatic Call Distribution -netspeak-cps 21849/tcp # NetSpeak Corp. Credit Processing System -netspeak-cps 21849/udp # NetSpeak Corp. Credit Processing System -snapenetio 22000/tcp # SNAPenetIO -snapenetio 22000/udp # SNAPenetIO -optocontrol 22001/tcp # OptoControl -optocontrol 22001/udp # OptoControl -optohost002 22002/tcp # Opto Host Port 2 -optohost002 22002/udp # Opto Host Port 2 -optohost003 22003/tcp # Opto Host Port 3 -optohost003 22003/udp # Opto Host Port 3 -optohost004 22004/tcp # Opto Host Port 4 -optohost004 22004/udp # Opto Host Port 4 -optohost005 22005/tcp # Opto Host Port 5 -optohost005 22005/udp # Opto Host Port 5 -dcap 22125/tcp # dCache Access Protocol -gsidcap 22128/tcp # GSI dCache Access Protocol -cis 22305/udp # CompactIS Tunnel -cis-secure 22343/tcp # CompactIS Secure Tunnel -cis-secure 22343/udp # CompactIS Secure Tunnel -WibuKey 22347/tcp # WibuKey Standard WkLan -WibuKey 22347/udp # WibuKey Standard WkLan -CodeMeter 22350/tcp # CodeMeter Standard -CodeMeter 22350/udp # CodeMeter Standard -vocaltec-wconf 22555/tcp # Vocaltec Web Conference -vocaltec-phone 22555/udp # Vocaltec Internet Phone -talikaserver 22763/tcp # Talika Main Server -talikaserver 22763/udp # Talika Main Server -aws-brf 22800/tcp # Telerate Information Platform LAN -aws-brf 22800/udp # Telerate Information Platform LAN -brf-gw 22951/tcp # Telerate Information Platform WAN -brf-gw 22951/udp # Telerate Information Platform WAN -inovaport1 23000/tcp # Inova LightLink Server Type 1 -inovaport1 23000/udp # Inova LightLink Server Type 1 -inovaport2 23001/tcp # Inova LightLink Server Type 2 -inovaport2 23001/udp # Inova LightLink Server Type 2 -inovaport3 23002/tcp # Inova LightLink Server Type 3 -inovaport3 23002/udp # Inova LightLink Server Type 3 -inovaport4 23003/tcp # Inova LightLink Server Type 4 -inovaport4 23003/udp # Inova LightLink Server Type 4 -inovaport5 23004/tcp # Inova LightLink Server Type 5 -inovaport5 23004/udp # Inova LightLink Server Type 5 -inovaport6 23005/tcp # Inova LightLink Server Type 6 -inovaport6 23005/udp # Inova LightLink Server Type 6 -s102 23272/udp # S102 application -elxmgmt 23333/tcp # Emulex HBAnyware Remote Management -elxmgmt 23333/udp # Emulex HBAnyware Remote Management -novar-dbase 23400/tcp # Novar Data -novar-dbase 23400/udp # Novar Data -novar-alarm 23401/tcp # Novar Alarm -novar-alarm 23401/udp # Novar Alarm -novar-global 23402/tcp # Novar Global -novar-global 23402/udp # Novar Global -aequus 23456/tcp # Aequus Service -aequus-alt 23457/tcp # Aequus Service Mgmt -med-ltp 24000/tcp # med-ltp -med-ltp 24000/udp # med-ltp -med-fsp-rx 24001/tcp # med-fsp-rx -med-fsp-rx 24001/udp # med-fsp-rx -med-fsp-tx 24002/tcp # med-fsp-tx -med-fsp-tx 24002/udp # med-fsp-tx -med-supp 24003/tcp # med-supp -med-supp 24003/udp # med-supp -med-ovw 24004/tcp # med-ovw -med-ovw 24004/udp # med-ovw -med-ci 24005/tcp # med-ci -med-ci 24005/udp # med-ci -med-net-svc 24006/tcp # med-net-svc -med-net-svc 24006/udp # med-net-svc -filesphere 24242/tcp # fileSphere -filesphere 24242/udp # fileSphere -vista-4gl 24249/tcp # Vista 4GL -vista-4gl 24249/udp # Vista 4GL -ild 24321/tcp # Isolv Local Directory -ild 24321/udp # Isolv Local Directory -intel_rci 24386/tcp # Intel RCI -intel_rci 24386/udp # Intel RCI -tonidods 24465/tcp # Tonido Domain Server -tonidods 24465/udp # Tonido Domain Server -flashfiler 24677/tcp # FlashFiler -flashfiler 24677/udp # FlashFiler -proactivate 24678/tcp # Turbopower Proactivate -proactivate 24678/udp # Turbopower Proactivate -tcc-http 24680/tcp # TCC User HTTP Service -tcc-http 24680/udp # TCC User HTTP Service -cslg 24754/tcp # Citrix StorageLink Gateway -find 24922/tcp # Find Identification of Network Devices -find 24922/udp # Find Identification of Network Devices -icl-twobase1 25000/tcp # icl-twobase1 -icl-twobase1 25000/udp # icl-twobase1 -icl-twobase2 25001/tcp # icl-twobase2 -icl-twobase2 25001/udp # icl-twobase2 -icl-twobase3 25002/tcp # icl-twobase3 -icl-twobase3 25002/udp # icl-twobase3 -icl-twobase4 25003/tcp # icl-twobase4 -icl-twobase4 25003/udp # icl-twobase4 -icl-twobase5 25004/tcp # icl-twobase5 -icl-twobase5 25004/udp # icl-twobase5 -icl-twobase6 25005/tcp # icl-twobase6 -icl-twobase6 25005/udp # icl-twobase6 -icl-twobase7 25006/tcp # icl-twobase7 -icl-twobase7 25006/udp # icl-twobase7 -icl-twobase8 25007/tcp # icl-twobase8 -icl-twobase8 25007/udp # icl-twobase8 -icl-twobase9 25008/tcp # icl-twobase9 -icl-twobase9 25008/udp # icl-twobase9 -icl-twobase10 25009/tcp # icl-twobase10 -icl-twobase10 25009/udp # icl-twobase10 -vocaltec-hos 25793/tcp # Vocaltec Address Server -vocaltec-hos 25793/udp # Vocaltec Address Server -tasp-net 25900/tcp # TASP Network Comm -tasp-net 25900/udp # TASP Network Comm -niobserver 25901/tcp # NIObserver -niobserver 25901/udp # NIObserver -nilinkanalyst 25902/tcp # NILinkAnalyst -nilinkanalyst 25902/udp # NILinkAnalyst -niprobe 25903/tcp # NIProbe -niprobe 25903/udp # NIProbe -scscp 26133/tcp # Symbolic Computation Software Composability Protocol -scscp 26133/udp # Symbolic Computation Software Composability Protocol -ezproxy 26260/tcp # eZproxy -ezproxy 26260/udp # eZproxy -ezmeeting 26261/tcp # eZmeeting -ezmeeting 26261/udp # eZmeeting -k3software-svr 26262/tcp # K3 Software-Server -k3software-svr 26262/udp # K3 Software-Server -k3software-cli 26263/tcp # K3 Software-Client -k3software-cli 26263/udp # K3 Software-Client -exoline-tcp 26486/tcp # EXOline-TCP -exoline-udp 26486/udp # EXOline-UDP -exoconfig 26487/tcp # EXOconfig -exoconfig 26487/udp # EXOconfig -exonet 26489/tcp # EXOnet -exonet 26489/udp # EXOnet -imagepump 27345/tcp # ImagePump -imagepump 27345/udp # ImagePump -jesmsjc 27442/tcp # Job controller service -jesmsjc 27442/udp # Job controller service -kopek-httphead 27504/tcp # Kopek HTTP Head Port -kopek-httphead 27504/udp # Kopek HTTP Head Port -ars-vista 27782/tcp # ARS VISTA Application -ars-vista 27782/udp # ARS VISTA Application -tw-auth-key 27999/tcp # TW Authentication/Key Distribution and -tw-auth-key 27999/udp # Attribute Certificate Services -nxlmd 28000/tcp # NX License Manager -nxlmd 28000/udp # NX License Manager -pqsp 28001/tcp # PQ Service -siemensgsm 28240/tcp # Siemens GSM -siemensgsm 28240/udp # Siemens GSM -sgsap 29118/sctp # SGsAP in 3GPP -otmp 29167/tcp # ObTools Message Protocol -otmp 29167/udp # ObTools Message Protocol -sbcap 29168/sctp # SBcAP in 3GPP -iuhsctpassoc 29169/sctp # HNBAP and RUA Common Association -pago-services1 30001/tcp # Pago Services 1 -pago-services1 30001/udp # Pago Services 1 -pago-services2 30002/tcp # Pago Services 2 -pago-services2 30002/udp # Pago Services 2 -kingdomsonline 30260/tcp # Kingdoms Online (CraigAvenue) -kingdomsonline 30260/udp # Kingdoms Online (CraigAvenue) -ovobs 30999/tcp # OpenView Service Desk Client -ovobs 30999/udp # OpenView Service Desk Client -autotrac-acp 31020/tcp # Autotrac ACP 245 -xqosd 31416/tcp # XQoS network monitor -xqosd 31416/udp # XQoS network monitor -tetrinet 31457/tcp # TetriNET Protocol -tetrinet 31457/udp # TetriNET Protocol -lm-mon 31620/tcp # lm mon -lm-mon 31620/udp # lm mon -dsx_monitor 31685/tcp # DS Expert Monitor -gamesmith-port 31765/tcp # GameSmith Port -gamesmith-port 31765/udp # GameSmith Port -iceedcp_tx 31948/tcp # Embedded Device Configuration Protocol TX -iceedcp_tx 31948/udp # Embedded Device Configuration Protocol TX -iceedcp_rx 31949/tcp # Embedded Device Configuration Protocol RX -iceedcp_rx 31949/udp # Embedded Device Configuration Protocol RX -iracinghelper 32034/tcp # iRacing helper service -iracinghelper 32034/udp # iRacing helper service -t1distproc60 32249/tcp # T1 Distributed Processor -t1distproc60 32249/udp # T1 Distributed Processor -apm-link 32483/tcp # Access Point Manager Link -apm-link 32483/udp # Access Point Manager Link -sec-ntb-clnt 32635/tcp # SecureNotebook-CLNT -sec-ntb-clnt 32635/udp # SecureNotebook-CLNT -DMExpress 32636/tcp # DMExpress -DMExpress 32636/udp # DMExpress -filenet-powsrm 32767/tcp # FileNet BPM WS-ReliableMessaging Client -filenet-powsrm 32767/udp # FileNet BPM WS-ReliableMessaging Client -filenet-tms 32768/tcp # Filenet TMS -filenet-tms 32768/udp # Filenet TMS -filenet-rpc 32769/tcp # Filenet RPC -filenet-rpc 32769/udp # Filenet RPC -filenet-nch 32770/tcp # Filenet NCH -filenet-nch 32770/udp # Filenet NCH -filenet-rmi 32771/tcp # FileNET RMI -filenet-rmi 32771/udp # FileNet RMI -filenet-pa 32772/tcp # FileNET Process Analyzer -filenet-pa 32772/udp # FileNET Process Analyzer -filenet-cm 32773/tcp # FileNET Component Manager -filenet-cm 32773/udp # FileNET Component Manager -filenet-re 32774/tcp # FileNET Rules Engine -filenet-re 32774/udp # FileNET Rules Engine -filenet-pch 32775/tcp # Performance Clearinghouse -filenet-pch 32775/udp # Performance Clearinghouse -filenet-peior 32776/tcp # FileNET BPM IOR -filenet-peior 32776/udp # FileNET BPM IOR -filenet-obrok 32777/tcp # FileNet BPM CORBA -filenet-obrok 32777/udp # FileNet BPM CORBA -mlsn 32801/tcp # Multiple Listing Service Network -mlsn 32801/udp # Multiple Listing Service Network -idmgratm 32896/tcp # Attachmate ID Manager -idmgratm 32896/udp # Attachmate ID Manager -aurora-balaena 33123/tcp # Aurora (Balaena Ltd) -aurora-balaena 33123/udp # Aurora (Balaena Ltd) -diamondport 33331/tcp # DiamondCentral Interface -diamondport 33331/udp # DiamondCentral Interface -dgi-serv 33333/tcp # Digital Gaslight Service -snip-slave 33656/tcp # SNIP Slave -snip-slave 33656/udp # SNIP Slave -turbonote-2 34249/tcp # TurboNote Relay Server Default Port -turbonote-2 34249/udp # TurboNote Relay Server Default Port -p-net-local 34378/tcp # P-Net on IP local -p-net-local 34378/udp # P-Net on IP local -p-net-remote 34379/tcp # P-Net on IP remote -p-net-remote 34379/udp # P-Net on IP remote -profinet-rt 34962/tcp # PROFInet RT Unicast -profinet-rt 34962/udp # PROFInet RT Unicast -profinet-rtm 34963/tcp # PROFInet RT Multicast -profinet-rtm 34963/udp # PROFInet RT Multicast -profinet-cm 34964/tcp # PROFInet Context Manager -profinet-cm 34964/udp # PROFInet Context Manager -ethercat 34980/tcp # EtherCAT Port -ethercat 34980/udp # EhterCAT Port -allpeers 36001/tcp # AllPeers Network -allpeers 36001/udp # AllPeers Network -s1-control 36412/sctp # S1-Control Plane (3GPP) -x2-control 36422/sctp # X2-Control Plane (3GPP) -kastenxpipe 36865/tcp # KastenX Pipe -kastenxpipe 36865/udp # KastenX Pipe -neckar 37475/tcp # science + computing's Venus Administration Port -neckar 37475/udp # science + computing's Venus Administration Port -unisys-eportal 37654/tcp # Unisys ClearPath ePortal -unisys-eportal 37654/udp # Unisys ClearPath ePortal -galaxy7-data 38201/tcp # Galaxy7 Data Tunnel -galaxy7-data 38201/udp # Galaxy7 Data Tunnel -fairview 38202/tcp # Fairview Message Service -fairview 38202/udp # Fairview Message Service -agpolicy 38203/tcp # AppGate Policy Server -agpolicy 38203/udp # AppGate Policy Server -turbonote-1 39681/tcp # TurboNote Default Port -turbonote-1 39681/udp # TurboNote Default Port -safetynetp 40000/tcp # SafetyNET p -safetynetp 40000/udp # SafetyNET p -cscp 40841/tcp # CSCP -cscp 40841/udp # CSCP -csccredir 40842/tcp # CSCCREDIR -csccredir 40842/udp # CSCCREDIR -csccfirewall 40843/tcp # CSCCFIREWALL -csccfirewall 40843/udp # CSCCFIREWALL -fs-qos 41111/tcp # Foursticks QoS Protocol -fs-qos 41111/udp # Foursticks QoS Protocol -tentacle 41121/tcp # Tentacle Server -crestron-cip 41794/tcp # Crestron Control Port -crestron-cip 41794/udp # Crestron Control Port -crestron-ctp 41795/tcp # Crestron Terminal Port -crestron-ctp 41795/udp # Crestron Terminal Port -candp 42508/tcp # Computer Associates network discovery protocol -candp 42508/udp # Computer Associates network discovery protocol -candrp 42509/tcp # CA discovery response -candrp 42509/udp # CA discovery response -caerpc 42510/tcp # CA eTrust RPC -caerpc 42510/udp # CA eTrust RPC -reachout 43188/tcp # REACHOUT -reachout 43188/udp # REACHOUT -ndm-agent-port 43189/tcp # NDM-AGENT-PORT -ndm-agent-port 43189/udp # NDM-AGENT-PORT -ip-provision 43190/tcp # IP-PROVISION -ip-provision 43190/udp # IP-PROVISION -noit-transport 43191/tcp # Reconnoiter Agent Data Transport -ew-mgmt 43440/tcp # Cisco EnergyWise Management -ew-disc-cmd 43440/udp # Cisco EnergyWise Discovery and Command Flooding -ciscocsdb 43441/tcp # Cisco NetMgmt DB Ports -ciscocsdb 43441/udp # Cisco NetMgmt DB Ports -pmcd 44321/tcp # PCP server (pmcd) -pmcd 44321/udp # PCP server (pmcd) -pmcdproxy 44322/tcp # PCP server (pmcd) proxy -pmcdproxy 44322/udp # PCP server (pmcd) proxy -rbr-debug 44553/tcp # REALbasic Remote Debug -rbr-debug 44553/udp # REALbasic Remote Debug -EtherNet/IP-2 44818/tcp # EtherNet/IP messaging -EtherNet/IP-2 44818/udp # EtherNet/IP messaging -invision-ag 45054/tcp # InVision AG -invision-ag 45054/udp # InVision AG -eba 45678/tcp # EBA PRISE -eba 45678/udp # EBA PRISE -qdb2service 45825/tcp # Qpuncture Data Access Service -qdb2service 45825/udp # Qpuncture Data Access Service -ssr-servermgr 45966/tcp # SSRServerMgr -ssr-servermgr 45966/udp # SSRServerMgr -mediabox 46999/tcp # MediaBox Server -mediabox 46999/udp # MediaBox Server -mbus 47000/tcp # Message Bus -mbus 47000/udp # Message Bus -winrm 47001/tcp # Windows Remote Management Service -dbbrowse 47557/tcp # Databeam Corporation -dbbrowse 47557/udp # Databeam Corporation -directplaysrvr 47624/tcp # Direct Play Server -directplaysrvr 47624/udp # Direct Play Server -ap 47806/tcp # ALC Protocol -ap 47806/udp # ALC Protocol -bacnet 47808/tcp # Building Automation and Control Networks -bacnet 47808/udp # Building Automation and Control Networks -nimcontroller 48000/tcp # Nimbus Controller -nimcontroller 48000/udp # Nimbus Controller -nimspooler 48001/tcp # Nimbus Spooler -nimspooler 48001/udp # Nimbus Spooler -nimhub 48002/tcp # Nimbus Hub -nimhub 48002/udp # Nimbus Hub -nimgtw 48003/tcp # Nimbus Gateway -nimgtw 48003/udp # Nimbus Gateway -3gpp-cbsp 48049/tcp # 3GPP Cell Broadcast Service Protocol -isnetserv 48128/tcp # Image Systems Network Services -isnetserv 48128/udp # Image Systems Network Services -blp5 48129/tcp # Bloomberg locator -blp5 48129/udp # Bloomberg locator -com-bardac-dw 48556/tcp # com-bardac-dw -com-bardac-dw 48556/udp # com-bardac-dw -iqobject 48619/tcp # iqobject -iqobject 48619/udp # iqobject diff --git a/packages/network/connman/install b/packages/network/connman/install index d8c8809a7c..875465ea60 100755 --- a/packages/network/connman/install +++ b/packages/network/connman/install @@ -26,7 +26,6 @@ add_user system x 430 430 "service" "/var/run/connman" "/bin/sh" add_group system 430 mkdir -p $INSTALL/etc - cp $PKG_DIR/config/services $INSTALL/etc cp $PKG_DIR/config/resolv.conf $INSTALL/etc mkdir -p $INSTALL/etc/connman diff --git a/packages/network/iana-etc/build b/packages/network/iana-etc/build new file mode 100755 index 0000000000..d71b2bbf26 --- /dev/null +++ b/packages/network/iana-etc/build @@ -0,0 +1,27 @@ +#!/bin/sh + +################################################################################ +# This file is part of OpenELEC - http://www.openelec.tv +# Copyright (C) 2009-2012 Stephan Raue (stephan@openelec.tv) +# +# This Program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This Program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with OpenELEC.tv; see the file COPYING. If not, write to +# the Free Software Foundation, 51 Franklin Street, Suite 500, Boston, MA 02110, USA. +# http://www.gnu.org/copyleft/gpl.html +################################################################################ + +. config/options $1 + +cd $PKG_BUILD + +make diff --git a/packages/network/iana-etc/install b/packages/network/iana-etc/install new file mode 100755 index 0000000000..4967c3d027 --- /dev/null +++ b/packages/network/iana-etc/install @@ -0,0 +1,28 @@ +#!/bin/sh + +################################################################################ +# This file is part of OpenELEC - http://www.openelec.tv +# Copyright (C) 2009-2012 Stephan Raue (stephan@openelec.tv) +# +# This Program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This Program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with OpenELEC.tv; see the file COPYING. If not, write to +# the Free Software Foundation, 51 Franklin Street, Suite 500, Boston, MA 02110, USA. +# http://www.gnu.org/copyleft/gpl.html +################################################################################ + +. config/options $1 + +mkdir -p $INSTALL/etc + cp $PKG_BUILD/protocols $INSTALL/etc + cp $PKG_BUILD/services $INSTALL/etc + diff --git a/packages/network/iana-etc/meta b/packages/network/iana-etc/meta new file mode 100644 index 0000000000..ca5defdde0 --- /dev/null +++ b/packages/network/iana-etc/meta @@ -0,0 +1,36 @@ +################################################################################ +# This file is part of OpenELEC - http://www.openelec.tv +# Copyright (C) 2009-2012 Stephan Raue (stephan@openelec.tv) +# +# This Program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This Program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with OpenELEC.tv; see the file COPYING. If not, write to +# the Free Software Foundation, 51 Franklin Street, Suite 500, Boston, MA 02110, USA. +# http://www.gnu.org/copyleft/gpl.html +################################################################################ + +PKG_NAME="iana-etc" +PKG_VERSION="2.30" +PKG_REV="1" +PKG_ARCH="any" +PKG_LICENSE="GPL" +PKG_SITE="http://www.linuxfromscratch.org/lfs/view/development/chapter06/iana-etc.html" +PKG_URL="http://anduin.linuxfromscratch.org/sources/LFS/lfs-packages/conglomeration/iana-etc/$PKG_NAME-$PKG_VERSION.tar.bz2" +PKG_DEPENDS="" +PKG_BUILD_DEPENDS="toolchain" +PKG_PRIORITY="optional" +PKG_SECTION="network" +PKG_SHORTDESC="iana-etc: The Iana-Etc package provides data for network services and protocols." +PKG_LONGDESC="The Iana-Etc package provides data for network services and protocols." +PKG_IS_ADDON="no" + +PKG_AUTORECONF="no" diff --git a/packages/network/install b/packages/network/install index 6fd8ab149f..b301a28603 100755 --- a/packages/network/install +++ b/packages/network/install @@ -23,6 +23,7 @@ . config/options $1 $SCRIPTS/install connman +$SCRIPTS/install iana-etc $SCRIPTS/install ethtool $SCRIPTS/install openssh diff --git a/packages/sysutils/busybox/config/busybox.conf b/packages/sysutils/busybox/config/busybox.conf index 3b43179041..bf88897a03 100644 --- a/packages/sysutils/busybox/config/busybox.conf +++ b/packages/sysutils/busybox/config/busybox.conf @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit # Busybox version: 1.20.2 -# Wed Sep 26 00:23:57 2012 +# Fri Oct 12 19:25:56 2012 # CONFIG_HAVE_DOT_CONFIG=y @@ -248,7 +248,7 @@ CONFIG_MKNOD=y CONFIG_MV=y CONFIG_FEATURE_MV_LONG_OPTIONS=y CONFIG_NICE=y -# CONFIG_NOHUP is not set +CONFIG_NOHUP=y CONFIG_OD=y CONFIG_PRINTENV=y CONFIG_PRINTF=y diff --git a/packages/toolchain/devel/eglibc/build b/packages/toolchain/devel/eglibc/build index 6690a383ae..7f9dbc6d77 100755 --- a/packages/toolchain/devel/eglibc/build +++ b/packages/toolchain/devel/eglibc/build @@ -119,6 +119,7 @@ EOF cat >configparms <