Mercurial > mplayer.hg
changeset 16962:bdc218b5a49a
Do not hang forever when the card delivers no new data.
author | reimar |
---|---|
date | Thu, 10 Nov 2005 20:32:47 +0000 |
parents | 8b5a4d2dcc2b |
children | 4aa0f65686a6 |
files | libmpdemux/tvi_v4l2.c |
diffstat | 1 files changed, 4 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/libmpdemux/tvi_v4l2.c Thu Nov 10 20:31:27 2005 +0000 +++ b/libmpdemux/tvi_v4l2.c Thu Nov 10 20:32:47 2005 +0000 @@ -1360,6 +1360,7 @@ priv_t *priv = (priv_t*)data; long long skew, prev_skew, xskew, interval, prev_interval, delta; int i; + int err_count = 0; int framesize = priv->format.fmt.pix.height*priv->format.fmt.pix.width* pixfmt2depth(priv->format.fmt.pix.pixelformat)/8; fd_set rdset; @@ -1546,9 +1547,11 @@ return NULL; } +#define MAX_LOOP 50 static double grab_video_frame(priv_t *priv, char *buffer, int len) { double interval; + int loop_cnt = 0; if (priv->first) { pthread_create(&priv->video_grabber_thread, NULL, video_grabber, priv); @@ -1557,6 +1560,7 @@ while (priv->video_cnt == 0) { usleep(10000); + if (loop_cnt++ > MAX_LOOP) return 0; } pthread_mutex_lock(&priv->video_buffer_mutex);