SlideShare a Scribd company logo
1 of 30
H323 MCU Functionality
Overview:
Current version CDE allows single H323 End Point to join the
audio/video conference using H323CDEAdapter Release 1.7.4.The
new version of CDE will allow creation/termination of an audio/video
conference room in which multiple H323 End Points are able to join
using H323CDEAdapter. In both the cases H323CDEAdapter will be
considered as a single logical Web Client by the CDE MCU.
Operational Concepts and Scenarios:
The AV Client is responsible for handling audio and video for a web
client. Communication between CDEMCU and H323CDEAdapter
is based on a protocol provided by NECST. The purpose of this
protocol is to manage communication between CDEMCU and
H323CDEAdapter. CDEMCU will send multiple audio buffers in a
single stream; H323CDEAdapter will detect the speaker among
the web clients. H323CDEAdapter will also detect the speaker
among the H323 End Points
The video display will depend upon the type of the video mode. There
are basically two video modes:
a) Mixed Video Mode
b) Single Video Mode
a) Mixed Video Mode
In the mixed video mode the video display will be as :
H323CDEAdapter will display quadrant image at the H323 End Point side. .
First
Quadrant
Second
Quadrant
Third
Quadrant
Fourth
Quadrant
๏‚ทThe image of the Web Client speaker will always be shown in the first quadrant.
๏‚ทThe image of the speaker among the H323 End Points will be shown at the
second quadrant.
๏‚ทThe image of any two H323 end points other than the speaker will be switched
between third and fourth quadrants.
๏‚ทIf H323 End Point, who was speaker and whose image was being displayed in
the second quadrant logs out, then any of the H323 End Point image will be
displayed in the second quadrant.
๏‚ทIn case there is no Web client present in the conference, the first quadrant will
display gray screen.
๏‚ทSame 4 quadrant image will be sent to CDE MCU server.
b) Single video mode
โ€ข Display the video of the speaker among the H323 EP at
the WC side.
โ€ข Display the video of the speaker among all the participants
at the H323 EP side.
โ€ข If the H323 EP is itself the speaker among all the
participants then display the video of the previous speaker
among all the participants at that H323 EP.
โ€ข The audio of the H323 End points will be sent to all other
H323 End points except himself.
โ€ข H323CDEAdapter will mix the audio from the CDEMCU
with the audio from all the H323 End Points and will send it
back to CDE MCU.
โ€ข H323CDEAdapter will send the mixed audio of CDE MCU
and the audio of all the H323 End Points except itself to
each H323 End Point.
Following diagram describes the functional blocks for H323CDEAdapter and
its interaction with CDEMCU:
H323CDEAda
pter
CDEMCU
Audio
(Send/Receive)
Video
(Send/Receive)
H323 MCU
AV Client AV Client
AV Client
Protocol
Entities
1
2 3 4
H323endpoint
H323endpoint
H323endpoint
In the implementation each of the H323 EP will have a audio buffer dictionary in which it
will have audio buffer for each of the H323 EP except himself and an audio buffer for the
CDE audio. We will also have a audio buffer dictionary for CDE MCU which will have
audio buffer for every H323 EP.
EP2
EP3 EP4 EP5 EP6 CDE
EP2 EP1
EP3 EP4 EP5 EP6 CDE
CDEMCU
EP1
EP2 EP3 EP4 EP5 EP6
EP1
Implementation
The classes that incorporate changes for the implementation of
this requirement are:
H323CAConferenceManager.cpp
H323CAConnection.cpp
H323CACDEConnection.cpp
H323CAVideoBuffer.cpp
H323Connection* H323CAConferenceManager::CreateConnection (unsigned callRefValue)
{
//To check whether the no. of H323 EP logged in is less than six or not. If yes then
// create a new connection for this H323 EP
if( GetNoOfH323EP() < MAX_H323_EP )
{
iNoOfH323Login++;
ssrc = dwH323SSRC & 0xff00ffff; // To generate the SSRC for the
ssrc |= DWORD(iNoOfH323Login<<16); // H323 EP
pH323Connection = new H323CAConnection(*this, callRefValue,ssrc);
IncrNoOfH323EP(); // Increment the no. of H323 EP
//logged in
SetAnswerSend(false);
}
-----------
}
BOOL H323CAConferenceManager::WriteH323Audio (const void* buffer , PINDEX
amount,const PString & thisToken,PString roomID, DWORD ssrc)
{
if ( DetectAudioLevel(buffer,amount) ) //If the audio packets coming are above audio
// level
{
Check the SSRC for H323 EP speaker and Overall speaker
if(CheckH323EPSpeaker(ssrc));
if(CheckOverallSpeaker(ssrc));
//Write the audio packet in the audio buffer of every connection(H323EP) except
//this connection
//Write the audio packet in the audio buffer in the audio buffer dictionary for CDE
}
}
BOOL H323CAConferenceManager::ReadH323Audio (const void* buffer , PINDEX
amount,const PString & hisToken,PString roomID)
{
// Read the CDE audio and write in the audio buffer for CDE in every
// connection(H323EP)
// Call the ReadH323Audio method for this connection to read the mixed
//audio
conn->ReadH323Audio(thisToken, buffer, amount);
}
BOOL H323CAConferenceManager::ReadCDEAudio (const void* buffer ,
PINDEX amount)
{
//scan through the audio buffers in the audio buffer dictionary for CDE
//and mix the signals
PINDEX i;
for (i = 0; i < H323AudioBuffers.GetSize(); i++)
{
PString key = H323AudioBuffers.GetKeyAt(i);
H323AudioBuffers[key].ReadAndMix((BYTE *)buffer, amount,
H323AudioBuffers.GetSize());
}
}
BOOL H323CAConferenceManager::WriteCDEVideo ( const void * buffer,
PINDEX amount, BOOL)
{
// If mixed video mode then write the video buffer in the CDE video
//buffer
oCDEVideoBuffer.Write((BYTE *)buffer, amount);
// If the video mode is set single then set the OverallSpeakerSSRC
//and OverallPreviousSpeakerSSRC according to the video display
//rules and write the video buffer in the corresponding buffer
// i.e. in oOverallSpeakerVideoBuffer or in
//OverallPrevSpeakerVideoBuffer
}
void H323CAConferenceManager::UpdateUserList(DWORD SSRC, PString userName, PString
userType ,BOOL type)
{
if ( type ) // If user logs in
{
// If it is the first participant in the conference then set the
//dOverallSpeakerSSRC and
// dOverallPrevSpeakerSSRC as zero for proper video display.
// Add the audio count object for the user in the overall audio count list as well.
}
else // user logs out
{
// remove the audio count object for the user from the overall audio count list
// check if the user that logs out is Overall speaker and if yes then set the
//dOverallSpeakerSSRC=0
// check if the user that logs out is Overall Previous speaker and if yes then set
// dOverallPrevSpeakerSSRC=0
}
}
int H323CAConferenceManager::AdapterLoginRequest(PString CallerName)
{
// Check for pCDEConnection ptr and perform login functions only if it
I //s Null
}
void H323CAConferenceManager::AdapterLogoutRequest()
{
//Clear H323 EP list
//Clear the H323 Audio count list and also the overall audio count list.
// Clear the overall speaker video buffer and overall Previous Speaker
// video buffer
// Set the dOverallSpeakerSSRC and dOverallPrevSpeakerSSRC to zero.
}
void H323CAConferenceManager::SendReleaseComplete()
{
//Clear H323 EP list
//Clear the H323 Audio count list and also the overall audio count list.
}
void H323CAConferenceManager::AddH323Member(H323CAConnection * newMember, DWORD ssrc)
{
// If this is the first entry in the room then create the room and video buffer and video position list
// Add this H323 EP to the H323 EP list and add the audio count object for this end point in
// H323AudioCountList and OverallAudioCountList.
// Add the new member to every other H323 member
// and every other H323 member to the new H323 member
for (PINDEX i = 0; i < H323EPList.GetSize(); i++)
{
PString token = H323EPList[i];
if (token != newToken)
{ H323CAConnection * conn = (H323CAConnection *)
FindConnectionWithLock(token);
if (conn != NULL)
{ conn->AddH323Member(newToken);
newMember->AddH323Member(token);
conn->Unlock();
}
}
}
newMember->AddH323Member(CDEToken);
// Add this H323 EP to the CDE
}
void H323CAConferenceManager::RemoveH323Member(H323CAConnection *
oldConn, DWORD ssrc)
{
//Clear the corner of the video window that the connection just vacated.
// Remove the member from the other members
// Remove the member from the CDE
//Remove the audio count for this H323 EP from OverallAudioCountList
//and H323AudioCountList
// Check if the H323 EP that logs out is Overall Previous speaker and if yes
// then set the
// dOverallPrevSpeakerSSRC=0
// Remove the room if it becomes empty and call adapter logout request
}
PINDEX H323CAConferenceManager::FindTokensVideoPosn(const PString &
thisToken, PString roomID)
{
// To return the video Position of the H323 EP
}
BOOL H323CAConferenceManager::CheckH323EPSpeaker(DWORD SSRC)
{
// To check the H323 Audio Packet for the speaker detection among the
//H323 EP
}
BOOL H323CAConferenceManager::CheckOverallSpeaker(DWORD SSRC)
{
// to check the Audio Packet of either H323 EP or WC for the speaker
//detection among the participants
}
BOOL H323CAConferenceManager::WriteVideo(const PString & thisToken,
const void * buffer, PINDEX amount, PString roomID, DWORD ssrc)
{
// This is called when video mode is set as mixed
// get the video position of the H323 EP in the quadrant display
// Check for H323 Speaker SSRC and set its value in accordance with
//video display scenario and
// write the video buffer in the corresponding video buffer
}
BOOL H323CAConferenceManager::ReadVideo(const void * buffer, PINDEX
amount, PString roomID )
{
// read the CDE video
oCDEVideoBuffer.Read((BYTE*)buffer, amount);
// Write in the video buffer for the H323 EP at position 0 i.e. in the first
//quadrant
videoBuffer.Write((BYTE *)buffer, amount, 0);
// Read the complete video buffer
videoBuffer.Read((BYTE *)buffer,amount);
// Write the same video buffer in the H323VideoBuffer to be send to CDE
//MCU
oH323VideoBuffer.Write((BYTE *)buffer , amount);
}
BOOL H323CAConferenceManager::WriteVideoSingleMode ( const PString &
thisToken, const void * buffer, PINDEX amount ,PString roomID,
DWORD ssrc )
{
//Check for H323 EP speaker and if 0 set the value to this SSRC
// Now Check the value of H323 EP speaker and if equals this SSRC
//then write the video in H323VideoBuffer
// Check the value of OverallSpeakerSSRC and
//OverallPrevSpeakerSSRC and set their values in accordance with the
//video display scenario and write the video in corres. Video buffer
}
BOOL H323CAConferenceManager::ReadVideoSingleMode( const PString &
thisToken, const void * buffer, PINDEX amount, PString roomID ,DWORD ssrc)
{
// read OverAllSpeaker video if the SSRC is not of the H323EP Speaker
if( ssrc != GetOverallSpeakerSSRC() )
{
oOverallSpeakerVideoBuffer.Read((BYTE*)buffer, amount);
}
else // read the OverallPreviousSpeaker video
{
oOverallPrevSpeakerVideoBuffer.Read((BYTE *)buffer , amount);
}
}
void H323CAConnection::CleanUpOnCallEnd()
{
// close all the audio video channels for incoming and outgoing audio/
//video transmission
// Remove the member from the list
refCAConfManager.RemoveH323Member(this,SSRC);
}
H323Connection::AnswerCallResponse H323CAConnection::OnAnswerCall(const
PString & caller, const H323SignalPDU & setupPDU, H323SignalPDU & )
{
โ€ฆโ€ฆโ€ฆโ€ฆโ€ฆโ€ฆ..
// Add the member in the list
refCAConfManager.AddH323Member(this,SSRC);
}
void H323CAConnection::OnIncomingVideo(const void * buffer, PINDEX amount)
{
// If video mode is mixed video mode then call corresponding function
refCAConfManager.WriteVideo(GetCallToken(), buffer, amount, roomID,
SSRC);
//if video mode is single video mode then call
refCAConfManager.WriteVideoSingleMode(GetCallToken(), buffer,
amount, roomID, SSRC);
}
void H323CAConnection::OnOutgoingVideo(const void * buffer, PINDEX amount)
{
// If video mode is mixed video mode then call corresponding function
refCAConfManager.ReadVideo(buffer, amount, roomID);
//if video mode is single video mode then call
refCAConfManager.ReadVideoSingleMode(GetCallToken(), buffer,
amount, roomID, SSRC);
}
void H323CAConnection::AddH323Member(const PString & token)
{
// Add the audio buffer for the specified token in this connection
audioBuffer.SetAt(token, new H323CAAudioBuffer);
}
void H323CAConnection::RemoveH323Member(const PString & token)
{
// Remove the audio buffer for the specified token from this connection
audioBuffer.RemoveAt(token);
}
BOOL H323CAConnection::WriteH323Audio(const PString & token, const void * buffer,
PINDEX amount)
{
// Get the audio buffer for the specified token in this connection
H323CAAudioBuffer *audioBuff = audioBuffer.GetAt(token);
// and write the audio in that audio buffer
audioBuff->Write((BYTE *)buffer, amount);
}
BOOL H323CAConnection::ReadH323Audio(const PString & /*token*/, const void *
buffer, PINDEX amount)
{
// scan through the audio buffers and mix the signals
PINDEX i;
for (i = 0; i < numChannels; i++)
{
PString key = audioBuffer.GetKeyAt(i);
audioBuffer[key].ReadAndMix((BYTE *)buffer, amount,
numChannels);
}
}
void H323CACDEConnection::AudioVideoTimer(PTimer& , INT)
{
//Start Read Audio timer by giving the notifier function and delay time
timerReadAudio.SetNotifier(PCREATE_NOTIFIER(OnReadAudioTime));
timerReadAudio.RunContinuous(READ_AUDIO_TIMEOUT);
}
void H323CACDEConnection::OnWriteAudioTimeForH323()
{
-------------
// Check for overall speaker also
-------------
}
void H323CACDEConnection::OnReadAudioTime(PTimer &, INT)
{
// Call this function at regular intervals to read audio for CDE
ReadAudioForCDE();
}
void H323CAVideoBuffer::Clear(PINDEX posn)
{
// Clear the video buffer at the specified position for mixed video
//mode
}
void H323CAVideoBuffer::Write(BYTE * data, PINDEX amount,
PINDEX posn)
{
// Write the video buffer at the specified position for mixed video
//mode
}

