summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/rtsp/MyHandler.h
diff options
context:
space:
mode:
authorAndreas Huber <andih@google.com>2010-07-22 13:57:39 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2010-07-22 13:57:39 -0700
commitf661058d77d1484e5911d1962f8e1e8466240687 (patch)
tree68a15b2e05afde966fad297d8c95f36951e4d24f /media/libstagefright/rtsp/MyHandler.h
parent2c81e430f8fb1493084a3b32cd649a368b4201e5 (diff)
parent3922fe0860f1662f9066f553314b6955702d4956 (diff)
downloadframeworks_av-f661058d77d1484e5911d1962f8e1e8466240687.zip
frameworks_av-f661058d77d1484e5911d1962f8e1e8466240687.tar.gz
frameworks_av-f661058d77d1484e5911d1962f8e1e8466240687.tar.bz2
am b72d3180: am 81046c8c: Merge "Various changes to improve rtsp networking, reduce packet loss and adapt to ALooper API changes." into gingerbread
Merge commit 'b72d3180dc8d41d6269664bea808b04410bbe40f' * commit 'b72d3180dc8d41d6269664bea808b04410bbe40f': Various changes to improve rtsp networking, reduce packet loss and adapt to ALooper API changes.
Diffstat (limited to 'media/libstagefright/rtsp/MyHandler.h')
-rw-r--r--media/libstagefright/rtsp/MyHandler.h31
1 files changed, 27 insertions, 4 deletions
diff --git a/media/libstagefright/rtsp/MyHandler.h b/media/libstagefright/rtsp/MyHandler.h
index 719ebf3..15901cd 100644
--- a/media/libstagefright/rtsp/MyHandler.h
+++ b/media/libstagefright/rtsp/MyHandler.h
@@ -34,19 +34,33 @@ namespace android {
struct MyHandler : public AHandler {
MyHandler(const char *url, const sp<ALooper> &looper)
: mLooper(looper),
+ mNetLooper(new ALooper),
mConn(new ARTSPConnection),
mRTPConn(new ARTPConnection),
mSessionURL(url),
mSetupTracksSuccessful(false),
mFirstAccessUnit(true),
mFirstAccessUnitNTP(-1) {
+
+ mNetLooper->start(false /* runOnCallingThread */,
+ false /* canCallJava */,
+ PRIORITY_HIGHEST);
+ }
+
+ void connect() {
mLooper->registerHandler(this);
mLooper->registerHandler(mConn);
- mLooper->registerHandler(mRTPConn);
+ (1 ? mNetLooper : mLooper)->registerHandler(mRTPConn);
sp<AMessage> reply = new AMessage('conn', id());
+
mConn->connect(mSessionURL.c_str(), reply);
}
+ void disconnect() {
+ sp<AMessage> reply = new AMessage('disc', id());
+ mConn->disconnect(reply);
+ }
+
virtual void onMessageReceived(const sp<AMessage> &msg) {
switch (msg->what()) {
case 'conn':
@@ -290,7 +304,6 @@ struct MyHandler : public AHandler {
case 'quit':
{
- mLooper->stop();
break;
}
@@ -320,8 +333,17 @@ struct MyHandler : public AHandler {
accessUnit->meta()->setInt64("ntp-time", ntpTime);
- TrackInfo *track = &mTracks.editItemAt(trackIndex);
- track->mPacketSource->queueAccessUnit(accessUnit);
+#if 0
+ int32_t damaged;
+ if (accessUnit->meta()->findInt32("damaged", &damaged)
+ && damaged != 0) {
+ LOG(INFO) << "ignoring damaged AU";
+ } else
+#endif
+ {
+ TrackInfo *track = &mTracks.editItemAt(trackIndex);
+ track->mPacketSource->queueAccessUnit(accessUnit);
+ }
break;
}
@@ -344,6 +366,7 @@ struct MyHandler : public AHandler {
private:
sp<ALooper> mLooper;
+ sp<ALooper> mNetLooper;
sp<ARTSPConnection> mConn;
sp<ARTPConnection> mRTPConn;
sp<ASessionDescription> mSessionDesc;