summaryrefslogtreecommitdiffstats
path: root/media/libmediaplayerservice/nuplayer/StreamingSource.h
diff options
context:
space:
mode:
authorChong Zhang <chz@google.com>2014-12-02 18:35:35 -0800
committerChong Zhang <chz@google.com>2014-12-03 16:53:21 -0800
commit180d1b96ee2312f1056a58e26884a89d25ab62c8 (patch)
tree429e10ae941b02a4f3c6e18227c79cd5592b83fb /media/libmediaplayerservice/nuplayer/StreamingSource.h
parentab05b4ccb8ea59079d7f773aa0e090029c479bad (diff)
downloadframeworks_av-180d1b96ee2312f1056a58e26884a89d25ab62c8.zip
frameworks_av-180d1b96ee2312f1056a58e26884a89d25ab62c8.tar.gz
frameworks_av-180d1b96ee2312f1056a58e26884a89d25ab62c8.tar.bz2
fix threading in RTSPSource and StreamingSource
Bug: 18532335 Change-Id: I9c34401a928dc0ddbd0923aa5f127dc628efbb92
Diffstat (limited to 'media/libmediaplayerservice/nuplayer/StreamingSource.h')
-rw-r--r--media/libmediaplayerservice/nuplayer/StreamingSource.h16
1 files changed, 16 insertions, 0 deletions
diff --git a/media/libmediaplayerservice/nuplayer/StreamingSource.h b/media/libmediaplayerservice/nuplayer/StreamingSource.h
index 412b6c4..1f95f3c 100644
--- a/media/libmediaplayerservice/nuplayer/StreamingSource.h
+++ b/media/libmediaplayerservice/nuplayer/StreamingSource.h
@@ -25,6 +25,7 @@ namespace android {
struct ABuffer;
struct ATSParser;
+struct AnotherPacketSource;
struct NuPlayer::StreamingSource : public NuPlayer::Source {
StreamingSource(
@@ -43,14 +44,29 @@ struct NuPlayer::StreamingSource : public NuPlayer::Source {
protected:
virtual ~StreamingSource();
+ virtual void onMessageReceived(const sp<AMessage> &msg);
+
virtual sp<MetaData> getFormatMeta(bool audio);
private:
+ enum {
+ kWhatReadBuffer,
+ };
sp<IStreamSource> mSource;
status_t mFinalResult;
sp<NuPlayerStreamListener> mStreamListener;
sp<ATSParser> mTSParser;
+ bool mBuffering;
+ Mutex mBufferingLock;
+ sp<ALooper> mLooper;
+
+ void setError(status_t err);
+ sp<AnotherPacketSource> getSource(bool audio);
+ bool haveSufficientDataOnAllTracks();
+ status_t postReadBuffer();
+ void onReadBuffer();
+
DISALLOW_EVIL_CONSTRUCTORS(StreamingSource);
};