Petri Hintukainen pushed to branch master at VideoLAN / libbluray


Commits:
6702de70 by rapperskull at 2026-01-28T12:09:54+00:00
Copy dynamic range, color space, cr_flag and HDR10+ flag in _copy_streams

- - - - -
ef4f7102 by rapperskull at 2026-01-28T12:09:54+00:00
Show number of Dolby Vision tracks in list_titles

- - - - -


3 changed files:

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


Changes:

=====================================
src/libbluray/bluray.c
=====================================
@@ -2818,10 +2818,15 @@ static int _copy_streams(const NAV_CLIP *clip, 
BLURAY_STREAM_INFO **pstreams,
         memcpy(streams[ii].lang, si[ii].lang, 4);
         streams[ii].pid = si[ii].pid;
         streams[ii].aspect = nav_clip_lookup_aspect(clip, si[ii].pid);
-        if ((si->stream_type == 2) || (si->stream_type == 3))
+        if ((si->stream_type == 2) || (si->stream_type == 3) || 
(si->stream_type == 4)) {
             streams[ii].subpath_id = si->subpath_id;
-        else
+        } else {
             streams[ii].subpath_id = -1;
+        }
+        streams[ii].dynamic_range_type = si[ii].dynamic_range_type;
+        streams[ii].color_space = si[ii].color_space;
+        streams[ii].cr_flag = si[ii].cr_flag;
+        streams[ii].hdr_plus_flag = si[ii].hdr_plus_flag;
     }
 
     return 1;
@@ -2893,12 +2898,14 @@ static BLURAY_TITLE_INFO* _fill_title_info(NAV_TITLE* 
title, uint32_t title_idx,
             ci->ig_stream_count = pi->stn.num_ig;
             ci->sec_video_stream_count = pi->stn.num_secondary_video;
             ci->sec_audio_stream_count = pi->stn.num_secondary_audio;
+            ci->dv_stream_count = pi->stn.num_dv;
             if (!_copy_streams(nc, &ci->video_streams, pi->stn.video, 
ci->video_stream_count) ||
                 !_copy_streams(nc, &ci->audio_streams, pi->stn.audio, 
ci->audio_stream_count) ||
                 !_copy_streams(nc, &ci->pg_streams, pi->stn.pg, 
ci->pg_stream_count) ||
                 !_copy_streams(nc, &ci->ig_streams, pi->stn.ig, 
ci->ig_stream_count) ||
                 !_copy_streams(nc, &ci->sec_video_streams, 
pi->stn.secondary_video, ci->sec_video_stream_count) ||
-                !_copy_streams(nc, &ci->sec_audio_streams, 
pi->stn.secondary_audio, ci->sec_audio_stream_count)) {
+                !_copy_streams(nc, &ci->sec_audio_streams, 
pi->stn.secondary_audio, ci->sec_audio_stream_count) ||
+                !_copy_streams(nc, &ci->dv_streams, pi->stn.dv, 
ci->dv_stream_count)) {
 
                 goto error;
             }
@@ -2906,6 +2913,7 @@ static BLURAY_TITLE_INFO* _fill_title_info(NAV_TITLE* 
title, uint32_t title_idx,
     }
 
     title_info->mvc_base_view_r_flag = 
title->pl->app_info.mvc_base_view_r_flag;
+    title_info->sdr_conversion_notification_flag = 
title->pl->app_info.sdr_conversion_notification_flag;
 
     return title_info;
 
@@ -2993,6 +3001,7 @@ void bd_free_title_info(BLURAY_TITLE_INFO *title_info)
                 X_FREE(title_info->clips[ii].ig_streams);
                 X_FREE(title_info->clips[ii].sec_video_streams);
                 X_FREE(title_info->clips[ii].sec_audio_streams);
+                X_FREE(title_info->clips[ii].dv_streams);
             }
             X_FREE(title_info->clips);
         }


=====================================
src/libbluray/bluray.h
=====================================
@@ -238,6 +238,11 @@ typedef enum {
     BLURAY_DYNAMIC_RANGE_DOLBY_VISION = 2
 } bd_dynamic_range_type_e;
 
