[libbluray-devel] [Git][videolan/libbluray][master] Add missing UOs for the BD_EVENT_UO_MASK_CHANGED event

Petri Hintukainen (@hpi) gitlab at videolan.org
Fri Jan 16 13:59:33 UTC 2026



Petri Hintukainen pushed to branch master at VideoLAN / libbluray


Commits:
bc5560e2 by Masstock at 2026-01-16T15:58:04+02:00
Add missing UOs for the BD_EVENT_UO_MASK_CHANGED event

- - - - -


2 changed files:

- src/libbluray/bluray.c
- src/libbluray/bluray.h


Changes:

=====================================
src/libbluray/bluray.c
=====================================
@@ -572,7 +572,40 @@ static void _init_textst_timer(BLURAY *bd)
 
 static uint32_t _compressed_mask(BD_UO_MASK mask)
 {
-    return mask.menu_call | (mask.title_search << 1);
+    uint32_t value = 0x0;
+#define UO_MASK_VALUE(v, f)  ((!!(mask.f)) * (BLURAY_UO_ ## v))
+    value |= UO_MASK_VALUE(MENU_CALL,                           menu_call);
+    value |= UO_MASK_VALUE(TITLE_SEARCH,                        title_search);
+    value |= UO_MASK_VALUE(CHAPTER_SEARCH,                      chapter_search);
+    value |= UO_MASK_VALUE(TIME_SEARCH_MASK,                    time_search);
+    value |= UO_MASK_VALUE(SKIP_TO_NEXT_POINT_MASK,             skip_to_next_point);
+    value |= UO_MASK_VALUE(SKIP_BACK_TO_PREVIOUS_POINT_MASK,    skip_to_prev_point);
+    value |= UO_MASK_VALUE(STOP_MASK,                           stop);
+    value |= UO_MASK_VALUE(PAUSE_ON_MASK,                       pause_on);
+    value |= UO_MASK_VALUE(STILL_OFF_MASK,                      still_off);
+    value |= UO_MASK_VALUE(FORWARD_PLAY_MASK,                   forward);
+    value |= UO_MASK_VALUE(BACKWARD_PLAY_MASK,                  backward);
+    value |= UO_MASK_VALUE(RESUME_MASK,                         resume);
+    value |= UO_MASK_VALUE(MOVE_UP_SELECTED_BUTTON_MASK,        move_up);
+    value |= UO_MASK_VALUE(MOVE_DOWN_SELECTED_BUTTON_MASK,      move_down);
+    value |= UO_MASK_VALUE(MOVE_LEFT_SELECTED_BUTTON_MASK,      move_left);
+    value |= UO_MASK_VALUE(MOVE_RIGHT_SELECTED_BUTTON_MASK,     move_right);
+    value |= UO_MASK_VALUE(SELECT_BUTTON_MASK,                  select);
+    value |= UO_MASK_VALUE(ACTIVATE_BUTTON_MASK,                activate);
+    value |= UO_MASK_VALUE(SELECT_AND_ACTIVATE_MASK,            select_and_activate);
+    value |= UO_MASK_VALUE(PRIMARY_AUDIO_CHANGE_MASK,           primary_audio_change);
+    value |= UO_MASK_VALUE(ANGLE_CHANGE_MASK,                   angle_change);
+    value |= UO_MASK_VALUE(POPUP_ON_MASK,                       popup_on);
+    value |= UO_MASK_VALUE(POPUP_OFF_MASK,                      popup_off);
+    value |= UO_MASK_VALUE(PG_TEXTST_ENABLE_DISABLE_MASK,       pg_enable_disable);
+    value |= UO_MASK_VALUE(PG_TEXTST_CHANGE_MASK,               pg_change);
+    value |= UO_MASK_VALUE(SECONDARY_VIDEO_ENABLE_DISABLE_MASK, secondary_video_enable_disable);
+    value |= UO_MASK_VALUE(SECONDARY_VIDEO_CHANGE_MASK,         secondary_video_change);
+    value |= UO_MASK_VALUE(SECONDARY_AUDIO_ENABLE_DISABLE_MASK, secondary_audio_enable_disable);
+    value |= UO_MASK_VALUE(SECONDARY_AUDIO_CHANGE_MASK,         secondary_audio_change);
+    value |= UO_MASK_VALUE(PIP_PG_TEXTST_CHANGE_MASK,           pip_pg_change);
+#undef UO_MASK_VALUE
+    return value;
 }
 
 static void _update_uo_mask(BLURAY *bd)


