[vlc-commits] access: bluray: check region chromas

Francois Cartegnie git at videolan.org
Mon Mar 9 10:40:43 CET 2020


vlc | branch: master | Francois Cartegnie <fcvlcdev at free.fr> | Fri Mar  6 17:51:53 2020 +0100| [72ba342fe889d1c545f8af2695c3d51222e9ca08] | committer: Francois Cartegnie

access: bluray: check region chromas

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=72ba342fe889d1c545f8af2695c3d51222e9ca08
---

 modules/access/bluray.c | 22 +++++++++++++---------
 1 file changed, 13 insertions(+), 9 deletions(-)

diff --git a/modules/access/bluray.c b/modules/access/bluray.c
index 8abd8711ac..bab725f2c0 100644
--- a/modules/access/bluray.c
+++ b/modules/access/bluray.c
@@ -1914,8 +1914,11 @@ static void blurayDrawOverlay(demux_t *p_demux, const BD_OVERLAY* const eventov)
     subpicture_region_t *p_last = NULL;
     while (p_reg != NULL) {
         p_last = p_reg;
-        if (p_reg->i_x == eventov->x && p_reg->i_y == eventov->y &&
-                p_reg->fmt.i_width == eventov->w && p_reg->fmt.i_height == eventov->h)
+        if (p_reg->i_x == eventov->x &&
+            p_reg->i_y == eventov->y &&
+            p_reg->fmt.i_width == eventov->w &&
+            p_reg->fmt.i_height == eventov->h &&
+            p_reg->fmt.i_chroma == VLC_CODEC_YUVP)
             break;
         pp_reg = &p_reg->p_next;
         p_reg = p_reg->p_next;
@@ -2039,17 +2042,18 @@ static void blurayDrawArgbOverlay(demux_t *p_demux, const BD_ARGB_OVERLAY* const
         return;
     vlc_mutex_lock(&ov->lock);
 
+    /* ARGB in word order -> byte order */
+#ifdef WORDS_BIG_ENDIAN
+    const vlc_fourcc_t rgbchroma = VLC_CODEC_ARGB;
+#else
+    const vlc_fourcc_t rgbchroma = VLC_CODEC_BGRA;
+#endif
     if (!ov->p_regions)
     {
         video_format_t fmt;
         video_format_Init(&fmt, 0);
         video_format_Setup(&fmt,
-        /* ARGB in word order -> byte order */
-#ifdef WORDS_BIG_ENDIAN
-                           VLC_CODEC_ARGB,
-#else
-                           VLC_CODEC_BGRA,
-#endif
+                           rgbchroma,
                            eventov->stride, ov->height,
                            ov->width, ov->height, 1, 1);
         ov->p_regions = subpicture_region_New(&fmt);
@@ -2057,7 +2061,7 @@ static void blurayDrawArgbOverlay(demux_t *p_demux, const BD_ARGB_OVERLAY* const
 
     /* Find a region to update */
     subpicture_region_t *p_reg = ov->p_regions;
-    if (!p_reg) {
+    if (!p_reg || p_reg->fmt.i_chroma != rgbchroma) {
         vlc_mutex_unlock(&ov->lock);
         return;
     }



More information about the vlc-commits mailing list