melnijir / Dicaffeine

Repository for things connected to Dicaffeine player/streamer.
https://dicaffeine.com
MIT License
121 stars 5 forks source link

Raspi4 Bullseye Dual Display Configuration? #9

Open BjarneJensen opened 2 years ago

BjarneJensen commented 2 years ago

I was able to get dual display to work on Raspi4 with Buster, but have not had luck with Bullseye. Only the first screen shows the stream. Its probably something to do with my screen configuration. Any insights?

melnijir commented 2 years ago

I've just checked it and it works for me on Raspi 400. Can you start the stream and send me an output of these commands: xrandr and cat /tmp/yuri_config_player.xml

Thanks!

BjarneJensen commented 2 years ago

Thanks for the response. Here is the output from those commands when trying to run in advanced mode with two displays

pi@raspberrypi:~ $ xrandr
Can't open display 
pi@raspberrypi:~ $ cat /tmp/yuri_config_player.xml
cat: /tmp/yuri_config_player.xml: No such file or directory

If I run in simple mode with one display, I get:

pi@raspberrypi:~ $ cat /tmp/yuri_config_player.xml
<?xml version="1.0" encoding="UTF-8"?>
<app name="player">
    <description>Yuri auto-generated config player.</description>
    <node class="ndi_input" name="ndi_input_0">
        <parameter name="stream">LAPTOP</parameter>
        <parameter name="backup">LAPTOP</parameter>
        <parameter name="format">fastest</parameter>
        <parameter name="audio">false</parameter>
        <parameter name="lowres">true</parameter>
    </node>
    <node class="frame_info" name="frame_info_0">
        <parameter name="fps_stats">50</parameter>
    </node>
    <link class="single" name="link_video_input_0" source="ndi_input_0:0" target="frame_info_0:0"/>
    <link class="single" name="link_video_info_0" source="frame_info_0:0" target="src_select_auto_0:1"/>
    <node class="ndi_blank" name="blank_generator_auto_0">
        <parameter name="resolution">1920x1080</parameter>
        <parameter name="format">uyvy</parameter>
        <parameter name="fps">0</parameter>
    </node>
    <node class="select" name="src_select_auto_0">
        <parameter name="index">0</parameter>
    </node>
    <link class="single" name="link_blank_generator_auto_0" source="blank_generator_auto_0:0" target="src_select_auto_0:0"/>
    <link class="single" name="link_video_select_auto_0" source="src_select_auto_0:0" target="combine_auto:0"/>
    <node class="ndi_combine" name="combine_auto">
        <parameter name="x">1</parameter>
        <parameter name="y">1</parameter>
        <parameter name="main_input">-2</parameter>
    </node>
    <node class="dup" name="dup_auto"/>
    <node class="glx_window" name="window_auto">
        <parameter name="decorations">false</parameter>
        <parameter name="show_cursor">false</parameter>
        <parameter name="fullscreen">true</parameter>
        <parameter name="display">:0.0</parameter>
        <parameter name="resolution">1920x1080</parameter>
        <parameter name="position">0x0</parameter>
    </node>
    <link class="single" name="link_video_combine_auto" source="combine_auto:0" target="dup_auto:0"/>
    <link class="single" name="link_video_dup_screen_auto" source="dup_auto:-1" target="window_auto:0"/>
    <node class="event_delay" name="event_delay">
        <parameter name="delay">0.1</parameter>
    </node>
    <node class="event_info" name="event_info"/>
    <node class="webserver" name="websrv">
        <parameter name="port">9191</parameter>
    </node>
    <node class="web_control" name="webctrl">
        <parameter name="path">/control</parameter>
    </node>
    <node class="web_static" name="webstatic">
        <parameter name="path">/</parameter>
        <parameter name="filename">/etc/hostname</parameter>
        <parameter name="mime">text/plain</parameter>
    </node>
    <event>
route(pass(event_delay:index))-&gt;src_select_auto_0:index;
route(pass(1))-&gt;event_delay:index;
route(window_auto:mouse_right)-&gt;ndi_input_0:quit;
route(window_auto:button3)-&gt;ndi_input_0:quit;
route(window_auto:key24)-&gt;ndi_input_0:quit;
route(pass(1920))-&gt;window_auto:width;
route(pass(1080))-&gt;window_auto:height;
</event>
</app>

Thanks for any help you can provide. I think there is a new version of bullseye since I made this post, so I might try flashing that and starting over.

BjarneJensen commented 2 years ago

I just tried again in dual display mode, but the stream only displays on one screen. However, now the command shows:

pi@raspberrypi:~ $ cat /tmp/yuri_config_player.xml
<?xml version="1.0" encoding="UTF-8"?>
<app name="player">
    <description>Yuri auto-generated config player.</description>
    <node class="ndi_input" name="ndi_input_0">
        <parameter name="stream">LAPTOP</parameter>
        <parameter name="backup"></parameter>
        <parameter name="format">fastest</parameter>
        <parameter name="audio">false</parameter>
        <parameter name="lowres">true</parameter>
    </node>
    <node class="frame_info" name="frame_info_0">
        <parameter name="fps_stats">50</parameter>
    </node>
    <link class="single" name="link_video_input_0" source="ndi_input_0:0" target="frame_info_0:0"/>
    <link class="single" name="link_video_info_0" source="frame_info_0:0" target="src_select_HDMI-1_0:1"/>
    <node class="ndi_blank" name="blank_generator_HDMI-1_0">
        <parameter name="resolution">1920x1080</parameter>
        <parameter name="format">uyvy</parameter>
        <parameter name="fps">0</parameter>
    </node>
    <node class="select" name="src_select_HDMI-1_0">
        <parameter name="index">0</parameter>
    </node>
    <link class="single" name="link_blank_generator_HDMI-1_0" source="blank_generator_HDMI-1_0:0" target="src_select_HDMI-1_0:0"/>
    <link class="single" name="link_video_select_HDMI-1_0" source="src_select_HDMI-1_0:0" target="combine_HDMI-1:0"/>    <node class="ndi_combine" name="combine_HDMI-1">
        <parameter name="x">1</parameter>
        <parameter name="y">1</parameter>
        <parameter name="main_input">-2</parameter>
    </node>
    <node class="dup" name="dup_HDMI-1"/>
    <node class="glx_window" name="window_HDMI-1">
        <parameter name="decorations">false</parameter>
        <parameter name="show_cursor">false</parameter>
        <parameter name="fullscreen">true</parameter>
        <parameter name="display">:0.0</parameter>
        <parameter name="resolution">1920x1080</parameter>
        <parameter name="position">0x0</parameter>
    </node>
    <link class="single" name="link_video_combine_HDMI-1" source="combine_HDMI-1:0" target="dup_HDMI-1:0"/>
    <link class="single" name="link_video_dup_screen_HDMI-1" source="dup_HDMI-1:-1" target="window_HDMI-1:0"/>
    <node class="ndi_input" name="ndi_input_1">
        <parameter name="stream">LAPTOP</parameter>
        <parameter name="backup"></parameter>
        <parameter name="format">fastest</parameter>
        <parameter name="audio">false</parameter>
        <parameter name="lowres">true</parameter>
    </node>
    <node class="frame_info" name="frame_info_1">
        <parameter name="fps_stats">50</parameter>
    </node>
    <link class="single" name="link_video_input_1" source="ndi_input_1:0" target="frame_info_1:0"/>
    <link class="single" name="link_video_info_1" source="frame_info_1:0" target="src_select_HDMI-2_0:1"/>
    <node class="ndi_blank" name="blank_generator_HDMI-2_0">
        <parameter name="resolution">1920x1080</parameter>
        <parameter name="format">uyvy</parameter>
        <parameter name="fps">0</parameter>
    </node>
    <node class="select" name="src_select_HDMI-2_0">
        <parameter name="index">0</parameter>
    </node>
    <link class="single" name="link_blank_generator_HDMI-2_0" source="blank_generator_HDMI-2_0:0" target="src_select_HDMI-2_0:0"/>
    <link class="single" name="link_video_select_HDMI-2_0" source="src_select_HDMI-2_0:0" target="combine_HDMI-2:0"/>    <node class="ndi_combine" name="combine_HDMI-2">
        <parameter name="x">1</parameter>
        <parameter name="y">1</parameter>
        <parameter name="main_input">-2</parameter>
    </node>
    <node class="dup" name="dup_HDMI-2"/>
    <node class="glx_window" name="window_HDMI-2">
        <parameter name="decorations">false</parameter>
        <parameter name="show_cursor">false</parameter>
        <parameter name="fullscreen">true</parameter>
        <parameter name="display">:0.0</parameter>
        <parameter name="resolution">1920x1080</parameter>
        <parameter name="position">1920x0</parameter>
    </node>
    <link class="single" name="link_video_combine_HDMI-2" source="combine_HDMI-2:0" target="dup_HDMI-2:0"/>
    <link class="single" name="link_video_dup_screen_HDMI-2" source="dup_HDMI-2:-1" target="window_HDMI-2:0"/>
    <node class="event_delay" name="event_delay">
        <parameter name="delay">0.1</parameter>
    </node>
    <node class="event_info" name="event_info"/>
    <node class="webserver" name="websrv">
        <parameter name="port">9191</parameter>
    </node>
    <node class="web_control" name="webctrl">
        <parameter name="path">/control</parameter>
    </node>
    <node class="web_static" name="webstatic">
        <parameter name="path">/</parameter>
        <parameter name="filename">/etc/hostname</parameter>
        <parameter name="mime">text/plain</parameter>
    </node>
    <event>
