<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META content="text/html; charset=iso-8859-1" http-equiv=Content-Type>
<STYLE>.hmmessage P {
        PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px
}
BODY.hmmessage {
        FONT-FAMILY: Verdana; FONT-SIZE: 10pt
}
</STYLE>

<META name=GENERATOR content="MSHTML 8.00.6001.18865"></HEAD>
<BODY class=hmmessage>
<DIV dir=ltr align=left><SPAN class=235204720-18012010><FONT color=#0000ff 
face=Arial>Carlos</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=235204720-18012010><FONT color=#0000ff 
face=Arial></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=235204720-18012010><FONT color=#0000ff 
face=Arial>Well caught. I have applied a fix into the 
CVS.</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=235204720-18012010><FONT color=#0000ff 
face=Arial></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=235204720-18012010><FONT color=#0000ff 
face=Arial>Simon</FONT></SPAN></DIV><BR>
<DIV dir=ltr lang=en-us class=OutlookMessageHeader align=left>
<HR tabIndex=-1>
<FONT face=Tahoma><B>From:</B> Carlos Haj [mailto:unazona@hotmail.com] 
<BR><B>Sent:</B> Tuesday, 19 January 2010 12:32 AM<BR><B>To:</B> 
s.horne@packetizer.com; h323plus@lists.packetizer.com<BR><B>Subject:</B> RE: 
[h323plus] Video Resolution<BR></FONT><BR></DIV>
<DIV></DIV>Hello Simon,<BR><BR>Thanks for your time and effort. I had the same 
problem using H263 plugin on both windows and linux.<BR><BR>I found the glitch 
finally in h323plus code, the following function calls fine but sends absolutly 
nothing to the video plugin DLL<BR><BR>h323pluginmgr.cxx::730<BR>PBoolean 
SetCodecControl(...):<BR><BR>you can verify that by tracing 
"<B>encoder_set_options" </B>in the video plugin dll!! Codec options can't be 
changed during a call, including framewidth, bandwidth, quality, 
etc...<BR><BR>on the other hand, the call to encoder_set_options in 
H323PluginVideoCodec constructor works, that's why the plugin has initial 
default profile values. h323pluginmgr.cxx::1590<BR><BR>PluginCodec_ControlDefn * 
ctl = GetCodecControl(codec, SET_CODEC_OPTIONS_CONTROL);<BR><BR>etc...<BR><BR>I 
modified the SetCodecControl static function, here is it<BR><BR><I>static 
PBoolean SetCodecControl(const PluginCodec_Definition * codec, 
<BR>                                                    
void * 
context,<BR>                                              
const char * 
name,<BR>                                              
const char * parm, 
<BR>                                              
const char * value)<BR>{<BR>  PluginCodec_ControlDefn * codecControls = 
GetCodecControl(codec, name);<BR>  if (codecControls == 
NULL)<BR>    return FALSE;<BR><BR>    PStringArray 
list;<BR>    list += parm;<BR>    list += 
value;<BR>    char ** _options = 
list.ToCharArray();<BR>    unsigned int optionsLen = 
sizeof(_options);<BR><BR>    bool result = 
(*codecControls->control)(codec, context, SET_CODEC_OPTIONS_CONTROL, 
_options, &optionsLen);<BR><BR>    
free(_options);<BR><BR><BR>    return result;<BR><BR>/* old 
Code<BR><BR>....<BR><BR>    char const * options[2] = { parm, 
value };<BR>    unsigned optionsLen = 2;<BR>    
return (*codecControls->control)(codec, context, SET_CODEC_OPTIONS_CONTROL, 
options, &optionsLen);<BR>    */<BR>}</I><BR><BR>With that, 
I'm able to have a CIF-QCIF and QCIF-CIF calls!!<BR><BR>Hope this was helpful, 
good luck appreciate your 
effort.<BR><BR>Greetings,<BR>Carlos<BR><BR><BR><BR><BR><BR>
<HR id=stopSpelling>
From: s.horne@packetizer.com<BR>To: unazona@hotmail.com<BR>Subject: RE: 
[h323plus] Video Resolution<BR>Date: Mon, 18 Jan 2010 22:50:42 +1000<BR><BR>
<STYLE>.ExternalClass .ecxhmmessage P {
        PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px
}
.ExternalClass BODY.ecxhmmessage {
        FONT-FAMILY: Verdana; FONT-SIZE: 10pt
}
</STYLE>

