diff --git a/configure.ac b/configure.ac index 2c090a6a2..c8383318f 100644 --- a/configure.ac +++ b/configure.ac @@ -327,7 +327,7 @@ AC_SUBST(common_lib_abi_version) AC_SUBST(COMMON_LIB_TARGET, "lib/ultragrid/ug_lib_common.so.$common_lib_abi_version") LIB_TARGETS="$LIB_TARGETS $COMMON_LIB_TARGET" -video_display_abi_version=2 +video_display_abi_version=3 video_capture_abi_version=2 video_compress_abi_version=1 video_decompress_abi_version=2 diff --git a/src/main.c b/src/main.c index 9a518a6ff..48e14a4b7 100644 --- a/src/main.c +++ b/src/main.c @@ -647,7 +647,7 @@ static void *receiver_thread(void *arg) gettimeofday(&uv->curr_time, NULL); fr = 1; display_put_frame(uv->display_device, - (char *) cp->video_decoder_state->frame_buffer); + cp->video_decoder_state->frame_buffer); cp->video_decoder_state->frame_buffer = display_get_frame(uv->display_device); } diff --git a/src/video_display.c b/src/video_display.c index 57f6490de..57bfdc608 100644 --- a/src/video_display.c +++ b/src/video_display.c @@ -89,7 +89,7 @@ typedef struct { const char *func_finish_str; struct video_frame *(*func_getf) (void *state); const char *func_getf_str; - int (*func_putf) (void *state, char *frame); + int (*func_putf) (void *state, struct video_frame *frame); const char *func_putf_str; int (*func_reconfigure)(void *state, struct video_desc desc); const char *func_reconfigure_str; @@ -461,7 +461,7 @@ struct video_frame *display_get_frame(struct display *d) return display_device_table[d->index].func_getf(d->state); } -void display_put_frame(struct display *d, char *frame) +void display_put_frame(struct display *d, struct video_frame *frame) { perf_record(UVP_PUTFRAME, frame); assert(d->magic == DISPLAY_MAGIC); diff --git a/src/video_display.h b/src/video_display.h index f49a0eba8..d2ac36404 100644 --- a/src/video_display.h +++ b/src/video_display.h @@ -131,13 +131,19 @@ void display_finish(struct display *d); /** * Returns video frame which will be written to. + * Currently there is a restriction on number of concurrently acquired frames - only one frame + * can be hold at the moment. + * + * @return video frame */ struct video_frame *display_get_frame(struct display *d); /* TODO: figure out what with frame parameter, which is no longer used. Leave out? */ /** * Puts filled video frame. + * Currnetly, it must be the frame previously obtained by display_get_frame. Moreover, every frame + * acquired from video display should be put. */ -void display_put_frame(struct display *d, char *frame); +void display_put_frame(struct display *d, struct video_frame *frame); /** * Tells display to reconfigure according to video description */ diff --git a/src/video_display/aggregate.c b/src/video_display/aggregate.c index 5fbcbca37..c97a266be 100644 --- a/src/video_display/aggregate.c +++ b/src/video_display/aggregate.c @@ -236,7 +236,7 @@ struct video_frame *display_aggregate_getf(void *state) return s->frame; } -int display_aggregate_putf(void *state, char *frame) +int display_aggregate_putf(void *state, struct video_frame *frame) { unsigned int i; struct display_aggregate_state *s = (struct display_aggregate_state *)state; diff --git a/src/video_display/aggregate.h b/src/video_display/aggregate.h index ca374044b..3e9b5f446 100644 --- a/src/video_display/aggregate.h +++ b/src/video_display/aggregate.h @@ -57,7 +57,7 @@ void display_aggregate_run(void *state); void display_aggregate_finish(void *state); void display_aggregate_done(void *state); struct video_frame *display_aggregate_getf(void *state); -int display_aggregate_putf(void *state, char *frame); +int display_aggregate_putf(void *state, struct video_frame *frame); int display_aggregate_reconfigure(void *state, struct video_desc desc); int display_aggregate_get_property(void *state, int property, void *val, size_t *len); diff --git a/src/video_display/decklink.cpp b/src/video_display/decklink.cpp index 80dcd1aec..8156a108d 100644 --- a/src/video_display/decklink.cpp +++ b/src/video_display/decklink.cpp @@ -409,7 +409,7 @@ static void update_timecode(DeckLinkTimecode *tc, double fps) tc->SetBCD(bcd); } -int display_decklink_putf(void *state, char *frame) +int display_decklink_putf(void *state, struct video_frame *frame) { int tmp; struct state_decklink *s = (struct state_decklink *)state; diff --git a/src/video_display/decklink.h b/src/video_display/decklink.h index b27ab7cc1..bb78d1c1d 100644 --- a/src/video_display/decklink.h +++ b/src/video_display/decklink.h @@ -55,7 +55,7 @@ void display_decklink_run(void *state); void display_decklink_finish(void *state); void display_decklink_done(void *state); struct video_frame *display_decklink_getf(void *state); -int display_decklink_putf(void *state, char *frame); +int display_decklink_putf(void *state, struct video_frame *frame); int display_decklink_reconfigure(void *state, struct video_desc desc); int display_decklink_get_property(void *state, int property, void *val, size_t *len); diff --git a/src/video_display/deltacast.cpp b/src/video_display/deltacast.cpp index ca12c6310..f1d3c1a4a 100644 --- a/src/video_display/deltacast.cpp +++ b/src/video_display/deltacast.cpp @@ -165,7 +165,7 @@ display_deltacast_getf(void *state) return s->frame; } -int display_deltacast_putf(void *state, char *frame) +int display_deltacast_putf(void *state, struct video_frame *frame) { int tmp; struct state_deltacast *s = (struct state_deltacast *)state; diff --git a/src/video_display/deltacast.h b/src/video_display/deltacast.h index 6dfcb8cf2..c6718744a 100644 --- a/src/video_display/deltacast.h +++ b/src/video_display/deltacast.h @@ -68,7 +68,7 @@ void display_deltacast_run(void *state); void display_deltacast_finish(void *state); void display_deltacast_done(void *state); struct video_frame *display_deltacast_getf(void *state); -int display_deltacast_putf(void *state, char *frame); +int display_deltacast_putf(void *state, struct video_frame *frame); int display_deltacast_reconfigure(void *state, struct video_desc desc); int display_deltacast_get_property(void *state, int property, void *val, size_t *len); diff --git a/src/video_display/dvs.c b/src/video_display/dvs.c index 0be31cb07..f35396b4a 100644 --- a/src/video_display/dvs.c +++ b/src/video_display/dvs.c @@ -493,7 +493,7 @@ display_dvs_getf(void *state) return s->frame; } -int display_dvs_putf(void *state, char *frame) +int display_dvs_putf(void *state, struct video_frame *frame) { struct state_hdsp *s = (struct state_hdsp *)state; struct timeval t; diff --git a/src/video_display/dvs.h b/src/video_display/dvs.h index 2eacb0074..3c0ef0ef0 100644 --- a/src/video_display/dvs.h +++ b/src/video_display/dvs.h @@ -63,7 +63,7 @@ void display_dvs_run(void *state); void display_dvs_finish(void *state); void display_dvs_done(void *state); struct video_frame *display_dvs_getf(void *state); -int display_dvs_putf(void *state, char *frame); +int display_dvs_putf(void *state, struct video_frame *frame); int display_dvs_reconfigure(void *state, struct video_desc desc); int display_dvs_get_property(void *state, int property, void *val, size_t *len); diff --git a/src/video_display/gl.c b/src/video_display/gl.c index b6986d797..c6770f773 100644 --- a/src/video_display/gl.c +++ b/src/video_display/gl.c @@ -1100,7 +1100,7 @@ struct video_frame * display_gl_getf(void *state) return s->frame; } -int display_gl_putf(void *state, char *frame) +int display_gl_putf(void *state, struct video_frame *frame) { struct state_gl *s = (struct state_gl *) state; diff --git a/src/video_display/gl.h b/src/video_display/gl.h index d6688abba..5a3a260d5 100644 --- a/src/video_display/gl.h +++ b/src/video_display/gl.h @@ -58,7 +58,7 @@ void display_gl_run(void *state); void display_gl_done(void *state); void display_gl_finish(void *state); struct video_frame *display_gl_getf(void *state); -int display_gl_putf(void *state, char *frame); +int display_gl_putf(void *state, struct video_frame *frame); int display_gl_reconfigure(void *state, struct video_desc desc); int display_gl_get_property(void *state, int property, void *val, size_t *len); diff --git a/src/video_display/null.c b/src/video_display/null.c index b8eef3263..f09357499 100644 --- a/src/video_display/null.c +++ b/src/video_display/null.c @@ -93,7 +93,7 @@ struct video_frame *display_null_getf(void *state) return NULL; } -int display_null_putf(void *state, char *frame) +int display_null_putf(void *state, struct video_frame *frame) { struct state_null *s = (struct state_null *)state; assert(s->magic == MAGIC_NULL); diff --git a/src/video_display/null.h b/src/video_display/null.h index b8294edd1..e849156a0 100644 --- a/src/video_display/null.h +++ b/src/video_display/null.h @@ -54,7 +54,7 @@ void display_null_run(void *state); void display_null_finish(void *state); void display_null_done(void *state); struct video_frame *display_null_getf(void *state); -int display_null_putf(void *state, char *frame); +int display_null_putf(void *state, struct video_frame *frame); int display_null_reconfigure(void *state, struct video_desc desc); int display_null_get_property(void *state, int property, void *val, size_t *len); diff --git a/src/video_display/quicktime.c b/src/video_display/quicktime.c index 2a0e43cc5..9795a37ef 100644 --- a/src/video_display/quicktime.c +++ b/src/video_display/quicktime.c @@ -385,7 +385,7 @@ display_quicktime_getf(void *state) return &s->frame[0]; } -int display_quicktime_putf(void *state, char *frame) +int display_quicktime_putf(void *state, struct video_frame *frame) { struct state_quicktime *s = (struct state_quicktime *)state; diff --git a/src/video_display/quicktime.h b/src/video_display/quicktime.h index 190467b4f..0915540fc 100644 --- a/src/video_display/quicktime.h +++ b/src/video_display/quicktime.h @@ -68,7 +68,7 @@ void display_quicktime_run(void *state); void display_quicktime_finish(void *state); void display_quicktime_done(void *state); struct video_frame *display_quicktime_getf(void *state); -int display_quicktime_putf(void *state, char *frame); +int display_quicktime_putf(void *state, struct video_frame *frame); int display_quicktime_reconfigure(void *state, struct video_desc desc); int display_quicktime_get_property(void *state, int property, void *val, size_t *len); diff --git a/src/video_display/sage.c b/src/video_display/sage.c index bce838986..75d93cf42 100644 --- a/src/video_display/sage.c +++ b/src/video_display/sage.c @@ -269,7 +269,7 @@ struct video_frame *display_sage_getf(void *state) return s->frame; } -int display_sage_putf(void *state, char *frame) +int display_sage_putf(void *state, struct video_frame *frame) { int tmp; struct state_sage *s = (struct state_sage *)state; diff --git a/src/video_display/sage.h b/src/video_display/sage.h index 6dca8a2af..df4964248 100644 --- a/src/video_display/sage.h +++ b/src/video_display/sage.h @@ -58,7 +58,7 @@ void display_sage_run(void *state); void display_sage_done(void *state); void display_sage_finish(void *state); struct video_frame *display_sage_getf(void *state); -int display_sage_putf(void *state, char *frame); +int display_sage_putf(void *state, struct video_frame *frame); int display_sage_reconfigure(void *state, struct video_desc desc); int display_sage_get_property(void *state, int property, void *val, size_t *len); diff --git a/src/video_display/sdl.c b/src/video_display/sdl.c index f6fdbfe48..fdfc8a0b1 100644 --- a/src/video_display/sdl.c +++ b/src/video_display/sdl.c @@ -706,7 +706,7 @@ struct video_frame *display_sdl_getf(void *state) return s->frame; } -int display_sdl_putf(void *state, char *frame) +int display_sdl_putf(void *state, struct video_frame *frame) { int tmp; struct state_sdl *s = (struct state_sdl *)state; diff --git a/src/video_display/sdl.h b/src/video_display/sdl.h index 7dc408a05..593e9bcf6 100644 --- a/src/video_display/sdl.h +++ b/src/video_display/sdl.h @@ -57,7 +57,7 @@ void display_sdl_run (void *state); void display_sdl_finish(void *state); void display_sdl_done (void *state); struct video_frame * display_sdl_getf (void *state); -int display_sdl_putf (void *state, char *frame); +int display_sdl_putf (void *state, struct video_frame *frame); int display_sdl_reconfigure(void *state, struct video_desc desc); int display_sdl_get_property(void *state, int property, void *val, size_t *len);