[Common-dev] annex g implementation
Gang.Shen at nokia.com Gang.Shen at nokia.comHi, Aaron, Thanks for your reply. It looks ok to have the sum of "predecperiod" and "postdecperiod" for "Preroll" on client side. Could you explain a bit more on "x-predecbufsize"? I may misread some code but I could not find any place that actually use this value. So how does Helix client set up the actual buffer size in case of Annex G? Thanks, Gang Shen -----Original Message----- From: common-dev-bounces at helixcommunity.org [mailto:common-dev-bounces at helixcommunity.org]On Behalf Of ext Aaron Colwell Sent: Monday, April 11, 2005 11:26 AM To: Shen Gang (Nokia-TP-MSW/Dallas) Cc: common-dev at helixcommunity.org Subject: Re: [Common-dev] annex g implementation On Mon, Apr 11, 2005 at 11:04:54AM -0500, Gang.Shen at nokia.com wrote: > Hi, > > One more question regarding Annex G: > > In "sdpmdparse.cpp" --SDPMediaDescParser::HandleSpecialFields(), a property "x-predecbufsize" (Line#1265) is set according to SDP. However, I couldn't find this property is used by any other code. So I am wondering if the Annex G is fully implemented? The Helix client doesn't operate the way that Annex G assumes that clients are implemented. It operates on the concept of Preroll which is basically the sum of the pre-decode and post-decode buffer durations. As long as we delay the start of playback by the sum of those 2 values we are Annex G compliant as far as the server is concerned. If the client has enough CPU and memory to have more decoded frames in the post decode buffer then the client should be allowed to do that. Annex G makes pretty naive assumptions about how a client implements playback. Helix does not maintain a pre-decode and post-decode buffer the way that Annex G states, but from the server's point of view it looks the same. Aaron > > Thanks, > > Gang Shen > > > -----Original Message----- > From: common-dev-bounces at helixcommunity.org > [mailto:common-dev-bounces at helixcommunity.org]On Behalf Of ext > Sent: Friday, April 08, 2005 6:14 PM > To: common-dev at helixcommunity.org > Subject: [Common-dev] annex g implementation > > > Hi, > > I have a question regarding annex g implementation. In "sdpmdparse.cpp" #229, why it sums up ulPreDec and ulPostDec as "Preroll" period? It seems "vidrenderer" use this value to calculate preroll buffer size. Could we just use ulPreDec for "Preroll"? > > Thanks, > > Gang Shen > > ...... > sdpmdparse.cpp line#218 to line#235. > ...... > if (HXR_OK != pHeader->GetPropertyULONG32("Preroll", ulTmp)) > { > // We don't have a preroll so we should use the Annex G > // headers to create one > ULONG32 ulPreDec = 0; > ULONG32 ulPostDec = 0; > pHeader->GetPropertyULONG32("x-initpredecbufperiod", ulPreDec); > pHeader->GetPropertyULONG32("x-initpostdecbufperiod", ulPostDec); > > // Add x-initpredecbufperiod to x-initpostdecbufperiod and > // convert the value to milliseconds. > ULONG32 ulPreroll = (ulPreDec + ulPostDec) / 90; > > if (ulPreroll) > { > pHeader->SetPropertyULONG32("Preroll", ulPreroll); > } > } > .... > > > _______________________________________________ > Common-dev mailing list > Common-dev at helixcommunity.org > http://lists.helixcommunity.org/mailman/listinfo/common-dev > > _______________________________________________ > Common-dev mailing list > Common-dev at helixcommunity.org > http://lists.helixcommunity.org/mailman/listinfo/common-dev > _______________________________________________ Common-dev mailing list Common-dev at helixcommunity.org http://lists.helixcommunity.org/mailman/listinfo/common-dev