[Live-devel] H264FUAFragmenter fNumValidDataBytes problem

Erpat Vig erpat_vig at hotmail.com
Fri Apr 16 09:00:00 PDT 2010




Hello everybody, 

 

I am
developing an h264 framer with a parser by following the same approach than
Mike Gilormas.

I parse  normally a NAL_Start_Sequence and a Nal_Unit,
I have never seen my parser recalled thereafter (it’s bugging before).

 

The problem
is localised in FUAFragmenter::doGetNextFrame,  

 

After a
while, (around 100 packet RTP sent), 
there is a reading problem of the InputBuffer,  at this level:

 

memmove(fTo, &fInputBuffer[fCurDataOffset-2],
numBytesToSend);

 

 

because:

 

fCurDataOffset=
70268

numBytesToSend=
3452746591

 

The problem
comes from the fact that fNumValidDataBytes (if i well understand) is absurdly
enormous and is never reinitialized (the first frameSize is worth 3452816845,
after it is worth 11). As you can note below, fNumValidDataByte increase much
more than fCurDataOffset.

I don’t
know how to solve this, I guess fNumValidDataBytes has to be correctly
reinitialized, but i don’t know how. Indeed the first frameSize in
H264FUAFragmenter is 3452816845
worth while the acquiredFrameSize from H264FUAFragmenter is 0!

Otherwise,
I implemented framedFilter for my H264VideoStreamFramer, may be is it problematic
and the reason of that mess?

 

 

Here is my
fileLog:

 

On the
beginning (first packet)

 

 

in
H264VideoStreamFramer::continueReadProcessing()

acquiredFrameSize = 0

need to do somemore reading here to get
a frame!!!!

H264VideoStreamParser::getParseState() 

lets check parse state: 0

H264VideoStreamParser::getParseState() 

FramedSource::afterGetting(source)

in
H264FUAFragmenter::afterGettingFrame(void* clientData, unsigned
frameSize,unsigned numTruncatedBytes,struct timeval presentationTime,unsigned
durationInMicroseconds) 

in
H264FUAFragmenter::afterGettingFrame1(void* clientData, unsigned
frameSize,unsigned numTruncatedBytes,struct timeval presentationTime,unsigned
durationInMicroseconds) 

 

frameSize= 3452816845//weird if we
consider that acquiredFrameSize=0

 

fNumValidDataBytes =1

fNumValidDataBytes += frameSize
=3452816846

in H264FUAFragmenter::doGetNextFrame() 

fNumValidDataBytes= 3452816846

 

later i
have this:

 

in
H264VideoStreamFramer::continueReadProcessing()

acquiredFrameSize
= 11

continueReadProcessing,
acquiredFrameSize: 11

FramedSource::afterGetting(source)

in
H264FUAFragmenter::afterGettingFrame(void* clientData, unsigned
frameSize,unsigned numTruncatedBytes,struct timeval presentationTime,unsigned
durationInMicroseconds) 

in
H264FUAFragmenter::afterGettingFrame1(void* clientData, unsigned
frameSize,unsigned numTruncatedBytes,struct timeval presentationTime,unsigned
durationInMicroseconds) 

frameSize=
11

fNumValidDataBytes
=3452816846

fNumValidDataBytes
+= frameSize =3452816857

in
H264FUAFragmenter::doGetNextFrame()

 

 

Could you
provide some piece of advice?

 

Best
Regards, and by the way thank you for the work done.

 

 

Patrick
Vigle.

 		 	   		  
_________________________________________________________________
Consultez vos emails Orange, Gmail, Yahoo!, Free ... directement depuis HOTMAIL !
http://www.windowslive.fr/hotmail/agregation/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.live555.com/pipermail/live-devel/attachments/20100416/fc986a33/attachment.html>


More information about the live-devel mailing list