<DIV dir=ltr align=left><SPAN class=ecx576101512-18012010><FONT color=#0000ff 
face=Arial>Carlos</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=ecx576101512-18012010><FONT color=#0000ff 
face=Arial></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=ecx576101512-18012010><FONT color=#0000ff 
face=Arial>The framesize information is passed to the encoder as part of the 
frame header information. The codec should adjust the frame size according to 
the header information passed to it. This would be a bug in the H.261 
encoder.</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=ecx576101512-18012010><FONT color=#0000ff 
face=Arial></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=ecx576101512-18012010><FONT color=#0000ff 
face=Arial>Simon</FONT></SPAN></DIV><BR>
<DIV dir=ltr lang=en-us class=ecxOutlookMessageHeader align=left>
<HR>
<FONT face=Tahoma><B>From:</B> h323plus-bounces@lists.packetizer.com 
[mailto:h323plus-bounces@lists.packetizer.com] <B>On Behalf Of </B>Carlos 
Haj<BR><B>Sent:</B> Monday, 18 January 2010 9:19 PM<BR><B>To:</B> 
h323plus@lists.packetizer.com<BR><B>Subject:</B> Re: [h323plus] Video 
Resolution<BR></FONT><BR></DIV>
<DIV></DIV>
<DIV id=ecxMsgContainer class=ecxExternalClass>
<STYLE>.ExternalClass .ecxhmmessage P {
        PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px
}
.ExternalClass BODY.ecxhmmessage {
        FONT-FAMILY: Verdana; FONT-SIZE: 10pt
}
</STYLE>
Simon,<BR><BR>I've been working on this, I have more detailed 
results.<BR><BR>First of all, my webcam VideoInputDevice has the correct qCIF 
size before the attachVideoReader, while tracing the read of the codec it the 
rawChannel and grabwidth and grabheight are correct.<BR><BR>I traced the plugin 
DLL.<BR><BR>When H323plus callback OpenVideoChannel, the videoCodec framesize is 
already set using H261EncoderContext::SetFrameSize(352,288); which corresponds 
to default frame size I suppose.<BR><BR>The only problem.. A further call to 
codec.SetFrameSize sets the new framesize only in h323 capabilities, and it 
never reachs the plugin DLL I have traced one call to 
h261encodecontext::SetFrameSize.<BR><BR>No trace for h261 setframesize while 
invoking the codec.setframesize.<BR><BR>So, each call of H261 EncodeFrames(...) 
returns 0 on TRACE(1,"H261\tPayload of grabbed frame too small for full frame"); 
as assigned frameSize is different than the videoDevice.<BR><BR>It seems that 
mediaFormat.SetOptionInteger never tell the pluginDLL about the frameSize option 
changing.<BR><BR>Have you and idea?<BR><BR>Regards,<BR>Carlos</DIV><BR><BR>
<HR id=ecxstopSpelling>
From: s.horne@packetizer.com<BR>To: unazona@hotmail.com; 
h323plus@lists.packetizer.com<BR>Subject: RE: [h323plus] Video 
Resolution<BR>Date: Sat, 16 Jan 2010 04:05:25 +1000<BR><BR>
<STYLE>.ExternalClass .ecxhmmessage P {
        PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px
}
.ExternalClass BODY.ecxhmmessage {
        FONT-FAMILY: Verdana; FONT-SIZE: 10pt
}
</STYLE>

