Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c434ac82 authored by Marco Nelissen's avatar Marco Nelissen
Browse files

Add option to stagefright for writing decoded PCM

b/774846
Change-Id: I8edce3e7d60b3f56b4eb1ed75ca80285c5ae3972
parent e0c026e3
Loading
Loading
Loading
Loading
+25 −1
Original line number Diff line number Diff line
@@ -608,6 +608,7 @@ static void usage(const char *me) {
    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");
    fprintf(stderr, "       -D(ump) filename (decoded PCM data to a file)\n");
}

static void dumpCodecProfiles(const sp<IOMX>& omx, bool queryDecoders) {
@@ -668,6 +669,7 @@ int main(int argc, char **argv) {
    bool useSurfaceAlloc = false;
    bool useSurfaceTexAlloc = false;
    bool dumpStream = false;
    bool dumpPCMStream = false;
    String8 dumpStreamFilename;
    gNumRepetitions = 1;
    gMaxNumFrames = 0;
@@ -682,7 +684,7 @@ int main(int argc, char **argv) {
    sp<LiveSession> liveSession;

    int res;
    while ((res = getopt(argc, argv, "han:lm:b:ptsrow:kxSTd:")) >= 0) {
    while ((res = getopt(argc, argv, "han:lm:b:ptsrow:kxSTd:D:")) >= 0) {
        switch (res) {
            case 'a':
            {
@@ -697,6 +699,14 @@ int main(int argc, char **argv) {
                break;
            }

            case 'D':
            {
                dumpPCMStream = true;
                audioOnly = true;
                dumpStreamFilename.setTo(optarg);
                break;
            }

            case 'l':
            {
                listComponents = true;
@@ -1103,6 +1113,20 @@ int main(int argc, char **argv) {
            writeSourcesToMP4(mediaSources, syncInfoPresent);
        } else if (dumpStream) {
            dumpSource(mediaSource, dumpStreamFilename);
        } else if (dumpPCMStream) {
            OMXClient client;
            CHECK_EQ(client.connect(), (status_t)OK);

            sp<MediaSource> decSource =
                OMXCodec::Create(
                        client.interface(),
                        mediaSource->getFormat(),
                        false,
                        mediaSource,
                        0,
                        0);

            dumpSource(decSource, dumpStreamFilename);
        } else if (seekTest) {
            performSeekTest(mediaSource);
        } else {