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

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

Remove dummy surface in CameraSource

bug - 2680919

Change-Id: Ia0308cf57fd67058b4dd0e042b3ce97f13df475f
parent fae47fd0
Loading
Loading
Loading
Loading
+0 −4
Original line number Diff line number Diff line
@@ -28,7 +28,6 @@ namespace android {

class ICamera;
class IMemory;
class ISurface;
class Camera;

class CameraSource : public MediaSource {
@@ -38,8 +37,6 @@ public:

    virtual ~CameraSource();

    void setPreviewSurface(const sp<ISurface> &surface);

    virtual status_t start(MetaData *params = NULL);
    virtual status_t stop();

@@ -52,7 +49,6 @@ private:
    friend class CameraSourceListener;

    sp<Camera> mCamera;
    sp<ISurface> mPreviewSurface;

    Mutex mLock;
    Condition mFrameAvailableCondition;
+2 −2
Original line number Diff line number Diff line
@@ -585,13 +585,13 @@ status_t StagefrightRecorder::startMPEG4Recording() {
            return UNKNOWN_ERROR;
        }

        CHECK_EQ(OK, mCamera->setPreviewDisplay(mPreviewSurface));

        sp<CameraSource> cameraSource =
            CameraSource::CreateFromCamera(mCamera);

        CHECK(cameraSource != NULL);

        cameraSource->setPreviewSurface(mPreviewSurface);

        sp<MetaData> enc_meta = new MetaData;
        enc_meta->setInt32(kKeyBitRate, mVideoBitRate);
        enc_meta->setInt32(kKeySampleRate, mFrameRate);  // XXX: kKeySampleRate?
+1 −44
Original line number Diff line number Diff line
@@ -27,42 +27,10 @@
#include <media/stagefright/MetaData.h>
#include <camera/Camera.h>
#include <camera/CameraParameters.h>
#include <ui/GraphicBuffer.h>
#include <ui/Overlay.h>
#include <surfaceflinger/ISurface.h>
#include <utils/String8.h>

namespace android {

struct DummySurface : public BnSurface {
    DummySurface() {}

    virtual sp<GraphicBuffer> requestBuffer(int bufferIdx, int usage) {
        return NULL;
    }
    virtual status_t setBufferCount(int bufferCount) {
        return INVALID_OPERATION;
    }

    virtual status_t registerBuffers(const BufferHeap &buffers) {
        return OK;
    }

    virtual void postBuffer(ssize_t offset) {}
    virtual void unregisterBuffers() {}

    virtual sp<OverlayRef> createOverlay(
            uint32_t w, uint32_t h, int32_t format, int32_t orientation) {
        return NULL;
    }

protected:
    virtual ~DummySurface() {}

    DummySurface(const DummySurface &);
    DummySurface &operator=(const DummySurface &);
};

struct CameraSourceListener : public CameraListener {
    CameraSourceListener(const sp<CameraSource> &source);

@@ -150,23 +118,12 @@ CameraSource::~CameraSource() {
    }
}

void CameraSource::setPreviewSurface(const sp<ISurface> &surface) {
    mPreviewSurface = surface;
}

status_t CameraSource::start(MetaData *) {
    LOGV("start");
    CHECK(!mStarted);

    mCamera->setListener(new CameraSourceListener(this));

    status_t err =
        mCamera->setPreviewDisplay(
                mPreviewSurface != NULL ? mPreviewSurface : new DummySurface);
    CHECK_EQ(err, OK);

    err = mCamera->startRecording();
    CHECK_EQ(err, OK);
    CHECK_EQ(OK, mCamera->startRecording());

    mStarted = true;