+typedef enum {
+    BLURAY_COLOR_SPACE_BT709  = 1,
+    BLURAY_COLOR_SPACE_BT2020 = 2
+} bd_color_space_e;
+
 /** Clip substream information */
 typedef struct bd_stream_info {
     uint8_t     coding_type;  /**< Stream coding (\ref bd_stream_type_e) */
@@ -248,6 +253,10 @@ typedef struct bd_stream_info {
     uint16_t    pid;          /**< mpeg-ts PID */
     uint8_t     aspect;       /**< Stream video aspect ratio (\ref 
bd_video_aspect_e) */
     uint8_t     subpath_id;   /**< Sub path identifier (= separate mpeg-ts mux 
/ .m2ts file) */
+    uint8_t     dynamic_range_type;
+    uint8_t     color_space;
+    uint8_t     cr_flag;
+    uint8_t     hdr_plus_flag;
 } BLURAY_STREAM_INFO;
 
 /** Clip information */
@@ -261,12 +270,14 @@ typedef struct bd_clip {
     uint8_t            ig_stream_count;         /**< Number of IG (Interactive 
Graphics) streams */
     uint8_t            sec_audio_stream_count;  /**< Number of secondary audio 
streams */
     uint8_t            sec_video_stream_count;  /**< Number of secondary video 
streams */
+    uint8_t            dv_stream_count;
     BLURAY_STREAM_INFO *video_streams;          /**< Video streams information 
*/
     BLURAY_STREAM_INFO *audio_streams;          /**< Audio streams information 
*/
     BLURAY_STREAM_INFO *pg_streams;             /**< PG (Presentation 
Graphics) streams information */
     BLURAY_STREAM_INFO *ig_streams;             /**< IG (Interactive Graphics) 
streams information */
     BLURAY_STREAM_INFO *sec_audio_streams;      /**< Secondary audio streams 
information */
     BLURAY_STREAM_INFO *sec_video_streams;      /**< Secondary video streams 
information */
+    BLURAY_STREAM_INFO *dv_streams;
 
     uint64_t           start_time;  /**< start media time, 90kHz, ("playlist 
time") */
     uint64_t           in_time;     /**< start timestamp, 90kHz */
@@ -307,6 +318,7 @@ typedef struct bd_title_info {
     BLURAY_TITLE_MARK    *marks;         /**< Playmark information */
 
     uint8_t              mvc_base_view_r_flag;  /**< MVC base view (0 - left, 
1 - right) */
+    uint8_t              sdr_conversion_notification_flag;
 } BLURAY_TITLE_INFO;
 
 /** Sound effect data */


=====================================
src/tools/bd_list_titles.c
=====================================
@@ -117,7 +117,7 @@ int main(int argc, char *argv[])
         ti = bd_get_title_info(bd, ii, 0);
         printf(
        "index: %3d duration: %02" PRIu64 ":%02" PRIu64 ":%02" PRIu64 " 
chapters: %3d angles: %2u clips: %3u (playlist: %05d.mpls) "
-       "V:%d A:%-2d PG:%-2d IG:%-2d SV:%d SA:%d\n",
+       "V:%d A:%-2d PG:%-2d IG:%-2d SV:%d SA:%d DV:%d\n",
               ii + 1,
               (ti->duration / 90000) / (3600),
               ((ti->duration / 90000) % 3600) / 60,
@@ -128,7 +128,8 @@ int main(int argc, char *argv[])
               ti->clips[0].pg_stream_count,
               ti->clips[0].ig_stream_count,
               ti->clips[0].sec_video_stream_count,
-              ti->clips[0].sec_audio_stream_count
+              ti->clips[0].sec_audio_stream_count,
+              ti->clips[0].dv_stream_count
         );
         if (langs) {
             _dump_langs(&ti->clips[0]);



View it on GitLab: 
https://code.videolan.org/videolan/libbluray/-/compare/15dd24fe7dd684f4fba93870f69b4ce65ddd1ef4...ef4f7102c4b7211d5de980060934c3f7f2049895

-- 
View it on GitLab: 
https://code.videolan.org/videolan/libbluray/-/compare/15dd24fe7dd684f4fba93870f69b4ce65ddd1ef4...ef4f7102c4b7211d5de980060934c3f7f2049895
You're receiving this email because of your account on code.videolan.org.


VideoLAN code repository instance
_______________________________________________
libbluray-devel mailing list
[email protected]
https://mailman.videolan.org/listinfo/libbluray-devel

Reply via email to