route(pass(event_delay:index))-&gt;src_select_HDMI-1_0:index;
route(pass(event_delay:index))-&gt;src_select_HDMI-2_0:index;
route(pass(1))-&gt;event_delay:index;
route(window_HDMI-1:mouse_right)-&gt;ndi_input_0:quit;
route(window_HDMI-1:button3)-&gt;ndi_input_0:quit;
route(window_HDMI-1:key24)-&gt;ndi_input_0:quit;
route(pass(1920))-&gt;window_HDMI-1:width;
route(pass(1080))-&gt;window_HDMI-1:height;
route(window_HDMI-2:mouse_right)-&gt;ndi_input_0:quit;
route(window_HDMI-2:button3)-&gt;ndi_input_0:quit;
route(window_HDMI-2:key24)-&gt;ndi_input_0:quit;
route(pass(1920))-&gt;window_HDMI-2:width;
route(pass(1080))-&gt;window_HDMI-2:height;
</event>
</app>
melnijir commented 2 years ago

Thanks! I've just tried that and it worked fine for me. Can you use this config file within the command:

yuri2 /tmp/yuri_config_player.xml

It should manually start the player. Can you send me the output after few seconds of playback?

BjarneJensen commented 2 years ago

Thank you! Here's the output:

WARNING 25: 21:47:20 [NDIInput/ndi_input_0] Error setting parameter event_time
INFO 31: 21:47:20 [webserver/websrv] Created socket
INFO 33: 21:47:20 [web_static/webstatic] Resizing to 12
INFO 35: 21:47:20 [glx_window/window_auto] Geometry 800x600+0+0
INFO 35: 21:47:20 [glx_window/window_auto] Connected to display :0.0
INFO 35: 21:47:20 [glx_window/window_auto] Screen number is 0
INFO 35: 21:47:20 [glx_window/window_auto] Found root window
INFO 35: 21:47:20 [glx_window/window_auto] Found visual 626
INFO 35: 21:47:20 [glx_window/window_auto] geometry 1920x1080+0+0
INFO 35: 21:47:20 [glx_window/window_auto] X Window Created
INFO 31: 21:47:20 [webserver/websrv] Starting worker thread
INFO 33: 21:47:20 [web_static/webstatic] Registered to server
INFO 29: 21:47:20 [web_control/webctrl] Registered to server
INFO 31: 21:47:20 [webserver/websrv] Helper thread started
INFO 25: 21:47:20 [NDIInput/ndi_input_0] Found stream "LAPTOP-G1IANE7V (TouchDesigner)" with id 0
INFO 25: 21:47:20 [NDIInput/ndi_input_0] Receiving started
INFO 25: 21:47:20 [NDIInput/ndi_input_0] Sender doest not support PTZ, disabling events.
INFO 35: 21:47:21 [glx_window/window_auto] Created GLX Context
INFO 35: 21:47:21 [glx_window/window_auto] Decorations XChangeProperty returned 1
INFO 35: 21:47:21 [glx_window/window_auto] setting on top: 0
INFO 35: 21:47:21 [glx_window/window_auto] Fullscreen XChangeProperty returned 1
INFO 35: 21:47:21 [glx_window/window_auto] Stereo method: none
INFO 37: 21:47:21 [GL] Generated texture 1
ERROR 37: 21:47:21 [GL] Error 1280 setting texture params
ERROR 37: 21:47:21 [GL] Error 1280 setting texture params
INFO 24: 21:47:22 [frame_info/frame_info_0] Frame with format 'YUV 4:2:2 packed (UYVY)', resolution 640x360, progressive
ERROR 37: 21:47:22 [GL] Error 1280 setting texture params
ERROR 37: 21:47:22 [GL] Error 1280 setting texture params
INFO 24: 21:47:23 [frame_info/frame_info_0] Output 0 streamed 50 in 00:00:03.255162, that's 15.360219 fps, bitrate 7077.989 kB/s
INFO 24: 21:47:25 [frame_info/frame_info_0] Output 0 streamed 50 in 00:00:01.669849, that's 29.942827 fps, bitrate 13797.655 kB/s
INFO 35: 21:47:25 [glx_window/window_auto] FPS: 24.573
INFO 24: 21:47:27 [frame_info/frame_info_0] Output 0 streamed 50 in 00:00:01.663122, that's 30.063940 fps, bitrate 13853.464 kB/s
odmustafa commented 3 weeks ago

Was there ever a solution to getting dual output working again? Or any info on the last firmware version where dual output still worked with a Raspberry Pi 4b?