summaryrefslogtreecommitdiffstats
path: root/media
diff options
context:
space:
mode:
authorAndreas Huber <andih@google.com>2010-08-05 10:11:28 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2010-08-05 10:11:28 -0700
commitcf168132b4e4ac8d9c29d02d8dfed89c33d06e9a (patch)
tree6719d42f3ffc01d6209e826e6a2286295366be95 /media
parentecaccb9f82dd07b29aa32ce36e8d15862dfdf547 (diff)
parentff53123821a3ec2e71fdb1a971ea2cbae3119826 (diff)
downloadframeworks_av-cf168132b4e4ac8d9c29d02d8dfed89c33d06e9a.zip
frameworks_av-cf168132b4e4ac8d9c29d02d8dfed89c33d06e9a.tar.gz
frameworks_av-cf168132b4e4ac8d9c29d02d8dfed89c33d06e9a.tar.bz2
Merge "Better support for fake timestamps in RTP, H.263 video now also requests FIR." into gingerbread
Diffstat (limited to 'media')
-rw-r--r--media/libstagefright/AwesomePlayer.cpp5
-rw-r--r--media/libstagefright/rtsp/ARTPConnection.cpp14
-rw-r--r--media/libstagefright/rtsp/ARTPSource.cpp1
-rw-r--r--media/libstagefright/rtsp/ARTPSource.h4
4 files changed, 17 insertions, 7 deletions
diff --git a/media/libstagefright/AwesomePlayer.cpp b/media/libstagefright/AwesomePlayer.cpp
index 86a02f6..e426fca 100644
--- a/media/libstagefright/AwesomePlayer.cpp
+++ b/media/libstagefright/AwesomePlayer.cpp
@@ -1225,7 +1225,10 @@ status_t AwesomePlayer::finishSetDataSource_l() {
} else if (!strcmp("rtsp://gtalk", mUri.string())) {
if (mLooper == NULL) {
mLooper = new ALooper;
- mLooper->start();
+ mLooper->start(
+ false /* runOnCallingThread */,
+ false /* canCallJava */,
+ PRIORITY_HIGHEST);
}
#if 0
diff --git a/media/libstagefright/rtsp/ARTPConnection.cpp b/media/libstagefright/rtsp/ARTPConnection.cpp
index 9abdab4..5bd306b 100644
--- a/media/libstagefright/rtsp/ARTPConnection.cpp
+++ b/media/libstagefright/rtsp/ARTPConnection.cpp
@@ -405,6 +405,14 @@ status_t ARTPConnection::parseRTP(StreamInfo *s, const sp<ABuffer> &buffer) {
buffer->setInt32Data(u16at(&data[2]));
buffer->setRange(payloadOffset, size - payloadOffset);
+#if IGNORE_RTCP_TIME
+ if (!source->timeEstablished()) {
+ source->timeUpdate(rtpTime, 0);
+ source->timeUpdate(rtpTime + 20, 0x100000000ll);
+ CHECK(source->timeEstablished());
+ }
+#endif
+
source->processRTPPacket(buffer);
return OK;
@@ -541,12 +549,6 @@ sp<ARTPSource> ARTPConnection::findSource(StreamInfo *info, uint32_t srcId) {
source = new ARTPSource(
srcId, info->mSessionDesc, info->mIndex, info->mNotifyMsg);
-#if IGNORE_RTCP_TIME
- // For H.263 gtalk to work...
- source->timeUpdate(0, 0);
- source->timeUpdate(30, 0x100000000ll);
-#endif
-
info->mSources.add(srcId, source);
} else {
source = info->mSources.valueAt(index);
diff --git a/media/libstagefright/rtsp/ARTPSource.cpp b/media/libstagefright/rtsp/ARTPSource.cpp
index 2aa0c1f..e08183e 100644
--- a/media/libstagefright/rtsp/ARTPSource.cpp
+++ b/media/libstagefright/rtsp/ARTPSource.cpp
@@ -58,6 +58,7 @@ ARTPSource::ARTPSource(
} else if (!strncmp(desc.c_str(), "H263-1998/", 10)
|| !strncmp(desc.c_str(), "H263-2000/", 10)) {
mAssembler = new AH263Assembler(notify);
+ mIssueFIRRequests = true;
} else if (!strncmp(desc.c_str(), "AMR/", 4)) {
mAssembler = new AAMRAssembler(notify, false /* isWide */, params);
} else if (!strncmp(desc.c_str(), "AMR-WB/", 7)) {
diff --git a/media/libstagefright/rtsp/ARTPSource.h b/media/libstagefright/rtsp/ARTPSource.h
index 8e483a8..252d6d6 100644
--- a/media/libstagefright/rtsp/ARTPSource.h
+++ b/media/libstagefright/rtsp/ARTPSource.h
@@ -46,6 +46,10 @@ struct ARTPSource : public RefBase {
void addReceiverReport(const sp<ABuffer> &buffer);
void addFIR(const sp<ABuffer> &buffer);
+ bool timeEstablished() const {
+ return mNumTimes == 2;
+ }
+
private:
uint32_t mID;
uint32_t mHighestSeqNumber;