*
* @param allowed if the local video is allowed or not
*/
public void sendModifyVideoContent(boolean allowed)
{
ContentPacketExtension ext = new ContentPacketExtension();
ContentPacketExtension remoteContent = getMediaHandler().
getRemoteContent(MediaType.VIDEO.toString());
if(remoteContent == null)
{
if(allowed)
sendAddVideoContent();
return;
}
else if(!allowed &&
((!isInitiator &&
remoteContent.getSenders() == SendersEnum.initiator) ||
(isInitiator &&
remoteContent.getSenders() == SendersEnum.responder)))
{
sendRemoveVideoContent();
return;
}
SendersEnum senders = remoteContent.getSenders();
/* adjust the senders attribute depending on current value and if we
* allowed or not local video streaming
*/
if(allowed)
{
if(senders != SendersEnum.none)
{
senders = SendersEnum.both;
}
else if(senders == SendersEnum.none)
{
senders
= isInitiator
? SendersEnum.responder
: SendersEnum.initiator;
}
}
else
{
if(senders == SendersEnum.both)
{
senders
= isInitiator
? SendersEnum.initiator
: SendersEnum.responder;
}
else
{
senders = SendersEnum.none;
}
}
ext.setSenders(senders);
ext.setCreator(remoteContent.getCreator());
ext.setName(remoteContent.getName());
JingleIQ contentIQ = JinglePacketFactory
.createContentModify(getProtocolProvider().getOurJID(),
this.peerJID, getJingleSID(), ext);
getProtocolProvider().getConnection().sendPacket(contentIQ);
try
{
getMediaHandler().reinitContent(remoteContent.getName(), senders);
getMediaHandler().start();
}
catch(Exception e)
{
logger.warn("Exception occurred when media reinitialization", e);