List Info

Thread: CR: Disable server side rate adaptation from client for helix servers




CR: Disable server side rate adaptation from client for helix servers
user name
2008-05-01 12:23:07

Also, please advice if it is required for 310CayS.


"Nokia submits this code under the terms of a commercial contribution agreement with RealNetworks, and I am authorized to contribute this code under said agreement."

Modified by: rajesh.rathinasamynokia.com

Reviewed by:

Date: 01-May-2008

Project: SymbianMmf_rel

ErrorId: MELT-7DDSKM, TVAA-7CEBMZ
           ;
Synopsis: CR: Disable server side rate adaptation from client for helix servers

  While streaming rate adaptation content from helix servers, packets are being dropped at the client transport buffer resulting in bad video quality.

  The server seems to be sending buffers more than what client had reserved for.
 
  Disabling the rate adaptation as the servers (version less than 11.1.9) with this problem is already in the market.
 
Root Cause of the problem: Implementation
 
Files Modified:
===========
protocolrtsprtspclnt.cpp
protocolrtsprateadaptinfo.cpp

Image Size and Heap Use impact: no major impact

Module Release testing (STIF) :  Passed. (Streaming)

Test case(s) Added ; :  No.

Memory leak check performed : Yes, no new leaks introduced

Platforms and Profiles Build Verified: helix-client-s60-32-mmf-mdf-arm

Platforms and Profiles Functionality verified: armv5, winscw

Branch: 221Cays, 210CayS, Head



Index: rateadaptinfo.cpp
===================================================================
RCS file: /cvsroot/protocol/rtsp/rateadaptinfo.cpp,v
retrieving revision 1.12.8.6
diff -w -u -b -r1.12.8.6 rateadaptinfo.cpp
--- rateadaptinfo.cpp   13 Nov 2007 21:39:38 -0000 ;     1.12.8.6
+++ rateadaptinfo.cpp   1 May 2008 15:30:25 -0000
-479,8 +479,8
           ;  ulReportFreq = 1;
           ;  hdrType = ahtHelix;
         }
-        else if (HXR_OK == pHdr->GetPropertyULONG32("3GPP-Adaptation-Support",
-         ;           ;           ;           ;          ulReportFreq))
+        else if ( (HXR_OK == pHdr->GetPropertyULONG32("3GPP-Adaptation-Support",
+         ;           ;           ;           ;          ulReportFreq)) && (ulReportFreq == 1))
         {
           ;  hdrType = aht3GPP;
         }
Index: rtspclnt.cpp
===================================================================
RCS file: /cvsroot/protocol/rtsp/rtspclnt.cpp,v
retrieving revision 1.182.2.25.2.2
diff -w -u -b -r1.182.2.25.2.2 rtspclnt.cpp
--- rtspclnt.cpp        21 Apr 2008 18:41:01 -0000 ;     1.182.2.25.2.2
+++ rtspclnt.cpp        1 May 2008 15:30:26 -0000
-10644,21 +10644,29
           ;  if (m_pRateAdaptInfo)
           ;  {
           ;     UINT32 ulHelixAdaptation = 0;
-         ;      UINT32 ulVersionTarget = HX_ENCODE_PROD_VERSION(11L, 1L, 0L, 0L);
+         ;       UINT32 ul3GPPRateAdaptation = 0;
+         ;       UINT32 ulVersionTarget = HX_ENCODE_PROD_VERSION(11L, 1L, 9L, 0L);

           ;     //
-         ;      // due to a bug in released Helix Server, the client needs to disable "Helix-Adaption"
- &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp;  // if the server version < 11.1.0.0
+ &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp; &nbsp; // due to a bug in released Helix Server, the client needs to disable Server Side Rate Adaption&quot;
+ &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp; &nbsp; // if the server version < 11.1.9.0
 &nbsp; &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp; //
- &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp;  // see https://bugs.helixcommunity.org/show_bug.cgi?id=4989 for details
+ &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp; &nbsp; // Problems:
+ &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp; &nbsp; // * see https://bugs.helixcommunity.org/show_bug.cgi?id=4989 for details
+ &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp; &nbsp; // * Transport buffer overflow problem. Server oversends data resulting in
+ &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp; &nbsp; // &nbsp; client buffer overflow.
 &nbsp; &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp; //
- &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp;  if ((m_ulServerVersion < ulVersionTarget) &&
- &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp; &nbsp; &nbsp;  HXR_OK == ppRealHeaders[i]->GetPropertyULONG32(&quot;Helix-Adaptation-Support",
- &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp; &nbsp; &nbsp;   ;  ulHelixAdaptation) &&
- &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp; &nbsp; &nbsp;  (1 == ulHelixAdaptation))
+ &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp; &nbsp; //
+
+ &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp; &nbsp; if(IsRealServer() && (m_ulServerVersion < ulVersionTarget) )
 &nbsp; &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp; {
+ &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp; &nbsp; &nbsp;   HXLOGL2(HXLOG_RTSP, "RTSPClientProtocol[%p]::ParseSDP() Disabling RateAdaptation", this);
+
+ &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp; &nbsp; &nbsp;   // switch off both rate adaptation
 &nbsp; &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp; &nbsp; &nbsp; ppRealHeaders[i]->SetPropertyULONG32(&quot;Helix-Adaptation-Support", 0);
- &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp;  }
+ &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp; &nbsp; &nbsp;   ppRealHeaders[i]->SetPropertyULONG32(&quot;3GPP-Adaptation-Support", 0);
+
+ &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp; &nbsp; } // End of if(IsRealServer() && (m_ulServerVersion < ulVersionTarget) )

 &nbsp; &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp;  m_pRateAdaptInfo->OnStreamHeader((UINT16)streamNumber,
 &nbsp; &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp;  ppRealHeaders[i]);

RE: CR: Disable server side rate adaptation from clientfor helix servers
user name
2008-05-01 12:26:13
Sorry, misspelled the branch name (310 Atlas).
 
 
 
- Rajesh.

 

From: protocol-dev-bounceshelixcommunity.org [mailto:protocol-dev-bounceshelixcommunity.org] On Behalf Of ext rajesh.rathinasamynokia.com
Sent: Thursday, May 01, 2008 12:23 PM
To: protocol-devhelixcommunity.org
Subject: [Protocol-dev] CR: Disable server side rate adaptation from clientfor helix servers


Also, please advice if it is required for 310CayS.


"Nokia submits this code under the terms of a commercial contribution agreement with RealNetworks, and I am authorized to contribute this code under said agreement."

Modified by: rajesh.rathinasamynokia.com

Reviewed by:

Date: 01-May-2008

Project: SymbianMmf_rel

ErrorId: MELT-7DDSKM, TVAA-7CEBMZ
 &nbsp; &nbsp; &nbsp; &nbsp;   ;
Synopsis: CR: Disable server side rate adaptation from client for helix servers

  While streaming rate adaptation content from helix servers, packets are being dropped at the client transport buffer resulting in bad video quality.

  The server seems to be sending buffers more than what client had reserved for.
 
  Disabling the rate adaptation as the servers (version less than 11.1.9) with this problem is already in the market.
 
Root Cause of the problem: Implementation
 
Files Modified:
===========
protocolrtsprtspclnt.cpp
protocolrtsprateadaptinfo.cpp

Image Size and Heap Use impact: no major impact

Module Release testing (STIF) :  Passed. (Streaming)

Test case(s) Added ; :  No.

Memory leak check performed : Yes, no new leaks introduced

Platforms and Profiles Build Verified: helix-client-s60-32-mmf-mdf-arm

Platforms and Profiles Functionality verified: armv5, winscw

Branch: 221Cays, 210CayS, Head



Index: rateadaptinfo.cpp
===================================================================
RCS file: /cvsroot/protocol/rtsp/rateadaptinfo.cpp,v
retrieving revision 1.12.8.6
diff -w -u -b -r1.12.8.6 rateadaptinfo.cpp
--- rateadaptinfo.cpp&nbsp;  13 Nov 2007 21:39:38 -0000 ; &nbsp; &nbsp; 1.12.8.6
+++ rateadaptinfo.cpp&nbsp;  1 May 2008 15:30:25 -0000
-479,8 +479,8
 &nbsp; &nbsp; &nbsp; &nbsp;   ;  ulReportFreq = 1;
 &nbsp; &nbsp; &nbsp; &nbsp;   ;  hdrType = ahtHelix;
 &nbsp; &nbsp; &nbsp; &nbsp; }
- &nbsp; &nbsp; &nbsp;  else if (HXR_OK == pHdr->GetPropertyULONG32("3GPP-Adaptation-Support",
- &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp; &nbsp; &nbsp;  ulReportFreq))
+ &nbsp; &nbsp; &nbsp;  else if ( (HXR_OK == pHdr->GetPropertyULONG32("3GPP-Adaptation-Support",
+ &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp; &nbsp; &nbsp;  ulReportFreq)) && (ulReportFreq == 1))
 &nbsp; &nbsp; &nbsp; &nbsp; {
 &nbsp; &nbsp; &nbsp; &nbsp;   ;  hdrType = aht3GPP;
 &nbsp; &nbsp; &nbsp; &nbsp; }
Index: rtspclnt.cpp
===================================================================
RCS file: /cvsroot/protocol/rtsp/rtspclnt.cpp,v
retrieving revision 1.182.2.25.2.2
diff -w -u -b -r1.182.2.25.2.2 rtspclnt.cpp
--- rtspclnt.cpp &nbsp; &nbsp; &nbsp;  21 Apr 2008 18:41:01 -0000 ; &nbsp; &nbsp; 1.182.2.25.2.2
+++ rtspclnt.cpp &nbsp; &nbsp; &nbsp;  1 May 2008 15:30:26 -0000
-10644,21 +10644,29
 &nbsp; &nbsp; &nbsp; &nbsp;   ;  if (m_pRateAdaptInfo)
 &nbsp; &nbsp; &nbsp; &nbsp;   ;  {
 &nbsp; &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp; UINT32 ulHelixAdaptation = 0;
- &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp;  UINT32 ulVersionTarget = HX_ENCODE_PROD_VERSION(11L, 1L, 0L, 0L);
+ &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp; &nbsp; UINT32 ul3GPPRateAdaptation = 0;
+ &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp; &nbsp; UINT32 ulVersionTarget = HX_ENCODE_PROD_VERSION(11L, 1L, 9L, 0L);

 &nbsp; &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp; //
- &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp;  // due to a bug in released Helix Server, the client needs to disable "Helix-Adaption"
- &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp;  // if the server version < 11.1.0.0
+ &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp; &nbsp; // due to a bug in released Helix Server, the client needs to disable Server Side Rate Adaption"
+ &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp; &nbsp; // if the server version < 11.1.9.0
 &nbsp; &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp; //
- &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp;  // see https://bugs.helixcommunity.org/show_bug.cgi?id=4989 for details
+ &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp; &nbsp; // Problems:
+ &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp; &nbsp; // * see https://bugs.helixcommunity.org/show_bug.cgi?id=4989 for details
+ &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp; &nbsp; // * Transport buffer overflow problem. Server oversends data resulting in
+ &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp; &nbsp; // &nbsp; client buffer overflow.
 &nbsp; &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp; //
- &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp;  if ((m_ulServerVersion < ulVersionTarget) &&
- &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp; &nbsp; &nbsp;  HXR_OK == ppRealHeaders[i]->GetPropertyULONG32("Helix-Adaptation-Support",
- &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp; &nbsp; &nbsp;   ;  ulHelixAdaptation) &&
- &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp; &nbsp; &nbsp;  (1 == ulHelixAdaptation))
+ &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp; &nbsp; //
+
+ &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp; &nbsp; if(IsRealServer() && (m_ulServerVersion < ulVersionTarget) )
 &nbsp; &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp; {
+ &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp; &nbsp; &nbsp;   HXLOGL2(HXLOG_RTSP, "RTSPClientProtocol[%p]::ParseSDP() Disabling RateAdaptation", this);
+
+ &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp; &nbsp; &nbsp;   // switch off both rate adaptation
 &nbsp; &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp; &nbsp; &nbsp; ppRealHeaders[i]->SetPropertyULONG32("Helix-Adaptation-Support", 0);
- &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp;  }
+ &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp; &nbsp; &nbsp;   ppRealHeaders[i]->SetPropertyULONG32("3GPP-Adaptation-Support", 0);
+
+ &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp; &nbsp; } // End of if(IsRealServer() && (m_ulServerVersion < ulVersionTarget) )

 &nbsp; &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp;  m_pRateAdaptInfo->OnStreamHeader((UINT16)streamNumber,
 &nbsp; &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp; &nbsp; &nbsp;   ; &nbsp; &nbsp;  ppRealHeaders[i]);

RE: CR: Disable server side rate adaptation from clientfor helix servers
user name
2008-05-01 12:59:39
This looks good to me, assuming that we can
rely on the fact that on a RealServer/HelixServer,
a s->c RealChallenge will be issued with the OPTIONS
response. I believe this is a safe assumption.
Jamie: is this correct?

This is because the IsRealServer() function determines
whether or not a server is a HelixServer/RealServer
by whether or not a RealChallenge has been issued.
And we are calling IsRealServer() in ParseSDP(),
which would be during the DESCRIBE response.

Eric

=============================================
Eric Hyche (ehychereal.com)
Technical Lead
RealNetworks, Inc.  

> -----Original Message-----
> From: protocol-dev-bounceshelixcommunity.org 
> [mailto:protocol-dev-bounceshelixcommunity.org] On
Behalf Of 
> rajesh.rathinasamynokia.com
> Sent: Thursday, May 01, 2008 1:23 PM
> To: protocol-devhelixcommunity.org
> Subject: [Protocol-dev] CR: Disable server side rate 
> adaptation from clientfor helix servers
> 
> 
> Also, please advice if it is required for 310CayS. 
> 
> 
> "Nokia submits this code under the terms of a
commercial 
> contribution agreement with RealNetworks, and I am
authorized 
> to contribute this code under said agreement."
> 
> Modified by: rajesh.rathinasamynokia.com 
> 
> Reviewed by: 
> 
> Date: 01-May-2008 
> 
> Project: SymbianMmf_rel 
> 
> ErrorId: MELT-7DDSKM, TVAA-7CEBMZ 
>             
> Synopsis: CR: Disable server side rate adaptation from
client 
> for helix servers 
> 
>   While streaming rate adaptation content from helix
servers, 
> packets are being dropped at the client transport
buffer 
> resulting in bad video quality. 
> 
>   The server seems to be sending buffers more than what

> client had reserved for. 
>   
>   Disabling the rate adaptation as the servers (version
less 
> than 11.1.9) with this problem is already in the
market. 
>   
> Root Cause of the problem: Implementation 
>   
> Files Modified: 
> =========== 
> protocolrtsprtspclnt.cpp 
> protocolrtsprateadaptinfo.cpp 
> 
> Image Size and Heap Use impact: no major impact 
> 
> Module Release testing (STIF) :  Passed. (Streaming) 
> 
> Test case(s) Added  :  No. 
> 
> Memory leak check performed : Yes, no new leaks
introduced 
> 
> Platforms and Profiles Build Verified: 
> helix-client-s60-32-mmf-mdf-arm 
> 
> Platforms and Profiles Functionality verified: armv5,
winscw 
> 
> Branch: 221Cays, 210CayS, Head 
> 
> 
> 
> Index: rateadaptinfo.cpp 
>
============================================================
======= 
> RCS file: /cvsroot/protocol/rtsp/rateadaptinfo.cpp,v 
> retrieving revision 1.12.8.6 
> diff -w -u -b -r1.12.8.6 rateadaptinfo.cpp 
> --- rateadaptinfo.cpp   13 Nov 2007 21:39:38 -0000     
1.12.8.6 
> +++ rateadaptinfo.cpp   1 May 2008 15:30:25 -0000 
>  -479,8 +479,8  
>              ulReportFreq = 1; 
>              hdrType = ahtHelix; 
>          } 
> -        else if (HXR_OK == 
>
pHdr->GetPropertyULONG32("3GPP-Adaptation-Support&qu
ot;, 
> -                                                   
ulReportFreq)) 
> +        else if ( (HXR_OK == 
>
pHdr->GetPropertyULONG32("3GPP-Adaptation-Support&qu
ot;, 
> +                                                    
> ulReportFreq)) && (ulReportFreq == 1)) 
>          { 
>              hdrType = aht3GPP; 
>          } 
> Index: rtspclnt.cpp 
>
============================================================
======= 
> RCS file: /cvsroot/protocol/rtsp/rtspclnt.cpp,v 
> retrieving revision 1.182.2.25.2.2 
> diff -w -u -b -r1.182.2.25.2.2 rtspclnt.cpp 
> --- rtspclnt.cpp        21 Apr 2008 18:41:01 -0000     

