From de31339c3382d32be9c4440466b1d01e40e0d0b3 Mon Sep 17 00:00:00 2001 From: "Suren A. Chilingaryan" Date: Fri, 9 Dec 2011 08:12:29 +0100 Subject: Few fixes --- ipecamera/image.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'ipecamera/image.c') diff --git a/ipecamera/image.c b/ipecamera/image.c index 3b3c9df..89e02a7 100644 --- a/ipecamera/image.c +++ b/ipecamera/image.c @@ -365,7 +365,8 @@ static int ipecamera_resolve_event_id(ipecamera_t *ctx, pcilib_event_id_t evid) } static inline int ipecamera_new_frame(ipecamera_t *ctx) { - ctx->frame_info[ctx->buffer_pos].raw_size =ctx->cur_size; + ctx->frame_info[ctx->buffer_pos].raw_size = ctx->cur_size; + if (ctx->cur_size < ctx->raw_size) ctx->frame_info[ctx->buffer_pos].info.flags |= PCILIB_EVENT_INFO_FLAG_BROKEN; ctx->buffer_pos = (++ctx->event_id) % ctx->buffer_size; @@ -799,7 +800,7 @@ int ipecamera_stream(pcilib_context_t *vctx, pcilib_event_callback_t callback, v if ((ctx->event_id - ctx->reported_id) > (ctx->buffer_size - IPECAMERA_RESERVE_BUFFERS)) ctx->reported_id = ctx->event_id - (ctx->buffer_size - 1) - IPECAMERA_RESERVE_BUFFERS; else ++ctx->reported_id; - callback(ctx->reported_id, (pcilib_event_info_t*)(ctx->frame_info + (ctx->reported_id%ctx->buffer_size)), user); + callback(ctx->reported_id, (pcilib_event_info_t*)(ctx->frame_info + ((ctx->reported_id-1)%ctx->buffer_size)), user); } usleep(IPECAMERA_NOFRAME_SLEEP); } @@ -843,7 +844,10 @@ int ipecamera_next_event(pcilib_context_t *vctx, pcilib_event_t event_mask, pcil if ((ctx->event_id - ctx->reported_id) > (ctx->buffer_size - IPECAMERA_RESERVE_BUFFERS)) ctx->reported_id = ctx->event_id - (ctx->buffer_size - 1) - IPECAMERA_RESERVE_BUFFERS; else ++ctx->reported_id; - return ctx->reported_id; + if (evid) *evid = ctx->reported_id; + if (info) *info = (pcilib_event_info_t*)(ctx->frame_info + ((ctx->reported_id-1)%ctx->buffer_size)); + + return 0; } -- cgit v1.2.3