diff --git a/libarmbox/video.cpp b/libarmbox/video.cpp index 6979df9..c55df3a 100644 --- a/libarmbox/video.cpp +++ b/libarmbox/video.cpp @@ -189,6 +189,8 @@ retry: } lt_info("#%d: %s cannot open %s: %m, retries %d\n", devnum, __func__, VDEV[devnum], n); } + ioctl(fd, VIDEO_STOP, 0); + ioctl(fd, VIDEO_SELECT_SOURCE, VIDEO_SOURCE_DEMUX); playstate = VIDEO_STOPPED; } @@ -197,6 +199,10 @@ void cVideo::closeDevice(void) lt_debug("%s\n", __func__); /* looks like sometimes close is unhappy about non-empty buffers */ Start(); + ioctl(fd, VIDEO_SELECT_SOURCE, VIDEO_SOURCE_MEMORY); + ioctl(fd, VIDEO_PLAY); + ioctl(fd, VIDEO_CONTINUE); + ioctl(fd, VIDEO_CLEAR_BUFFER); if (fd >= 0) close(fd); fd = -1;