diff options
author | Andreas Huber <andih@google.com> | 2010-07-22 13:57:39 -0700 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2010-07-22 13:57:39 -0700 |
commit | 8dac3bf922de433bc7d08c9968dfc5087de34b86 (patch) | |
tree | 8be3551b5d81b03ec0500f695a612d51f24997ed /cmds | |
parent | 95675137f417173dc711a2d39232a1f545799013 (diff) | |
parent | b72d3180dc8d41d6269664bea808b04410bbe40f (diff) | |
download | frameworks_base-8dac3bf922de433bc7d08c9968dfc5087de34b86.zip frameworks_base-8dac3bf922de433bc7d08c9968dfc5087de34b86.tar.gz frameworks_base-8dac3bf922de433bc7d08c9968dfc5087de34b86.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 'cmds')
-rw-r--r-- | cmds/stagefright/stagefright.cpp | 41 |
1 files changed, 36 insertions, 5 deletions
diff --git a/cmds/stagefright/stagefright.cpp b/cmds/stagefright/stagefright.cpp index f74240f..4a1d27b 100644 --- a/cmds/stagefright/stagefright.cpp +++ b/cmds/stagefright/stagefright.cpp @@ -25,6 +25,8 @@ #include <binder/IServiceManager.h> #include <binder/ProcessState.h> #include <media/IMediaPlayerService.h> +#include <media/stagefright/foundation/ALooper.h> +#include "include/ARTSPController.h" #include <media/stagefright/AudioPlayer.h> #include <media/stagefright/DataSource.h> #include <media/stagefright/JPEGSource.h> @@ -365,6 +367,9 @@ int main(int argc, char **argv) { gPlaybackAudio = false; gWriteMP4 = false; + sp<ALooper> looper; + sp<ARTSPController> rtspController; + int res; while ((res = getopt(argc, argv, "han:lm:b:ptsow:k")) >= 0) { switch (res) { @@ -576,7 +581,8 @@ int main(int argc, char **argv) { sp<DataSource> dataSource = DataSource::CreateFromURI(filename); - if (strncasecmp(filename, "sine:", 5) && dataSource == NULL) { + if ((strncasecmp(filename, "sine:", 5) + && strncasecmp(filename, "rtsp://", 7)) && dataSource == NULL) { fprintf(stderr, "Unable to create data source.\n"); return 1; } @@ -601,10 +607,28 @@ int main(int argc, char **argv) { } mediaSource = new SineSource(sampleRate, 1); } else { - sp<MediaExtractor> extractor = MediaExtractor::Create(dataSource); - if (extractor == NULL) { - fprintf(stderr, "could not create extractor.\n"); - return -1; + sp<MediaExtractor> extractor; + + if (!strncasecmp("rtsp://", filename, 7)) { + if (looper == NULL) { + looper = new ALooper; + looper->start(); + } + + rtspController = new ARTSPController(looper); + status_t err = rtspController->connect(filename); + if (err != OK) { + fprintf(stderr, "could not connect to rtsp server.\n"); + return -1; + } + + extractor = rtspController.get(); + } else { + extractor = MediaExtractor::Create(dataSource); + if (extractor == NULL) { + fprintf(stderr, "could not create extractor.\n"); + return -1; + } } size_t numTracks = extractor->countTracks(); @@ -654,6 +678,13 @@ int main(int argc, char **argv) { } else { playSource(&client, mediaSource); } + + if (rtspController != NULL) { + rtspController->disconnect(); + rtspController.clear(); + + sleep(3); + } } client.disconnect(); |