//! \brief call stop, free mutex, clear stack, free capture-Modul void ende() { if(mutex_lock(mutex)) printf("encoder.ende Fehler beu mutex_lock 1\n"); g_run = 0; if(mutex_unlock(mutex)) printf("encoder.ende Fehler bei mutex_unlock 1\n"); stop(); if(mutex_lock(mutex)) printf("encoder.ende Fehler bei mutex_lock 2\n"); //löschen des letzten Frames getFrame(NULL, NULL); if(mutex_unlock(mutex)) printf("encoder.ende Fehler bei mutex_unlock 2\n"); mutex_close(mutex); mutex = NULL; printf("Frames on Stack: %d\n", count_stack(g_FrameBuffer)); clear_stack(g_FrameBuffer); if(capture) { capture->ende(); interface_close(capture); } capture = NULL; printf("encoder.ende Encoder Modul ende\n"); }
//! \brief release pictures, release mutex //! //! <b>Important!</b> call stop before ende void ende() { picture_release(&g_rgbPicture); picture_release(&g_yuvPicture); printf("capture.ende: called\n"); mutex_close(mutex); mutex = NULL; }
try_unlock(sem_t *mutex) { mutex_unlock(mutex); mutex_close(mutex); }