Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

AMCP INFO regression #1151

Open
super-ienien opened this issue Jan 7, 2019 · 24 comments
Open

AMCP INFO regression #1151

super-ienien opened this issue Jan 7, 2019 · 24 comments

Comments

@super-ienien
Copy link

super-ienien commented Jan 7, 2019

First, I wan't to thank you for what your doing with CasparCG. That's awesome guys !

Expected behaviour

I would expect that AMCP 2.2 still provide a command to get informations about config, paths, template etc

Current behaviour

The INFO [PATH | TEMPLATE | PATHS | ...] commands have been replaced by INFO [channel_id] but there is no new command that provide a way to get thoses precious informations that we had with AMCP 2.1.


Environment

  • Server version: v2.2
  • Operating system: Windows 10

In order to know what is the best solution for me to manage this issue in my own casparCG client, could you tell me what do you plan to do ? Leave AMCP that way, go back to get the behavior of AMCP 2.1 or implement new commands ?

Thanks a lot ;)

@Julusian
Copy link
Member

Which ones would you like to see brought back?
INFO & INFO 1 already have been.
INFO TEMPLATE might be tricky as that kind of logic is now supposed to be outsourced to media-scanner and trying to get it to interpret the ft templates the same will be hard/messy.
INFO CONFIG and INFO PATHS would be simple to do
INFO SYSTEM has had all the data sources stripped out, so would be better to avoid
INFO SERVER is pretty much just a bunch of INFO x, so can be done manually?
INFO QUEUES could be brought back, not sure how many uses it has though
INFO THREADS & INFO DELAY not sure of the benefits of these
Did I miss any?

@Julusian Julusian mentioned this issue Jan 19, 2019
@premultiply
Copy link

I think most important are solutions to retrieve info about

  1. reliable metadata from media files and templates (fields and their names)
  2. what is playing on which channel at which layer at which (time) position including in/out position and loop indicator etc. This is especially important for clients that do not support OSC.

@5opr4ni
Copy link
Contributor

5opr4ni commented Jan 20, 2019

Hi @premultiply

I don't understand, the things you are referring to has been there since February, or something, last year. ;)
The only thing not implemented is the template info (fields and their names)

Have a look here.
https://github.com/5opr4ni/help/wiki/AMCP-2.2#info

ex.
PLAY 1-10 PLAY_TIME SEEK 15340 LENGTH 125125
INFO 1
Returns

<?xml version="1.0" encoding="utf-8"?>
<channel>
   <framerate>50</framerate>
   <framerate>1</framerate>
   <mixer>
      <audio>
         <volume>115775648</volume>
         <volume>97853664</volume>
         <volume>53128900</volume>
         <volume>44045544</volume>
         <volume>0</volume>
         <volume>0</volume>
         <volume>0</volume>
         <volume>0</volume>
      </audio>
   </mixer>
   <stage>
      <layer>
         <layer_10>
            <background>
               <producer>empty</producer>
            </background>
            <foreground>
               <file>
                  <clip>306.80000000000001</clip>
                  <clip>2502.5</clip>
                  <name>PLAY_TIME.m4v</name>
                  <path>c:/caspar/_MEDIA/Play_Time.m4v</path>
                  <streams>
                     <file>
                        <streams_0>
                           <fps>25</fps>
                           <fps>1</fps>
                        </streams_0>
                        <streams_1>
                           <fps>0</fps>
                           <fps>0</fps>
                        </streams_1>
                        <streams_2>
                           <fps>0</fps>
                           <fps>0</fps>
                        </streams_2>
                        <streams_3>
                           <fps>90000</fps>
                           <fps>1</fps>
                        </streams_3>
                     </file>
                  </streams>
                  <time>1004.36</time>
                  <time>7147.2799999999997</time>
               </file>
               <loop>false</loop>
               <paused>false</paused>
               <producer>ffmpeg</producer>
            </foreground>
         </layer_10>
      </layer>
   </stage>
</channel>

@super-ienien
Copy link
Author

@Julusian

For me what should be reimplemented is the INFO CONFIG and INFO PATHS has there is no other way to retrieve the default config values to my knowledge.

For the INFO TEMPLATE i do not know because i’m Not using it.

@5opr4ni
Copy link
Contributor

5opr4ni commented Jan 20, 2019

Couldn't this be implemented outside the server, like the media scanner, in that way we could make it extendable, so it wouldn't inflict with the server? Just a thought!
A way to build special commands residing "server side". Maybe also implement a kind of scripting support so that it would be possible to create new "virtual" AMCP commands.

@super-ienien
Copy link
Author

I totally agreed that the new media scanner is a smart move. May INFO PATHS could be a part of it. But I don’t see the reason why externalizing INFO CONFIG would be better.

@Julusian
Copy link
Member

@5opr4ni sounds like you are thinking of #1135

CONFIG and PATHS are super simple though, and would only be a few pretty simple lines each inside the amcp files, so I'm not worried about complexity of those. The others are more complex/meessy, so once we know what is actually wanted it can be discussed where they reside or how they are implemented

@5opr4ni
Copy link
Contributor

5opr4ni commented Jan 20, 2019

@Julusian Yes!

@premultiply
Copy link

premultiply commented Jan 20, 2019

I don't understand, the things you are referring to has been there since February, or something, last year. ;)
The only thing not implemented is the template info (fields and their names)

Have a look here.
https://github.com/5opr4ni/help/wiki/AMCP-2.2#info

You are right, but this description can not be found in the official CasparCG github Wiki or anywhere else there.

For me this XML structure should be improved a little bit to make it easier to parse like this for example:

