OSDN Git Service

recordvideo: Add an option for choosing software encoders
authorMartin Storsjo <martin@martin.st>
Wed, 29 Aug 2012 10:28:33 +0000 (13:28 +0300)
committerMartin Storsjo <martin@martin.st>
Wed, 29 Aug 2012 12:35:59 +0000 (15:35 +0300)
This is similar to the same option in the 'stagefright' test
application.

Change-Id: I2a2e5201bd93460df0911ef12865c9030c0183e5

cmds/stagefright/recordvideo.cpp

index 3bd1fe2..6de2934 100644 (file)
@@ -43,6 +43,7 @@ static void usage(const char *me) {
     fprintf(stderr, "       -l encoder level. see omx il header (default: encoder specific)\n");
     fprintf(stderr, "       -p encoder profile. see omx il header (default: encoder specific)\n");
     fprintf(stderr, "       -v video codec: [0] AVC [1] M4V [2] H263 (default: 0)\n");
+    fprintf(stderr, "       -s(oftware) prefer software codec\n");
     fprintf(stderr, "The output file is /sdcard/output.mp4\n");
     exit(1);
 }
@@ -162,10 +163,11 @@ int main(int argc, char **argv) {
     int profile = -1;      // Encoder specific default
     int codec = 0;
     const char *fileName = "/sdcard/output.mp4";
+    bool preferSoftwareCodec = false;
 
     android::ProcessState::self()->startThreadPool();
     int res;
-    while ((res = getopt(argc, argv, "b:c:f:i:n:w:t:l:p:v:h")) >= 0) {
+    while ((res = getopt(argc, argv, "b:c:f:i:n:w:t:l:p:v:hs")) >= 0) {
         switch (res) {
             case 'b':
             {
@@ -233,6 +235,12 @@ int main(int argc, char **argv) {
                 break;
             }
 
+            case 's':
+            {
+                preferSoftwareCodec = true;
+                break;
+            }
+
             case 'h':
             default:
             {
@@ -278,7 +286,8 @@ int main(int argc, char **argv) {
 
     sp<MediaSource> encoder =
         OMXCodec::Create(
-                client.interface(), enc_meta, true /* createEncoder */, source);
+                client.interface(), enc_meta, true /* createEncoder */, source,
+                0, preferSoftwareCodec ? OMXCodec::kPreferSoftwareCodecs : 0);
 
     sp<MPEG4Writer> writer = new MPEG4Writer(fileName);
     writer->addSource(encoder);