<DIV dir=ltr align=left><SPAN class=ecxecx413353417-15012010><FONT color=#0000ff 
face=Arial>Carlos</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=ecxecx413353417-15012010><SPAN 
class=ecxecxecx498361615-15012010><FONT color=#0000ff 
face=Arial></FONT></SPAN></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=ecxecx413353417-15012010><SPAN 
class=ecxecxecx498361615-15012010><FONT color=#0000ff face=Arial>Maybe I should 
rephase my last email</FONT></SPAN></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=ecxecx413353417-15012010><FONT color=#0000ff 
face=Arial>The old openH323 behaviour in the OpenVideoChannel allowed the 
user to safely set the webcam framesize to the default size of the 
codec because it was always fixed. So if your codec was CIF webcam was 
CIF. So that is why QCIF/CIF in both 
directions works. Now you have changed the frame 
size of CIF capability to QCIF in the codec it won't. 
Why? You must make sure in your code the framesize coming out of 
the VideoInputdevice when you create it is set to QCIF otherwise 
it will be CIF and the encoder will expect QCIF and 
that is why you are getting the codec encoder call returning 0 and the 
channel being closed down.</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=ecxecx413353417-15012010><FONT color=#0000ff 
face=Arial></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=ecxecx413353417-15012010><FONT color=#0000ff 
face=Arial>Did I miss something?</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=ecxecx413353417-15012010><FONT color=#0000ff 
face=Arial></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=ecxecx413353417-15012010><FONT color=#0000ff 
face=Arial>Simon</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=ecxecx413353417-15012010><FONT color=#0000ff 
face=Arial></FONT></SPAN> </DIV><FONT color=#0000ff face=Arial></FONT><BR>
<DIV dir=ltr lang=en-us class=ecxecxOutlookMessageHeader align=left>
<HR>
<FONT face=Tahoma><B>From:</B> Carlos Haj [mailto:unazona@hotmail.com] 
<BR><B>Sent:</B> Saturday, 16 January 2010 3:24 AM<BR><B>To:</B> 
s.horne@packetizer.com; h323plus@lists.packetizer.com<BR><B>Subject:</B> RE: 
[h323plus] Video Resolution<BR></FONT><BR></DIV>
<DIV></DIV>Simon,<BR><BR>I used fixed width and height to determine display and 
reader working, and I traced again my application.<BR><BR>This time I went 
deeper into the h323plus library, I think it's a bug of h323plus, between the 
library and the video codec plugin.<BR><BR>Bug Scenario:<BR><BR>I have set 
<BR><BR><B>    AddAllCapabilities(0, P_MAX_INDEX, 
"*");</B><BR><BR>I only use H261 this time<BR><BR><B>    
SetVideoFrameSize(H323Capability::cifMPI);<BR></B><BR>Set the maximum Frame size 
and send a kind of parameter cifTag to the plugin<BR><BR><BR>on my 
<B>OnVideoChannel </B>I initialise <BR><BR>if (encoder) 
<BR>       codec.SetFrameSize(176, 
144);<BR><BR>This is the call stack by chronological order for an h323 video 
call using a CIF<->QCIF endpoint (trace is for endpoint that sending 
qcif)<BR><BR><I><B>1) 
H323PluginVideoCodec::H323PluginVideoCodec(...)</B></I><BR><BR>it creates the 
encoder, and set frame size to CIF (the default plugin maximum 
value)<BR><BR><BR><I><B>2) 
H323PluginVideoCodec::SetFrameSize(...)</B></I><BR><BR>it adjusts the frame 
size, called from my OnVideoChannel, with qcif Value<BR><BR><BR><I><B>3) 
H323PluginVideoCodec::Read</B></I>(...)<BR><BR>All work, my rawChannel, 
renderer, etc... until I reach line 1690<BR><BR>H323pluginmgr.cxx::1690 - THE 
FIRST READ call to encode video fails<BR><BR><BR><FONT 
color=#ff0000>    int retval = (codec->codecFunction)(codec, 
context, </FONT><FONT color=#ff0000><BR></FONT><FONT 
color=#ff0000>                                        
bufferRTP.GetPointer(), &fromLen,</FONT><FONT color=#ff0000><BR></FONT><FONT 
color=#ff0000>                                        
dst.GetPointer(), &toLen,</FONT><FONT color=#ff0000><BR></FONT><FONT 
color=#ff0000>                                        
&flags);</FONT><FONT color=#ff0000><BR></FONT><BR>retval = 0, which results 
into closing the channel as it returns false,<BR><BR><BR>if I change 
<B>SetVideoFrameSize(H323Capability::cifMPI);</B> into 
<B>SetVideoFrameSize(H323Capability::qcifMPI);<BR></B><BR>The codec function 
works again, but naturally with qCIF on both sides<BR><BR>I think that once the 
codec parameter was tagged to use a cif or a qcif it can't change resolution 
during the call. so the encoding function fail for a resolution different than 
one setted using the SetVideoFrameSize.<BR><BR>It's likely that the 
SetVideoFrameSize send an additional information to plugin code using a 
setcontrolcodec which are required later so the encoding function works 
properly.<BR><BR>I noticed, that video resolution fail is only a local 
behaviour, and has nothing to do with remote endpoint.<BR><BR>I will be 
debugging more, I still don't know the plugin code so much, so you might have a 
clearer idea than me? I think if you make a simple test you would encounter the 
same behaviour!<BR><BR>Thanks<BR><B><BR><BR></B><BR><BR>
<HR id=ecxecxstopSpelling>
From: s.horne@packetizer.com<BR>To: unazona@hotmail.com; 
h323plus@lists.packetizer.com<BR>Subject: RE: [h323plus] Video 
Resolution<BR>Date: Sat, 16 Jan 2010 01:37:07 +1000<BR><BR>
<STYLE>.ExternalClass .ecxhmmessage P {
        PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px
}
.ExternalClass BODY.ecxhmmessage {
        FONT-FAMILY: Verdana; FONT-SIZE: 10pt
}
</STYLE>