More Related Content

Similar to 40005571-H323MCU-Functionality.ppt

Ron harding projects & figures
Ron harding projects & figuresRon harding projects & figures
Ron harding projects & figures
Ron Harding
ย 
The IoT Academy IoT training Arduino Part 5 Arduino peripherals
The IoT Academy IoT training Arduino Part 5 Arduino peripheralsThe IoT Academy IoT training Arduino Part 5 Arduino peripherals
The IoT Academy IoT training Arduino Part 5 Arduino peripherals
The IOT Academy
ย 
(381877808) 102054282 5-listing-program
(381877808) 102054282 5-listing-program(381877808) 102054282 5-listing-program
(381877808) 102054282 5-listing-program
Dimz I
ย 

Similar to 40005571-H323MCU-Functionality.ppt (20)

Bsdconv
BsdconvBsdconv
Bsdconv
ย 
Combinational Circuits
Combinational CircuitsCombinational Circuits
Combinational Circuits
ย 
GNU Radio
GNU RadioGNU Radio
GNU Radio
ย 
Programming smart contracts in solidity
Programming smart contracts in solidityProgramming smart contracts in solidity
Programming smart contracts in solidity
ย 
Ron harding projects & figures
Ron harding projects & figuresRon harding projects & figures
Ron harding projects & figures
ย 
Chordophonet Virtual Concert Pedal Harp, Celtic Harp, Electric and Synth Harp...
Chordophonet Virtual Concert Pedal Harp, Celtic Harp, Electric and Synth Harp...Chordophonet Virtual Concert Pedal Harp, Celtic Harp, Electric and Synth Harp...
Chordophonet Virtual Concert Pedal Harp, Celtic Harp, Electric and Synth Harp...
ย 
/Home/nvlogic/desktop/spraaf3
/Home/nvlogic/desktop/spraaf3/Home/nvlogic/desktop/spraaf3
/Home/nvlogic/desktop/spraaf3
ย 
Itsp documentation quadcopter flight controller based on kalman filters
Itsp documentation   quadcopter flight controller based on kalman filtersItsp documentation   quadcopter flight controller based on kalman filters
Itsp documentation quadcopter flight controller based on kalman filters
ย 
The IoT Academy IoT training Arduino Part 5 Arduino peripherals
The IoT Academy IoT training Arduino Part 5 Arduino peripheralsThe IoT Academy IoT training Arduino Part 5 Arduino peripherals
The IoT Academy IoT training Arduino Part 5 Arduino peripherals
ย 
Avr book
Avr bookAvr book
Avr book
ย 
Microcontroladores: programaciรณn con microcontrolador AVR
Microcontroladores: programaciรณn con microcontrolador AVRMicrocontroladores: programaciรณn con microcontrolador AVR
Microcontroladores: programaciรณn con microcontrolador AVR
ย 
AVR Micro controller Interfacing
AVR Micro controller Interfacing AVR Micro controller Interfacing
AVR Micro controller Interfacing
ย 
OSC and DMXControl
OSC and DMXControlOSC and DMXControl
OSC and DMXControl
ย 
(381877808) 102054282 5-listing-program
(381877808) 102054282 5-listing-program(381877808) 102054282 5-listing-program
(381877808) 102054282 5-listing-program
ย 
semaphore flag signals
semaphore flag signalssemaphore flag signals
semaphore flag signals
ย 
SENSOR DATA COMMUNICATION TO THNIGSPEAK IOT PLATFORM USING RASPBERRY P
SENSOR DATA COMMUNICATION TO THNIGSPEAK  IOT PLATFORM USING RASPBERRY PSENSOR DATA COMMUNICATION TO THNIGSPEAK  IOT PLATFORM USING RASPBERRY P
SENSOR DATA COMMUNICATION TO THNIGSPEAK IOT PLATFORM USING RASPBERRY P
ย 
AVR_Course_Day6 external hardware interrupts and analogue to digital converter
AVR_Course_Day6 external hardware  interrupts and analogue to digital converterAVR_Course_Day6 external hardware  interrupts and analogue to digital converter
AVR_Course_Day6 external hardware interrupts and analogue to digital converter
ย 
Utft
UtftUtft
Utft
ย 
Certification
CertificationCertification
Certification
ย 
Design and Implementation of HDMI Transmitter
Design and Implementation of HDMI TransmitterDesign and Implementation of HDMI Transmitter
Design and Implementation of HDMI Transmitter
ย 

