nn.pp.rccore

## Interface VideoEventListener

- All Known Implementing Classes:
    RCAdapter

      public interface VideoEventListener

  Event handlers for several video and video settings events
  See Also:
    `RCCore.addVideoEventListener(VideoEventListener, int)`, `RCCore.removeVideoEventListener(VideoEventListener)`

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static int` | `ALL` All registration bits
    `static int` | `ALL_EXCEPT_VIDEO_DATA_UPDATED` All registration bits, except video data updates.
    `static int` | `ENCODING_CHANGE_ALLOWED` Registration bit for encoding change allowed events
    `static int` | `ENCODING_CHANGED` Registration bit for encoding changed events (the actual video encoding has changed)
    `static int` | `ENCODING_SETTINGS_CHANGED` Registration bit for encoding settings changed events (which settings are allowed for the video encoding)
    `static int` | `OSD_MESSAGE_RECEIVED` Registration bit for OSD message events
    `static int` | `RAW_VIDEO_SNAPSHOT_RECEIVED` Registration bit for raw video snapshot received events
    `static int` | `RAW_VIDEO_SUPPORT_CHANGED` Registration bit for raw video snapshot support changed events
    `static int` | `RENDERER_INFORMATION` Registration bit for renderer information events
    `static int` | `RESOLUTION_CHANGED` Registration bit for resolution changed events
    `static int` | `VIDEO_DATA_UPDATED` Registration bit for video data updated events
    `static int` | `VIDEO_SETTINGS` Registration bit for video settings events
    `static int` | `VIDEO_STATUS` Registration bit for video status

  - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `clearCacheSupportChanged(boolean supported)` The support to clear the video settings cache has changed.
    `void` | `colorCalibrationSupportChanged(boolean supported)` The support for automatically calibrating colors has changed
    `void` | `encodingActualColorSubsamplingChanged(RCCore.ColorSubsampling subsampling)` The actually used color subsampling has changed.
    `void` | `encodingAutoChanged(boolean auto)` The automatic encoding detection setting has changed
    `void` | `encodingAutoSupportedChanged(boolean supported)` The support for automatic encoding detection has changed
    `void` | `encodingChangeAllowed(boolean allowed)` The support to change the video encoding has changed
    `void` | `encodingColorDepthChanged(RCCore.ColorDepth colorDepth)` The setting for encoding color depth has changed
    `void` | `encodingColorSubsamplingChanged(RCCore.ColorSubsampling subsampling)` The setting for the color subsampling has changed
    `void` | `encodingCompressionChanged(RCCore.Compression compression)` The setting for the encoding compression has changed
    `void` | `encodingIct4k444ForAllResolutionsSupportedChanged(boolean supported)` The support for 4:4:4 color sub-sampling for all resolutions has been received or changed
    `void` | `encodingIct4kSupportedChanged(boolean supported)` The support for ICT for 4k resolutions encoding has been received or changed
    `void` | `encodingIctSupportedChanged(boolean supported)` The support for ICT encoding has been received or changed
    `void` | `encodingLossyChanged(boolean lossy)` The setting for the lossy encoding has changed
    `void` | `encodingLossySupportedChanged(boolean supported)` The support for "lossy" encoding has changed
    `void` | `osdMessageReceived(java.lang.String osdMessage, boolean osdBlank)` An OSD message has been received
    `void` | `rawVideoSnapshotReceived(Snapshot rawSnapshot, java.awt.image.BufferedImage snapshotImage)` A Raw Video Snapshot has been received
    `void` | `rawVideoSnapshotSupportedChanged(boolean supported, java.util.List<Snapshot.ColorFormat> colorFormats)` The support for requesting raw video snapshots from the KX device has changed
    `void` | `renderedFramesPerSecond(int frames)` Frames per second rendered by the KVM renderer
    `void` | `rendererTypeChanged(java.lang.String type)` The textual description of the renderer type has changed or been received
    `void` | `resolutionChanged(java.awt.Dimension resolution)` The video resolution of the target server has changed
    `void` | `supportedEncodingColorDepthsChanged(java.util.List<RCCore.ColorDepth> depths)` The supported color depths have been received or changed
    `void` | `supportedEncodingColorSubsamplingsChanged(java.util.List<RCCore.ColorSubsampling> subsamplings)` The supported color subsampling values have been received or changed
    `void` | `supportedEncodingCompressionsChanged(java.util.List<RCCore.Compression> compressions)` The supported compression values have been received or changed
    `void` | `supportedEncodingPredefinesChanged(java.util.List<RCCore.Predefine> predefines)` The supported pre-defined encoding settings have been received or changed
    `void` | `videoAutoAdjustSupportChanged(boolean supported)` The support for automatically adjusting video settings has changed
    `void` | `videoDataUpdated(java.awt.Rectangle rect)` A video update for a given region has been received.
    `void` | `videoRefreshSupportChanged(boolean supported)` The Support to request a full screen refresh has changed
    `void` | `videoSettingsSupportChanged(boolean supported)` The support for requesting and setting video settings has changed
    `void` | `videoSettingsUpdated(IVideoSettings videoSettings)` New video settings have been received
    `void` | `videoStatusChanged(RCCore.VideoStatus status)` The status of the video display has changed

- - ### Field Detail

    - #### ENCODING_CHANGE_ALLOWED

          static final int ENCODING_CHANGE_ALLOWED

      Registration bit for encoding change allowed events
      See Also:
        Constant Field Values

    - #### ENCODING_SETTINGS_CHANGED

          static final int ENCODING_SETTINGS_CHANGED

      Registration bit for encoding settings changed events (which settings are allowed for the video encoding)
      See Also:
        Constant Field Values

    - #### ENCODING_CHANGED

          static final int ENCODING_CHANGED

      Registration bit for encoding changed events (the actual video encoding has changed)
      See Also:
        Constant Field Values

    - #### VIDEO_SETTINGS

          static final int VIDEO_SETTINGS

      Registration bit for video settings events
      See Also:
        Constant Field Values

    - #### RESOLUTION_CHANGED

          static final int RESOLUTION_CHANGED

      Registration bit for resolution changed events
      See Also:
        Constant Field Values

    - #### OSD_MESSAGE_RECEIVED

          static final int OSD_MESSAGE_RECEIVED

      Registration bit for OSD message events
      See Also:
        Constant Field Values

    - #### VIDEO_DATA_UPDATED

          static final int VIDEO_DATA_UPDATED

      Registration bit for video data updated events
      See Also:
        Constant Field Values

    - #### RENDERER_INFORMATION

          static final int RENDERER_INFORMATION

      Registration bit for renderer information events
      See Also:
        Constant Field Values

    - #### RAW_VIDEO_SUPPORT_CHANGED

          static final int RAW_VIDEO_SUPPORT_CHANGED

      Registration bit for raw video snapshot support changed events
      See Also:
        Constant Field Values

    - #### RAW_VIDEO_SNAPSHOT_RECEIVED

          static final int RAW_VIDEO_SNAPSHOT_RECEIVED

      Registration bit for raw video snapshot received events
      See Also:
        Constant Field Values

    - #### VIDEO_STATUS

          static final int VIDEO_STATUS

      Registration bit for video status
      See Also:
        Constant Field Values

    - #### ALL

          static final int ALL

      All registration bits
      See Also:
        Constant Field Values

    - #### ALL_EXCEPT_VIDEO_DATA_UPDATED

          static final int ALL_EXCEPT_VIDEO_DATA_UPDATED

      All registration bits, except video data updates. Use this for performance reasons.
      See Also:
        Constant Field Values

  - ### Method Detail

    - #### encodingChangeAllowed

          void encodingChangeAllowed(boolean allowed)

      The support to change the video encoding has changed

      The KX supports different video encodings. This event tells the client whether is is supported to change these encoding or not.

      This event is sent when registered with the `ENCODING_CHANGE_ALLOWED` event mask.

      Parameters:
        `allowed` - true if changing the video encoding is allowed, false otherwise
      See Also:
        `RCCore.isEncodingChangeSupported()`

    - #### encodingAutoSupportedChanged

          void encodingAutoSupportedChanged(boolean supported)

      The support for automatic encoding detection has changed

      Some devices have the capability to automatically find the best video encoding given the current network bandwidth. This event informs the client about this capability.

      This event is sent when registered with the `ENCODING_SETTINGS_CHANGED` event mask.

      Parameters:
        `supported` - true if automatic encoding detection is supported, false otherwise
      See Also:
        `encodingAutoChanged(boolean)`, `RCCore.isEncodingAutoSupported()`, `RCCore.isEncodingAuto()`, `RCCore.setEncodingToAuto()`

    - #### supportedEncodingPredefinesChanged

          void supportedEncodingPredefinesChanged(java.util.List<RCCore.Predefine> predefines)

      The supported pre-defined encoding settings have been received or changed

      There are some "pre-defined" encoding settings, representing the recommended settings for a given network bandwidth. The client may use any of the supported values, which are advertised via this event handler.

      This event is sent when registered with the `ENCODING_SETTINGS_CHANGED` event mask.

      Parameters:
        `predefines` - the pre-defined encoding values supported by the device connected to
      See Also:
        `RCCore.getSupportedEncodingPredefines()`, `RCCore.setEncodingPredefine(nn.pp.rccore.RCCore.Predefine)`

    - #### supportedEncodingColorDepthsChanged

          void supportedEncodingColorDepthsChanged(java.util.List<RCCore.ColorDepth> depths)

      The supported color depths have been received or changed

      Besides using RCCore.Predefine values, the encoding can also be adjusted manually by specifying the `RCCore.ColorDepth` and `RCCore.Compression`. This event reports the values that are supported as color depths.

      This event is sent when registered with the `ENCODING_SETTINGS_CHANGED` event mask.

      Parameters:
        `depths` - the color depth values supported by the device connected to
      See Also:
        `encodingColorDepthChanged(nn.pp.rccore.RCCore.ColorDepth)`, `RCCore.getSupportedEncodingColorDepths()`, `RCCore.setEncodingColorDepth(nn.pp.rccore.RCCore.ColorDepth, boolean)`, `RCCore.getEncodingColorDepth()`

    - #### supportedEncodingCompressionsChanged

          void supportedEncodingCompressionsChanged(java.util.List<RCCore.Compression> compressions)

      The supported compression values have been received or changed

      Besides using RCCore.Predefine values, the encoding can also be adjusted manually by specifying the RCCore.ColorDepth and RCCore.Compression. This event reports the values that are supported as compression algorithms.

      This event is sent when registered with the `ENCODING_SETTINGS_CHANGED` event mask.

      Parameters:
        `compressions` - the compression values supported by the device connected to
      See Also:
        `encodingCompressionChanged(nn.pp.rccore.RCCore.Compression)`, `RCCore.getSupportedEncodingCompressions()`, `RCCore.setEncodingCompression(nn.pp.rccore.RCCore.Compression, boolean)`, `RCCore.getEncodingCompression()`

    - #### supportedEncodingColorSubsamplingsChanged

          void supportedEncodingColorSubsamplingsChanged(java.util.List<RCCore.ColorSubsampling> subsamplings)

      The supported color subsampling values have been received or changed

      This event is sent when registered with the `ENCODING_SETTINGS_CHANGED` event mask.

      Parameters:
        `subsamplings` - The subsampling values supported by the device connected to
      See Also:
        `encodingColorSubsamplingChanged(nn.pp.rccore.RCCore.ColorSubsampling)`, `encodingActualColorSubsamplingChanged(nn.pp.rccore.RCCore.ColorSubsampling)`, `RCCore.getSupportedEncodingColorSubsamplings()`, `RCCore.getEncodingColorSubsampling()`, `RCCore.getActualColorSubsampling()`, `RCCore.setEncodingColorSubsampling(nn.pp.rccore.RCCore.ColorSubsampling, boolean)`

    - #### encodingLossySupportedChanged

          void encodingLossySupportedChanged(boolean supported)

      The support for "lossy" encoding has changed

      Old KX2 devices may have the ability to use a lossy video encoding. That adds compression artifacts, but reduces network bandwidth. This event tells the client whether this is supported or not.

      On KX3, this is not used. The JPEG compression levels of KX3 are always lossy by definition, and the handling of the "lossy" setting will be completely ignored.

      This event is sent when registered with the `ENCODING_SETTINGS_CHANGED` event mask.

      Parameters:
        `supported` - true if lossy encoding is supported, false otherwise
      See Also:
        `encodingLossyChanged(boolean)`, `RCCore.isEncodingLossySupported()`, `RCCore.isEncodingLossy()`, `RCCore.setEncodingLossy(boolean, boolean)`

    - #### encodingIctSupportedChanged

          void encodingIctSupportedChanged(boolean supported)

      The support for ICT encoding has been received or changed

      The KX3 and KX4 support "ICT" encoding, while other devices (KX2) don't

      This event is sent when registered with the `ENCODING_SETTINGS_CHANGED` event mask.

      Parameters:
        `supported` - true if ICT encoding is supported, false otherwise
      See Also:
        `RCCore.isEncodingICTSupported()`

    - #### encodingIct4kSupportedChanged

          void encodingIct4kSupportedChanged(boolean supported)

      The support for ICT for 4k resolutions encoding has been received or changed

      The KX4 supports "ICT4K" encoding, while other devices (KX3, KX2) don't

      This event is sent when registered with the `ENCODING_SETTINGS_CHANGED` event mask.

      Parameters:
        `supported` - true if ICT4K encoding is supported, false otherwise
      See Also:
        `RCCore.isEncodingICT4kSupported()`

    - #### encodingIct4k444ForAllResolutionsSupportedChanged

          void encodingIct4k444ForAllResolutionsSupportedChanged(boolean supported)

      The support for 4:4:4 color sub-sampling for all resolutions has been received or changed

      The KX4-101 firmware 4.4 and above and KX3NG support that, other devices have restrictions.

      This event is sent when registered with the `ENCODING_SETTINGS_CHANGED` event mask.

      Parameters:
        `supported` - true if 4:4:4 is supported for all resolutions, false otherwise
      See Also:
        `RCCore.isEncodingIct4k444ForAllResolutionsSupported()`

    - #### encodingAutoChanged

          void encodingAutoChanged(boolean auto)

      The automatic encoding detection setting has changed

      This event is sent when registered with the `ENCODING_CHANGED` event mask.

      Parameters:
        `auto` - true if encoding is set to auto, false otherwise
      See Also:
        `encodingAutoSupportedChanged(boolean)`, `RCCore.setEncodingToAuto()`, `RCCore.isEncodingAuto()`, `RCCore.isEncodingAutoSupported()`

    - #### encodingColorDepthChanged

          void encodingColorDepthChanged(RCCore.ColorDepth colorDepth)

      The setting for encoding color depth has changed

      This event is sent when registered with the `ENCODING_CHANGED` event mask.

      Parameters:
        `colorDepth` - the color depth setting
      See Also:
        `supportedEncodingColorDepthsChanged(List)`, `RCCore.getEncodingColorDepth()`, `RCCore.setEncodingColorDepth(nn.pp.rccore.RCCore.ColorDepth, boolean)`

    - #### encodingCompressionChanged

          void encodingCompressionChanged(RCCore.Compression compression)

      The setting for the encoding compression has changed

      This event is sent when registered with the `ENCODING_CHANGED` event mask.

      Parameters:
        `compression` - the compression setting
      See Also:
        `supportedEncodingCompressionsChanged(List)`, `RCCore.getEncodingCompression()`, `RCCore.setEncodingCompression(nn.pp.rccore.RCCore.Compression, boolean)`

    - #### encodingColorSubsamplingChanged

          void encodingColorSubsamplingChanged(RCCore.ColorSubsampling subsampling)

      The setting for the color subsampling has changed

      This event is sent when registered with the `ENCODING_CHANGED` event mask.

      Parameters:
        `subsampling` - the subsampling setting
      See Also:
        `supportedEncodingColorSubsamplingsChanged(List)`, `encodingActualColorSubsamplingChanged(nn.pp.rccore.RCCore.ColorSubsampling)`, `RCCore.setEncodingColorSubsampling(nn.pp.rccore.RCCore.ColorSubsampling, boolean)`, `RCCore.getEncodingColorSubsampling()`

    - #### encodingActualColorSubsamplingChanged

          void encodingActualColorSubsamplingChanged(RCCore.ColorSubsampling subsampling)

      The actually used color subsampling has changed. That might be different from the subsampling configured because not all subsamplings are supported by all resolutions.

      This event is sent when registered with the `ENCODING_CHANGED` event mask.

      Parameters:
        `subsampling` - the subsampling setting
      See Also:
        `encodingColorSubsamplingChanged(nn.pp.rccore.RCCore.ColorSubsampling)`, `RCCore.setEncodingColorSubsampling(nn.pp.rccore.RCCore.ColorSubsampling, boolean)`, `RCCore.getActualColorSubsampling()`

    - #### encodingLossyChanged

          void encodingLossyChanged(boolean lossy)

      The setting for the lossy encoding has changed

      Old KX2 devices may have the ability to use a lossy video encoding. That adds compression artifacts, but reduces network bandwidth. This event tells the client whether this is supported or not.

      On KX3 and KX4, this is not used. The JPEG compression levels of KX3 are always lossy by definition, and the handling of the "lossy" setting will be completely ignored.

      This event is sent when registered with the `ENCODING_CHANGED` event mask.

      Parameters:
        `lossy` - The setting for lossy encoding
      See Also:
        `encodingLossySupportedChanged(boolean)`, `RCCore.isEncodingLossy()`, `RCCore.setEncodingLossy(boolean, boolean)`, `RCCore.isEncodingLossySupported()`

    - #### videoSettingsSupportChanged

          void videoSettingsSupportChanged(boolean supported)

      The support for requesting and setting video settings has changed

      All devices with analog video sampling support video settings for adjusting the sampling parameters. Devices with digital video sampling don't need that.

      This event is sent when registered with the `VIDEO_SETTINGS` event mask.

      Parameters:
        `supported` - true if video settings are supported, false otherwise
      See Also:
        `videoSettingsUpdated(IVideoSettings)`, `IVideoSettings`, `RCCore.isVideoSettingsSupported()`, `RCCore.getVideoSettings()`, `RCCore.setVideoSettings(IVideoSettings)`, `RCCore.requestVideoSettingsUpdates()`

    - #### videoAutoAdjustSupportChanged

          void videoAutoAdjustSupportChanged(boolean supported)

      The support for automatically adjusting video settings has changed

      This event is sent when registered with the `VIDEO_SETTINGS` event mask.

      Parameters:
        `supported` - true if automatic video adjustment is supported, false otherwise
      See Also:
        `RCCore.isVideoAutoAdjustSupported()`, `RCCore.requestVideoAutoSense()`

    - #### colorCalibrationSupportChanged

          void colorCalibrationSupportChanged(boolean supported)

      The support for automatically calibrating colors has changed

      This event is sent when registered with the `VIDEO_SETTINGS` event mask.

      Parameters:
        `supported` - true if automatic color calibration is supported, false otherwise
      See Also:
        `RCCore.isColorCalibrationSupported()`, `RCCore.requestVideoColorCalibration()`

    - #### clearCacheSupportChanged

          void clearCacheSupportChanged(boolean supported)

      The support to clear the video settings cache has changed.

      This event is sent when registered with the `VIDEO_SETTINGS` event mask.

      Parameters:
        `supported` - true if clearing the video settings cache is supported, false otherwise
      See Also:
        `RCCore.isClearVideoSettingsCacheSupported()`, `RCCore.clearVideoSettingsCache()`

    - #### videoRefreshSupportChanged

          void videoRefreshSupportChanged(boolean supported)

      The Support to request a full screen refresh has changed

      This event is sent when registered with the `VIDEO_SETTINGS` event mask.

      Parameters:
        `supported` - true if requesting video refresh is supported, false otherwise
      See Also:
        `RCCore.isVideoRefreshSupported()`, `RCCore.requestVideoRefresh()`

    - #### videoSettingsUpdated

          void videoSettingsUpdated(IVideoSettings videoSettings)

      New video settings have been received

      Users should call RCCore.requestVideoSettingsUpdates to request new video settings. Then, the KX fetches new video settings and sends them to the client. Once received, the settings are propagated using this event.

      This event is sent when registered with the `VIDEO_SETTINGS` event mask.

      Parameters:
        `videoSettings` - the received video settings
      See Also:
        `videoSettingsSupportChanged(boolean)`, `IVideoSettings`, `RCCore.isVideoSettingsSupported()`, `RCCore.getVideoSettings()`, `RCCore.setVideoSettings(IVideoSettings)`, `RCCore.requestVideoSettingsUpdates()`

    - #### resolutionChanged

          void resolutionChanged(java.awt.Dimension resolution)

      The video resolution of the target server has changed

      Sequence of resolution change:

      - RCCore resizes internal structures and updates internal size variables
      - RCCore generates the following event and waits for the return of all subscribers
      - RCCore requests the next framebuffer update

      This event is sent when registered with the `RESOLUTION_CHANGED` event mask.

      Parameters:
        `resolution` - the resolution of the target server's video
      See Also:
        `RCCore.getResolution()`

    - #### osdMessageReceived

          void osdMessageReceived(java.lang.String osdMessage,
                                  boolean osdBlank)

      An OSD message has been received

      This event is sent when registered with the `OSD_MESSAGE_RECEIVED` event mask.

      Parameters:
        `osdMessage` - the OSD message to display
        `osdBlank` - true if the screen should be blanked, false otherwise

    - #### videoDataUpdated

          void videoDataUpdated(java.awt.Rectangle rect)

      A video update for a given region has been received.

      The actual video data is not part of this event due to performance reasons. In order to get the video data, call `RCCore.getSnapshot()`

      This event is sent when registered with the `VIDEO_DATA_UPDATED` event mask.

      Parameters:
        `rect` - rhe region that has been updated
      See Also:
        `RCCore.getSnapshot()`, `RCCore.getSnapshot(Rectangle)`

    - #### rendererTypeChanged

          void rendererTypeChanged(java.lang.String type)

      The textual description of the renderer type has changed or been received

      This event is sent when registered with the `RENDERER_INFORMATION` event mask.

      Parameters:
        `type` - the textual description of the renderer
      See Also:
        `RCCore.getRendererType()`

    - #### renderedFramesPerSecond

          void renderedFramesPerSecond(int frames)

      Frames per second rendered by the KVM renderer

      This event is emitted every second and reports the number of processed video frames in the last second.

      This event is sent when registered with the `RENDERER_INFORMATION` event mask.

      Parameters:
        `frames` - the number of rendered video frames in the last second
      See Also:
        `RCCore.getRenderedFramesPerSecond()`

    - #### rawVideoSnapshotSupportedChanged

          void rawVideoSnapshotSupportedChanged(boolean supported,
                                                java.util.List<Snapshot.ColorFormat> colorFormats)

      The support for requesting raw video snapshots from the KX device has changed

      This event is sent when registered with the `RAW_VIDEO_SUPPORT_CHANGED` event mask.

      Parameters:
        `supported` - raw snapshot is supported or not
        `colorFormats` - list of supported color formats for snapshots
      See Also:
        `rawVideoSnapshotReceived(Snapshot, BufferedImage)`, `RCCore.isRawVideoSnapshotSupported()`, `RCCore.requestRawVideoSnapshot(nn.pp.rccore.Snapshot.ColorFormat)`

    - #### rawVideoSnapshotReceived

          void rawVideoSnapshotReceived(Snapshot rawSnapshot,
                                        java.awt.image.BufferedImage snapshotImage)

      A Raw Video Snapshot has been received

      The image data is in a proprietary data format, as it is used for transmission of video frames from the KX to the client. This is mainly for debugging or troubleshooting purposes.

      This event is sent when registered with the `RAW_VIDEO_SNAPSHOT_RECEIVED` event mask.

      Parameters:
        `rawSnapshot` - the raw video snapshot data
        `snapshotImage` - the decoded image; may be null
      See Also:
        `rawVideoSnapshotSupportedChanged(boolean, List)`, `RCCore.requestRawVideoSnapshot(nn.pp.rccore.Snapshot.ColorFormat)`

    - #### videoStatusChanged

          void videoStatusChanged(RCCore.VideoStatus status)

      The status of the video display has changed

      This event is sent when registered with the `VIDEO_STATUS` event mask.

      Parameters:
        `status` - the video status

Copyright © 2025 Raritan Inc. All Rights Reserved.