<DIV dir=ltr align=left><SPAN class=ecxecxecx498361615-15012010><FONT 
color=#0000ff face=Arial>Carlos</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=ecxecxecx498361615-15012010><FONT 
color=#0000ff face=Arial></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=ecxecxecx498361615-15012010><FONT 
color=#0000ff face=Arial>You cannot know what the remote will send when you call 
OpenVideoChannel for the decoding side, that can only be done when you 
receive the first RTP packets. </FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=ecxecxecx498361615-15012010><FONT 
color=#0000ff face=Arial></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=ecxecxecx498361615-15012010><FONT 
color=#0000ff face=Arial>You need to do a level 6 trace to work out who 
and why the channel is being closed. I don't think it is a capability 
issue, usually the problem comes from either the video encoder device (webcam) 
or the display device. Check to see that you have set the video input 
device to send at the same size as your encoder. The 
old openH323 used to do be able to do 
that automatically as the frame size for the capability was 
known. You have to make sure the input to the encoder from 
the webcam is correct.  </FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=ecxecxecx498361615-15012010><FONT 
color=#0000ff face=Arial></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=ecxecxecx498361615-15012010><FONT 
color=#0000ff face=Arial>Version of h323plus would be irrelevent in 
this case. </FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=ecxecxecx498361615-15012010><FONT 
color=#0000ff face=Arial></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=ecxecxecx498361615-15012010><FONT 
color=#0000ff face=Arial>Simon</FONT></SPAN></DIV><BR>
<DIV dir=ltr lang=en-us class=ecxecxecxOutlookMessageHeader align=left>
<HR>
<FONT face=Tahoma><B>From:</B> Carlos Haj [mailto:unazona@hotmail.com] 
<BR><B>Sent:</B> Saturday, 16 January 2010 1:06 AM<BR><B>To:</B> 
s.horne@spranto.com.au; s.horne@packetizer.com; 
h323plus@lists.packetizer.com<BR><B>Subject:</B> RE: [h323plus] Video 
Resolution<BR></FONT><BR></DIV>
<DIV></DIV>Simon,<BR><BR>Thanks for valuable information. What is happening 
literally in a minimised case: I derived OnVideoChannel<BR><BR>on the Local 
endpoint<BR><BR><FONT style="FONT-SIZE: 8pt" size=1>if (encoding)</FONT><FONT 
style="FONT-SIZE: 8pt" size=1><BR></FONT><FONT style="FONT-SIZE: 8pt" 
size=1>{</FONT><FONT style="FONT-SIZE: 8pt" size=1><BR></FONT><FONT 
style="FONT-SIZE: 8pt" size=1>      
codec.SetFrameSize(352, 288);</FONT><FONT style="FONT-SIZE: 8pt" 
size=1><BR>.....<BR></FONT><FONT style="FONT-SIZE: 8pt" size=1>}</FONT><FONT 
style="FONT-SIZE: 8pt" size=1><BR></FONT><FONT style="FONT-SIZE: 8pt" 
size=1>else</FONT><FONT style="FONT-SIZE: 8pt" size=1><BR></FONT><FONT 
style="FONT-SIZE: 8pt" size=1>{</FONT><FONT style="FONT-SIZE: 8pt" 
size=1><BR></FONT><FONT style="FONT-SIZE: 8pt" 
size=1>      cout << 
codec.GetWidth();</FONT><FONT style="FONT-SIZE: 8pt" size=1><BR></FONT><FONT 
style="FONT-SIZE: 8pt" size=1>      cout << 
codec.GetHeight();</FONT><FONT style="FONT-SIZE: 8pt" size=1><BR></FONT><FONT 
style="FONT-SIZE: 8pt" size=1>      // I receive CIF 
(ERROR)</FONT><FONT style="FONT-SIZE: 8pt" size=1><BR></FONT><FONT 
style="FONT-SIZE: 8pt" size=1>.....<BR></FONT><FONT style="FONT-SIZE: 8pt" 
size=1></FONT><FONT style="FONT-SIZE: 8pt" size=1>}</FONT><BR><BR>on the Remote 
endpoint<BR><BR><FONT style="FONT-SIZE: 8pt" size=1>if (encoding)</FONT><FONT 
style="FONT-SIZE: 8pt" size=1><BR></FONT><FONT style="FONT-SIZE: 8pt" 
size=1>{</FONT><FONT style="FONT-SIZE: 8pt" size=1><BR></FONT><FONT 
style="FONT-SIZE: 8pt" size=1>      
codec.SetFrameSize(176, 144);</FONT><FONT style="FONT-SIZE: 8pt" 
size=1><BR></FONT><FONT style="FONT-SIZE: 8pt" size=1>.....<BR></FONT><FONT 
style="FONT-SIZE: 8pt" size=1></FONT><FONT style="FONT-SIZE: 8pt" 
size=1>}</FONT><FONT style="FONT-SIZE: 8pt" size=1><BR></FONT><FONT 
style="FONT-SIZE: 8pt" size=1>else</FONT><FONT style="FONT-SIZE: 8pt" 
size=1><BR></FONT><FONT style="FONT-SIZE: 8pt" size=1>{</FONT><FONT 
style="FONT-SIZE: 8pt" size=1><BR></FONT><FONT style="FONT-SIZE: 8pt" 
size=1>      cout << 
codec.GetWidth();</FONT><FONT style="FONT-SIZE: 8pt" size=1><BR></FONT><FONT 
style="FONT-SIZE: 8pt" size=1>      cout << 
codec.GetHeight();</FONT><FONT style="FONT-SIZE: 8pt" size=1><BR></FONT><FONT 
style="FONT-SIZE: 8pt" size=1>      // I receive 
CIF</FONT><FONT style="FONT-SIZE: 8pt" size=1> (normal)</FONT><FONT 
style="FONT-SIZE: 8pt" size=1><BR></FONT> <FONT style="FONT-SIZE: 8pt" 
size=1>.....<BR></FONT><FONT style="FONT-SIZE: 8pt" size=1></FONT><FONT 
style="FONT-SIZE: 8pt" size=1>}</FONT><BR><BR>I looked into H323 trace Log, 
(remote endpoint which supposed to send QCIF) 
<BR><BR>PLUGIN       Error encoding frame from 
plugin H.261-CIF<BR>H245          
Request CloseLogicalChannel<BR>H323RTP     Transmit 
H.261-CIF thread ended<BR><BR>It seems that the H.261 channel is closed 
prematurely. As my local endpoint received an incorrect video size I suppose 
that local endpoint causes remote to close the transmission 
channel.<BR><BR>Could this be related to the version of the plugin or h323plus 
lib which I use? it's likely that the video resolution is sent before 
codec.SetFrameSize is invoked!<BR><BR>Did you in practice used different video 
resolution under the same capability? e.g. CIF<->QCIF 
calls<BR><BR>Carlos<BR><BR>
<HR id=ecxecxecxstopSpelling>
From: s.horne@spranto.com.au<BR>To: unazona@hotmail.com; s.horne@packetizer.com; 
h323plus@lists.packetizer.com<BR>Subject: RE: [h323plus] Video 
Resolution<BR>Date: Fri, 15 Jan 2010 23:14:23 +1000<BR><BR>
<STYLE>.ExternalClass .ecxhmmessage P {
        PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px
}
.ExternalClass BODY.ecxhmmessage {
        FONT-FAMILY: Verdana; FONT-SIZE: 10pt
}
</STYLE>