More from AjaySahre

Browser Security ppt.pptx
Browser Security ppt.pptxBrowser Security ppt.pptx
Browser Security ppt.pptx
AjaySahre
ย 
a-Blue-Eyes.pptx
a-Blue-Eyes.pptxa-Blue-Eyes.pptx
a-Blue-Eyes.pptx
AjaySahre
ย 
Smart Cards.pptx
Smart Cards.pptxSmart Cards.pptx
Smart Cards.pptx
AjaySahre
ย 
36890126-Blue-Eyes.ppt
36890126-Blue-Eyes.ppt36890126-Blue-Eyes.ppt
36890126-Blue-Eyes.ppt
AjaySahre
ย 
ZigBee technology.pptx
ZigBee technology.pptxZigBee technology.pptx
ZigBee technology.pptx
AjaySahre
ย 
Presentation.pptx
Presentation.pptxPresentation.pptx
Presentation.pptx
AjaySahre
ย 

More from AjaySahre (8)

Browser Security ppt.pptx
Browser Security ppt.pptxBrowser Security ppt.pptx
Browser Security ppt.pptx
ย 
e-paper.pptx
e-paper.pptxe-paper.pptx
e-paper.pptx
ย 
a-Blue-Eyes.pptx
a-Blue-Eyes.pptxa-Blue-Eyes.pptx
a-Blue-Eyes.pptx
ย 
Smart Cards.pptx
Smart Cards.pptxSmart Cards.pptx
Smart Cards.pptx
ย 
36890126-Blue-Eyes.ppt
36890126-Blue-Eyes.ppt36890126-Blue-Eyes.ppt
36890126-Blue-Eyes.ppt
ย 
ZigBee technology.pptx
ZigBee technology.pptxZigBee technology.pptx
ZigBee technology.pptx
ย 
Presentation.pptx
Presentation.pptxPresentation.pptx
Presentation.pptx
ย 
51775454-SMART-CARDS.ppt
51775454-SMART-CARDS.ppt51775454-SMART-CARDS.ppt
51775454-SMART-CARDS.ppt
ย 

