mirror of
https://github.com/obsproject/obs-studio.git
synced 2026-08-07 04:53:15 -04:00
Improve mac-avcapture logging
Log messages are now prefixed with the source name to distinguish between multiple sources
This commit is contained in:
1 parent
e978308acd
commit
994565dbfb
1 file changed
+23
-19
@@ -19,6 +19,10 @@
|
||||
|
||||
struct av_capture;
|
||||
|
||||
#define AVLOG(level, format, ...) \
|
||||
blog(level, "%s: " format, \
|
||||
obs_source_getname(capture->source), ##__VA_ARGS__)
|
||||
|
||||
@interface OBSAVCaptureDelegate :
|
||||
NSObject<AVCaptureVideoDataOutputSampleBufferDelegate>
|
||||
{
|
||||
@@ -51,18 +55,18 @@ struct av_capture {
|
||||
struct source_frame frame;
|
||||
};
|
||||
|
||||
static inline void update_frame_size(struct source_frame *frame,
|
||||
uint32_t width, uint32_t height)
|
||||
static inline void update_frame_size(struct av_capture *capture,
|
||||
struct source_frame *frame, uint32_t width, uint32_t height)
|
||||
{
|
||||
if (width != frame->width) {
|
||||
blog(LOG_DEBUG, "Changed width from %d to %d",
|
||||
AVLOG(LOG_DEBUG, "Changed width from %d to %d",
|
||||
frame->width, width);
|
||||
frame->width = width;
|
||||
frame->linesize[0] = width * 2;
|
||||
}
|
||||
|
||||
if (height != frame->height) {
|
||||
blog(LOG_DEBUG, "Changed height from %d to %d",
|
||||
AVLOG(LOG_DEBUG, "Changed height from %d to %d",
|
||||
frame->height, height);
|
||||
frame->height = height;
|
||||
}
|
||||
@@ -93,7 +97,7 @@ static inline void update_frame_size(struct source_frame *frame,
|
||||
|
||||
CVImageBufferRef img = CMSampleBufferGetImageBuffer(sampleBuffer);
|
||||
|
||||
update_frame_size(frame, CVPixelBufferGetWidth(img),
|
||||
update_frame_size(capture, frame, CVPixelBufferGetWidth(img),
|
||||
CVPixelBufferGetHeight(img));
|
||||
|
||||
CMSampleTimingInfo info;
|
||||
@@ -157,13 +161,13 @@ static bool init_session(struct av_capture *capture)
|
||||
{
|
||||
capture->session = [[AVCaptureSession alloc] init];
|
||||
if (!capture->session) {
|
||||
blog(LOG_ERROR, "Could not create AVCaptureSession");
|
||||
return false;
|
||||
AVLOG(LOG_ERROR, "Could not create AVCaptureSession");
|
||||
goto error;
|
||||
}
|
||||
|
||||
capture->delegate = [[OBSAVCaptureDelegate alloc] init];
|
||||
if (!capture->delegate) {
|
||||
blog(LOG_ERROR, "Could not create OBSAvCaptureDelegate");
|
||||
AVLOG(LOG_ERROR, "Could not create OBSAVCaptureDelegate");
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -171,13 +175,13 @@ static bool init_session(struct av_capture *capture)
|
||||
|
||||
capture->out = [[AVCaptureVideoDataOutput alloc] init];
|
||||
if (!capture->out) {
|
||||
blog(LOG_ERROR, "Could not create AVCaptureVideoDataOutput");
|
||||
AVLOG(LOG_ERROR, "Could not create AVCaptureVideoDataOutput");
|
||||
return false;
|
||||
}
|
||||
|
||||
capture->queue = dispatch_queue_create(NULL, NULL);
|
||||
if (!capture->queue) {
|
||||
blog(LOG_ERROR, "Could not create dispatch queue");
|
||||
AVLOG(LOG_ERROR, "Could not create dispatch queue");
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -195,22 +199,22 @@ static bool init_device_input(struct av_capture *capture, obs_data_t settings)
|
||||
capture->device = [[AVCaptureDevice deviceWithUniqueID:uid] retain];
|
||||
if (!capture->device) {
|
||||
if (uid.length < 1)
|
||||
blog(LOG_ERROR, "No device selected");
|
||||
AVLOG(LOG_ERROR, "No device selected");
|
||||
else
|
||||
blog(LOG_ERROR, "Could not initialize device " \
|
||||
AVLOG(LOG_ERROR, "Could not initialize device "
|
||||
"with unique ID '%s'",
|
||||
uid.UTF8String);
|
||||
return false;
|
||||
}
|
||||
|
||||
blog(LOG_DEBUG, "Selected device '%s'",
|
||||
AVLOG(LOG_DEBUG, "Selected device '%s'",
|
||||
capture->device.localizedName.UTF8String);
|
||||
|
||||
NSError *err = nil;
|
||||
capture->device_input = [[AVCaptureDeviceInput
|
||||
deviceInputWithDevice:capture->device error:&err] retain];
|
||||
if (!capture->device_input) {
|
||||
blog(LOG_ERROR, "Error while initializing av-capture: %s",
|
||||
AVLOG(LOG_ERROR, "Error while initializing device input: %s",
|
||||
err.localizedFailureReason.UTF8String);
|
||||
return false;
|
||||
}
|
||||
@@ -233,7 +237,7 @@ static bool init_format(struct av_capture *capture)
|
||||
format.formatDescription);
|
||||
// TODO: support other media types
|
||||
if (mtype != kCMMediaType_Video) {
|
||||
blog(LOG_ERROR, "CMMediaType '%c%c%c%c' is unsupported",
|
||||
AVLOG(LOG_ERROR, "CMMediaType '%c%c%c%c' is unsupported",
|
||||
AV_REV_FOURCC(mtype));
|
||||
return false;
|
||||
}
|
||||
@@ -244,12 +248,12 @@ static bool init_format(struct av_capture *capture)
|
||||
|
||||
capture->video_format = video_format_from_fourcc(capture->fourcc);
|
||||
if (capture->video_format == VIDEO_FORMAT_NONE) {
|
||||
blog(LOG_ERROR, "FourCC '%c%c%c%c' unsupported by libobs",
|
||||
AVLOG(LOG_ERROR, "FourCC '%c%c%c%c' unsupported by libobs",
|
||||
AV_REV_FOURCC(capture->fourcc));
|
||||
return false;
|
||||
}
|
||||
|
||||
blog(LOG_DEBUG, "Using FourCC '%c%c%c%c'",
|
||||
AVLOG(LOG_DEBUG, "Using FourCC '%c%c%c%c'",
|
||||
AV_REV_FOURCC(capture->fourcc));
|
||||
|
||||
return true;
|
||||
@@ -284,7 +288,7 @@ static bool init_frame(struct av_capture *capture)
|
||||
capture->frame.color_matrix,
|
||||
capture->frame.color_range_min,
|
||||
capture->frame.color_range_max)) {
|
||||
blog(LOG_ERROR, "Failed to get video format parameters for " \
|
||||
AVLOG(LOG_ERROR, "Failed to get video format parameters for "
|
||||
"video format %u", colorspace);
|
||||
return false;
|
||||
}
|
||||
@@ -307,7 +311,7 @@ static void av_capture_init(struct av_capture *capture, obs_data_t settings)
|
||||
NSString *preset = [NSString
|
||||
stringWithUTF8String:obs_data_getstring(settings,
|
||||
"preset")];
|
||||
blog(LOG_DEBUG, "Using preset %s", preset.UTF8String);
|
||||
AVLOG(LOG_DEBUG, "Using preset %s", preset.UTF8String);
|
||||
capture->session.sessionPreset = preset;
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user