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

Commit d31c89f4 authored by James Dong's avatar James Dong
Browse files

Add some encoding parameters for the "record" utility

- TODO: remove some of the hard coded values

Change-Id: Ib58bbb8af45fd102176ac49da0a71613a12fa5fc
parent 6eb5ac9c
Loading
Loading
Loading
Loading
+19 −1
Original line number Diff line number Diff line
@@ -32,9 +32,15 @@

using namespace android;

static const int32_t kFramerate = 24;  // fps
static const int32_t kIFramesIntervalSec = 1;
static const int32_t kVideoBitRate = 512 * 1024;
static const int32_t kAudioBitRate = 12200;
static const int32_t kColorFormat = OMX_COLOR_FormatYUV420SemiPlanar;
static const int64_t kDurationUs = 10000000LL;  // 10 seconds

#if 1
class DummySource : public MediaSource {
    static const int32_t kFramerate = 24;  // fps

public:
    DummySource(int width, int height)
@@ -176,6 +182,12 @@ int main(int argc, char **argv) {
    enc_meta->setCString(kKeyMIMEType, MEDIA_MIMETYPE_VIDEO_AVC);
    enc_meta->setInt32(kKeyWidth, width);
    enc_meta->setInt32(kKeyHeight, height);
    enc_meta->setInt32(kKeySampleRate, kFramerate);
    enc_meta->setInt32(kKeyBitRate, kVideoBitRate);
    enc_meta->setInt32(kKeyStride, width);
    enc_meta->setInt32(kKeySliceHeight, height);
    enc_meta->setInt32(kKeyIFramesInterval, kIFramesIntervalSec);
    enc_meta->setInt32(kKeyColorFormat, kColorFormat);

    sp<MediaSource> encoder =
        OMXCodec::Create(
@@ -184,8 +196,10 @@ int main(int argc, char **argv) {
#if 1
    sp<MPEG4Writer> writer = new MPEG4Writer("/sdcard/output.mp4");
    writer->addSource(encoder);
    writer->setMaxFileDuration(kDurationUs);
    writer->start();
    while (!writer->reachedEOS()) {
        fprintf(stderr, ".");
        usleep(100000);
    }
    writer->stop();
@@ -194,6 +208,8 @@ int main(int argc, char **argv) {

    MediaBuffer *buffer;
    while (encoder->read(&buffer) == OK) {
        printf(".");
        fflush(stdout);
        int32_t isSync;
        if (!buffer->meta_data()->findInt32(kKeyIsSyncFrame, &isSync)) {
            isSync = false;
@@ -209,6 +225,7 @@ int main(int argc, char **argv) {
    encoder->stop();
#endif

    printf("$\n");
    client.disconnect();
#endif

@@ -267,6 +284,7 @@ int main(int argc, char **argv) {
    encMeta->setInt32(kKeySampleRate, kSampleRate);
    encMeta->setInt32(kKeyChannelCount, kNumChannels);
    encMeta->setInt32(kKeyMaxInputSize, 8192);
    encMeta->setInt32(kKeyBitRate, kAudioBitRate);

    sp<MediaSource> encoder =
        OMXCodec::Create(client.interface(), encMeta, true, audioSource);