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

Commit daabf8b5 authored by Gloria Wang's avatar Gloria Wang Committed by Android (Google) Code Review
Browse files

Merge "To collect the total usage time of encoders in the media recorder"

parents d9896edf 62e05a61
Loading
Loading
Loading
Loading
+79 −7
Original line number Diff line number Diff line
@@ -20,6 +20,10 @@

#include "StagefrightRecorder.h"

#include <binder/IPCThreadState.h>
#include <binder/IServiceManager.h>

#include <media/IMediaPlayerService.h>
#include <media/stagefright/AudioSource.h>
#include <media/stagefright/AMRWriter.h>
#include <media/stagefright/CameraSource.h>
@@ -46,9 +50,23 @@

namespace android {

// To collect the encoder usage for the battery app
static void addBatteryData(uint32_t params) {
    sp<IBinder> binder =
        defaultServiceManager()->getService(String16("media.player"));
    sp<IMediaPlayerService> service = interface_cast<IMediaPlayerService>(binder);
    CHECK(service.get() != NULL);

    service->addBatteryData(params);
}


StagefrightRecorder::StagefrightRecorder()
    : mWriter(NULL), mWriterAux(NULL),
      mOutputFd(-1), mOutputFdAux(-1) {
      mOutputFd(-1), mOutputFdAux(-1),
      mAudioSource(AUDIO_SOURCE_LIST_END),
      mVideoSource(VIDEO_SOURCE_LIST_END),
      mStarted(false) {

    LOGV("Constructor");
    reset();
@@ -745,30 +763,54 @@ status_t StagefrightRecorder::start() {
        return UNKNOWN_ERROR;
    }

    status_t status = OK;

    switch (mOutputFormat) {
        case OUTPUT_FORMAT_DEFAULT:
        case OUTPUT_FORMAT_THREE_GPP:
        case OUTPUT_FORMAT_MPEG_4:
            return startMPEG4Recording();
            status = startMPEG4Recording();
            break;

        case OUTPUT_FORMAT_AMR_NB:
        case OUTPUT_FORMAT_AMR_WB:
            return startAMRRecording();
            status = startAMRRecording();
            break;

        case OUTPUT_FORMAT_AAC_ADIF:
        case OUTPUT_FORMAT_AAC_ADTS:
            return startAACRecording();
            status = startAACRecording();
            break;

        case OUTPUT_FORMAT_RTP_AVP:
            return startRTPRecording();
            status = startRTPRecording();
            break;

        case OUTPUT_FORMAT_MPEG2TS:
            return startMPEG2TSRecording();
            status = startMPEG2TSRecording();
            break;

        default:
            LOGE("Unsupported output file format: %d", mOutputFormat);
            return UNKNOWN_ERROR;
            status = UNKNOWN_ERROR;
            break;
    }

    if ((status == OK) && (!mStarted)) {
        mStarted = true;

        uint32_t params = IMediaPlayerService::kBatteryDataCodecStarted;
        if (mAudioSource != AUDIO_SOURCE_LIST_END) {
            params |= IMediaPlayerService::kBatteryDataTrackAudio;
        }
        if (mVideoSource != VIDEO_SOURCE_LIST_END) {
            params |= IMediaPlayerService::kBatteryDataTrackVideo;
        }

        addBatteryData(params);
    }

    return status;
}

sp<MediaSource> StagefrightRecorder::createAudioSource() {
@@ -1458,6 +1500,21 @@ status_t StagefrightRecorder::pause() {
        mWriterAux->pause();
    }

    if (mStarted) {
        mStarted = false;

        uint32_t params = 0;
        if (mAudioSource != AUDIO_SOURCE_LIST_END) {
            params |= IMediaPlayerService::kBatteryDataTrackAudio;
        }
        if (mVideoSource != VIDEO_SOURCE_LIST_END) {
            params |= IMediaPlayerService::kBatteryDataTrackVideo;
        }

        addBatteryData(params);
    }


    return OK;
}

@@ -1494,6 +1551,21 @@ status_t StagefrightRecorder::stop() {
        }
    }

    if (mStarted) {
        mStarted = false;

        uint32_t params = 0;
        if (mAudioSource != AUDIO_SOURCE_LIST_END) {
            params |= IMediaPlayerService::kBatteryDataTrackAudio;
        }
        if (mVideoSource != VIDEO_SOURCE_LIST_END) {
            params |= IMediaPlayerService::kBatteryDataTrackVideo;
        }

        addBatteryData(params);
    }


    return err;
}

+2 −0
Original line number Diff line number Diff line
@@ -107,6 +107,8 @@ private:
    bool mIsMetaDataStoredInVideoBuffers;
    MediaProfiles *mEncoderProfiles;

    bool mStarted;

    status_t setupMPEG4Recording(
        bool useSplitCameraSource,
        int outputFd,