CasparCG / server

CasparCG Server is a Windows and Linux software used to play out professional graphics, audio and video to multiple outputs. It has been in 24/7 broadcast production since 2006. Ready-to-use downloads are available under the Releases tab https://casparcg.com.
GNU General Public License v3.0
905 stars 268 forks source link

Bug: background ffmpeg state no longer present in 2.4.0 RC1 #1526

Closed sandercox closed 6 months ago

sandercox commented 6 months ago

Observed Behavior

Our software listens on OSC for the path of the video file that was queued up to play next on a channel/layer. This worked flawlessly before but testing the latest 2.4.0 RC1 builds it seems to have broken not too long ago.

FFmpeg (path) status of background objects is not sent

Expected behaviour

FFmpeg path status of background objects is sent

Steps to reproduce

  1. start casparcg
  2. send loadbg ch-lay file auto
  3. notice that in the OSC data the background ffmpeg producer has no path / is not sent

Environment

I ran a git bisect to identify it was broken since this commit

keinaneen commented 6 months ago

I can confirm this issue.

v2.4.0-rc1 (12b4320) does have that issue. v2.4.0-beta1 (6b339fc) is working as expected.

XML produced by AMCP command INFO 1 is also missing background data.

At least the following OSC addresses / XML elements are missing:

    */background/file/clip
    */background/file/name
    */background/file/path
    */background/file/time
    */background/loop
    */background/transition/frame
    */background/transition/producer
    */background/transition/type

OSC log v2.4.0-rc1:

11:40:04.782 | RECEIVE    | ENDPOINT([::ffff:127.0.0.1]:56292) ADDRESS(/channel/1/stage/layer/0/background/producer) STRING(transition)

OSC log v2.4.0-beta1:

11:35:30.625 | RECEIVE    | ENDPOINT([::ffff:127.0.0.1]:50623) ADDRESS(/channel/1/stage/layer/0/background/file/clip) FLOAT(0) FLOAT(0)
11:35:30.625 | RECEIVE    | ENDPOINT([::ffff:127.0.0.1]:50623) ADDRESS(/channel/1/stage/layer/0/background/file/name) STRING(BigBuckBunny.mp4)
11:35:30.625 | RECEIVE    | ENDPOINT([::ffff:127.0.0.1]:50623) ADDRESS(/channel/1/stage/layer/0/background/file/path) STRING(C:/media/BigBuckBunny.mp4)
11:35:30.625 | RECEIVE    | ENDPOINT([::ffff:127.0.0.1]:50623) ADDRESS(/channel/1/stage/layer/0/background/file/time) FLOAT(0) FLOAT(0)
11:35:30.625 | RECEIVE    | ENDPOINT([::ffff:127.0.0.1]:50623) ADDRESS(/channel/1/stage/layer/0/background/loop) BOOL(FALSE)
11:35:30.625 | RECEIVE    | ENDPOINT([::ffff:127.0.0.1]:50623) ADDRESS(/channel/1/stage/layer/0/background/producer) STRING(transition)
11:35:30.625 | RECEIVE    | ENDPOINT([::ffff:127.0.0.1]:50623) ADDRESS(/channel/1/stage/layer/0/background/transition/frame) INT32(0) INT32(0)
11:35:30.625 | RECEIVE    | ENDPOINT([::ffff:127.0.0.1]:50623) ADDRESS(/channel/1/stage/layer/0/background/transition/producer) STRING(ffmpeg)
11:35:30.625 | RECEIVE    | ENDPOINT([::ffff:127.0.0.1]:50623) ADDRESS(/channel/1/stage/layer/0/background/transition/type) STRING(cut)

AMCP INFO 1 v2.4.0-rc1:

<?xml version="1.0" encoding="utf-8"?>
<channel>
   ...
   <mixer>
      ...
   </mixer>
   <output>
      ...
   </output>
   <stage>
      <layer>
         <layer_0>
            <background>
               <producer>transition</producer>
            </background>
            <foreground>
               ...
            </foreground>
         </layer_0>
      </layer>
   </stage>
</channel>

AMCP INFO 1 v2.4.0-beta1:

<?xml version="1.0" encoding="utf-8"?>
<channel>
   ...
   <mixer>
      ...
   </mixer>
   <output>
      ...
   </output>
   <stage>
      <layer>
         <layer_0>
            <background>
               <file>
                  <clip>0</clip>
                  <clip>0</clip>
                  <name>BigBuckBunny.mp4</name>
                  <path>C:/media/BigBuckBunny.mp4</path>
                  <time>0</time>
                  <time>0</time>
               </file>
               <loop>false</loop>
               <producer>transition</producer>
               <transition>
                  <frame>0</frame>
                  <frame>0</frame>
                  <producer>ffmpeg</producer>
                  <type>cut</type>
               </transition>
            </background>
            <foreground>
               ...
            </foreground>
         </layer_0>
      </layer>
   </stage>
</channel>
sandercox commented 6 months ago

@Julusian thank you for fixing this confirming it is working again in my setup!