mirror of
https://github.com/defold/extension-camera
synced 2025-06-27 18:37:43 +02:00
Whitespace fixes
This commit is contained in:
parent
49f954ae04
commit
bcec320ed1
@ -38,32 +38,32 @@ static int StartCapture(lua_State* L)
|
|||||||
CameraType type = (CameraType) luaL_checkint(L, 1);
|
CameraType type = (CameraType) luaL_checkint(L, 1);
|
||||||
CaptureQuality quality = (CaptureQuality)luaL_checkint(L, 2);
|
CaptureQuality quality = (CaptureQuality)luaL_checkint(L, 2);
|
||||||
|
|
||||||
int status = CameraPlatform_StartCapture(&g_DefoldCamera.m_VideoBuffer, type, quality, g_DefoldCamera.m_Params);
|
int status = CameraPlatform_StartCapture(&g_DefoldCamera.m_VideoBuffer, type, quality, g_DefoldCamera.m_Params);
|
||||||
|
|
||||||
lua_pushboolean(L, status > 0);
|
lua_pushboolean(L, status > 0);
|
||||||
if( status == 0 )
|
if( status == 0 )
|
||||||
{
|
{
|
||||||
dmLogError("capture failed!\n");
|
dmLogError("capture failed!\n");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Increase ref count
|
// Increase ref count
|
||||||
dmScript::LuaHBuffer luabuffer = {g_DefoldCamera.m_VideoBuffer, false};
|
dmScript::LuaHBuffer luabuffer = {g_DefoldCamera.m_VideoBuffer, false};
|
||||||
dmScript::PushBuffer(L, luabuffer);
|
dmScript::PushBuffer(L, luabuffer);
|
||||||
g_DefoldCamera.m_VideoBufferLuaRef = dmScript::Ref(L, LUA_REGISTRYINDEX);
|
g_DefoldCamera.m_VideoBufferLuaRef = dmScript::Ref(L, LUA_REGISTRYINDEX);
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int StopCapture(lua_State* L)
|
static int StopCapture(lua_State* L)
|
||||||
{
|
{
|
||||||
DM_LUA_STACK_CHECK(L, 0);
|
DM_LUA_STACK_CHECK(L, 0);
|
||||||
|
|
||||||
int status = CameraPlatform_StopCapture();
|
int status = CameraPlatform_StopCapture();
|
||||||
if( !status )
|
if( !status )
|
||||||
{
|
{
|
||||||
return luaL_error(L, "Failed to stop capture. Was it started?");
|
return luaL_error(L, "Failed to stop capture. Was it started?");
|
||||||
}
|
}
|
||||||
|
|
||||||
dmScript::Unref(L, LUA_REGISTRYINDEX, g_DefoldCamera.m_VideoBufferLuaRef); // We want it destroyed by the GC
|
dmScript::Unref(L, LUA_REGISTRYINDEX, g_DefoldCamera.m_VideoBufferLuaRef); // We want it destroyed by the GC
|
||||||
|
|
||||||
|
@ -18,23 +18,23 @@
|
|||||||
|
|
||||||
@interface CameraCaptureDelegate : NSObject <AVCaptureVideoDataOutputSampleBufferDelegate>
|
@interface CameraCaptureDelegate : NSObject <AVCaptureVideoDataOutputSampleBufferDelegate>
|
||||||
{
|
{
|
||||||
@private AVCaptureSession* m_captureSession;
|
@private AVCaptureSession* m_captureSession;
|
||||||
@private AVCaptureDevice* m_camera;
|
@private AVCaptureDevice* m_camera;
|
||||||
@private AVCaptureDeviceInput* m_cameraInput;
|
@private AVCaptureDeviceInput* m_cameraInput;
|
||||||
@private AVCaptureVideoDataOutput* m_videoOutput;
|
@private AVCaptureVideoDataOutput* m_videoOutput;
|
||||||
@public CMVideoDimensions m_Size;
|
@public CMVideoDimensions m_Size;
|
||||||
}
|
}
|
||||||
@end
|
@end
|
||||||
|
|
||||||
struct IOSCamera
|
struct IOSCamera
|
||||||
{
|
{
|
||||||
CameraCaptureDelegate* m_Delegate;
|
CameraCaptureDelegate* m_Delegate;
|
||||||
dmBuffer::HBuffer m_VideoBuffer;
|
dmBuffer::HBuffer m_VideoBuffer;
|
||||||
// TODO: Support audio buffers
|
// TODO: Support audio buffers
|
||||||
|
|
||||||
IOSCamera() : m_Delegate(0), m_VideoBuffer(0)
|
IOSCamera() : m_Delegate(0), m_VideoBuffer(0)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
IOSCamera g_Camera;
|
IOSCamera g_Camera;
|
||||||
@ -76,31 +76,31 @@ IOSCamera g_Camera;
|
|||||||
{
|
{
|
||||||
if( captureOutput == m_videoOutput && g_Camera.m_VideoBuffer != 0 )
|
if( captureOutput == m_videoOutput && g_Camera.m_VideoBuffer != 0 )
|
||||||
{
|
{
|
||||||
uint8_t* data = 0;
|
uint8_t* data = 0;
|
||||||
uint32_t datasize = 0;
|
uint32_t datasize = 0;
|
||||||
dmBuffer::GetBytes(g_Camera.m_VideoBuffer, (void**)&data, &datasize);
|
dmBuffer::GetBytes(g_Camera.m_VideoBuffer, (void**)&data, &datasize);
|
||||||
|
|
||||||
CVImageBufferRef imageBuffer = CMSampleBufferGetImageBuffer(sampleBuffer);
|
CVImageBufferRef imageBuffer = CMSampleBufferGetImageBuffer(sampleBuffer);
|
||||||
CVPixelBufferLockBaseAddress(imageBuffer,0);
|
CVPixelBufferLockBaseAddress(imageBuffer,0);
|
||||||
|
|
||||||
size_t bytesPerRow = CVPixelBufferGetBytesPerRow(imageBuffer);
|
size_t bytesPerRow = CVPixelBufferGetBytesPerRow(imageBuffer);
|
||||||
size_t width = CVPixelBufferGetWidth(imageBuffer);
|
size_t width = CVPixelBufferGetWidth(imageBuffer);
|
||||||
size_t height = CVPixelBufferGetHeight(imageBuffer);
|
size_t height = CVPixelBufferGetHeight(imageBuffer);
|
||||||
|
|
||||||
if( width != g_Camera.m_Delegate->m_Size.width || height != g_Camera.m_Delegate->m_Size.height )
|
if( width != g_Camera.m_Delegate->m_Size.width || height != g_Camera.m_Delegate->m_Size.height )
|
||||||
{
|
{
|
||||||
//printf("img width/height: %d, %d\n", width, height);
|
//printf("img width/height: %d, %d\n", width, height);
|
||||||
CVPixelBufferUnlockBaseAddress(imageBuffer, 0);
|
CVPixelBufferUnlockBaseAddress(imageBuffer, 0);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t* pixels = (uint8_t*)CVPixelBufferGetBaseAddress(imageBuffer);
|
uint8_t* pixels = (uint8_t*)CVPixelBufferGetBaseAddress(imageBuffer);
|
||||||
|
|
||||||
for( int y = 0; y < height; ++y )
|
for( int y = 0; y < height; ++y )
|
||||||
{
|
{
|
||||||
for( int x = 0; x < width; ++x )
|
for( int x = 0; x < width; ++x )
|
||||||
{
|
{
|
||||||
// RGB < BGR(A)
|
// RGB < BGR(A)
|
||||||
#if defined(DM_PLATFORM_IOS)
|
#if defined(DM_PLATFORM_IOS)
|
||||||
// Flip Y
|
// Flip Y
|
||||||
data[y*width*3 + x*3 + 2] = pixels[(height - y - 1) * bytesPerRow + x * 4 + 0];
|
data[y*width*3 + x*3 + 2] = pixels[(height - y - 1) * bytesPerRow + x * 4 + 0];
|
||||||
@ -113,12 +113,12 @@ IOSCamera g_Camera;
|
|||||||
data[y*width*3 + x*3 + 0] = pixels[(height - y - 1) * bytesPerRow + bytesPerRow - (x+1) * 4 + 2];
|
data[y*width*3 + x*3 + 0] = pixels[(height - y - 1) * bytesPerRow + bytesPerRow - (x+1) * 4 + 2];
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
CVPixelBufferUnlockBaseAddress(imageBuffer, 0);
|
CVPixelBufferUnlockBaseAddress(imageBuffer, 0);
|
||||||
dmBuffer::ValidateBuffer(g_Camera.m_VideoBuffer);
|
dmBuffer::ValidateBuffer(g_Camera.m_VideoBuffer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)captureOutput:(AVCaptureOutput *)captureOutput
|
- (void)captureOutput:(AVCaptureOutput *)captureOutput
|
||||||
@ -126,7 +126,7 @@ IOSCamera g_Camera;
|
|||||||
fromConnection:(AVCaptureConnection *)connection
|
fromConnection:(AVCaptureConnection *)connection
|
||||||
{
|
{
|
||||||
|
|
||||||
//NSLog(@"DROPPING FRAME!!!");
|
//NSLog(@"DROPPING FRAME!!!");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -354,10 +354,10 @@ static CMVideoDimensions FlipCoords(AVCaptureVideoDataOutput* output, const CMVi
|
|||||||
|
|
||||||
int CameraPlatform_StartCapture(dmBuffer::HBuffer* buffer, CameraType type, CaptureQuality quality, CameraInfo& outparams)
|
int CameraPlatform_StartCapture(dmBuffer::HBuffer* buffer, CameraType type, CaptureQuality quality, CameraInfo& outparams)
|
||||||
{
|
{
|
||||||
if(g_Camera.m_Delegate == 0)
|
if(g_Camera.m_Delegate == 0)
|
||||||
{
|
{
|
||||||
g_Camera.m_Delegate = [[CameraCaptureDelegate alloc] init];
|
g_Camera.m_Delegate = [[CameraCaptureDelegate alloc] init];
|
||||||
}
|
}
|
||||||
|
|
||||||
AVCaptureDevicePosition cameraposition = AVCaptureDevicePositionUnspecified;
|
AVCaptureDevicePosition cameraposition = AVCaptureDevicePositionUnspecified;
|
||||||
#if defined(DM_PLATFORM_IOS)
|
#if defined(DM_PLATFORM_IOS)
|
||||||
@ -367,7 +367,7 @@ int CameraPlatform_StartCapture(dmBuffer::HBuffer* buffer, CameraType type, Capt
|
|||||||
cameraposition = AVCaptureDevicePositionFront;
|
cameraposition = AVCaptureDevicePositionFront;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
BOOL started = [g_Camera.m_Delegate startCamera: cameraposition quality: quality];
|
BOOL started = [g_Camera.m_Delegate startCamera: cameraposition quality: quality];
|
||||||
|
|
||||||
outparams.m_Width = (uint32_t)g_Camera.m_Delegate->m_Size.width;
|
outparams.m_Width = (uint32_t)g_Camera.m_Delegate->m_Size.width;
|
||||||
outparams.m_Height = (uint32_t)g_Camera.m_Delegate->m_Size.height;
|
outparams.m_Height = (uint32_t)g_Camera.m_Delegate->m_Size.height;
|
||||||
@ -386,15 +386,15 @@ int CameraPlatform_StartCapture(dmBuffer::HBuffer* buffer, CameraType type, Capt
|
|||||||
|
|
||||||
int CameraPlatform_StopCapture()
|
int CameraPlatform_StopCapture()
|
||||||
{
|
{
|
||||||
if(g_Camera.m_Delegate != 0)
|
if(g_Camera.m_Delegate != 0)
|
||||||
{
|
{
|
||||||
[g_Camera.m_Delegate stopCamera];
|
[g_Camera.m_Delegate stopCamera];
|
||||||
[g_Camera.m_Delegate release];
|
[g_Camera.m_Delegate release];
|
||||||
|
|
||||||
dmBuffer::Destroy(g_Camera.m_VideoBuffer);
|
dmBuffer::Destroy(g_Camera.m_VideoBuffer);
|
||||||
g_Camera.m_VideoBuffer = 0;
|
g_Camera.m_VideoBuffer = 0;
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // DM_PLATFORM_IOS/DM_PLATFORM_OSX
|
#endif // DM_PLATFORM_IOS/DM_PLATFORM_OSX
|
||||||
|
@ -4,21 +4,21 @@
|
|||||||
|
|
||||||
enum CaptureQuality
|
enum CaptureQuality
|
||||||
{
|
{
|
||||||
CAPTURE_QUALITY_LOW,
|
CAPTURE_QUALITY_LOW,
|
||||||
CAPTURE_QUALITY_MEDIUM,
|
CAPTURE_QUALITY_MEDIUM,
|
||||||
CAPTURE_QUALITY_HIGH,
|
CAPTURE_QUALITY_HIGH,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum CameraType
|
enum CameraType
|
||||||
{
|
{
|
||||||
CAMERA_TYPE_FRONT, // Selfie
|
CAMERA_TYPE_FRONT, // Selfie
|
||||||
CAMERA_TYPE_BACK
|
CAMERA_TYPE_BACK
|
||||||
};
|
};
|
||||||
|
|
||||||
struct CameraInfo
|
struct CameraInfo
|
||||||
{
|
{
|
||||||
uint32_t m_Width;
|
uint32_t m_Width;
|
||||||
uint32_t m_Height;
|
uint32_t m_Height;
|
||||||
CameraType m_Type;
|
CameraType m_Type;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user