<DIV dir=ltr align=left><SPAN class=ecxecxecxecx437140412-15012010><FONT 
color=#0000ff face=Arial>Carlos</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=ecxecxecxecx437140412-15012010><FONT 
color=#0000ff face=Arial></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=ecxecxecxecx437140412-15012010><FONT 
color=#0000ff face=Arial>The current behaviour is correct. </FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=ecxecxecxecx437140412-15012010><FONT 
color=#0000ff face=Arial></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=ecxecxecxecx437140412-15012010><FONT 
color=#0000ff face=Arial>The old OpenH323 used to only send CIF with *-CIF{sw} 
capability and only QCIF with *-QCIF{sw} . This was 
changed with the video plugins so the capability could do up to CIF so 
it would also supported QCIF. This is perfectly 
H.245 legal.</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=ecxecxecxecx437140412-15012010><FONT 
color=#0000ff face=Arial></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=ecxecxecxecx437140412-15012010><FONT 
color=#0000ff face=Arial>In this way only 1 capability can do both frame sizes. 
</FONT></SPAN><SPAN class=ecxecxecxecx437140412-15012010><FONT color=#0000ff 
face=Arial>This is the way most manufacturers implement the capability 
exchange.  </FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=ecxecxecxecx437140412-15012010><FONT 
color=#0000ff face=Arial>The capability has a flag for the size it supports so 
the old CIF capability used to say QCIF - 0 CIF - 1. So if you wanted to do 
QCIF you had to use the *-QCIF{sw} capability as the QCIF flag in the *-CIF{sw} 
was 0. This was changed so that the *-CIF{sw} capability had the QCIF flag so it 
could also support QCIF. Then it was safe to remove the *-QCIF{sw} capability 
and only exchange using the *-CIF{sw}. </FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=ecxecxecxecx437140412-15012010><FONT 
color=#0000ff face=Arial></FONT></SPAN><SPAN 
class=ecxecxecxecx437140412-15012010><FONT color=#0000ff 
face=Arial></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=ecxecxecxecx437140412-15012010><FONT 
color=#0000ff face=Arial>Now SetVideoFrameSize() will set the global frame size 
limit so regardless of the direction that will be the maximum size 
permitted (if CIF only up to CIF capability is available). The 
codec.FrameSize() in the MyH323Endpoint::OpenVideoChannel() allows the 
implementor to set the actual frame size to send. </FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=ecxecxecxecx437140412-15012010><FONT 
color=#0000ff face=Arial></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=ecxecxecxecx437140412-15012010><FONT 
color=#0000ff face=Arial>Is there something else I missed?</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=ecxecxecxecx437140412-15012010><FONT 
color=#0000ff face=Arial></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=ecxecxecxecx437140412-15012010><FONT 
color=#0000ff face=Arial>Simon</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=ecxecxecxecx437140412-15012010><FONT 
color=#0000ff face=Arial></FONT></SPAN> </DIV><SPAN 
class=ecxecxecxecx437140412-15012010></SPAN><FONT color=#0000ff 
face=Arial> </FONT><BR>
<DIV dir=ltr lang=en-us class=ecxecxecxecxOutlookMessageHeader align=left>
<HR>
<FONT face=Tahoma><B>From:</B> Carlos Haj [mailto:unazona@hotmail.com] 
<BR><B>Sent:</B> Friday, 15 January 2010 8:39 PM<BR><B>To:</B> 
s.horne@packetizer.com; h323plus@lists.packetizer.com<BR><B>Subject:</B> RE: 
[h323plus] Video Resolution<BR></FONT><BR></DIV>
<DIV></DIV>Simon,<BR><BR>Thanks for your quick answer, just noticed that I had a 
bad thread name;)<BR><BR>Well, I have the codec.SetFrameSize(w, h); in my 
OpenVideoChannel<BR><BR>When adding capabilities I 
use<BR><BR><B>AddAllCapabilities(0, P_MAX_INDEX, 
"*");<BR>SetVideoFrameSize(H323Capability::cifMPI);</B><BR><BR>Capabilities 
table shows as <BR><B><BR></B><I><B>Set 0: 0: 
audio<BR>          1: 
H.261-CIF{sw}</B><BR></I><BR>I receive an OpenVideoChannel for encoder, I open 
channel and attach video reader + colourConverter, just after that I receive a 
close video signal from a H245Negotation, here I join Call Stack<BR><FONT 
style="FONT-SIZE: 8pt" size=1><BR></FONT><FONT style="FONT-SIZE: 8pt" 
size=1>>   testApp.exe!mmDDSVideoOutputBridge::close2()  Ligne 
359    C++</FONT><FONT style="FONT-SIZE: 8pt" 
size=1><BR></FONT><FONT style="FONT-SIZE: 8pt" size=1>     
testApp.exe!mmVideoInputDevice::~mmVideoInputDevice()  Ligne 43 + 
0x1b    C++</FONT><FONT style="FONT-SIZE: 8pt" 
size=1><BR></FONT><FONT style="FONT-SIZE: 8pt" size=1>     
testApp.exe!mmVideoInputDevice::`scalar deleting destructor'()  + 
0x2b    C++</FONT><FONT style="FONT-SIZE: 8pt" 
size=1><BR></FONT><FONT style="FONT-SIZE: 8pt" size=1>     
testApp.exe!PVideoChannel::CloseVideoReader()  Ligne 203 + 
0x24    C++</FONT><FONT style="FONT-SIZE: 8pt" 
size=1><BR></FONT><FONT style="FONT-SIZE: 8pt" size=1>     
testApp.exe!PVideoChannel::Close()  Ligne 145    
C++</FONT><FONT style="FONT-SIZE: 8pt" size=1><BR></FONT><FONT 
style="FONT-SIZE: 8pt" size=1>     
testApp.exe!H323Codec::CloseRawDataChannel()  Ligne 488 + 
0x11    C++</FONT><FONT style="FONT-SIZE: 8pt" 
size=1><BR></FONT><FONT style="FONT-SIZE: 8pt" size=1>     
testApp.exe!H323VideoCodec::Close()  Ligne 747    
C++</FONT><FONT style="FONT-SIZE: 8pt" size=1><BR></FONT><FONT 
style="FONT-SIZE: 8pt" size=1>     
testApp.exe!H323Channel::CleanUpOnTermination()  Ligne 
716    C++</FONT><FONT style="FONT-SIZE: 8pt" 
size=1><BR></FONT><FONT style="FONT-SIZE: 8pt" size=1>     
testApp.exe!H323_RTPChannel::CleanUpOnTermination()  Ligne 
1160    C++</FONT><FONT style="FONT-SIZE: 8pt" 
size=1><BR></FONT><FONT style="FONT-SIZE: 8pt" size=1>     
testApp.exe!H245NegLogicalChannel::Release()  Ligne 1219    
C++</FONT><FONT style="FONT-SIZE: 8pt" size=1><BR></FONT><FONT 
style="FONT-SIZE: 8pt" size=1>     
testApp.exe!H245NegLogicalChannel::HandleCloseAck(const 
H245_CloseLogicalChannelAck & __formal={...})  Ligne 
1086    C++</FONT><FONT style="FONT-SIZE: 8pt" 
size=1><BR></FONT><FONT style="FONT-SIZE: 8pt" size=1>     
testApp.exe!H245NegLogicalChannels::HandleCloseAck(const 
H245_CloseLogicalChannelAck & pdu={...})  Ligne 1372 + 
0xf    C++</FONT><FONT style="FONT-SIZE: 8pt" 
size=1><BR></FONT><FONT style="FONT-SIZE: 8pt" size=1>     
testApp.exe!H323Connection::OnH245Response(const H323ControlPDU & 
pdu={...})  Ligne 3293 + 0x22    C++</FONT><FONT 
style="FONT-SIZE: 8pt" size=1><BR></FONT><FONT style="FONT-SIZE: 8pt" 
size=1>     
testApp.exe!H323Connection::HandleControlPDU(const H323ControlPDU & 
pdu={...})  Ligne 3189 + 0x12    C++</FONT><FONT 
style="FONT-SIZE: 8pt" size=1><BR></FONT><FONT style="FONT-SIZE: 8pt" 
size=1>     
testApp.exe!H323Connection::HandleControlData(PPER_Stream & 
strm={...})  Ligne 3170 + 0x18    C++</FONT><FONT 
style="FONT-SIZE: 8pt" size=1><BR></FONT><FONT style="FONT-SIZE: 8pt" 
size=1>     
testApp.exe!H323Connection::HandleReceivedControlPDU(bool readStatus=true, 
PPER_Stream & strm={...})  Ligne 3103 + 0x12    
C++</FONT><FONT style="FONT-SIZE: 8pt" size=1><BR></FONT><FONT 
style="FONT-SIZE: 8pt" size=1>     
testApp.exe!H323Connection::HandleControlChannel()  Ligne 3085 + 
0x13    C++</FONT><FONT style="FONT-SIZE: 8pt" 
size=1><BR></FONT><FONT style="FONT-SIZE: 8pt" size=1>     
testApp.exe!H245TransportThread::Main()  Ligne 700    
C++</FONT><B><BR></B><BR><BR>If I remove the 
"SetVideoFrameSize(H323Capability::cifMPI);", I get the following capabilities 
set<BR><BR><B>1: H.261-CIF{sw}<BR>    
H.261-QCIF{sw}<BR>    H.261{sw}</B><BR><BR>with exactly same 
strange behaviour, QCIF is not sending while CIF is being received, by the way 
qcif endpoint says<BR><BR>Local Video Codec - H.261-CIF{sw}<BR>Local Resolution 
- 176x144<BR><BR>Remote Video Codec - H.261-CIF{sw}<BR>Remote Resolution - 
352x288<BR><BR><BR>I tried a "ReorderCapabilities(PStringArray("QCIF"));" after 
my addcapabilities, I ended up with both endpoints using QCIF and ignoring my 
SetFrameSize anyway!!<BR><BR>Is there a glitch using H323Plus video plugins? my 
code works perfectly on openh323 
stack.<BR><BR>"SetVideoFrameSize(H323Capability::cifMPI);" is supposed to define 
a maximum video resolution?! as you said in API doc <B>"... to set the maximum 
framesize allowed to the specified value "</B><BR><BR>Is that usual to have 
H.261-CIF with a QCIF resolution? On which order codec plugins can be added to 
avoid such problems of negotiation?<BR><BR>Regards<BR><BR>
<HR id=ecxecxecxecxstopSpelling>
From: s.horne@packetizer.com<BR>To: unazona@hotmail.com; 
h323plus@lists.packetizer.com<BR>Subject: RE: [h323plus] Valid sessionID in 
OpenLogicalChannel command<BR>Date: Fri, 15 Jan 2010 08:12:54 +1000<BR><BR>
<STYLE>.ExternalClass .ecxhmmessage P {
        PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px
}
.ExternalClass BODY.ecxhmmessage {
        FONT-FAMILY: Verdana; FONT-SIZE: 10pt
}
</STYLE>

<DIV dir=ltr align=left><FONT face=Arial><SPAN 
class=ecxecxecxecxecx442210022-14012010>Carlos</SPAN></FONT></DIV>
<DIV dir=ltr align=left><FONT face=Arial><SPAN 
class=ecxecxecxecxecx442210022-14012010></SPAN></FONT> </DIV>
<DIV dir=ltr align=left><SPAN class=ecxecxecxecxecx442210022-14012010><FONT 
face=Arial><SPAN class=ecxecxecxecxecx442210022-14012010>In your 
derived</SPAN></FONT><BR><FONT face=Arial><SPAN 
class=ecxecxecxecxecx442210022-14012010></SPAN>H323EndPoint::OpenVideoChannel(<SPAN 
class=ecxecxecxecxecx442210022-14012010>()</SPAN></FONT><BR><FONT 
face=Arial><SPAN 
class=ecxecxecxecxecx442210022-14012010></SPAN></FONT> <BR><FONT 
face=Arial><SPAN 
class=ecxecxecxecxecx442210022-14012010>(isEncoding)</SPAN></FONT><BR><SPAN 
class=ecxecxecxecxecx442210022-14012010><FONT face=Arial><SPAN 
class=ecxecxecxecxecx442210022-14012010>     
</SPAN>codec.SetFrameSize(w,h);</FONT><BR> <BR><SPAN 
class=ecxecxecxecxecx442210022-14012010><FONT 
face=Arial>Simon</FONT></SPAN><BR> <BR> <BR> <BR></SPAN></SPAN></DIV><BR>
<DIV dir=ltr lang=en-us class=ecxecxecxecxecxOutlookMessageHeader align=left>
<HR>
<FONT face=Tahoma><B>From:</B> h323plus-bounces@lists.packetizer.com 
[mailto:h323plus-bounces@lists.packetizer.com] <B>On Behalf Of </B>Carlos 
Haj<BR><B>Sent:</B> Friday, 15 January 2010 12:59 AM<BR><B>To:</B> 
h323plus@lists.packetizer.com<BR><B>Subject:</B> Re: [h323plus] Valid sessionID 
in OpenLogicalChannel command<BR></FONT><BR></DIV>
<DIV id=ecxecxecxecxecxMsgContainer class=ecxecxecxecxecxExternalClass>
<STYLE>.ExternalClass .ecxhmmessage P {
        PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px
}
.ExternalClass BODY.ecxhmmessage {
        FONT-FAMILY: Verdana; FONT-SIZE: 10pt
}
</STYLE>
Hello Guys,<BR><BR>I would like to have different frame sizes for two endpoints, 
first I tried to play around with H323Endpoint::SetVideoFrameSize, but it seems 
that part changes the maximum allowed size, which means that if I switch the 
videoFrameSize to qCIF, I wouldn't be able to receive CIF from the other 
endpoint. my test only received QCIF.<BR><BR>I tried also to modify the 
OpalMediaFormat by using a GetWritableMediaFormat for a capability, that ended 
with unusual CIF format while having a QCIF resolution.<BR><BR>On the other 
hand, I looked Opal examples where they use an OpalManager, but unfortuntly that 
seems incompatible with h323plus, while old openh323 tutorials and exampls don't 
have any video plugins support.<BR><BR>How I can manage to receive and send 
different resolutions (frame sizes) using H323plus?<BR><BR>I appreciate a lot 
your help<BR>Carlos<BR><BR><BR></DIV><A 
href="http://clk.atdmt.com/FRM/go/182932252/direct/01/"></A><BR>
<HR>
Discute avec tes amis partout, grâce à Messenger sur ton mobile. <A 
href="http://www.messengersurvotremobile.com/">Cliquez ici !</A> <BR>
<HR>
Avec Internet Explorer, surfez en toute discrétion sur internet <A 
href="http://clk.atdmt.com/FRM/go/182932252/direct/01/">Cliquez ici !</A> <BR>
<HR>
Avec Internet Explorer, surfez en toute discrétion sur internet <A 
href="http://clk.atdmt.com/FRM/go/182932252/direct/01/">Cliquez ici !</A> <BR>
<HR>
Discute avec tes amis partout, grâce à Messenger sur ton mobile. <A 
href="http://www.messengersurvotremobile.com/">Cliquez ici !</A> <BR>
<HR>
Avec Internet Explorer, surfez en toute discrétion sur internet <A 
href="http://clk.atdmt.com/FRM/go/182932252/direct/01/" target=_new>Cliquez ici 
!</A> </BODY></HTML>