[Live-devel] DeviceSource Translate large frames (fNumTruncatedBytes)

Смирнов Николай Иванович smirnov at rastr.natm.ru
Mon Oct 14 22:51:43 PDT 2013


Hi!

 

I try translate H264 video stream by Live555. The hardware video source is
the video camera (USB).

Class for Live555 video source derived from DeviceSource.

The problem  in function DeviceSource::deliverFrame :

When the newFrameSize >
<http://www.live555.com/liveMedia/doxygen/html/classFramedSource.html#7f4137
643c61539e313e3a92085efc08> fMaxSize i set
<http://www.live555.com/liveMedia/doxygen/html/classFramedSource.html#337ad4
9493202c89afd93564cc6263da> fNumTruncatedBytes, but only result is the
message:
 
"The input frame data was too large for our buffer size :.. bytes of
trailing data was dropped!"

 

This mean (as I understand) that the truncated part of frame is dropped.

Is this mean that the truncated frame is dropped?

 

So, all large frames (>fMaxSize) really will be skiped.  

 

I try looped the afterGetting() :

 
u_int8_t* newFrameDataStart = (u_int8_t*)ourFrame;
do
{       
        unsigned newFrameSize = hugeFrameSize; 
 
        if (newFrameSize >
<http://www.live555.com/liveMedia/doxygen/html/classFramedSource.html#7f4137
643c61539e313e3a92085efc08> fMaxSize) 
        {
 
<http://www.live555.com/liveMedia/doxygen/html/classFramedSource.html#2871eb
7dbf64aac933e30e1f39eb80e5> fFrameSize =
<http://www.live555.com/liveMedia/doxygen/html/classFramedSource.html#7f4137
643c61539e313e3a92085efc08> fMaxSize;
 
<http://www.live555.com/liveMedia/doxygen/html/classFramedSource.html#337ad4
9493202c89afd93564cc6263da> fNumTruncatedBytes = newFrameSize -
<http://www.live555.com/liveMedia/doxygen/html/classFramedSource.html#7f4137
643c61539e313e3a92085efc08> fMaxSize;
        } 
        else 
        {
 
<http://www.live555.com/liveMedia/doxygen/html/classFramedSource.html#337ad4
9493202c89afd93564cc6263da> fNumTruncatedBytes =0;
 
<http://www.live555.com/liveMedia/doxygen/html/classFramedSource.html#2871eb
7dbf64aac933e30e1f39eb80e5> fFrameSize = newFrameSize;
        }
        :
        memmove(
<http://www.live555.com/liveMedia/doxygen/html/classFramedSource.html#a2a8e8
9b11d40a5f64447ee55b0573ee> fTo, newFrameDataStart,
<http://www.live555.com/liveMedia/doxygen/html/classFramedSource.html#2871eb
7dbf64aac933e30e1f39eb80e5> fFrameSize);
                    newFrameDataStart +=
<http://www.live555.com/liveMedia/doxygen/html/classFramedSource.html#2871eb
7dbf64aac933e30e1f39eb80e5> fFrameSize;
                    hugeFrameSize -=
<http://www.live555.com/liveMedia/doxygen/html/classFramedSource.html#2871eb
7dbf64aac933e30e1f39eb80e5> fFrameSize;
 
<http://www.live555.com/liveMedia/doxygen/html/classFramedSource.html#2f3f7f
f24e55419517c273725439ea68> FramedSource::afterGetting(this);

}

while(
<http://www.live555.com/liveMedia/doxygen/html/classFramedSource.html#337ad4
9493202c89afd93564cc6263da> fNumTruncatedBytes);

 

This is bad idea - the program dead.

 

In message we have recommendation:

 

"Correct this by increasing \"OutPacketBuffer::maxSize\" to at least"

 

Is  any way to sending large frames (H264 key frames , or other),  except
the HUGE fMaxSize?

 

 

Sorry for my English!

 

Nick

 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.live555.com/pipermail/live-devel/attachments/20131015/c5d8afec/attachment-0001.html>


More information about the live-devel mailing list