> 1.182.2.25.2.2 
> +++ rtspclnt.cpp        1 May 2008 15:30:26 -0000 
>  -10644,21 +10644,29  
>              if (m_pRateAdaptInfo) 
>              { 
>                 UINT32 ulHelixAdaptation = 0; 
> -               UINT32 ulVersionTarget = 
> HX_ENCODE_PROD_VERSION(11L, 1L, 0L, 0L); 
> +                UINT32 ul3GPPRateAdaptation = 0; 
> +                UINT32 ulVersionTarget = 
> HX_ENCODE_PROD_VERSION(11L, 1L, 9L, 0L); 
> 
>                 // 
> -               // due to a bug in released Helix
Server, the 
> client needs to disable "Helix-Adaption" 
> -               // if the server version < 11.1.0.0

> +                // due to a bug in released Helix
Server, 
> the client needs to disable Server Side Rate
Adaption" 
> +                // if the server version < 11.1.9.0

>                 // 
> -               // see 
> 
https://bugs.helixcommunity.org/show_bug.cgi?id=4989 
> <https://bugs.helixcommunity.org/show_bug.cgi?id=4989>
  for details 
> +                // Problems: 
> +                // * see 
> 
https://bugs.helixcommunity.org/show_bug.cgi?id=4989 
> <https://bugs.helixcommunity.org/show_bug.cgi?id=4989>
  for details 
> +                // * Transport buffer overflow
problem. 
> Server oversends data resulting in 
> +                //   client buffer overflow. 
>                 // 
> -               if ((m_ulServerVersion <
ulVersionTarget) && 
> -                   HXR_OK == 
>
ppRealHeaders[i]->GetPropertyULONG32("Helix-Adaptati
on-Support", 
> -                                                      
      
>      ulHelixAdaptation) && 
> -                   (1 == ulHelixAdaptation)) 
> +                // 
> + 
> +                if(IsRealServer() &&
(m_ulServerVersion < 
> ulVersionTarget) ) 
>                 { 
> +                    HXLOGL2(HXLOG_RTSP, 
> "RTSPClientProtocol[%p]::ParseSDP() Disabling
RateAdaptation", this); 
> + 
> +                    // switch off both rate adaptation

>                     
>
ppRealHeaders[i]->SetPropertyULONG32("Helix-Adaptati
on-Support", 0); 
> -               } 
> +                    
>
ppRealHeaders[i]->SetPropertyULONG32("3GPP-Adaptatio
n-Support", 0); 
> + 
> +                } // End of if(IsRealServer()
&& 
> (m_ulServerVersion < ulVersionTarget) ) 
> 
>                  
>
m_pRateAdaptInfo->OnStreamHeader((UINT16)streamNumber, 
>                                                  
ppRealHeaders[i]); 
> 
> 


_______________________________________________
Protocol-dev mailing list
Protocol-devhelixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/pr
otocol-dev

Re: CR: Disable server side rate adaptation from clientfor helix servers
user name
2008-05-01 13:15:05
Eric Hyche wrote:
> This looks good to me, assuming that we can
> rely on the fact that on a RealServer/HelixServer,
> a s->c RealChallenge will be issued with the
OPTIONS
> response. I believe this is a safe assumption.
> Jamie: is this correct?
> 
yeah, that should be correct always.


A couple of things with this diff though:

-        else if (HXR_OK ==
 >
pHdr->GetPropertyULONG32("3GPP-Adaptation-Support&qu
ot;,
 > -                                                   
ulReportFreq))
 > +        else if ( (HXR_OK ==
 >
pHdr->GetPropertyULONG32("3GPP-Adaptation-Support&qu
ot;,
 > +
 > ulReportFreq)) && (ulReportFreq == 1))
 >          {
 >              hdrType = aht3GPP;
 >          }

This change is *not* correct. The report frequency is not a
boolean,
it is an integer frequency which can certainly have other
values
than '1'. If you need to check that it's set to a valid
value, the
check should be ulReportFreq != 0.

Also, my understanding is that the issue you are seeing is
specific
to helix-adaptation, not 3gpp-adaptation, so why disable
3gpp-
adaptation?

Thanks,
Jamie

> This is because the IsRealServer() function determines
> whether or not a server is a HelixServer/RealServer
> by whether or not a RealChallenge has been issued.
> And we are calling IsRealServer() in ParseSDP(),
> which would be during the DESCRIBE response.
> 
> Eric
> 
> =============================================
> Eric Hyche (ehychereal.com)
> Technical Lead
> RealNetworks, Inc.  
> 
>> -----Original Message-----
>> From: protocol-dev-bounceshelixcommunity.org 
>> [mailto:protocol-dev-bounceshelixcommunity.org] On
Behalf Of 
>> rajesh.rathinasamynokia.com
>> Sent: Thursday, May 01, 2008 1:23 PM
>> To: protocol-devhelixcommunity.org
>> Subject: [Protocol-dev] CR: Disable server side
rate 
>> adaptation from clientfor helix servers
>>
>>
>> Also, please advice if it is required for 310CayS.

>>
>>
>> "Nokia submits this code under the terms of a
commercial 
>> contribution agreement with RealNetworks, and I am
authorized 
>> to contribute this code under said
agreement."
>>
>> Modified by: rajesh.rathinasamynokia.com

>>
>> Reviewed by: 
>>
>> Date: 01-May-2008 
>>
>> Project: SymbianMmf_rel 
>>
>> ErrorId: MELT-7DDSKM, TVAA-7CEBMZ 
>>             
>> Synopsis: CR: Disable server side rate adaptation
from client 
>> for helix servers 
>>
>>   While streaming rate adaptation content from
helix servers, 
>> packets are being dropped at the client transport
buffer 
>> resulting in bad video quality. 
>>
>>   The server seems to be sending buffers more than
what 
>> client had reserved for. 
>>   
>>   Disabling the rate adaptation as the servers
(version less 
>> than 11.1.9) with this problem is already in the
market. 
>>   
>> Root Cause of the problem: Implementation 
>>   
>> Files Modified: 
>> =========== 
>> protocolrtsprtspclnt.cpp 
>> protocolrtsprateadaptinfo.cpp 
>>
>> Image Size and Heap Use impact: no major impact 
>>
>> Module Release testing (STIF) :  Passed.
(Streaming) 
>>
>> Test case(s) Added  :  No. 
>>
>> Memory leak check performed : Yes, no new leaks
introduced 
>>
>> Platforms and Profiles Build Verified: 
>> helix-client-s60-32-mmf-mdf-arm 
>>
>> Platforms and Profiles Functionality verified:
armv5, winscw 
>>
>> Branch: 221Cays, 210CayS, Head 
>>
>>
>>
>> Index: rateadaptinfo.cpp 
>>
============================================================
======= 
>> RCS file:
/cvsroot/protocol/rtsp/rateadaptinfo.cpp,v 
>> retrieving revision 1.12.8.6 
>> diff -w -u -b -r1.12.8.6 rateadaptinfo.cpp 
>> --- rateadaptinfo.cpp   13 Nov 2007 21:39:38 -0000 
    1.12.8.6 
>> +++ rateadaptinfo.cpp   1 May 2008 15:30:25 -0000 
>>  -479,8 +479,8  
>>              ulReportFreq = 1; 
>>              hdrType = ahtHelix; 
>>          } 
>> -        else if (HXR_OK == 
>>
pHdr->GetPropertyULONG32("3GPP-Adaptation-Support&qu
ot;, 
>> -                                                  
 ulReportFreq)) 
>> +        else if ( (HXR_OK == 
>>
pHdr->GetPropertyULONG32("3GPP-Adaptation-Support&qu
ot;, 
>> +                                                  
 
>> ulReportFreq)) && (ulReportFreq == 1)) 
>>          { 
>>              hdrType = aht3GPP; 
>>          } 
>> Index: rtspclnt.cpp 
>>
============================================================
======= 
>> RCS file: /cvsroot/protocol/rtsp/rtspclnt.cpp,v 
>> retrieving revision 1.182.2.25.2.2 
>> diff -w -u -b -r1.182.2.25.2.2 rtspclnt.cpp 
>> --- rtspclnt.cpp        21 Apr 2008 18:41:01 -0000 
    
>> 1.182.2.25.2.2 
>> +++ rtspclnt.cpp        1 May 2008 15:30:26 -0000 
>>  -10644,21 +10644,29  
>>              if (m_pRateAdaptInfo) 
>>              { 
>>                 UINT32 ulHelixAdaptation = 0; 
>> -               UINT32 ulVersionTarget = 
>> HX_ENCODE_PROD_VERSION(11L, 1L, 0L, 0L); 
>> +                UINT32 ul3GPPRateAdaptation = 0; 
>> +                UINT32 ulVersionTarget = 
>> HX_ENCODE_PROD_VERSION(11L, 1L, 9L, 0L); 
>>
>>                 // 
>> -               // due to a bug in released Helix
Server, the 
>> client needs to disable "Helix-Adaption"

>> -               // if the server version <
11.1.0.0 
>> +                // due to a bug in released Helix
Server, 
>> the client needs to disable Server Side Rate
Adaption" 
>> +                // if the server version <
11.1.9.0 
>>                 // 
>> -               // see 
>> 
https://bugs.helixcommunity.org/show_bug.cgi?id=4989 
>> <https://bugs.helixcommunity.org/show_bug.cgi?id=4989>
  for details 
>> +                // Problems: 
>> +                // * see 
>> 
https://bugs.helixcommunity.org/show_bug.cgi?id=4989 
>> <https://bugs.helixcommunity.org/show_bug.cgi?id=4989>
  for details 
>> +                // * Transport buffer overflow
problem. 
>> Server oversends data resulting in 
>> +                //   client buffer overflow. 
>>                 // 
>> -               if ((m_ulServerVersion <
ulVersionTarget) && 
>> -                   HXR_OK == 
>>
ppRealHeaders[i]->GetPropertyULONG32("Helix-Adaptati
on-Support", 
>> -                                                  
          
>>      ulHelixAdaptation) && 
>> -                   (1 == ulHelixAdaptation)) 
>> +                // 
>> + 
>> +                if(IsRealServer() &&
(m_ulServerVersion < 
>> ulVersionTarget) ) 
>>                 { 
>> +                    HXLOGL2(HXLOG_RTSP, 
>> "RTSPClientProtocol[%p]::ParseSDP() Disabling
RateAdaptation", this); 
>> + 
>> +                    // switch off both rate
adaptation 
>>                     
>>
ppRealHeaders[i]->SetPropertyULONG32("Helix-Adaptati
on-Support", 0); 
>> -               } 
>> +                    
>>
ppRealHeaders[i]->SetPropertyULONG32("3GPP-Adaptatio
n-Support", 0); 
>> + 
>> +                } // End of if(IsRealServer()
&& 
>> (m_ulServerVersion < ulVersionTarget) ) 
>>
>>                  
>>
m_pRateAdaptInfo->OnStreamHeader((UINT16)streamNumber, 
>>                                                  
ppRealHeaders[i]); 
>>
>>
> 

_______________________________________________
Protocol-dev mailing list
Protocol-devhelixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/pr
otocol-dev

RE: CR: Disable server side rate adaptation from clientfor helix servers
user name
2008-05-01 13:24:52
 Jamie & Eric,
   Thanks for your comments.

My comments inlined.

If no other concerns I will go ahead and check in the
changes.

- Rajesh.


>-----Original Message-----
>From: ext Jamie Gordon [mailto:jgordonreal.com]

>Sent: Thursday, May 01, 2008 1:15 PM
>To: ehychereal.com
>Cc: Rathinasamy Rajesh (Nokia-D-MSW/Dallas); 
>protocol-devhelixcommunity.org
>Subject: Re: [Protocol-dev] CR: Disable server side rate

>adaptation from clientfor helix servers
>
>Eric Hyche wrote:
>> This looks good to me, assuming that we can rely on
the fact 
>that on a 
>> RealServer/HelixServer, a s->c RealChallenge
will be issued with the 
>> OPTIONS response. I believe this is a safe
assumption.
>> Jamie: is this correct?
>> 
>yeah, that should be correct always.
>
>
>A couple of things with this diff though:
>
>-        else if (HXR_OK ==
> >
pHdr->GetPropertyULONG32("3GPP-Adaptation-Support&qu
ot;,
> > -                                                 
  ulReportFreq))
> > +        else if ( (HXR_OK ==
> >
pHdr->GetPropertyULONG32("3GPP-Adaptation-Support&qu
ot;,
> > +
> > ulReportFreq)) && (ulReportFreq == 1))
> >          {
> >              hdrType = aht3GPP;
> >          }
>
>This change is *not* correct. The report frequency is
not a 
>boolean, it is an integer frequency which can certainly
have 
>other values than '1'. If you need to check that it's
set to a 
>valid value, the check should be ulReportFreq != 0.
<<Rajesh>> I will change this. 

>
>Also, my understanding is that the issue you are seeing
is 
>specific to helix-adaptation, not 3gpp-adaptation, so
why 
>disable 3gpp- adaptation?

<<Rajesh>> Noticed buffer overlow with 3GPP
adaptation too. 
>
>Thanks,
>Jamie
>
>> This is because the IsRealServer() function
determines 
>whether or not 
>> a server is a HelixServer/RealServer by whether or
not a 
>RealChallenge 
>> has been issued.
>> And we are calling IsRealServer() in ParseSDP(),
which would 
>be during 
>> the DESCRIBE response.
>> 
>> Eric
>> 
>> =============================================
>> Eric Hyche (ehychereal.com)
>> Technical Lead
>> RealNetworks, Inc.  
>> 
>>> -----Original Message-----
>>> From: protocol-dev-bounceshelixcommunity.org
>>> [mailto:protocol-dev-bounceshelixcommunity.org] On Behalf Of 
>>> rajesh.rathinasamynokia.com
>>> Sent: Thursday, May 01, 2008 1:23 PM
>>> To: protocol-devhelixcommunity.org
>>> Subject: [Protocol-dev] CR: Disable server side
rate 
>adaptation from 
>>> clientfor helix servers
>>>
>>>
>>> Also, please advice if it is required for
310CayS. 
>>>
>>>
>>> "Nokia submits this code under the terms
of a commercial 
>contribution 
>>> agreement with RealNetworks, and I am
authorized to contribute this 
>>> code under said agreement."
>>>
>>> Modified by: rajesh.rathinasamynokia.com
>>>
>>> Reviewed by: 
>>>
>>> Date: 01-May-2008
>>>
>>> Project: SymbianMmf_rel
>>>
>>> ErrorId: MELT-7DDSKM, TVAA-7CEBMZ
>>>             
>>> Synopsis: CR: Disable server side rate
adaptation from client for 
>>> helix servers
>>>
>>>   While streaming rate adaptation content from
helix 
>servers, packets 
>>> are being dropped at the client transport
buffer resulting in bad 
>>> video quality.
>>>
>>>   The server seems to be sending buffers more
than what client had 
>>> reserved for.
>>>   
>>>   Disabling the rate adaptation as the servers
(version less than 
>>> 11.1.9) with this problem is already in the
market.
>>>   
>>> Root Cause of the problem: Implementation
>>>   
>>> Files Modified: 
>>> ===========
>>> protocolrtsprtspclnt.cpp
>>> protocolrtsprateadaptinfo.cpp
>>>
>>> Image Size and Heap Use impact: no major
impact
>>>
>>> Module Release testing (STIF) :  Passed.
(Streaming)
>>>
>>> Test case(s) Added  :  No. 
>>>
>>> Memory leak check performed : Yes, no new leaks
introduced
>>>
>>> Platforms and Profiles Build Verified: 
>>> helix-client-s60-32-mmf-mdf-arm
>>>
>>> Platforms and Profiles Functionality verified:
armv5, winscw
>>>
>>> Branch: 221Cays, 210CayS, Head
>>>
>>>
>>>
>>> Index: rateadaptinfo.cpp
>>>
============================================================
=======
>>> RCS file:
/cvsroot/protocol/rtsp/rateadaptinfo.cpp,v
>>> retrieving revision 1.12.8.6
>>> diff -w -u -b -r1.12.8.6 rateadaptinfo.cpp 
>>> --- rateadaptinfo.cpp   13 Nov 2007 21:39:38
-0000      1.12.8.6 
>>> +++ rateadaptinfo.cpp   1 May 2008 15:30:25
-0000 
>>>  -479,8 +479,8  
>>>              ulReportFreq = 1; 
>>>              hdrType = ahtHelix; 
>>>          } 
>>> -        else if (HXR_OK == 
>>>
pHdr->GetPropertyULONG32("3GPP-Adaptation-Support&qu
ot;,
>>> -                                              
     ulReportFreq)) 
>>> +        else if ( (HXR_OK ==
>>>
pHdr->GetPropertyULONG32("3GPP-Adaptation-Support&qu
ot;,
>>> +                                              
     
>>> ulReportFreq)) && (ulReportFreq == 1))

>>>          { 
>>>              hdrType = aht3GPP; 
>>>          }
>>> Index: rtspclnt.cpp
>>>
============================================================
=======
>>> RCS file:
/cvsroot/protocol/rtsp/rtspclnt.cpp,v
>>> retrieving revision 1.182.2.25.2.2
>>> diff -w -u -b -r1.182.2.25.2.2 rtspclnt.cpp 
>>> --- rtspclnt.cpp        21 Apr 2008 18:41:01
-0000      
>>> 1.182.2.25.2.2
>>> +++ rtspclnt.cpp        1 May 2008 15:30:26
-0000 
>>>  -10644,21 +10644,29  
>>>              if (m_pRateAdaptInfo) 
>>>              { 
>>>                 UINT32 ulHelixAdaptation = 0; 
>>> -               UINT32 ulVersionTarget = 
>>> HX_ENCODE_PROD_VERSION(11L, 1L, 0L, 0L);
>>> +                UINT32 ul3GPPRateAdaptation =
0; 
>>> +                UINT32 ulVersionTarget =
>>> HX_ENCODE_PROD_VERSION(11L, 1L, 9L, 0L);
>>>
>>>                 // 
>>> -               // due to a bug in released
Helix Server, the 
>>> client needs to disable
"Helix-Adaption" 
>>> -               // if the server version <
11.1.0.0 
>>> +                // due to a bug in released
Helix Server,
>>> the client needs to disable Server Side Rate
Adaption" 
>>> +                // if the server version <
11.1.9.0
>>>                 // 
>>> -               // see 
>>> 
https://bugs.helixcommunity.org/show_bug.cgi?id=4989
>>> <https://bugs.helixcommunity.org/show_bug.cgi?id=4989>
  for details
>>> +                // Problems: 
>>> +                // * see
>>> 
https://bugs.helixcommunity.org/show_bug.cgi?id=4989
>>> <https://bugs.helixcommunity.org/show_bug.cgi?id=4989>
  for details
>>> +                // * Transport buffer overflow
problem. 
>>> Server oversends data resulting in
>>> +                //   client buffer overflow. 
>>>                 // 
>>> -               if ((m_ulServerVersion <
ulVersionTarget) && 
>>> -                   HXR_OK == 
>>>
ppRealHeaders[i]->GetPropertyULONG32("Helix-Adaptati
on-Support", 
>>> -                                              
              
>>>      ulHelixAdaptation) && 
>>> -                   (1 == ulHelixAdaptation)) 
>>> +                //
>>> + 
>>> +                if(IsRealServer() &&
(m_ulServerVersion <
>>> ulVersionTarget) ) 
>>>                 {
>>> +                    HXLOGL2(HXLOG_RTSP,
>>> "RTSPClientProtocol[%p]::ParseSDP()
Disabling 
>RateAdaptation", this);
>>> + 
>>> +                    // switch off both rate
adaptation
>>>                     
>>> 
>ppRealHeaders[i]->SetPropertyULONG32("Helix-Adap
tation-Support", 0); 
>>> -               } 
>>> +                    
>>>
ppRealHeaders[i]->SetPropertyULONG32("3GPP-Adaptatio
n-Support", 0);
>>> + 
>>> +                } // End of if(IsRealServer()
&&
>>> (m_ulServerVersion < ulVersionTarget) )
>>>
>>>                  
>>>
m_pRateAdaptInfo->OnStreamHeader((UINT16)streamNumber, 
>>>                                                
  ppRealHeaders[i]);
>>>
>>>
>> 
>

_______________________________________________
Protocol-dev mailing list
Protocol-devhelixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/pr
otocol-dev

RE: CR: Disable server side rate adaptation from clientfor helix servers
user name
2008-05-01 14:51:27
I don't have any other concerns.

Eric

=============================================
Eric Hyche (ehychereal.com)
Technical Lead
RealNetworks, Inc.  

> -----Original Message-----
> From: rajesh.rathinasamynokia.com 
> [mailto:rajesh.rathinasamynokia.com] 
> Sent: Thursday, May 01, 2008 2:25 PM
> To: jgordonreal.com; ehychereal.com
> Cc: protocol-devhelixcommunity.org
> Subject: RE: [Protocol-dev] CR: Disable server side
rate 
> adaptation from clientfor helix servers
> 
> 
>  Jamie & Eric,
>    Thanks for your comments.
> 
> My comments inlined.
> 
> If no other concerns I will go ahead and check in the
changes.
> 
> - Rajesh.
> 
> 
> >-----Original Message-----
> >From: ext Jamie Gordon [mailto:jgordonreal.com]

> >Sent: Thursday, May 01, 2008 1:15 PM
> >To: ehychereal.com
> >Cc: Rathinasamy Rajesh (Nokia-D-MSW/Dallas); 
> >protocol-devhelixcommunity.org
> >Subject: Re: [Protocol-dev] CR: Disable server side
rate 
> >adaptation from clientfor helix servers
> >
> >Eric Hyche wrote:
> >> This looks good to me, assuming that we can
rely on the fact 
> >that on a 
> >> RealServer/HelixServer, a s->c
RealChallenge will be 
> issued with the 
> >> OPTIONS response. I believe this is a safe
assumption.
> >> Jamie: is this correct?
> >> 
> >yeah, that should be correct always.
> >
> >
> >A couple of things with this diff though:
> >
> >-        else if (HXR_OK ==
> > >
pHdr->GetPropertyULONG32("3GPP-Adaptation-Support&qu
ot;,
> > > -                                            
       
> ulReportFreq))
> > > +        else if ( (HXR_OK ==
> > >
pHdr->GetPropertyULONG32("3GPP-Adaptation-Support&qu
ot;,
> > > +
> > > ulReportFreq)) && (ulReportFreq ==
1))
> > >          {
> > >              hdrType = aht3GPP;
> > >          }
> >
> >This change is *not* correct. The report frequency
is not a 
> >boolean, it is an integer frequency which can
certainly have 
> >other values than '1'. If you need to check that
it's set to a 
> >valid value, the check should be ulReportFreq !=
0.
> <<Rajesh>> I will change this. 
> 
> >
> >Also, my understanding is that the issue you are
seeing is 
> >specific to helix-adaptation, not 3gpp-adaptation,
so why 
> >disable 3gpp- adaptation?
> 
> <<Rajesh>> Noticed buffer overlow with 3GPP
adaptation too. 
> >
> >Thanks,
> >Jamie
> >
> >> This is because the IsRealServer() function
determines 
> >whether or not 
> >> a server is a HelixServer/RealServer by
whether or not a 
> >RealChallenge 
> >> has been issued.
> >> And we are calling IsRealServer() in
ParseSDP(), which would 
> >be during 
> >> the DESCRIBE response.
> >> 
> >> Eric
> >> 
> >> =============================================
> >> Eric Hyche (ehychereal.com)
> >> Technical Lead
> >> RealNetworks, Inc.  
> >> 
> >>> -----Original Message-----
> >>> From: protocol-dev-bounceshelixcommunity.org
> >>> [mailto:protocol-dev-bounceshelixcommunity.org] On Behalf Of 
> >>> rajesh.rathinasamynokia.com
> >>> Sent: Thursday, May 01, 2008 1:23 PM
> >>> To: protocol-devhelixcommunity.org
> >>> Subject: [Protocol-dev] CR: Disable server
side rate 
> >adaptation from 
> >>> clientfor helix servers
> >>>
> >>>
> >>> Also, please advice if it is required for
310CayS. 
> >>>
> >>>
> >>> "Nokia submits this code under the
terms of a commercial 
> >contribution 
> >>> agreement with RealNetworks, and I am
authorized to 
> contribute this 
> >>> code under said agreement."
> >>>
> >>> Modified by: rajesh.rathinasamynokia.com
> >>>
> >>> Reviewed by: 
> >>>
> >>> Date: 01-May-2008
> >>>
> >>> Project: SymbianMmf_rel
> >>>
> >>> ErrorId: MELT-7DDSKM, TVAA-7CEBMZ
> >>>             
> >>> Synopsis: CR: Disable server side rate
adaptation from client for 
> >>> helix servers
> >>>
> >>>   While streaming rate adaptation content
from helix 
> >servers, packets 
> >>> are being dropped at the client transport
buffer resulting in bad 
> >>> video quality.
> >>>
> >>>   The server seems to be sending buffers
more than what 
> client had 
> >>> reserved for.
> >>>   
> >>>   Disabling the rate adaptation as the
servers (version less than 
> >>> 11.1.9) with this problem is already in
the market.
> >>>   
> >>> Root Cause of the problem: Implementation
> >>>   
> >>> Files Modified: 
> >>> ===========
> >>> protocolrtsprtspclnt.cpp
> >>> protocolrtsprateadaptinfo.cpp
> >>>
> >>> Image Size and Heap Use impact: no major
impact
> >>>
> >>> Module Release testing (STIF) :  Passed.
(Streaming)
> >>>
> >>> Test case(s) Added  :  No. 
> >>>
> >>> Memory leak check performed : Yes, no new
leaks introduced
> >>>
> >>> Platforms and Profiles Build Verified: 
> >>> helix-client-s60-32-mmf-mdf-arm
> >>>
> >>> Platforms and Profiles Functionality
verified: armv5, winscw
> >>>
> >>> Branch: 221Cays, 210CayS, Head
> >>>
> >>>
> >>>
> >>> Index: rateadaptinfo.cpp
> >>> 
>
============================================================
=======
> >>> RCS file:
/cvsroot/protocol/rtsp/rateadaptinfo.cpp,v
> >>> retrieving revision 1.12.8.6
> >>> diff -w -u -b -r1.12.8.6 rateadaptinfo.cpp

> >>> --- rateadaptinfo.cpp   13 Nov 2007
21:39:38 -0000      1.12.8.6 
> >>> +++ rateadaptinfo.cpp   1 May 2008
15:30:25 -0000 
> >>>  -479,8 +479,8  
> >>>              ulReportFreq = 1; 
> >>>              hdrType = ahtHelix; 
> >>>          } 
> >>> -        else if (HXR_OK == 
> >>>
pHdr->GetPropertyULONG32("3GPP-Adaptation-Support&qu
ot;,
> >>> -                                         
          
> ulReportFreq)) 
> >>> +        else if ( (HXR_OK ==
> >>>
pHdr->GetPropertyULONG32("3GPP-Adaptation-Support&qu
ot;,
> >>> +                                         
          
> >>> ulReportFreq)) && (ulReportFreq ==
1)) 
> >>>          { 
> >>>              hdrType = aht3GPP; 
> >>>          }
> >>> Index: rtspclnt.cpp
> >>> 
>
============================================================
=======
> >>> RCS file:
/cvsroot/protocol/rtsp/rtspclnt.cpp,v
> >>> retrieving revision 1.182.2.25.2.2
> >>> diff -w -u -b -r1.182.2.25.2.2
rtspclnt.cpp 
> >>> --- rtspclnt.cpp        21 Apr 2008
18:41:01 -0000      
> >>> 1.182.2.25.2.2
> >>> +++ rtspclnt.cpp        1 May 2008
15:30:26 -0000 
> >>>  -10644,21 +10644,29  
> >>>              if (m_pRateAdaptInfo) 
> >>>              { 
> >>>                 UINT32 ulHelixAdaptation =
0; 
> >>> -               UINT32 ulVersionTarget = 
> >>> HX_ENCODE_PROD_VERSION(11L, 1L, 0L, 0L);
> >>> +                UINT32
ul3GPPRateAdaptation = 0; 
> >>> +                UINT32 ulVersionTarget =
> >>> HX_ENCODE_PROD_VERSION(11L, 1L, 9L, 0L);
> >>>
> >>>                 // 
> >>> -               // due to a bug in
released Helix Server, the 
> >>> client needs to disable
"Helix-Adaption" 
> >>> -               // if the server version
< 11.1.0.0 
> >>> +                // due to a bug in
released Helix Server,
> >>> the client needs to disable Server Side
Rate Adaption" 
> >>> +                // if the server version
< 11.1.9.0
> >>>                 // 
> >>> -               // see 
> >>> 
https://bugs.helixcommunity.org/show_bug.cgi?id=4989
> >>> <https://bugs.helixcommunity.org/show_bug.cgi?id=4989>
  
> for details
> >>> +                // Problems: 
> >>> +                // * see
> >>> 
https://bugs.helixcommunity.org/show_bug.cgi?id=4989
> >>> <https://bugs.helixcommunity.org/show_bug.cgi?id=4989>
  
> for details
> >>> +                // * Transport buffer
overflow problem. 
> >>> Server oversends data resulting in
> >>> +                //   client buffer
overflow. 
> >>>                 // 
> >>> -               if ((m_ulServerVersion
< ulVersionTarget) && 
> >>> -                   HXR_OK == 
> >>>
ppRealHeaders[i]->GetPropertyULONG32("Helix-Adaptati
on-Support", 
> >>> -                                         
                   
> >>>      ulHelixAdaptation) && 
> >>> -                   (1 ==
ulHelixAdaptation)) 
> >>> +                //
> >>> + 
> >>> +                if(IsRealServer()
&& (m_ulServerVersion <
> >>> ulVersionTarget) ) 
> >>>                 {
> >>> +                    HXLOGL2(HXLOG_RTSP,
> >>> "RTSPClientProtocol[%p]::ParseSDP()
Disabling 
> >RateAdaptation", this);
> >>> + 
> >>> +                    // switch off both
rate adaptation
> >>>                     
> >>> 
>
>ppRealHeaders[i]->SetPropertyULONG32("Helix-Adap
tation-Support", 0); 
> >>> -               } 
> >>> +                    
> >>> 
>
ppRealHeaders[i]->SetPropertyULONG32("3GPP-Adaptatio
n-Support", 0);
> >>> + 
> >>> +                } // End of
if(IsRealServer() &&
> >>> (m_ulServerVersion < ulVersionTarget)
)
> >>>
> >>>                  
> >>>
m_pRateAdaptInfo->OnStreamHeader((UINT16)streamNumber, 
> >>>                                           
       
> ppRealHeaders[i]);
> >>>
> >>>
> >> 
> >
> 


_______________________________________________
Protocol-dev mailing list
Protocol-devhelixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/pr
otocol-dev

RE: CR: Disable server side rate adaptation from clientfor helix servers
user name
2008-05-01 15:37:42
Thanks Eric & Jamie

The changes have been committed to 210Cays, 221Cays &
head.

- Rajesh.
 

>-----Original Message-----
>From: ext Eric Hyche [mailto:ehychereal.com]

>Sent: Thursday, May 01, 2008 2:51 PM
>To: Rathinasamy Rajesh (Nokia-D-MSW/Dallas); jgordonreal.com
>Cc: protocol-devhelixcommunity.org
>Subject: RE: [Protocol-dev] CR: Disable server side rate

>adaptation from clientfor helix servers
>
>
>I don't have any other concerns.
>
>Eric
>
>=============================================
>Eric Hyche (ehychereal.com)
>Technical Lead
>RealNetworks, Inc.  
>
>> -----Original Message-----
>> From: rajesh.rathinasamynokia.com
>> [mailto:rajesh.rathinasamynokia.com]
>> Sent: Thursday, May 01, 2008 2:25 PM
>> To: jgordonreal.com; ehychereal.com
>> Cc: protocol-devhelixcommunity.org
>> Subject: RE: [Protocol-dev] CR: Disable server side
rate adaptation 
>> from clientfor helix servers
>> 
>> 
>>  Jamie & Eric,
>>    Thanks for your comments.
>> 
>> My comments inlined.
>> 
>> If no other concerns I will go ahead and check in
the changes.
>> 
>> - Rajesh.
>> 
>> 
>> >-----Original Message-----
>> >From: ext Jamie Gordon [mailto:jgordonreal.com]
>> >Sent: Thursday, May 01, 2008 1:15 PM
>> >To: ehychereal.com
>> >Cc: Rathinasamy Rajesh (Nokia-D-MSW/Dallas); 
>> >protocol-devhelixcommunity.org
>> >Subject: Re: [Protocol-dev] CR: Disable server
side rate adaptation 
>> >from clientfor helix servers
>> >
>> >Eric Hyche wrote:
>> >> This looks good to me, assuming that we
can rely on the fact
>> >that on a
>> >> RealServer/HelixServer, a s->c
RealChallenge will be
>> issued with the
>> >> OPTIONS response. I believe this is a safe
assumption.
>> >> Jamie: is this correct?
>> >> 
>> >yeah, that should be correct always.
>> >
>> >
>> >A couple of things with this diff though:
>> >
>> >-        else if (HXR_OK ==
>> > >
pHdr->GetPropertyULONG32("3GPP-Adaptation-Support&qu
ot;,
>> > > -                                        
           
>> ulReportFreq))
>> > > +        else if ( (HXR_OK ==
>> > >
pHdr->GetPropertyULONG32("3GPP-Adaptation-Support&qu
ot;,
>> > > +
>> > > ulReportFreq)) && (ulReportFreq
== 1))
>> > >          {
>> > >              hdrType = aht3GPP;
>> > >          }
>> >
>> >This change is *not* correct. The report
frequency is not a 
>boolean, 
>> >it is an integer frequency which can certainly
have other 
>values than 
>> >'1'. If you need to check that it's set to a
valid value, the check 
>> >should be ulReportFreq != 0.
>> <<Rajesh>> I will change this. 
>> 
>> >
>> >Also, my understanding is that the issue you
are seeing is specific 
>> >to helix-adaptation, not 3gpp-adaptation, so
why disable 3gpp- 
>> >adaptation?
>> 
>> <<Rajesh>> Noticed buffer overlow with
3GPP adaptation too. 
>> >
>> >Thanks,
>> >Jamie
>> >
>> >> This is because the IsRealServer()
function determines
>> >whether or not
>> >> a server is a HelixServer/RealServer by
whether or not a
>> >RealChallenge
>> >> has been issued.
>> >> And we are calling IsRealServer() in
ParseSDP(), which would
>> >be during
>> >> the DESCRIBE response.
>> >> 
>> >> Eric
>> >> 
>> >>
=============================================
>> >> Eric Hyche (ehychereal.com)
>> >> Technical Lead
>> >> RealNetworks, Inc.  
>> >> 
>> >>> -----Original Message-----
>> >>> From: protocol-dev-bounceshelixcommunity.org
>> >>> [mailto:protocol-dev-bounceshelixcommunity.org] On Behalf Of 
>> >>> rajesh.rathinasamynokia.com
>> >>> Sent: Thursday, May 01, 2008 1:23 PM
>> >>> To: protocol-devhelixcommunity.org
>> >>> Subject: [Protocol-dev] CR: Disable
server side rate
>> >adaptation from
>> >>> clientfor helix servers
>> >>>
>> >>>
>> >>> Also, please advice if it is required
for 310CayS. 
>> >>>
>> >>>
>> >>> "Nokia submits this code under
the terms of a commercial
>> >contribution
>> >>> agreement with RealNetworks, and I am
authorized to
>> contribute this
>> >>> code under said agreement."
>> >>>
>> >>> Modified by: rajesh.rathinasamynokia.com
>> >>>
>> >>> Reviewed by: 
>> >>>
>> >>> Date: 01-May-2008
>> >>>
>> >>> Project: SymbianMmf_rel
>> >>>
>> >>> ErrorId: MELT-7DDSKM, TVAA-7CEBMZ
>> >>>             
>> >>> Synopsis: CR: Disable server side rate
adaptation from 
>client for 
>> >>> helix servers
>> >>>
>> >>>   While streaming rate adaptation
content from helix
>> >servers, packets
>> >>> are being dropped at the client
transport buffer 
>resulting in bad 
>> >>> video quality.
>> >>>
>> >>>   The server seems to be sending
buffers more than what
>> client had
>> >>> reserved for.
>> >>>   
>> >>>   Disabling the rate adaptation as the
servers (version less than
>> >>> 11.1.9) with this problem is already
in the market.
>> >>>   
>> >>> Root Cause of the problem:
Implementation
>> >>>   
>> >>> Files Modified: 
>> >>> ===========
>> >>> protocolrtsprtspclnt.cpp
>> >>> protocolrtsprateadaptinfo.cpp
>> >>>
>> >>> Image Size and Heap Use impact: no
major impact
>> >>>
>> >>> Module Release testing (STIF) : 
Passed. (Streaming)
>> >>>
>> >>> Test case(s) Added  :  No. 
>> >>>
>> >>> Memory leak check performed : Yes, no
new leaks introduced
>> >>>
>> >>> Platforms and Profiles Build Verified:

>> >>> helix-client-s60-32-mmf-mdf-arm
>> >>>
>> >>> Platforms and Profiles Functionality
verified: armv5, winscw
>> >>>
>> >>> Branch: 221Cays, 210CayS, Head
>> >>>
>> >>>
>> >>>
>> >>> Index: rateadaptinfo.cpp
>> >>> 
>>
============================================================
=======
>> >>> RCS file:
/cvsroot/protocol/rtsp/rateadaptinfo.cpp,v
>> >>> retrieving revision 1.12.8.6
>> >>> diff -w -u -b -r1.12.8.6
rateadaptinfo.cpp 
>> >>> --- rateadaptinfo.cpp   13 Nov 2007
21:39:38 -0000      1.12.8.6 
>> >>> +++ rateadaptinfo.cpp   1 May 2008
15:30:25 -0000 
>> >>>  -479,8 +479,8  
>> >>>              ulReportFreq = 1; 
>> >>>              hdrType = ahtHelix; 
>> >>>          } 
>> >>> -        else if (HXR_OK == 
>> >>>
pHdr->GetPropertyULONG32("3GPP-Adaptation-Support&qu
ot;,
>> >>> -                                     
              
>> ulReportFreq))
>> >>> +        else if ( (HXR_OK ==
>> >>>
pHdr->GetPropertyULONG32("3GPP-Adaptation-Support&qu
ot;,
>> >>> +                                     
              
>> >>> ulReportFreq)) &&
(ulReportFreq == 1)) 
>> >>>          { 
>> >>>              hdrType = aht3GPP; 
>> >>>          }
>> >>> Index: rtspclnt.cpp
>> >>> 
>>
============================================================
=======
>> >>> RCS file:
/cvsroot/protocol/rtsp/rtspclnt.cpp,v
>> >>> retrieving revision 1.182.2.25.2.2
diff -w -u -b 
>-r1.182.2.25.2.2 
>> >>> rtspclnt.cpp
>> >>> --- rtspclnt.cpp        21 Apr 2008
18:41:01 -0000      
>> >>> 1.182.2.25.2.2
>> >>> +++ rtspclnt.cpp        1 May 2008
15:30:26 -0000 
>> >>>  -10644,21 +10644,29  
>> >>>              if (m_pRateAdaptInfo) 
>> >>>              { 
>> >>>                 UINT32
ulHelixAdaptation = 0; 
>> >>> -               UINT32 ulVersionTarget
= 
>> >>> HX_ENCODE_PROD_VERSION(11L, 1L, 0L,
0L);
>> >>> +                UINT32
ul3GPPRateAdaptation = 0; 
>> >>> +                UINT32
ulVersionTarget =
>> >>> HX_ENCODE_PROD_VERSION(11L, 1L, 9L,
0L);
>> >>>
>> >>>                 // 
>> >>> -               // due to a bug in
released Helix Server, the 
>> >>> client needs to disable
"Helix-Adaption" 
>> >>> -               // if the server
version < 11.1.0.0 
>> >>> +                // due to a bug in
released Helix Server,
>> >>> the client needs to disable Server
Side Rate Adaption" 
>> >>> +                // if the server
version < 11.1.9.0
>> >>>                 // 
>> >>> -               // see 
>> >>> 
https://bugs.helixcommunity.org/show_bug.cgi?id=4989
>> >>> <https://bugs.helixcommunity.org/show_bug.cgi?id=4989>

>> for details
>> >>> +                // Problems: 
>> >>> +                // * see
>> >>> 
https://bugs.helixcommunity.org/show_bug.cgi?id=4989
>> >>> <https://bugs.helixcommunity.org/show_bug.cgi?id=4989>

>> for details
>> >>> +                // * Transport buffer
overflow problem. 
>> >>> Server oversends data resulting in
>> >>> +                //   client buffer
overflow. 
>> >>>                 // 
>> >>> -               if ((m_ulServerVersion
< ulVersionTarget) && 
>> >>> -                   HXR_OK == 
>> >>>
ppRealHeaders[i]->GetPropertyULONG32("Helix-Adaptati
on-Support", 
>> >>> -                                     
                       
>> >>>      ulHelixAdaptation) && 
>> >>> -                   (1 ==
ulHelixAdaptation)) 
>> >>> +                //
>> >>> + 
>> >>> +                if(IsRealServer()
&& (m_ulServerVersion <
>> >>> ulVersionTarget) ) 
>> >>>                 {
>> >>> +                   
HXLOGL2(HXLOG_RTSP,
>> >>>
"RTSPClientProtocol[%p]::ParseSDP() Disabling
>> >RateAdaptation", this);
>> >>> + 
>> >>> +                    // switch off
both rate adaptation
>> >>>                     
>> >>> 
>>
>ppRealHeaders[i]->SetPropertyULONG32("Helix-Adap
tation-Support", 0);
>> >>> -               } 
>> >>> +                    
>> >>> 
>>
ppRealHeaders[i]->SetPropertyULONG32("3GPP-Adaptatio
n-Support", 0);
>> >>> + 
>> >>> +                } // End of
if(IsRealServer() &&
>> >>> (m_ulServerVersion <
ulVersionTarget) )
>> >>>
>> >>>                  
>> >>>
m_pRateAdaptInfo->OnStreamHeader((UINT16)streamNumber,
>> >>>                                       
           
>> ppRealHeaders[i]);
>> >>>
>> >>>
>> >> 
>> >
>> 
>
>

_______________________________________________
Protocol-dev mailing list
Protocol-devhelixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/pr
otocol-dev

RE: CR: Disable server side rate adaptation fromclientfor helix servers
user name
2008-06-05 18:52:22
Hi,

In reference to this fix, there has been a recent discovery
of a crash when
streaming is initiated directly from an SDP file because of
a call made to
IsRealServer()inside ParseSDP():

if(IsRealServer() && (m_ulServerVersion <
ulVersionTarget) )
{
    // switch off both rate adaptation 
   
ppRealHeaders[i]->SetPropertyULONG32("Helix-Adaptati
on-Support", 0); 
   
ppRealHeaders[i]->SetPropertyULONG32("3GPP-Adaptatio
n-Support", 0); 
}

The cause of the problem is that the m_pSession pointer is
being
de-referenced when NULL inside the function: 
RTSPClientProtocolExt::IsRealServer(void) 
{ 
    // If we did not get a RealChallenge1, this is not a
RealServer, 
    // so use rtp to inter-operate. 
    if (!m_pSession->m_bChallengeDone &&
!((HXRTSPClientSession*)m_pSession)->m_pRealChallenge) 
    { 
        return RTSPClientProtocol::IsRealServer();
    } 
    return TRUE; 
}

In order to solve the crash problem the following changes
have been made:

if (!m_bSDPInitiated)

{
    if(IsRealServer() && (m_ulServerVersion <
ulVersionTarget) )
    {
        // switch off both rate adaptation 
       
ppRealHeaders[i]->SetPropertyULONG32("Helix-Adaptati
on-Support", 0);

       
ppRealHeaders[i]->SetPropertyULONG32("3GPP-Adaptatio
n-Support", 0); 
    }
}

However, the same logic of disabling rate adaptation should
also be
applicable for SDP initiated case at a later point when
m_pSession and
m_pResponseHeaders are not NULL.

I suggest the attached fix/diff, but there could be an
easier solution. Any
input from you will be helpful!

Thanks,
Jyotsana

P.S: I have added some more existing code lines in the diff
to make more
readable.

-----Original Message-----
From: protocol-dev-bounceshelixcommunity.org
[mailto:protocol-dev-bounceshelixcommunity.org] On
Behalf Of Eric Hyche
Sent: Thursday, May 01, 2008 12:51 PM
To: rajesh.rathinasamynokia.com; jgordonreal.com
Cc: protocol-devhelixcommunity.org
Subject: RE: [Protocol-dev] CR: Disable server side rate
adaptation
fromclientfor helix servers


I don't have any other concerns.

Eric

=============================================
Eric Hyche (ehychereal.com)
Technical Lead
RealNetworks, Inc.  

> -----Original Message-----
> From: rajesh.rathinasamynokia.com 
> [mailto:rajesh.rathinasamynokia.com] 
> Sent: Thursday, May 01, 2008 2:25 PM
> To: jgordonreal.com; ehychereal.com
> Cc: protocol-devhelixcommunity.org
> Subject: RE: [Protocol-dev] CR: Disable server side
rate 
> adaptation from clientfor helix servers
> 
> 
>  Jamie & Eric,
>    Thanks for your comments.
> 
> My comments inlined.
> 
> If no other concerns I will go ahead and check in the
changes.
> 
> - Rajesh.
> 
> 
> >-----Original Message-----
> >From: ext Jamie Gordon [mailto:jgordonreal.com]

> >Sent: Thursday, May 01, 2008 1:15 PM
> >To: ehychereal.com
> >Cc: Rathinasamy Rajesh (Nokia-D-MSW/Dallas); 
> >protocol-devhelixcommunity.org
> >Subject: Re: [Protocol-dev] CR: Disable server side
rate 
> >adaptation from clientfor helix servers
> >
> >Eric Hyche wrote:
> >> This looks good to me, assuming that we can
rely on the fact 
> >that on a 
> >> RealServer/HelixServer, a s->c
RealChallenge will be 
> issued with the 
> >> OPTIONS response. I believe this is a safe
assumption.
> >> Jamie: is this correct?
> >> 
> >yeah, that should be correct always.
> >
> >
> >A couple of things with this diff though:
> >
> >-        else if (HXR_OK ==
> > >
pHdr->GetPropertyULONG32("3GPP-Adaptation-Support&qu
ot;,
> > > -                                            
       
> ulReportFreq))
> > > +        else if ( (HXR_OK ==
> > >
pHdr->GetPropertyULONG32("3GPP-Adaptation-Support&qu
ot;,
> > > +
> > > ulReportFreq)) && (ulReportFreq ==
1))
> > >          {
> > >              hdrType = aht3GPP;
> > >          }
> >
> >This change is *not* correct. The report frequency
is not a 
> >boolean, it is an integer frequency which can
certainly have 
> >other values than '1'. If you need to check that
it's set to a 
> >valid value, the check should be ulReportFreq !=
0.
> <<Rajesh>> I will change this. 
> 
> >
> >Also, my understanding is that the issue you are
seeing is 
> >specific to helix-adaptation, not 3gpp-adaptation,
so why 
> >disable 3gpp- adaptation?
> 
> <<Rajesh>> Noticed buffer overlow with 3GPP
adaptation too. 
> >
> >Thanks,
> >Jamie
> >
> >> This is because the IsRealServer() function
determines 
> >whether or not 
> >> a server is a HelixServer/RealServer by
whether or not a 
> >RealChallenge 
> >> has been issued.
> >> And we are calling IsRealServer() in
ParseSDP(), which would 
> >be during 
> >> the DESCRIBE response.
> >> 
> >> Eric
> >> 
> >> =============================================
> >> Eric Hyche (ehychereal.com)
> >> Technical Lead
> >> RealNetworks, Inc.  
> >> 
> >>> -----Original Message-----
> >>> From: protocol-dev-bounceshelixcommunity.org
> >>> [mailto:protocol-dev-bounceshelixcommunity.org] On Behalf Of 
> >>> rajesh.rathinasamynokia.com
> >>> Sent: Thursday, May 01, 2008 1:23 PM
> >>> To: protocol-devhelixcommunity.org
> >>> Subject: [Protocol-dev] CR: Disable server
side rate 
> >adaptation from 
> >>> clientfor helix servers
> >>>
> >>>
> >>> Also, please advice if it is required for
310CayS. 
> >>>
> >>>
> >>> "Nokia submits this code under the
terms of a commercial 
> >contribution 
> >>> agreement with RealNetworks, and I am
authorized to 
> contribute this 
> >>> code under said agreement."
> >>>
> >>> Modified by: rajesh.rathinasamynokia.com
> >>>
> >>> Reviewed by: 
> >>>
> >>> Date: 01-May-2008
> >>>
> >>> Project: SymbianMmf_rel
> >>>
> >>> ErrorId: MELT-7DDSKM, TVAA-7CEBMZ
> >>>             
> >>> Synopsis: CR: Disable server side rate
adaptation from client for 
> >>> helix servers
> >>>
> >>>   While streaming rate adaptation content
from helix 
> >servers, packets 
> >>> are being dropped at the client transport
buffer resulting in bad 
> >>> video quality.
> >>>
> >>>   The server seems to be sending buffers
more than what 
> client had 
> >>> reserved for.
> >>>   
> >>>   Disabling the rate adaptation as the
servers (version less than 
> >>> 11.1.9) with this problem is already in
the market.
> >>>   
> >>> Root Cause of the problem: Implementation
> >>>   
> >>> Files Modified: 
> >>> ===========
> >>> protocolrtsprtspclnt.cpp
> >>> protocolrtsprateadaptinfo.cpp
> >>>
> >>> Image Size and Heap Use impact: no major
impact
> >>>
> >>> Module Release testing (STIF) :  Passed.
(Streaming)
> >>>
> >>> Test case(s) Added  :  No. 
> >>>
> >>> Memory leak check performed : Yes, no new
leaks introduced
> >>>
> >>> Platforms and Profiles Build Verified: 
> >>> helix-client-s60-32-mmf-mdf-arm
> >>>
> >>> Platforms and Profiles Functionality
verified: armv5, winscw
> >>>
> >>> Branch: 221Cays, 210CayS, Head
> >>>
> >>>
> >>>
> >>> Index: rateadaptinfo.cpp
> >>> 
>
============================================================
=======
> >>> RCS file:
/cvsroot/protocol/rtsp/rateadaptinfo.cpp,v
> >>> retrieving revision 1.12.8.6
> >>> diff -w -u -b -r1.12.8.6 rateadaptinfo.cpp

> >>> --- rateadaptinfo.cpp   13 Nov 2007
21:39:38 -0000      1.12.8.6 
> >>> +++ rateadaptinfo.cpp   1 May 2008
15:30:25 -0000 
> >>>  -479,8 +479,8  
> >>>              ulReportFreq = 1; 
> >>>              hdrType = ahtHelix; 
> >>>          } 
> >>> -        else if (HXR_OK == 
> >>>
pHdr->GetPropertyULONG32("3GPP-Adaptation-Support&qu
ot;,
> >>> -                                         
          
> ulReportFreq)) 
> >>> +        else if ( (HXR_OK ==
> >>>
pHdr->GetPropertyULONG32("3GPP-Adaptation-Support&qu
ot;,
> >>> +                                         
          
> >>> ulReportFreq)) && (ulReportFreq ==
1)) 
> >>>          { 
> >>>              hdrType = aht3GPP; 
> >>>          }
> >>> Index: rtspclnt.cpp
> >>> 
>
============================================================
=======
> >>> RCS file:
/cvsroot/protocol/rtsp/rtspclnt.cpp,v
> >>> retrieving revision 1.182.2.25.2.2
> >>> diff -w -u -b -r1.182.2.25.2.2
rtspclnt.cpp 
> >>> --- rtspclnt.cpp        21 Apr 2008
18:41:01 -0000      
> >>> 1.182.2.25.2.2
> >>> +++ rtspclnt.cpp        1 May 2008
15:30:26 -0000 
> >>>  -10644,21 +10644,29  
> >>>              if (m_pRateAdaptInfo) 
> >>>              { 
> >>>                 UINT32 ulHelixAdaptation =
0; 
> >>> -               UINT32 ulVersionTarget = 
> >>> HX_ENCODE_PROD_VERSION(11L, 1L, 0L, 0L);
> >>> +                UINT32
ul3GPPRateAdaptation = 0; 
> >>> +                UINT32 ulVersionTarget =
> >>> HX_ENCODE_PROD_VERSION(11L, 1L, 9L, 0L);
> >>>
> >>>                 // 
> >>> -               // due to a bug in
released Helix Server, the 
> >>> client needs to disable
"Helix-Adaption" 
> >>> -               // if the server version
< 11.1.0.0 
> >>> +                // due to a bug in
released Helix Server,
> >>> the client needs to disable Server Side
Rate Adaption" 
> >>> +                // if the server version
< 11.1.9.0
> >>>                 // 
> >>> -               // see 
> >>> 
https://bugs.helixcommunity.org/show_bug.cgi?id=4989
> >>> <https://bugs.helixcommunity.org/show_bug.cgi?id=4989>
  
> for details
> >>> +                // Problems: 
> >>> +                // * see
> >>> 
https://bugs.helixcommunity.org/show_bug.cgi?id=4989
> >>> <https://bugs.helixcommunity.org/show_bug.cgi?id=4989>
  
> for details
> >>> +                // * Transport buffer
overflow problem. 
> >>> Server oversends data resulting in
> >>> +                //   client buffer
overflow. 
> >>>                 // 
> >>> -               if ((m_ulServerVersion
< ulVersionTarget) && 
> >>> -                   HXR_OK == 
> >>>
ppRealHeaders[i]->GetPropertyULONG32("Helix-Adaptati
on-Support", 
> >>> -                                         
                   
> >>>      ulHelixAdaptation) && 
> >>> -                   (1 ==
ulHelixAdaptation)) 
> >>> +                //
> >>> + 
> >>> +                if(IsRealServer()
&& (m_ulServerVersion <
> >>> ulVersionTarget) ) 
> >>>                 {
> >>> +                    HXLOGL2(HXLOG_RTSP,
> >>> "RTSPClientProtocol[%p]::ParseSDP()
Disabling 
> >RateAdaptation", this);
> >>> + 
> >>> +                    // switch off both
rate adaptation
> >>>                     
> >>> 
>
>ppRealHeaders[i]->SetPropertyULONG32("Helix-Adap
tation-Support", 0); 
> >>> -               } 
> >>> +                    
> >>> 
>
ppRealHeaders[i]->SetPropertyULONG32("3GPP-Adaptatio
n-Support", 0);
> >>> + 
> >>> +                } // End of
if(IsRealServer() &&
> >>> (m_ulServerVersion < ulVersionTarget)
)
> >>>
> >>>                  
> >>>
m_pRateAdaptInfo->OnStreamHeader((UINT16)streamNumber, 
> >>>                                           
       
> ppRealHeaders[i]);
> >>>
> >>>
> >> 
> >
> 


_______________________________________________
Protocol-dev mailing list
Protocol-devhelixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/pr
otocol-dev

_______________________________________________
Protocol-dev mailing list
Protocol-devhelixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/pr
otocol-dev

  
RE: CR: Disable server side rate adaptation fromclientfor helix servers
user name
2008-06-06 05:33:43
This seems like a reasonable fix to me.

=============================================
Eric Hyche (ehychereal.com)
Technical Lead
RealNetworks, Inc.  

> -----Original Message-----
> From: Jyotsana Rathore [mailto:jrathorereal.com]

> Sent: Thursday, June 05, 2008 7:52 PM
> To: ehychereal.com; rajesh.rathinasamynokia.com; 
> jgordonreal.com; ext-gabriela.valverdenokia.com
> Cc: protocol-devhelixcommunity.org
> Subject: RE: [Protocol-dev] CR: Disable server side
rate 
> adaptation fromclientfor helix servers
> 
> Hi,
> 
> In reference to this fix, there has been a recent
discovery 
> of a crash when
> streaming is initiated directly from an SDP file
because of a 
> call made to
> IsRealServer()inside ParseSDP():
> 
> if(IsRealServer() && (m_ulServerVersion <
ulVersionTarget) )
> {
>     // switch off both rate adaptation 
>     
>
ppRealHeaders[i]->SetPropertyULONG32("Helix-Adaptati
on-Support", 0); 
>     
>
ppRealHeaders[i]->SetPropertyULONG32("3GPP-Adaptatio
n-Support", 0); 
> }
> 
> The cause of the problem is that the m_pSession pointer
is being
> de-referenced when NULL inside the function: 
> RTSPClientProtocolExt::IsRealServer(void) 
> { 
>     // If we did not get a RealChallenge1, this is not
a RealServer, 
>     // so use rtp to inter-operate. 
>     if (!m_pSession->m_bChallengeDone &&
>
!((HXRTSPClientSession*)m_pSession)->m_pRealChallenge) 
>     { 
>         return RTSPClientProtocol::IsRealServer();
>     } 
>     return TRUE; 
> }
> 
> In order to solve the crash problem the following
changes 
> have been made:
> 
> if (!m_bSDPInitiated)
> 
> {
>     if(IsRealServer() && (m_ulServerVersion
< ulVersionTarget) )
>     {
>         // switch off both rate adaptation 
>         
>
ppRealHeaders[i]->SetPropertyULONG32("Helix-Adaptati
on-Support", 0);
> 
>         
>
ppRealHeaders[i]->SetPropertyULONG32("3GPP-Adaptatio
n-Support", 0); 
>     }
> }
> 
> However, the same logic of disabling rate adaptation
should also be
> applicable for SDP initiated case at a later point when
m_pSession and
> m_pResponseHeaders are not NULL.
> 
> I suggest the attached fix/diff, but there could be an
easier 
> solution. Any
> input from you will be helpful!
> 
> Thanks,
> Jyotsana
> 
> P.S: I have added some more existing code lines in the
diff 
> to make more
> readable.
> 
> -----Original Message-----
> From: protocol-dev-bounceshelixcommunity.org
> [mailto:protocol-dev-bounceshelixcommunity.org] On
Behalf Of 
> Eric Hyche
> Sent: Thursday, May 01, 2008 12:51 PM
> To: rajesh.rathinasamynokia.com; jgordonreal.com
> Cc: protocol-devhelixcommunity.org
> Subject: RE: [Protocol-dev] CR: Disable server side
rate adaptation
> fromclientfor helix servers
> 
> 
> I don't have any other concerns.
> 
> Eric
> 
> =============================================
> Eric Hyche (ehychereal.com)
> Technical Lead
> RealNetworks, Inc.  
> 
> > -----Original Message-----
> > From: rajesh.rathinasamynokia.com 
> > [mailto:rajesh.rathinasamynokia.com] 
> > Sent: Thursday, May 01, 2008 2:25 PM
> > To: jgordonreal.com; ehychereal.com
> > Cc: protocol-devhelixcommunity.org
> > Subject: RE: [Protocol-dev] CR: Disable server
side rate 
> > adaptation from clientfor helix servers
> > 
> > 
> >  Jamie & Eric,
> >    Thanks for your comments.
> > 
> > My comments inlined.
> > 
> > If no other concerns I will go ahead and check in
the changes.
> > 
> > - Rajesh.
> > 
> > 
> > >-----Original Message-----
> > >From: ext Jamie Gordon [mailto:jgordonreal.com]

> > >Sent: Thursday, May 01, 2008 1:15 PM
> > >To: ehychereal.com
> > >Cc: Rathinasamy Rajesh (Nokia-D-MSW/Dallas); 
> > >protocol-devhelixcommunity.org
> > >Subject: Re: [Protocol-dev] CR: Disable server
side rate 
> > >adaptation from clientfor helix servers
> > >
> > >Eric Hyche wrote:
> > >> This looks good to me, assuming that we
can rely on the fact 
> > >that on a 
> > >> RealServer/HelixServer, a s->c
RealChallenge will be 
> > issued with the 
> > >> OPTIONS response. I believe this is a
safe assumption.
> > >> Jamie: is this correct?
> > >> 
> > >yeah, that should be correct always.
> > >
> > >
> > >A couple of things with this diff though:
> > >
> > >-        else if (HXR_OK ==
> > > >
pHdr->GetPropertyULONG32("3GPP-Adaptation-Support&qu
ot;,
> > > > -                                       
            
> > ulReportFreq))
> > > > +        else if ( (HXR_OK ==
> > > >
pHdr->GetPropertyULONG32("3GPP-Adaptation-Support&qu
ot;,
> > > > +
> > > > ulReportFreq)) && (ulReportFreq
== 1))
> > > >          {
> > > >              hdrType = aht3GPP;
> > > >          }
> > >
> > >This change is *not* correct. The report
frequency is not a 
> > >boolean, it is an integer frequency which can
certainly have 
> > >other values than '1'. If you need to check
that it's set to a 
> > >valid value, the check should be ulReportFreq
!= 0.
> > <<Rajesh>> I will change this. 
> > 
> > >
> > >Also, my understanding is that the issue you
are seeing is 
> > >specific to helix-adaptation, not
3gpp-adaptation, so why 
> > >disable 3gpp- adaptation?
> > 
> > <<Rajesh>> Noticed buffer overlow with
3GPP adaptation too. 
> > >
> > >Thanks,
> > >Jamie
> > >
> > >> This is because the IsRealServer()
function determines 
> > >whether or not 
> > >> a server is a HelixServer/RealServer by
whether or not a 
> > >RealChallenge 
> > >> has been issued.
> > >> And we are calling IsRealServer() in
ParseSDP(), which would 
> > >be during 
> > >> the DESCRIBE response.
> > >> 
> > >> Eric
> > >> 
> > >>
=============================================
> > >> Eric Hyche (ehychereal.com)
> > >> Technical Lead
> > >> RealNetworks, Inc.  
> > >> 
> > >>> -----Original Message-----
> > >>> From: protocol-dev-bounceshelixcommunity.org
> > >>> [mailto:protocol-dev-bounceshelixcommunity.org] On Behalf Of 
> > >>> rajesh.rathinasamynokia.com
> > >>> Sent: Thursday, May 01, 2008 1:23 PM
> > >>> To: protocol-devhelixcommunity.org
> > >>> Subject: [Protocol-dev] CR: Disable
server side rate 
> > >adaptation from 
> > >>> clientfor helix servers
> > >>>
> > >>>
> > >>> Also, please advice if it is required
for 310CayS. 
> > >>>
> > >>>
> > >>> "Nokia submits this code under
the terms of a commercial 
> > >contribution 
> > >>> agreement with RealNetworks, and I am
authorized to 
> > contribute this 
> > >>> code under said agreement."
> > >>>
> > >>> Modified by: rajesh.rathinasamynokia.com
> > >>>
> > >>> Reviewed by: 
> > >>>
> > >>> Date: 01-May-2008
> > >>>
> > >>> Project: SymbianMmf_rel
> > >>>
> > >>> ErrorId: MELT-7DDSKM, TVAA-7CEBMZ
> > >>>             
> > >>> Synopsis: CR: Disable server side
rate adaptation from 
> client for 
> > >>> helix servers
> > >>>
> > >>>   While streaming rate adaptation
content from helix 
> > >servers, packets 
> > >>> are being dropped at the client
transport buffer 
> resulting in bad 
> > >>> video quality.
> > >>>
> > >>>   The server seems to be sending
buffers more than what 
> > client had 
> > >>> reserved for.
> > >>>   
> > >>>   Disabling the rate adaptation as
the servers (version 
> less than 
> > >>> 11.1.9) with this problem is already
in the market.
> > >>>   
> > >>> Root Cause of the problem:
Implementation
> > >>>   
> > >>> Files Modified: 
> > >>> ===========
> > >>> protocolrtsprtspclnt.cpp
> > >>> protocolrtsprateadaptinfo.cpp
> > >>>
> > >>> Image Size and Heap Use impact: no
major impact
> > >>>
> > >>> Module Release testing (STIF) : 
Passed. (Streaming)
> > >>>
> > >>> Test case(s) Added  :  No. 
> > >>>
> > >>> Memory leak check performed : Yes, no
new leaks introduced
> > >>>
> > >>> Platforms and Profiles Build
Verified: 
> > >>> helix-client-s60-32-mmf-mdf-arm
> > >>>
> > >>> Platforms and Profiles Functionality
verified: armv5, winscw
> > >>>
> > >>> Branch: 221Cays, 210CayS, Head
> > >>>
> > >>>
> > >>>
> > >>> Index: rateadaptinfo.cpp
> > >>> 
> >
============================================================
=======
> > >>> RCS file:
/cvsroot/protocol/rtsp/rateadaptinfo.cpp,v
> > >>> retrieving revision 1.12.8.6
> > >>> diff -w -u -b -r1.12.8.6
rateadaptinfo.cpp 
> > >>> --- rateadaptinfo.cpp   13 Nov 2007
21:39:38 -0000      
> 1.12.8.6 
> > >>> +++ rateadaptinfo.cpp   1 May 2008
15:30:25 -0000 
> > >>>  -479,8 +479,8  
> > >>>              ulReportFreq = 1; 
> > >>>              hdrType = ahtHelix; 
> > >>>          } 
> > >>> -        else if (HXR_OK == 
> > >>>
pHdr->GetPropertyULONG32("3GPP-Adaptation-Support&qu
ot;,
> > >>> -                                    
               
> > ulReportFreq)) 
> > >>> +        else if ( (HXR_OK ==
> > >>>
pHdr->GetPropertyULONG32("3GPP-Adaptation-Support&qu
ot;,
> > >>> +                                    
               
> > >>> ulReportFreq)) &&
(ulReportFreq == 1)) 
> > >>>          { 
> > >>>              hdrType = aht3GPP; 
> > >>>          }
> > >>> Index: rtspclnt.cpp
> > >>> 
> >
============================================================
=======
> > >>> RCS file:
/cvsroot/protocol/rtsp/rtspclnt.cpp,v
> > >>> retrieving revision 1.182.2.25.2.2
> > >>> diff -w -u -b -r1.182.2.25.2.2
rtspclnt.cpp 
> > >>> --- rtspclnt.cpp        21 Apr 2008
18:41:01 -0000      
> > >>> 1.182.2.25.2.2
> > >>> +++ rtspclnt.cpp        1 May 2008
15:30:26 -0000 
> > >>>  -10644,21