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

Commit 7eb42678 authored by Chien-Yu Chen's avatar Chien-Yu Chen Committed by Android (Google) Code Review
Browse files

Merge "CameraSource: Fix time lapse video recording" into nyc-dev

parents 24b02edc 8fc3c670
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -219,6 +219,9 @@ protected:
    virtual void dataCallbackTimestamp(int64_t timestampUs, int32_t msgType,
            const sp<IMemory> &data);

    // Process a buffer item received in BufferQueueListener.
    virtual void processBufferQueueFrame(BufferItem& buffer);

    void releaseCamera();

private:
@@ -260,8 +263,6 @@ private:

    void releaseQueuedFrames();
    void releaseOneRecordingFrame(const sp<IMemory>& frame);
    // Process a buffer item received in BufferQueueListener.
    void processBufferQueueFrame(const BufferItem& buffer);

    status_t init(const sp<ICamera>& camera, const sp<ICameraRecordingProxy>& proxy,
                  int32_t cameraId, const String16& clientName, uid_t clientUid, pid_t clientPid,
+6 −0
Original line number Diff line number Diff line
@@ -137,9 +137,15 @@ private:
    // In the video camera case calls skipFrameAndModifyTimeStamp() to modify
    // timestamp and set mSkipCurrentFrame.
    // Then it calls the base CameraSource::dataCallbackTimestamp()
    // This will be called in VIDEO_BUFFER_MODE_DATA_CALLBACK_YUV and
    // VIDEO_BUFFER_MODE_DATA_CALLBACK_METADATA mode.
    virtual void dataCallbackTimestamp(int64_t timestampUs, int32_t msgType,
            const sp<IMemory> &data);

    // Process a buffer item received in CameraSource::BufferQueueListener.
    // This will be called in VIDEO_BUFFER_MODE_BUFFER_QUEUE mode.
    virtual void processBufferQueueFrame(BufferItem& buffer);

    // Convenience function to fill mLastReadBufferCopy from the just read
    // buffer.
    void fillLastReadBufferCopy(MediaBuffer& sourceBuffer);
+1 −1
Original line number Diff line number Diff line
@@ -1114,7 +1114,7 @@ bool CameraSource::BufferQueueListener::threadLoop() {
    return true;
}

void CameraSource::processBufferQueueFrame(const BufferItem& buffer) {
void CameraSource::processBufferQueueFrame(BufferItem& buffer) {
    Mutex::Autolock autoLock(mLock);

    int64_t timestampUs = buffer.mTimestamp / 1000;
+8 −0
Original line number Diff line number Diff line
@@ -308,4 +308,12 @@ void CameraSourceTimeLapse::dataCallbackTimestamp(int64_t timestampUs, int32_t m
    CameraSource::dataCallbackTimestamp(timestampUs, msgType, data);
}

void CameraSourceTimeLapse::processBufferQueueFrame(BufferItem& buffer) {
    ALOGV("processBufferQueueFrame");
    int64_t timestampUs = buffer.mTimestamp / 1000;
    mSkipCurrentFrame = skipFrameAndModifyTimeStamp(&timestampUs);
    buffer.mTimestamp = timestampUs * 1000;
    CameraSource::processBufferQueueFrame(buffer);
}

}  // namespace android