diff options
Diffstat (limited to 'cmds')
-rw-r--r-- | cmds/ip-up-vpn/ip-up-vpn.c | 10 | ||||
-rw-r--r-- | cmds/stagefright/sf2.cpp | 10 | ||||
-rw-r--r-- | cmds/stagefright/stagefright.cpp | 57 | ||||
-rw-r--r-- | cmds/stagefright/stream.cpp | 2 |
4 files changed, 71 insertions, 8 deletions
diff --git a/cmds/ip-up-vpn/ip-up-vpn.c b/cmds/ip-up-vpn/ip-up-vpn.c index e9ee95d..0e6286f 100644 --- a/cmds/ip-up-vpn/ip-up-vpn.c +++ b/cmds/ip-up-vpn/ip-up-vpn.c @@ -40,6 +40,7 @@ static const char *env(const char *name) { static int set_address(struct sockaddr *sa, const char *address) { sa->sa_family = AF_INET; + errno = EINVAL; return inet_pton(AF_INET, address, &((struct sockaddr_in *)sa)->sin_addr); } @@ -124,10 +125,11 @@ int main(int argc, char **argv) } /* Set the netmask. */ - if (!set_address(&ifr.ifr_netmask, env("INTERNAL_NETMASK4")) || - ioctl(s, SIOCSIFNETMASK, &ifr)) { - LOGE("Cannot set netmask: %s", strerror(errno)); - return 1; + if (set_address(&ifr.ifr_netmask, env("INTERNAL_NETMASK4"))) { + if (ioctl(s, SIOCSIFNETMASK, &ifr)) { + LOGE("Cannot set netmask: %s", strerror(errno)); + return 1; + } } /* TODO: Send few packets to trigger phase 2? */ diff --git a/cmds/stagefright/sf2.cpp b/cmds/stagefright/sf2.cpp index 6fa66cf..263ecd1 100644 --- a/cmds/stagefright/sf2.cpp +++ b/cmds/stagefright/sf2.cpp @@ -569,12 +569,16 @@ int main(int argc, char **argv) { CHECK(control->isValid()); SurfaceComposerClient::openGlobalTransaction(); - CHECK_EQ(control->setLayer(30000), (status_t)OK); + CHECK_EQ(control->setLayer(INT_MAX), (status_t)OK); CHECK_EQ(control->show(), (status_t)OK); SurfaceComposerClient::closeGlobalTransaction(); surface = control->getSurface(); CHECK(surface != NULL); + + CHECK_EQ((status_t)OK, + native_window_api_connect( + surface.get(), NATIVE_WINDOW_API_MEDIA)); } sp<Controller> controller = @@ -589,6 +593,10 @@ int main(int argc, char **argv) { looper->unregisterHandler(controller->id()); if (!decodeAudio && useSurface) { + CHECK_EQ((status_t)OK, + native_window_api_disconnect( + surface.get(), NATIVE_WINDOW_API_MEDIA)); + composerClient->dispose(); } diff --git a/cmds/stagefright/stagefright.cpp b/cmds/stagefright/stagefright.cpp index 34f0a64..528d197 100644 --- a/cmds/stagefright/stagefright.cpp +++ b/cmds/stagefright/stagefright.cpp @@ -133,6 +133,39 @@ static void displayAVCProfileLevelIfPossible(const sp<MetaData>& meta) { } } +static void dumpSource(const sp<MediaSource> &source, const String8 &filename) { + FILE *out = fopen(filename.string(), "wb"); + + CHECK_EQ((status_t)OK, source->start()); + + status_t err; + for (;;) { + MediaBuffer *mbuf; + err = source->read(&mbuf); + + if (err == INFO_FORMAT_CHANGED) { + continue; + } else if (err != OK) { + break; + } + + CHECK_EQ( + fwrite((const uint8_t *)mbuf->data() + mbuf->range_offset(), + 1, + mbuf->range_length(), + out), + (ssize_t)mbuf->range_length()); + + mbuf->release(); + mbuf = NULL; + } + + CHECK_EQ((status_t)OK, source->stop()); + + fclose(out); + out = NULL; +} + static void playSource(OMXClient *client, sp<MediaSource> &source) { sp<MetaData> meta = source->getFormat(); @@ -578,6 +611,7 @@ static void usage(const char *me) { "(video only)\n"); fprintf(stderr, " -S allocate buffers from a surface\n"); fprintf(stderr, " -T allocate buffers from a surface texture\n"); + fprintf(stderr, " -d(ump) filename (raw stream data to a file)\n"); } int main(int argc, char **argv) { @@ -590,6 +624,8 @@ int main(int argc, char **argv) { bool seekTest = false; bool useSurfaceAlloc = false; bool useSurfaceTexAlloc = false; + bool dumpStream = false; + String8 dumpStreamFilename; gNumRepetitions = 1; gMaxNumFrames = 0; gReproduceBug = -1; @@ -604,7 +640,7 @@ int main(int argc, char **argv) { sp<LiveSession> liveSession; int res; - while ((res = getopt(argc, argv, "han:lm:b:ptsrow:kxST")) >= 0) { + while ((res = getopt(argc, argv, "han:lm:b:ptsrow:kxSTd:")) >= 0) { switch (res) { case 'a': { @@ -612,6 +648,13 @@ int main(int argc, char **argv) { break; } + case 'd': + { + dumpStream = true; + dumpStreamFilename.setTo(optarg); + break; + } + case 'l': { listComponents = true; @@ -874,7 +917,7 @@ int main(int argc, char **argv) { CHECK(control->isValid()); SurfaceComposerClient::openGlobalTransaction(); - CHECK_EQ(control->setLayer(30000), (status_t)OK); + CHECK_EQ(control->setLayer(INT_MAX), (status_t)OK); CHECK_EQ(control->show(), (status_t)OK); SurfaceComposerClient::closeGlobalTransaction(); @@ -886,6 +929,10 @@ int main(int argc, char **argv) { sp<SurfaceTexture> texture = new SurfaceTexture(0 /* tex */); gSurface = new SurfaceTextureClient(texture); } + + CHECK_EQ((status_t)OK, + native_window_api_connect( + gSurface.get(), NATIVE_WINDOW_API_MEDIA)); } DataSource::RegisterDefaultSniffers(); @@ -1062,6 +1109,8 @@ int main(int argc, char **argv) { if (gWriteMP4) { writeSourcesToMP4(mediaSources, syncInfoPresent); + } else if (dumpStream) { + dumpSource(mediaSource, dumpStreamFilename); } else if (seekTest) { performSeekTest(mediaSource); } else { @@ -1077,6 +1126,10 @@ int main(int argc, char **argv) { } if ((useSurfaceAlloc || useSurfaceTexAlloc) && !audioOnly) { + CHECK_EQ((status_t)OK, + native_window_api_disconnect( + gSurface.get(), NATIVE_WINDOW_API_MEDIA)); + gSurface.clear(); if (useSurfaceAlloc) { diff --git a/cmds/stagefright/stream.cpp b/cmds/stagefright/stream.cpp index b13236a..2378345 100644 --- a/cmds/stagefright/stream.cpp +++ b/cmds/stagefright/stream.cpp @@ -323,7 +323,7 @@ int main(int argc, char **argv) { CHECK(control->isValid()); SurfaceComposerClient::openGlobalTransaction(); - CHECK_EQ(control->setLayer(30000), (status_t)OK); + CHECK_EQ(control->setLayer(INT_MAX), (status_t)OK); CHECK_EQ(control->show(), (status_t)OK); SurfaceComposerClient::closeGlobalTransaction(); |