[vlc-commits] vout: decklink: fix incorrect pic pool format

Francois Cartegnie git at videolan.org
Sat Nov 26 17:28:21 CET 2016


vlc | branch: master | Francois Cartegnie <fcvlcdev at free.fr> | Sat Nov 26 15:46:22 2016 +0100| [10a24cfeb5f5615755a29bf3c767134d05281371] | committer: Francois Cartegnie

vout: decklink: fix incorrect pic pool format

refs #17690

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

 modules/video_output/decklink.cpp | 27 +++++++++++----------------
 1 file changed, 11 insertions(+), 16 deletions(-)

diff --git a/modules/video_output/decklink.cpp b/modules/video_output/decklink.cpp
index 30f8664..e8232a8 100644
--- a/modules/video_output/decklink.cpp
+++ b/modules/video_output/decklink.cpp
@@ -182,9 +182,6 @@ struct decklink_sys_t
     //int i_channels;
     int i_rate;
 
-    int i_width;
-    int i_height;
-
     BMDTimeScale timescale;
     BMDTimeValue frameduration;
 
@@ -581,9 +578,7 @@ static struct decklink_sys_t *OpenDecklink(vout_display_t *vd)
             goto error;
         }
 
-        decklink_sys->i_width = p_display_mode->GetWidth();
-        decklink_sys->i_height = p_display_mode->GetHeight();
-        if (decklink_sys->i_width <= 0 || decklink_sys->i_width & 1)
+        if (p_display_mode->GetWidth() <= 0 || p_display_mode->GetWidth() & 1)
         {
              msg_Err(vd, "Unknown video mode specified.");
              goto error;
@@ -595,6 +590,14 @@ static struct decklink_sys_t *OpenDecklink(vout_display_t *vd)
 
         result = decklink_sys->p_output->EnableVideoOutput(mode_id, flags);
         CHECK("Could not enable video output");
+
+        fmt->i_width = fmt->i_visible_width = p_display_mode->GetWidth();
+        fmt->i_height = fmt->i_visible_height = p_display_mode->GetHeight();
+        fmt->i_x_offset = 0;
+        fmt->i_y_offset = 0;
+        fmt->i_sar_num = 0;
+        fmt->i_sar_den = 0;
+        fmt->i_chroma = !sys->tenbits ? VLC_CODEC_UYVY : VLC_CODEC_I422_10L; /* we will convert to v210 */
     }
 
     if (/*decklink_sys->i_channels > 0 &&*/ decklink_sys->i_rate > 0)
@@ -814,8 +817,8 @@ static void DisplayVideo(vout_display_t *vd, picture_t *picture, subpicture_t *)
 
     HRESULT result;
     int w, h, stride, length;
-    w = decklink_sys->i_width;
-    h = decklink_sys->i_height;
+    w = vd->fmt.i_width;
+    h = vd->fmt.i_height;
 
     IDeckLinkMutableVideoFrame *pDLVideoFrame;
     result = decklink_sys->p_output->CreateVideoFrame(w, h, w*3,
@@ -933,14 +936,6 @@ static int OpenVideo(vlc_object_t *p_this)
 
     sys->pool = NULL;
 
-    fmt->i_chroma = sys->tenbits
-        ? VLC_CODEC_I422_10L /* we will convert to v210 */
-        : VLC_CODEC_UYVY;
-    //video_format_FixRgb(fmt);
-
-    fmt->i_width = decklink_sys->i_width;
-    fmt->i_height = decklink_sys->i_height;
-
     char *pic_file = var_InheritString(p_this, VIDEO_CFG_PREFIX "nosignal-image");
     if (pic_file) {
         image_handler_t *img = image_HandlerCreate(p_this);



More information about the vlc-commits mailing list