Recently uploaded

Sonagachi * best call girls in Kolkata | โ‚น,9500 Pay Cash 8005736733 Free Home...
Sonagachi * best call girls in Kolkata | โ‚น,9500 Pay Cash 8005736733 Free Home...Sonagachi * best call girls in Kolkata | โ‚น,9500 Pay Cash 8005736733 Free Home...
Sonagachi * best call girls in Kolkata | โ‚น,9500 Pay Cash 8005736733 Free Home...
HyderabadDolls
ย 
In Riyadh ((+919101817206)) Cytotec kit @ Abortion Pills Saudi Arabia
In Riyadh ((+919101817206)) Cytotec kit @ Abortion Pills Saudi ArabiaIn Riyadh ((+919101817206)) Cytotec kit @ Abortion Pills Saudi Arabia
In Riyadh ((+919101817206)) Cytotec kit @ Abortion Pills Saudi Arabia
ahmedjiabur940
ย 
Abortion pills in Doha {{ QATAR }} +966572737505) Get Cytotec
Abortion pills in Doha {{ QATAR }} +966572737505) Get CytotecAbortion pills in Doha {{ QATAR }} +966572737505) Get Cytotec
Abortion pills in Doha {{ QATAR }} +966572737505) Get Cytotec
Abortion pills in Riyadh +966572737505 get cytotec
ย 
Call Girls in G.T.B. Nagar (delhi) call me [๐Ÿ”9953056974๐Ÿ”] escort service 24X7
Call Girls in G.T.B. Nagar  (delhi) call me [๐Ÿ”9953056974๐Ÿ”] escort service 24X7Call Girls in G.T.B. Nagar  (delhi) call me [๐Ÿ”9953056974๐Ÿ”] escort service 24X7
Call Girls in G.T.B. Nagar (delhi) call me [๐Ÿ”9953056974๐Ÿ”] escort service 24X7
9953056974 Low Rate Call Girls In Saket, Delhi NCR
ย 
Top profile Call Girls In Latur [ 7014168258 ] Call Me For Genuine Models We ...
Top profile Call Girls In Latur [ 7014168258 ] Call Me For Genuine Models We ...Top profile Call Girls In Latur [ 7014168258 ] Call Me For Genuine Models We ...
Top profile Call Girls In Latur [ 7014168258 ] Call Me For Genuine Models We ...
gajnagarg
ย 
Top profile Call Girls In Hapur [ 7014168258 ] Call Me For Genuine Models We ...
Top profile Call Girls In Hapur [ 7014168258 ] Call Me For Genuine Models We ...Top profile Call Girls In Hapur [ 7014168258 ] Call Me For Genuine Models We ...
Top profile Call Girls In Hapur [ 7014168258 ] Call Me For Genuine Models We ...
nirzagarg
ย 
Top profile Call Girls In bhavnagar [ 7014168258 ] Call Me For Genuine Models...
Top profile Call Girls In bhavnagar [ 7014168258 ] Call Me For Genuine Models...Top profile Call Girls In bhavnagar [ 7014168258 ] Call Me For Genuine Models...
Top profile Call Girls In bhavnagar [ 7014168258 ] Call Me For Genuine Models...
gajnagarg
ย 
Belur $ Female Escorts Service in Kolkata (Adult Only) 8005736733 Escort Serv...
Belur $ Female Escorts Service in Kolkata (Adult Only) 8005736733 Escort Serv...Belur $ Female Escorts Service in Kolkata (Adult Only) 8005736733 Escort Serv...
Belur $ Female Escorts Service in Kolkata (Adult Only) 8005736733 Escort Serv...
HyderabadDolls
ย 
Diamond Harbour \ Russian Call Girls Kolkata | Book 8005736733 Extreme Naught...
Diamond Harbour \ Russian Call Girls Kolkata | Book 8005736733 Extreme Naught...Diamond Harbour \ Russian Call Girls Kolkata | Book 8005736733 Extreme Naught...
Diamond Harbour \ Russian Call Girls Kolkata | Book 8005736733 Extreme Naught...
HyderabadDolls
ย 
Jual obat aborsi Bandung ( 085657271886 ) Cytote pil telat bulan penggugur ka...
Jual obat aborsi Bandung ( 085657271886 ) Cytote pil telat bulan penggugur ka...Jual obat aborsi Bandung ( 085657271886 ) Cytote pil telat bulan penggugur ka...
Jual obat aborsi Bandung ( 085657271886 ) Cytote pil telat bulan penggugur ka...
Klinik kandungan
ย 
High Profile Call Girls Service in Jalore { 9332606886 } VVIP NISHA Call Girl...
High Profile Call Girls Service in Jalore { 9332606886 } VVIP NISHA Call Girl...High Profile Call Girls Service in Jalore { 9332606886 } VVIP NISHA Call Girl...
High Profile Call Girls Service in Jalore { 9332606886 } VVIP NISHA Call Girl...
kumargunjan9515
ย 
Top profile Call Girls In Chandrapur [ 7014168258 ] Call Me For Genuine Model...
Top profile Call Girls In Chandrapur [ 7014168258 ] Call Me For Genuine Model...Top profile Call Girls In Chandrapur [ 7014168258 ] Call Me For Genuine Model...
Top profile Call Girls In Chandrapur [ 7014168258 ] Call Me For Genuine Model...
gajnagarg
ย 

