diff options
-rw-r--r-- | media/libstagefright/rtsp/MyHandler.h | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/media/libstagefright/rtsp/MyHandler.h b/media/libstagefright/rtsp/MyHandler.h index e067e20..e51d9e3 100644 --- a/media/libstagefright/rtsp/MyHandler.h +++ b/media/libstagefright/rtsp/MyHandler.h @@ -127,7 +127,8 @@ struct MyHandler : public AHandler { mKeepAliveTimeoutUs(kDefaultKeepAliveTimeoutUs), mKeepAliveGeneration(0), mPausing(false), - mPauseGeneration(0) { + mPauseGeneration(0), + mPlayResponseParsed(false) { mNetLooper->setName("rtsp net"); mNetLooper->start(false /* runOnCallingThread */, false /* canCallJava */, @@ -1371,6 +1372,7 @@ struct MyHandler : public AHandler { } void parsePlayResponse(const sp<ARTSPResponse> &response) { + mPlayResponseParsed = true; if (mTracks.size() == 0) { ALOGV("parsePlayResponse: late packets ignored."); return; @@ -1524,6 +1526,8 @@ private: Vector<TrackInfo> mTracks; + bool mPlayResponseParsed; + void setupTrack(size_t index) { sp<APacketSource> source = new APacketSource(mSessionDesc, index); @@ -1728,6 +1732,13 @@ private: int32_t trackIndex, const sp<ABuffer> &accessUnit) { ALOGV("onAccessUnitComplete track %d", trackIndex); + if(!mPlayResponseParsed){ + ALOGI("play response is not parsed, storing accessunit"); + TrackInfo *track = &mTracks.editItemAt(trackIndex); + track->mPackets.push_back(accessUnit); + return; + } + if (mFirstAccessUnit) { sp<AMessage> msg = mNotify->dup(); msg->setInt32("what", kWhatConnected); |