=====================================
src/libbluray/bluray.h
=====================================
@@ -877,9 +877,37 @@ typedef struct {
 #define BLURAY_KIT_SEC_VIDEO     0x200    /**< BD-J requests to handle "Sec. Video" UO    */
 #define BLURAY_KIT_PG_TEXTST     0x400    /**< BD-J requests to handle "Subtitle" UO      */
 
-/* BD_EVENT_UO_MASK flags */
-#define BLURAY_UO_MENU_CALL      0x1      /**< "Menu Call" masked (not allowed)    */
-#define BLURAY_UO_TITLE_SEARCH   0x2      /**< "Title Search" masked (not allowed) */
+/* BD_EVENT_UO_MASK_CHANGED flags */
+#define BLURAY_UO_MENU_CALL                           0x1        /**< "Menu Call" masked (not allowed)                            */
+#define BLURAY_UO_TITLE_SEARCH                        0x2        /**< "Title Search" masked (not allowed)                         */
+#define BLURAY_UO_CHAPTER_SEARCH                      0x4        /**< "Chapter Search" masked (not allowed)                       */
+#define BLURAY_UO_TIME_SEARCH_MASK                    0x8        /**< "Time Search" masked (not allowed)                          */
+#define BLURAY_UO_SKIP_TO_NEXT_POINT_MASK             0x10       /**< "Skip to Next Point" masked (not allowed)                   */
+#define BLURAY_UO_SKIP_BACK_TO_PREVIOUS_POINT_MASK    0x20       /**< "Skip Back to Previous Point" masked (not allowed)          */
+#define BLURAY_UO_STOP_MASK                           0x40       /**< "Stop" masked (not allowed)                                 */
+#define BLURAY_UO_PAUSE_ON_MASK                       0x80       /**< "Pause On" masked (not allowed)                             */
+#define BLURAY_UO_STILL_OFF_MASK                      0x100      /**< "Still Off" masked (not allowed)                            */
+#define BLURAY_UO_FORWARD_PLAY_MASK                   0x200      /**< "Forward Play" masked (not allowed)                         */
+#define BLURAY_UO_BACKWARD_PLAY_MASK                  0x400      /**< "Backward Play" masked (not allowed)                        */
+#define BLURAY_UO_RESUME_MASK                         0x800      /**< "Resume" masked (not allowed)                               */
+#define BLURAY_UO_MOVE_UP_SELECTED_BUTTON_MASK        0x1000     /**< "Move Up Selected Button" masked (not allowed)              */
+#define BLURAY_UO_MOVE_DOWN_SELECTED_BUTTON_MASK      0x2000     /**< "Move Down Selected Button" masked (not allowed)            */
+#define BLURAY_UO_MOVE_LEFT_SELECTED_BUTTON_MASK      0x4000     /**< "Move Left Selected Button" masked (not allowed)            */
+#define BLURAY_UO_MOVE_RIGHT_SELECTED_BUTTON_MASK     0x8000     /**< "Move Right Selected Button" masked (not allowed)           */
+#define BLURAY_UO_SELECT_BUTTON_MASK                  0x10000    /**< "Select Button" masked (not allowed)                        */
+#define BLURAY_UO_ACTIVATE_BUTTON_MASK                0x20000    /**< "Activate Button" masked (not allowed)                      */
+#define BLURAY_UO_SELECT_AND_ACTIVATE_MASK            0x40000    /**< "Select Button and Activate" masked (not allowed)           */
+#define BLURAY_UO_PRIMARY_AUDIO_CHANGE_MASK           0x80000    /**< "Primary Audio Stream Number Change" masked (not allowed)   */
+#define BLURAY_UO_ANGLE_CHANGE_MASK                   0x100000   /**< "Angle Number Change" masked (not allowed)                  */
+#define BLURAY_UO_POPUP_ON_MASK                       0x200000   /**< "PopUp On" masked (not allowed)                             */
+#define BLURAY_UO_POPUP_OFF_MASK                      0x400000   /**< "PopUp Off" masked (not allowed)                            */
+#define BLURAY_UO_PG_TEXTST_ENABLE_DISABLE_MASK       0x800000   /**< "PG textST Enable Disable" masked (not allowed)             */
+#define BLURAY_UO_PG_TEXTST_CHANGE_MASK               0x1000000  /**< "PG textST Stream Number Change" masked (not allowed)       */
+#define BLURAY_UO_SECONDARY_VIDEO_ENABLE_DISABLE_MASK 0x2000000  /**< "Secondary Video Enable Disable" masked (not allowed)       */
+#define BLURAY_UO_SECONDARY_VIDEO_CHANGE_MASK         0x4000000  /**< "Secondary Video Stream Number Change" masked (not allowed) */
+#define BLURAY_UO_SECONDARY_AUDIO_ENABLE_DISABLE_MASK 0x8000000  /**< "Secondary Audio Enable Disable" masked (not allowed)       */
+#define BLURAY_UO_SECONDARY_AUDIO_CHANGE_MASK         0x10000000 /**< "Secondary Audio Stream Number Change" masked (not allowed) */
+#define BLURAY_UO_PIP_PG_TEXTST_CHANGE_MASK           0x20000000 /**< "PiP PG textST Stream Number Change" masked (not allowed)   */
 
 /**
  *



View it on GitLab: https://code.videolan.org/videolan/libbluray/-/commit/bc5560e215b03d28b33d2a05b6e6c7ea6b1b6a27

-- 
View it on GitLab: https://code.videolan.org/videolan/libbluray/-/commit/bc5560e215b03d28b33d2a05b6e6c7ea6b1b6a27
You're receiving this email because of your account on code.videolan.org.


VideoLAN code repository instance


More information about the libbluray-devel mailing list