Recently uploaded (20)

Call Girls In GOA North Goa +91-8588052666 Direct Cash Escorts Service
Call Girls In GOA North Goa +91-8588052666 Direct Cash Escorts ServiceCall Girls In GOA North Goa +91-8588052666 Direct Cash Escorts Service
Call Girls In GOA North Goa +91-8588052666 Direct Cash Escorts Service
ย 
Sonagachi * best call girls in Kolkata | โ‚น,9500 Pay Cash 8005736733 Free Home...
Sonagachi * best call girls in Kolkata | โ‚น,9500 Pay Cash 8005736733 Free Home...Sonagachi * best call girls in Kolkata | โ‚น,9500 Pay Cash 8005736733 Free Home...
Sonagachi * best call girls in Kolkata | โ‚น,9500 Pay Cash 8005736733 Free Home...
ย 
In Riyadh ((+919101817206)) Cytotec kit @ Abortion Pills Saudi Arabia
In Riyadh ((+919101817206)) Cytotec kit @ Abortion Pills Saudi ArabiaIn Riyadh ((+919101817206)) Cytotec kit @ Abortion Pills Saudi Arabia
In Riyadh ((+919101817206)) Cytotec kit @ Abortion Pills Saudi Arabia
ย 
Abortion pills in Doha {{ QATAR }} +966572737505) Get Cytotec
Abortion pills in Doha {{ QATAR }} +966572737505) Get CytotecAbortion pills in Doha {{ QATAR }} +966572737505) Get Cytotec
Abortion pills in Doha {{ QATAR }} +966572737505) Get Cytotec
ย 
็คพๅ†…ๅ‹‰ๅผทไผš่ณ‡ๆ–™_Object Recognition as Next Token Prediction
็คพๅ†…ๅ‹‰ๅผทไผš่ณ‡ๆ–™_Object Recognition as Next Token Prediction็คพๅ†…ๅ‹‰ๅผทไผš่ณ‡ๆ–™_Object Recognition as Next Token Prediction
็คพๅ†…ๅ‹‰ๅผทไผš่ณ‡ๆ–™_Object Recognition as Next Token Prediction
ย 
Dubai Call Girls Peeing O525547819 Call Girls Dubai
Dubai Call Girls Peeing O525547819 Call Girls DubaiDubai Call Girls Peeing O525547819 Call Girls Dubai
Dubai Call Girls Peeing O525547819 Call Girls Dubai
ย 
Giridih Escorts Service Girl ^ 9332606886, WhatsApp Anytime Giridih
Giridih Escorts Service Girl ^ 9332606886, WhatsApp Anytime GiridihGiridih Escorts Service Girl ^ 9332606886, WhatsApp Anytime Giridih
Giridih Escorts Service Girl ^ 9332606886, WhatsApp Anytime Giridih
ย 
Call Girls in G.T.B. Nagar (delhi) call me [๐Ÿ”9953056974๐Ÿ”] escort service 24X7
Call Girls in G.T.B. Nagar  (delhi) call me [๐Ÿ”9953056974๐Ÿ”] escort service 24X7Call Girls in G.T.B. Nagar  (delhi) call me [๐Ÿ”9953056974๐Ÿ”] escort service 24X7
Call Girls in G.T.B. Nagar (delhi) call me [๐Ÿ”9953056974๐Ÿ”] escort service 24X7
ย 
Top profile Call Girls In Latur [ 7014168258 ] Call Me For Genuine Models We ...
Top profile Call Girls In Latur [ 7014168258 ] Call Me For Genuine Models We ...Top profile Call Girls In Latur [ 7014168258 ] Call Me For Genuine Models We ...
Top profile Call Girls In Latur [ 7014168258 ] Call Me For Genuine Models We ...
ย 
Digital Transformation Playbook by Graham Ware
Digital Transformation Playbook by Graham WareDigital Transformation Playbook by Graham Ware
Digital Transformation Playbook by Graham Ware
ย 
๐Ÿ‘‰ Bhilai Call Girls Service Just Call ๐Ÿ‘๐Ÿ‘„6378878445 ๐Ÿ‘๐Ÿ‘„ Top Class Call Girl Ser...
๐Ÿ‘‰ Bhilai Call Girls Service Just Call ๐Ÿ‘๐Ÿ‘„6378878445 ๐Ÿ‘๐Ÿ‘„ Top Class Call Girl Ser...๐Ÿ‘‰ Bhilai Call Girls Service Just Call ๐Ÿ‘๐Ÿ‘„6378878445 ๐Ÿ‘๐Ÿ‘„ Top Class Call Girl Ser...
๐Ÿ‘‰ Bhilai Call Girls Service Just Call ๐Ÿ‘๐Ÿ‘„6378878445 ๐Ÿ‘๐Ÿ‘„ Top Class Call Girl Ser...
ย 
Top profile Call Girls In Hapur [ 7014168258 ] Call Me For Genuine Models We ...
Top profile Call Girls In Hapur [ 7014168258 ] Call Me For Genuine Models We ...Top profile Call Girls In Hapur [ 7014168258 ] Call Me For Genuine Models We ...
Top profile Call Girls In Hapur [ 7014168258 ] Call Me For Genuine Models We ...
ย 
Top profile Call Girls In bhavnagar [ 7014168258 ] Call Me For Genuine Models...
Top profile Call Girls In bhavnagar [ 7014168258 ] Call Me For Genuine Models...Top profile Call Girls In bhavnagar [ 7014168258 ] Call Me For Genuine Models...
Top profile Call Girls In bhavnagar [ 7014168258 ] Call Me For Genuine Models...
ย 
Introduction to Statistics Presentation.pptx
Introduction to Statistics Presentation.pptxIntroduction to Statistics Presentation.pptx
Introduction to Statistics Presentation.pptx
ย 
Belur $ Female Escorts Service in Kolkata (Adult Only) 8005736733 Escort Serv...
Belur $ Female Escorts Service in Kolkata (Adult Only) 8005736733 Escort Serv...Belur $ Female Escorts Service in Kolkata (Adult Only) 8005736733 Escort Serv...
Belur $ Female Escorts Service in Kolkata (Adult Only) 8005736733 Escort Serv...
ย 
Diamond Harbour \ Russian Call Girls Kolkata | Book 8005736733 Extreme Naught...
Diamond Harbour \ Russian Call Girls Kolkata | Book 8005736733 Extreme Naught...Diamond Harbour \ Russian Call Girls Kolkata | Book 8005736733 Extreme Naught...
Diamond Harbour \ Russian Call Girls Kolkata | Book 8005736733 Extreme Naught...
ย 
Jual obat aborsi Bandung ( 085657271886 ) Cytote pil telat bulan penggugur ka...
Jual obat aborsi Bandung ( 085657271886 ) Cytote pil telat bulan penggugur ka...Jual obat aborsi Bandung ( 085657271886 ) Cytote pil telat bulan penggugur ka...
Jual obat aborsi Bandung ( 085657271886 ) Cytote pil telat bulan penggugur ka...
ย 
Nirala Nagar / Cheap Call Girls In Lucknow Phone No 9548273370 Elite Escort S...
Nirala Nagar / Cheap Call Girls In Lucknow Phone No 9548273370 Elite Escort S...Nirala Nagar / Cheap Call Girls In Lucknow Phone No 9548273370 Elite Escort S...
Nirala Nagar / Cheap Call Girls In Lucknow Phone No 9548273370 Elite Escort S...
ย 
High Profile Call Girls Service in Jalore { 9332606886 } VVIP NISHA Call Girl...
High Profile Call Girls Service in Jalore { 9332606886 } VVIP NISHA Call Girl...High Profile Call Girls Service in Jalore { 9332606886 } VVIP NISHA Call Girl...
High Profile Call Girls Service in Jalore { 9332606886 } VVIP NISHA Call Girl...
ย 
Top profile Call Girls In Chandrapur [ 7014168258 ] Call Me For Genuine Model...
Top profile Call Girls In Chandrapur [ 7014168258 ] Call Me For Genuine Model...Top profile Call Girls In Chandrapur [ 7014168258 ] Call Me For Genuine Model...
Top profile Call Girls In Chandrapur [ 7014168258 ] Call Me For Genuine Model...
ย 

