Smart Wall SDK functionalities

Hello,

I get asked allot about what we can and can’t do with the Smart Wall programatically.

Our goal is to “pilot” the Smart Wall outside of the Smart Client from a supervisor.

I think this could be a good thread to list off what can be done in the latest version of the SDK and keep updating it for new versions.

I checked the VideoWallController sample, and this looks good to add and remove cameras from a view, but I don’t see a way to check the cameras currently displayed on a Smart Wall so that it can be properly managed.

Can you please confirm the following:

-Smart Wall commands can be triggered inside an Event Server background plugin or a standalone service application connected to the Milestone SDK.

-You can insert a camera on a specific Smart Wall monitor on a specific index.

-You can insert a camera in a new layout on a Smart Wall monitor.

-You can remove a camera from a Smart Wall monitor.

-You can apply a custom layout on a Smart Wall monitor.

-You can show a preset on a Smart Wall monitor.

-You can show a text message on a Smart Wall monitor.

-The documentation around the “VideoWallApplyXmlCommand” command is a bit vague.

  1. Does it allow us to show custom view items or a browser tile?
  2. Can we show live or independant playback and change the aspect ratio and stretch?
  3. Can we add a whole layout with multiple view items by quickly calling the command several times?

And so this I assume we cannot do?

-You cannot get the current layout of a Smart Wall monitor.

-You cannot insert a custom view item.

-You cannot insert a web browser.

-You cannot make the Smart Wall show bounding boxes.

Please let me know if I missed any features, or if there are some that are incorrect.

Thanks!

First a tip that I think you know, and see as a background for the questions, but is needed context for others reading my answer. I have sometimes recommended that developers start the Video Wall Controller sample, then send something to the Smart Wall by using the Smart Client’s built-in functionality. Using the sample’s “Video wall message listener” box you will be able to see the XML that was used.

What you list first I can confirm as being functionality of the Smart Wall and of the VideoWallController sample.

Your questions..

You cannot show custom view items (plugin based view items).

You can show a browser, the built-in browser item works.

You switch on and off the maintain-aspect-ratio mode. (When you look at the XML you find maintainimageaspectratio=“True/False”.)

You cannot send cameras in independent playback or control cameras in and out of independent playback by using the video wall commands.

You cannot get the current layout of a Smart Wall monitor. There is a command to set the layout. In the sample “Set monitor – using layout”.

You can send multiple cameras in one go, if you look at the sample “Show camera” you can pick multiple cameras and send them to the video wall with one click”

-

Your assumptions:

You cannot get the current layout of a Smart Wall monitor. By listening like the sample does you will be able to detect how many view items the current layout contains. (This is also the way to get an overview of cameras already on display.)

You cannot show custom view items (plugin based view items).

You can send a browser, by using the listener I was able to see the XML that should be used.

<viewitems><viewitem id="55e92276-1983-4a88-a8be-395721ea5417" displayname="HTML view item" shortcut="" type="VideoOS.RemoteClient.Plugin.HtmlViewItem.HtmlViewItem, VideoOS.RemoteClient.Plugin.HtmlViewItem"><iteminfo url="http://www.milestonesys.com/" scaling="0" addscript="False" hidenavigationbar="False" /><properties><property name="renderingEngine" value="1" /></properties></viewitem></viewitems>

I enabled the Analytics Overlay sample, this shows the overlay graphics on the Smart Wall same as it does in regular views. I expect it to be the same way with other forms of overlay. I do not consider this to be part of the video wall functionality.

--

Sample..

https://doc.developer.milestonesys.com/html/index.html?base=samples/componentsamples/videowallcontroller/readme.html&tree=tree_2.html

Hi Bo,

We have tried all these features and it works well!

The only challenge we have left is clearing a tile on the Smart Wall.

If I clear a single tile on a 4x4 using SC, I can listen and get the XML from the VideoWall test app.

When I send the same xml, we get a “Plugin not found” tile. Everytime we listen for the clear/empty tile the highlighted viewItemId is different.

<viewitems>	
	<viewitem id="ad4b026a-589a-4257-84fb-24b555a9c95a" displayname="Empty view item" shortcut="" type="VideoOS.RemoteClient.Application.Data.ContentTypes.ImageContentType.ImageViewItem, VideoOS.RemoteClient.Application">
		<iteminfo />
		<properties />
	</viewitem>
</viewitems>

In my opinion, it would be nice if we could somehow use this to set the empty tile. If you implement this, we could also set custom plugin tiles:

I CAN however clear a tile by sending a camera with and empty GUID, and so we get an empty tile instead of Plugin not found. This is the best I can do for now. Is there perhaps another way to clear a tile by index without calling Monitor.RemoveCameras?

I had to runs experiments, and get the help of my colleagues, but then I figured it out.

Try this chunk of XML.. (viewitem id can be anything, even empty.)

<viewitems><viewitem id="00000000-0000-0000-0000-000000000000" displayname="Empty ViewItem" shortcut="" type="VideoOS.RemoteClient.Application.Data.Configuration.EmptyViewItem, VideoOS.RemoteClient.Application"><properties /></viewitem></viewitems>

Tip. I read an empty view by using the Config API Client and found the XML in that way.

Hi Bo, thank you so much for the detailed response.

Follow up question:

Does Adaptive Streaming work with Smart Wall?

Can we chose which stream profile to send to a Smart Wall tile programatically?

Thanks!

You can neither send a specific stream to the Smart Wall using the Smart Client manual methods, nor using the MIP SDK and sending XML (MessageId.Control.VideoWallApplyXmlCommand).

Surprising to me as the XML does contain a property livestreamid, however the property is not used from what I have been able to find.