<?xml version="1.0" encoding="utf-8"?>
<channel id="1">
   <framerate n="50" d="1">50.0000</framerate>
   <mixer>
      <audio>
         <volume ch="1">115775648</volume>
         <volume ch="2">97853664</volume>
         <volume ch="3">53128900</volume>
         <volume ch="4">44045544</volume>
         <volume ch="5">0</volume>
         <volume ch="6">0</volume>
         <volume ch="7">0</volume>
         <volume ch="8">0</volume>
      </audio>
   </mixer>
   <stage>
      <layers>
         <layer id="10">
            <background>
               <producer>empty</producer>
            </background>
            <foreground>
               <file>
                  <clip_in>306.80000000000001</clip_in>
                  <clip_out>2502.5</clip_out>
                  <name>PLAY_TIME.m4v</name>
                  <path>c:/caspar/_MEDIA/Play_Time.m4v</path>
                  <streams>
                     <file>
                        <stream id="0" type="video">
                           <fps numerator="25" denominator="1">25.0000</fps>
                        </stream>
                        <stream id="1" type="unknown">
                        </stream>
                        <stream id="2" type="unknown">
                        </stream>
                        <stream id="3" type="audio">
                           <fps n="90000" d="1">90000.0000</fps>
                        </stream>
                     </file>
                  </streams>
                  <time_clip>1004.36</time_clip>
                  <time_total>7147.2799999999997</time_total>
               </file>
               <loop>false</loop>
               <paused>false</paused>
               <producer>ffmpeg</producer>
            </foreground>
         </layer>
      </layers>
   </stage>
</channel>

@5opr4ni
Copy link
Contributor

5opr4ni commented Jan 20, 2019

Hi

We want to keep everything at a bare minimum. The info should not differ from the OSC which is pumped out in a high frequency, so we need to keep it as clean as possible. Everything is absolute, so you can get what you want at client side. The servers main responsibility is to serve videoframes not format text.

/o

@5opr4ni
Copy link
Contributor

5opr4ni commented Jan 20, 2019

True regarding the docs, we are writing new documentation when there is time. We are a small group doing everything. Would be nice with som help. ;)

@didikunz
Copy link

I think INFO PATHS can be send to the elderly home :) As it can easy be extracted from the config and anyway only really helps when the client runs on the same machine as the server and so it is easy to get a hold to the config file.

@didikunz
Copy link

What I would like to see is something similar to INFO TEMPLATE, that can be used to query metadata from templates. Would be good to find a solution for HTML, scene and PSD templates to give back the information's about their fields also. But can be implemented in Scanner.exe if it is easier.

@super-ienien
Copy link
Author

super-ienien commented Jan 21, 2019

I think INFO PATHS can be send to the elderly home :)

Sorry @didikunz, i don't agree with you. INFO PATHS is useful in case where the client doesn't know where the server is located on the filesystem because it provide absolute file paths. INFO CONFIG just provides paths as they are specified in the config file.

And it is common to have client and server on the same machine

@super-ienien
Copy link
Author

To make it short, the only way for a local client to know where the Server is installed is by INFO PATHS

@didikunz
Copy link

My clients normally start the (local) servers along with itself, so they always know were the server is in the file system. But that is the reason, why we discuss these issues here, to find out, what is needed and what not. I do not mind keeping INFO PATHS but only commented my opinion on this.

@olzzon
Copy link

olzzon commented Jan 21, 2019

After Background info and Foreground info for non-playing files has been added to OSC, I think OSC can do most of whats needed.
And I plan is to support 2.2 in my CasparCG-state-scanner, and transition the ClipTool to the 2.2 server.

By using something like the CCG-state-scanner it´s easy to subscribe to a lot of info from the machine.
Right now I primary use it for "Let me know if there are there changes in the thumb folder", "Give me the latest playing time of all channels" and "Give me new channel-layer info when ever something new has happened on the server"

The good thing with the OSC, is that it can stream out a lot of data very fast, the weak thing (IMHO) is that it´s a server->client connection, and as the ACMP is a client-server connection, you need to open op port on both sides.
By using a thing like the CCG-state-scanner you only need to open up port on the CCG server and let it act like a web Graphql API.

If anyone has wishes for the https://github.com/olzzon/casparcg-state-scanner please let me know, and I´ll try to implement it. (Right now it´s mainly build for TV2 DK purposes)
But I think that no matter what, it would be great to have a functionality like this for CasparCG

@Julusian
Copy link
Member

Hmm, so it turns out that the old INFO TEMPLATE code hasn't really been removed at all. Only the 11 lines of code that exposes it to amcp has...
It really should be moved to the scanner though

@Julusian
Copy link
Member

INFO CONFIG and INFO PATHS are now in 2.3
INFO TEMPLATE is something for the media-scanner to implement (CasparCG/media-scanner#38) once it has been done there, then an AMCP wrapper for it can be added.

As far as I can tell nothing else is wanted from this task, or did I miss something else?

@super-ienien
Copy link
Author

Hey @Julusian. Thanks a lot ! That's perfect.

@drakmor
Copy link
Contributor

drakmor commented Feb 23, 2019

May be return INFO SYSTEM for enumerate Decklink/Blowfish/NDI/OpelAL/Screen devices?
I can make PR.

@Julusian
Copy link
Member

@drakmor do you mean available consumers or ones assigned to channels?

The ones in use ought to be part of INFO and OSC, but it appears to not be for some reason.
And the system for listing available devices, and the rest of the INFO SYSTEM command looks to have been mostly stripped away. I do think that being able to list decklink devices is very useful to have though.

@drakmor
Copy link
Contributor

drakmor commented Feb 23, 2019

Yes, list of available consumers.

@drakmor
Copy link
Contributor

drakmor commented Feb 23, 2019

Maybe roll back this commit? - 5118dd2

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

7 participants