[AG-DEV] Getting more than one service stream

Thomas D. Uram turam at mcs.anl.gov
Tue Jan 24 11:45:44 CST 2006


Derek:  Sorry it took some time to get back to you.  See comments inline...

On 1/13/06 10:38 AM, Derek Piper wrote:
> 
>     Hi Thomas,
> 
>     Thanks for getting back with me. I see what you mean about 
> connecting to the venue and getting the information that way. I have a 
> few thoughts on that:
> 
> - If the participants move venue, we have to manually go and change the 
> recorder, unless there's a 'follow participant' thing?

Good point.  There is no follow participant functionality, but I've thought
that it would be useful to add some observer functionality for applications
that care about venue client activity.  That would address this problem.  If
that's a priority for you, I'd suggest you add it to bugzilla as a feature
request.  Also, the code to do so would be pretty simple, so if you want to
figure it out and submit code with the request, that'd be great.

Given the amount of data generated by a recorder, though, I would think
people would want to record more selectively, instead of recording
in every room they visit.

> 
> - Very good point you make about obtaining the entire list of streams. I 
> certainly would want to have the mlb and screenstreamer entries for 
> example, and whatever else comes along the way. It's probably not 
> possible to do that from a service I'm guessing.
> 
> - Is it possible to get the encryption key from this venue client 
> method? it's not displayed in the venue client 'properties' (even though 
> it is in VIC/RAT etc.)

The encryption key is included in the StreamDescription, which is what
you get in both cases (service, or SOAP call to venue client).  It's just
not displayed in the Venue properties dialog (it is, however, in AG3).

> 
>     My reason for the service idea was this:
> 
> - AGVCRService can come up automatically when a venue is loaded, get its 
> services and call the AGVCR executable with the relevant options
> 
> - Here's the good part (so far this is theory). The called AGVCR gets 
> some flag that makes it check for an already running instance of AGVCR 
> (not done yet, have to figure that out) and then examines its arguments 
> and instead of initializing itself it just sends re-configuration 
> commands to the already running AGVCR (this is doable possible, since 
> the remote control stuff already exists in AGVCR)
> 
> - With the addition of a 'status' command for feedback from the running 
> AGVCR the configuring AGVCR (spawned from the service script) can see if 
> the original was recording/playing whatever. If so, then it sends the 
> appropriate command to re-initiate the recording in a subsequent file to 
> what is already in use (i.e. file-2). All commands from the buttons in 
> AGVCR can be
> 
> - Thus the recording 'follows' the participants, accounting for 
> bridged/non-bridged encrypted/non-encrypted venues as needed.

Given that, in this case, AGVCR is started by AGVCRService, the state of
'whether AGVCR is already running' could to some extent be captured by
the service, which would then execute or message as appropriate.  Just a
thought.


> 
> 
>     So, I'm not entirely sure on the direction to go in.
> 
>     Derek
> 
> Thomas D. Uram wrote:
> 
>> Hi Derek:
>>
>> You should find that the ConfigureStream method is called for each
>> stream.  Given that your service needs access to each of these streams,
>> you would have to collect them as they come in.  The default behavior
>> of services is to expect a single stream, so only one is stored; your
>> service would be a specialization of this behavior.
>>
>> An alternative, which I think I'd prefer, is that the recorder be 
>> integrated
>> as a stand-alone application instead of a service.  It could, on 
>> command, find the running
>> VenueClient (see bin/GoToVenue.py for details) and make SOAP calls to
>> it to get the list of streams, or even the venue URL if you wanted to 
>> make calls
>> directly there.  You might want to do the latter, because the venue 
>> client's
>> list of streams is dependent on services that the user has installed, 
>> so the
>> streams you get from it may be a subjective subset of those in the venue.
>>
>> I've been wanting to talk with you about integration of agvcr.  I'm 
>> glad to see
>> you're doing it.
>>
>> Tom
>>
>>
>> On 1/13/06 8:19 AM, Derek Piper wrote:
>>
>>>
>>>     Hi,
>>>
>>>     I'm trying to write a service script (for 2.3 or 2.4) for passing 
>>> parameters to AGVCR, to make it simple for people to use. I've 
>>> started hacking at a service script but I need some help in trying to 
>>> use the details of the service structure.
>>>     I need to be able to get all the info that is in the venue client 
>>> 'properties' dialog.
>>>
>>> i.e.
>>> stream type name (i.e. audio, video, mlb, screenstreamer)
>>> host/port/ttl
>>>
>>>     I see how to get the encryption key, so that's not a problem. My 
>>> problem is that I don't see how to reference more than one stream. I see
>>> self.streamDescription.location.host, but that only indicates one. 
>>> I've added capabilities for audio and video, both consumer and 
>>> producer, but it's not apparent how to get those streams' 
>>> configuration. I'm also missing the 'type' field too, I don't know if 
>>> it's self.streamDescription.location.type ? or something else.
>>>
>>>     Help would be appreciated.
>>>
>>>     Thanks,
>>>
>>>     Derek
>>>
>>
> 




More information about the ag-dev mailing list