40005571-H323MCU-Functionality.ppt

  • 2. Overview: Current version CDE allows single H323 End Point to join the audio/video conference using H323CDEAdapter Release 1.7.4.The new version of CDE will allow creation/termination of an audio/video conference room in which multiple H323 End Points are able to join using H323CDEAdapter. In both the cases H323CDEAdapter will be considered as a single logical Web Client by the CDE MCU.
  • 3. Operational Concepts and Scenarios: The AV Client is responsible for handling audio and video for a web client. Communication between CDEMCU and H323CDEAdapter is based on a protocol provided by NECST. The purpose of this protocol is to manage communication between CDEMCU and H323CDEAdapter. CDEMCU will send multiple audio buffers in a single stream; H323CDEAdapter will detect the speaker among the web clients. H323CDEAdapter will also detect the speaker among the H323 End Points The video display will depend upon the type of the video mode. There are basically two video modes: a) Mixed Video Mode b) Single Video Mode
  • 4. a) Mixed Video Mode In the mixed video mode the video display will be as : H323CDEAdapter will display quadrant image at the H323 End Point side. . First Quadrant Second Quadrant Third Quadrant Fourth Quadrant ๏‚ทThe image of the Web Client speaker will always be shown in the first quadrant. ๏‚ทThe image of the speaker among the H323 End Points will be shown at the second quadrant. ๏‚ทThe image of any two H323 end points other than the speaker will be switched between third and fourth quadrants. ๏‚ทIf H323 End Point, who was speaker and whose image was being displayed in the second quadrant logs out, then any of the H323 End Point image will be displayed in the second quadrant. ๏‚ทIn case there is no Web client present in the conference, the first quadrant will display gray screen. ๏‚ทSame 4 quadrant image will be sent to CDE MCU server.
  • 5. b) Single video mode โ€ข Display the video of the speaker among the H323 EP at the WC side. โ€ข Display the video of the speaker among all the participants at the H323 EP side. โ€ข If the H323 EP is itself the speaker among all the participants then display the video of the previous speaker among all the participants at that H323 EP.
  • 6. โ€ข The audio of the H323 End points will be sent to all other H323 End points except himself. โ€ข H323CDEAdapter will mix the audio from the CDEMCU with the audio from all the H323 End Points and will send it back to CDE MCU. โ€ข H323CDEAdapter will send the mixed audio of CDE MCU and the audio of all the H323 End Points except itself to each H323 End Point.
  • 7. Following diagram describes the functional blocks for H323CDEAdapter and its interaction with CDEMCU: H323CDEAda pter CDEMCU Audio (Send/Receive) Video (Send/Receive) H323 MCU AV Client AV Client AV Client Protocol Entities 1 2 3 4 H323endpoint H323endpoint H323endpoint
  • 8. In the implementation each of the H323 EP will have a audio buffer dictionary in which it will have audio buffer for each of the H323 EP except himself and an audio buffer for the CDE audio. We will also have a audio buffer dictionary for CDE MCU which will have audio buffer for every H323 EP. EP2 EP3 EP4 EP5 EP6 CDE EP2 EP1 EP3 EP4 EP5 EP6 CDE CDEMCU EP1 EP2 EP3 EP4 EP5 EP6 EP1
  • 9. Implementation The classes that incorporate changes for the implementation of this requirement are: H323CAConferenceManager.cpp H323CAConnection.cpp H323CACDEConnection.cpp H323CAVideoBuffer.cpp
  • 10. H323Connection* H323CAConferenceManager::CreateConnection (unsigned callRefValue) { //To check whether the no. of H323 EP logged in is less than six or not. If yes then // create a new connection for this H323 EP if( GetNoOfH323EP() < MAX_H323_EP ) { iNoOfH323Login++; ssrc = dwH323SSRC & 0xff00ffff; // To generate the SSRC for the ssrc |= DWORD(iNoOfH323Login<<16); // H323 EP pH323Connection = new H323CAConnection(*this, callRefValue,ssrc); IncrNoOfH323EP(); // Increment the no. of H323 EP //logged in SetAnswerSend(false); } ----------- }
  • 11. BOOL H323CAConferenceManager::WriteH323Audio (const void* buffer , PINDEX amount,const PString & thisToken,PString roomID, DWORD ssrc) { if ( DetectAudioLevel(buffer,amount) ) //If the audio packets coming are above audio // level { Check the SSRC for H323 EP speaker and Overall speaker if(CheckH323EPSpeaker(ssrc)); if(CheckOverallSpeaker(ssrc)); //Write the audio packet in the audio buffer of every connection(H323EP) except //this connection //Write the audio packet in the audio buffer in the audio buffer dictionary for CDE } }
  • 12. BOOL H323CAConferenceManager::ReadH323Audio (const void* buffer , PINDEX amount,const PString & hisToken,PString roomID) { // Read the CDE audio and write in the audio buffer for CDE in every // connection(H323EP) // Call the ReadH323Audio method for this connection to read the mixed //audio conn->ReadH323Audio(thisToken, buffer, amount); }
  • 13. BOOL H323CAConferenceManager::ReadCDEAudio (const void* buffer , PINDEX amount) { //scan through the audio buffers in the audio buffer dictionary for CDE //and mix the signals PINDEX i; for (i = 0; i < H323AudioBuffers.GetSize(); i++) { PString key = H323AudioBuffers.GetKeyAt(i); H323AudioBuffers[key].ReadAndMix((BYTE *)buffer, amount, H323AudioBuffers.GetSize()); } }
  • 14. BOOL H323CAConferenceManager::WriteCDEVideo ( const void * buffer, PINDEX amount, BOOL) { // If mixed video mode then write the video buffer in the CDE video //buffer oCDEVideoBuffer.Write((BYTE *)buffer, amount); // If the video mode is set single then set the OverallSpeakerSSRC //and OverallPreviousSpeakerSSRC according to the video display //rules and write the video buffer in the corresponding buffer // i.e. in oOverallSpeakerVideoBuffer or in //OverallPrevSpeakerVideoBuffer }
  • 15. void H323CAConferenceManager::UpdateUserList(DWORD SSRC, PString userName, PString userType ,BOOL type) { if ( type ) // If user logs in { // If it is the first participant in the conference then set the //dOverallSpeakerSSRC and // dOverallPrevSpeakerSSRC as zero for proper video display. // Add the audio count object for the user in the overall audio count list as well. } else // user logs out { // remove the audio count object for the user from the overall audio count list // check if the user that logs out is Overall speaker and if yes then set the //dOverallSpeakerSSRC=0 // check if the user that logs out is Overall Previous speaker and if yes then set // dOverallPrevSpeakerSSRC=0 } }
  • 16. int H323CAConferenceManager::AdapterLoginRequest(PString CallerName) { // Check for pCDEConnection ptr and perform login functions only if it I //s Null }
  • 17. void H323CAConferenceManager::AdapterLogoutRequest() { //Clear H323 EP list //Clear the H323 Audio count list and also the overall audio count list. // Clear the overall speaker video buffer and overall Previous Speaker // video buffer // Set the dOverallSpeakerSSRC and dOverallPrevSpeakerSSRC to zero. } void H323CAConferenceManager::SendReleaseComplete() { //Clear H323 EP list //Clear the H323 Audio count list and also the overall audio count list. }
  • 18. void H323CAConferenceManager::AddH323Member(H323CAConnection * newMember, DWORD ssrc) { // If this is the first entry in the room then create the room and video buffer and video position list // Add this H323 EP to the H323 EP list and add the audio count object for this end point in // H323AudioCountList and OverallAudioCountList. // Add the new member to every other H323 member // and every other H323 member to the new H323 member for (PINDEX i = 0; i < H323EPList.GetSize(); i++) { PString token = H323EPList[i]; if (token != newToken) { H323CAConnection * conn = (H323CAConnection *) FindConnectionWithLock(token); if (conn != NULL) { conn->AddH323Member(newToken); newMember->AddH323Member(token); conn->Unlock(); } } } newMember->AddH323Member(CDEToken); // Add this H323 EP to the CDE }
  • 19. void H323CAConferenceManager::RemoveH323Member(H323CAConnection * oldConn, DWORD ssrc) { //Clear the corner of the video window that the connection just vacated. // Remove the member from the other members // Remove the member from the CDE //Remove the audio count for this H323 EP from OverallAudioCountList //and H323AudioCountList // Check if the H323 EP that logs out is Overall Previous speaker and if yes // then set the // dOverallPrevSpeakerSSRC=0 // Remove the room if it becomes empty and call adapter logout request }
  • 20. PINDEX H323CAConferenceManager::FindTokensVideoPosn(const PString & thisToken, PString roomID) { // To return the video Position of the H323 EP } BOOL H323CAConferenceManager::CheckH323EPSpeaker(DWORD SSRC) { // To check the H323 Audio Packet for the speaker detection among the //H323 EP } BOOL H323CAConferenceManager::CheckOverallSpeaker(DWORD SSRC) { // to check the Audio Packet of either H323 EP or WC for the speaker //detection among the participants }
  • 21. BOOL H323CAConferenceManager::WriteVideo(const PString & thisToken, const void * buffer, PINDEX amount, PString roomID, DWORD ssrc) { // This is called when video mode is set as mixed // get the video position of the H323 EP in the quadrant display // Check for H323 Speaker SSRC and set its value in accordance with //video display scenario and // write the video buffer in the corresponding video buffer }
  • 22. BOOL H323CAConferenceManager::ReadVideo(const void * buffer, PINDEX amount, PString roomID ) { // read the CDE video oCDEVideoBuffer.Read((BYTE*)buffer, amount); // Write in the video buffer for the H323 EP at position 0 i.e. in the first //quadrant videoBuffer.Write((BYTE *)buffer, amount, 0); // Read the complete video buffer videoBuffer.Read((BYTE *)buffer,amount); // Write the same video buffer in the H323VideoBuffer to be send to CDE //MCU oH323VideoBuffer.Write((BYTE *)buffer , amount); }
  • 23. BOOL H323CAConferenceManager::WriteVideoSingleMode ( const PString & thisToken, const void * buffer, PINDEX amount ,PString roomID, DWORD ssrc ) { //Check for H323 EP speaker and if 0 set the value to this SSRC // Now Check the value of H323 EP speaker and if equals this SSRC //then write the video in H323VideoBuffer // Check the value of OverallSpeakerSSRC and //OverallPrevSpeakerSSRC and set their values in accordance with the //video display scenario and write the video in corres. Video buffer }
  • 24. BOOL H323CAConferenceManager::ReadVideoSingleMode( const PString & thisToken, const void * buffer, PINDEX amount, PString roomID ,DWORD ssrc) { // read OverAllSpeaker video if the SSRC is not of the H323EP Speaker if( ssrc != GetOverallSpeakerSSRC() ) { oOverallSpeakerVideoBuffer.Read((BYTE*)buffer, amount); } else // read the OverallPreviousSpeaker video { oOverallPrevSpeakerVideoBuffer.Read((BYTE *)buffer , amount); } }
  • 25. void H323CAConnection::CleanUpOnCallEnd() { // close all the audio video channels for incoming and outgoing audio/ //video transmission // Remove the member from the list refCAConfManager.RemoveH323Member(this,SSRC); } H323Connection::AnswerCallResponse H323CAConnection::OnAnswerCall(const PString & caller, const H323SignalPDU & setupPDU, H323SignalPDU & ) { โ€ฆโ€ฆโ€ฆโ€ฆโ€ฆโ€ฆ.. // Add the member in the list refCAConfManager.AddH323Member(this,SSRC); }
  • 26. void H323CAConnection::OnIncomingVideo(const void * buffer, PINDEX amount) { // If video mode is mixed video mode then call corresponding function refCAConfManager.WriteVideo(GetCallToken(), buffer, amount, roomID, SSRC); //if video mode is single video mode then call refCAConfManager.WriteVideoSingleMode(GetCallToken(), buffer, amount, roomID, SSRC); } void H323CAConnection::OnOutgoingVideo(const void * buffer, PINDEX amount) { // If video mode is mixed video mode then call corresponding function refCAConfManager.ReadVideo(buffer, amount, roomID); //if video mode is single video mode then call refCAConfManager.ReadVideoSingleMode(GetCallToken(), buffer, amount, roomID, SSRC); }
  • 27. void H323CAConnection::AddH323Member(const PString & token) { // Add the audio buffer for the specified token in this connection audioBuffer.SetAt(token, new H323CAAudioBuffer); } void H323CAConnection::RemoveH323Member(const PString & token) { // Remove the audio buffer for the specified token from this connection audioBuffer.RemoveAt(token); }
  • 28. BOOL H323CAConnection::WriteH323Audio(const PString & token, const void * buffer, PINDEX amount) { // Get the audio buffer for the specified token in this connection H323CAAudioBuffer *audioBuff = audioBuffer.GetAt(token); // and write the audio in that audio buffer audioBuff->Write((BYTE *)buffer, amount); } BOOL H323CAConnection::ReadH323Audio(const PString & /*token*/, const void * buffer, PINDEX amount) { // scan through the audio buffers and mix the signals PINDEX i; for (i = 0; i < numChannels; i++) { PString key = audioBuffer.GetKeyAt(i); audioBuffer[key].ReadAndMix((BYTE *)buffer, amount, numChannels); } }
  • 29. void H323CACDEConnection::AudioVideoTimer(PTimer& , INT) { //Start Read Audio timer by giving the notifier function and delay time timerReadAudio.SetNotifier(PCREATE_NOTIFIER(OnReadAudioTime)); timerReadAudio.RunContinuous(READ_AUDIO_TIMEOUT); } void H323CACDEConnection::OnWriteAudioTimeForH323() { ------------- // Check for overall speaker also ------------- } void H323CACDEConnection::OnReadAudioTime(PTimer &, INT) { // Call this function at regular intervals to read audio for CDE ReadAudioForCDE(); }
  • 30. void H323CAVideoBuffer::Clear(PINDEX posn) { // Clear the video buffer at the specified position for mixed video //mode } void H323CAVideoBuffer::Write(BYTE * data, PINDEX amount, PINDEX posn) { // Write the video buffer at the specified position for mixed video //mode }