<style> body { padding: 5px; WORD-BREAK: break-all; WORD-WRAP: break-word; }</style><p>
        I don't get more detail reply , I think  my description is not enough clear,   so after rearrange my word, I submit  it again.
</p>
<p>
        [1]<br />
i have implemented a RTSP Server(like proxy server), packetizing the audio and video stream to TS from EasyDarwin
</p>
<p>
        <br />
</p>
<p>
        [2]<br />
if only have h264 or only have ADTS  AAC stream VLC play is ok.
</p>
<p>
        <br />
</p>
<p>
        [3]<br />
but mixed h264 and ADTS AAC together, after a few seconds VLC only play video.<br />
audio packet will be lost, i see it from the VLC [current media information] dialog -> [statistics] tab -> Lost.
</p>
<p>
        <br />
</p>
<p>
        [4]<br />
my audio stream code as ADTSAudioFileSource
</p>
<p>
        <br />
</p>
<p>
        [5]<br />
my h264 code snippet is  in below<br />
 void BlockSource::doGetNextFrame()<br />
 {<br />
  if (_bFirst)<br />
  {<br />
   fFrameSize = MyExchangeBuffer::Inst().readFirstFromVideoBlock(_strBlockName.c_str(), fTo, fMaxSize);<br />
   _bFirst = false;<br />
  }<br />
  else<br />
  {<br />
   fFrameSize = MyExchangeBuffer::Inst().readFromVideoBlock(_strBlockName.c_str(), _pBlockChunkPointer, fTo, fMaxSize);<br />
  }
</p>
<p>
             <br />
  gettimeofday(&fPresentationTime, NULL);//i dont know how to set it correctly...<br />
  fDurationInMicroseconds = 1000000 / 22;//i dont know how to dynamic set it, so i set it to 22 fps.
</p>
<p>
          nextTask() = envir().taskScheduler().scheduleDelayedTask(fDurationInMicroseconds,<br />
   (TaskFunc*)FramedSource::afterGetting, this);<br />
 }
</p>
<p>
        <br />
</p>
<p>
        [6]<br />
my sub session source snippet in below<br />
 FramedSource * TSFromH264BlockServerMediaSubsession::createNewStreamSource(unsigned /*clientSessionId*/, unsigned & estBitrate)<br />
 {<br />
  estBitrate = 2500; // kbps, estimate<br />
  MPEG2TransportStreamFromESSource* tsFrames = MPEG2TransportStreamFromESSource::createNew(envir());<br />
 ...<br />
   BlockSource* blockSource = BlockSource::createNew(envir(), _strBlockName.c_str());//H264 from RTSPClient<br />
  if (blockSource == NULL)<br />
   return NULL;<br />
  H264VideoStreamFramer* framer = H264VideoStreamFramer::createNew(envir(), blockSource, True/*includeStartCodeInOutput*/);<br />
  tsFrames->addNewVideoSource(framer, 5/*mpegVersion: H.264*/);<br />
  ...<br />
  tsFrames->addNewAudioSource(adtsSource, 4/*mpegVersion: AAC*/);<br />
  return MPEG2TransportStreamFramer::createNew(envir(), tsFrames);//blockSource<br />
 }
</p>
<p>
         RTPSink * TSFromH264BlockServerMediaSubsession::createNewRTPSink(Groupsock * rtpGroupsock, unsigned char rtpPayloadTypeIfDynamic, FramedSource * inputSource)<br />
 {<br />
  return SimpleRTPSink::createNew(envir(), rtpGroupsock,<br />
   33, 90000, "video", "MP2T",<br />
   1, True, False /*no 'M' bit*/);<br />
 }
</p>
<p>
        [7]<br />
 //pBlockName is a string.<br />
 sms->addSubsession(kagula::TSFromH264BlockServerMediaSubsession::createNew(env, pBlockName, false));<br />
 rtspServer->addServerMediaSession(sms); 
</p>
<p>
        <br />
</p>
<p>
        [8]I need help, any advise will be appreciate
</p>