diff options
Diffstat (limited to 'src/xine-engine/video_out.c')
| -rw-r--r-- | src/xine-engine/video_out.c | 53 | 
1 files changed, 29 insertions, 24 deletions
| diff --git a/src/xine-engine/video_out.c b/src/xine-engine/video_out.c index ad8887e26..b7df39b51 100644 --- a/src/xine-engine/video_out.c +++ b/src/xine-engine/video_out.c @@ -17,7 +17,7 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA   * - * $Id: video_out.c,v 1.46 2001/09/14 21:25:55 richwareham Exp $ + * $Id: video_out.c,v 1.47 2001/09/26 01:18:19 guenter Exp $   *   */ @@ -44,7 +44,7 @@ struct img_buf_fifo_s {    int                num_buffers;    pthread_mutex_t    mutex; -  pthread_cond_t     bNotEmpty; +  pthread_cond_t     not_empty;  } ; @@ -58,7 +58,7 @@ static img_buf_fifo_t *vo_new_img_buf_queue () {      queue->last        = NULL;      queue->num_buffers = 0;      pthread_mutex_init (&queue->mutex, NULL); -    pthread_cond_init  (&queue->bNotEmpty, NULL); +    pthread_cond_init  (&queue->not_empty, NULL);    }    return queue;  } @@ -82,7 +82,7 @@ static void vo_append_to_img_buf_queue (img_buf_fifo_t *queue,    queue->num_buffers++; -  pthread_cond_signal (&queue->bNotEmpty); +  pthread_cond_signal (&queue->not_empty);    pthread_mutex_unlock (&queue->mutex);  } @@ -93,7 +93,7 @@ static vo_frame_t *vo_remove_from_img_buf_queue (img_buf_fifo_t *queue) {    while (!queue->first) {      /* printf ("video_out: queue %d empty...\n", queue); */ -    pthread_cond_wait (&queue->bNotEmpty, &queue->mutex); +    pthread_cond_wait (&queue->not_empty, &queue->mutex);    }    img = queue->first; @@ -104,7 +104,7 @@ static vo_frame_t *vo_remove_from_img_buf_queue (img_buf_fifo_t *queue) {      if (!queue->first) {        queue->last = NULL;        queue->num_buffers = 0; -      pthread_cond_init  (&queue->bNotEmpty, NULL); +      pthread_cond_init  (&queue->not_empty, NULL);      }      else {        queue->num_buffers--; @@ -238,9 +238,9 @@ static void *video_out_loop (void *this_gen) {  	img = vo_remove_from_img_buf_queue (this->display_img_buf_queue);  	pthread_mutex_lock (&img->mutex); -	img->bDisplayLock = 0; +	img->display_locked = 0; -	if (!img->bDecoderLock)  +	if (!img->decoder_locked)   	  vo_append_to_img_buf_queue (this->free_img_buf_queue, img);  	pthread_mutex_unlock (&img->mutex); @@ -281,10 +281,10 @@ static void *video_out_loop (void *this_gen) {      }      pthread_mutex_lock (&img->mutex); -    img->bDriverLock = 1; -    if (!img->bDisplayLock) +    img->driver_locked = 1; +    if (!img->display_locked)        xprintf (VERBOSE|VIDEO, "video_out: ALERT! frame was not locked for display queue\n"); -    img->bDisplayLock = 0; +    img->display_locked = 0;      pthread_mutex_unlock (&img->mutex);      xprintf (VERBOSE|VIDEO, "video_out : passing to video driver, image with pts = %d\n", pts); @@ -318,10 +318,10 @@ static void *video_out_loop (void *this_gen) {      img = vo_remove_from_img_buf_queue (this->display_img_buf_queue);      pthread_mutex_lock (&img->mutex); -    if (!img->bDecoderLock)  +    if (!img->decoder_locked)         vo_append_to_img_buf_queue (this->free_img_buf_queue, img); -    img->bDisplayLock = 0; +    img->display_locked = 0;      pthread_mutex_unlock (&img->mutex);      img = this->display_img_buf_queue->first; @@ -373,9 +373,9 @@ static vo_frame_t *vo_get_frame (vo_instance_t *this,    img = vo_remove_from_img_buf_queue (this->free_img_buf_queue);    pthread_mutex_lock (&img->mutex); -  img->bDisplayLock = 0; -  img->bDecoderLock = 1; -  img->bDriverLock  = 0; +  img->display_locked = 0; +  img->decoder_locked = 1; +  img->driver_locked  = 0;    img->width        = width;    img->height       = height;    img->ratio        = ratio; @@ -427,9 +427,9 @@ static void vo_frame_displayed (vo_frame_t *img) {    pthread_mutex_lock (&img->mutex); -  img->bDriverLock = 0; +  img->driver_locked = 0; -  if (!img->bDecoderLock) {     +  if (!img->decoder_locked) {          vo_append_to_img_buf_queue (img->instance->free_img_buf_queue, img);    } @@ -439,9 +439,9 @@ static void vo_frame_displayed (vo_frame_t *img) {  static void vo_frame_free (vo_frame_t *img) {    pthread_mutex_lock (&img->mutex); -  img->bDecoderLock = 0;  +  img->decoder_locked = 0;  -  if (!img->bDisplayLock && !img->bDriverLock ) { +  if (!img->display_locked && !img->driver_locked ) {      vo_append_to_img_buf_queue (img->instance->free_img_buf_queue, img);    } @@ -466,6 +466,7 @@ static int vo_frame_draw (vo_frame_t *img) {    printf ("video_out: got image %d. vpts for picture is %d (pts was %d)\n",   	  img, pic_vpts, img->PTS);    */ +    img->PTS = pic_vpts;    this->num_frames_delivered++; @@ -485,18 +486,22 @@ static int vo_frame_draw (vo_frame_t *img) {        this->num_frames_discarded++;        xprintf (VERBOSE|VIDEO, "vo_frame_draw: rejected, %d frames to skip\n", frames_to_skip); +      /* printf ("vo_frame_draw: rejected, %d frames to skip\n", frames_to_skip); */ +        pthread_mutex_lock (&img->mutex); -      img->bDisplayLock = 0; +      img->display_locked = 0;        pthread_mutex_unlock (&img->mutex);        vo_frame_displayed (img); +      this->last_frame = img; +        return frames_to_skip;      }     } /* else: we are probably in precaching mode */ -  if (!img->bFrameBad) { +  if (!img->bad_frame) {      /*       * put frame into FIFO-Buffer       */ @@ -506,7 +511,7 @@ static int vo_frame_draw (vo_frame_t *img) {      this->last_frame = img;      pthread_mutex_lock (&img->mutex); -    img->bDisplayLock = 1; +    img->display_locked = 1;      pthread_mutex_unlock (&img->mutex);      vo_append_to_img_buf_queue (this->display_img_buf_queue, img); @@ -515,7 +520,7 @@ static int vo_frame_draw (vo_frame_t *img) {      this->num_frames_skipped++;      pthread_mutex_lock (&img->mutex); -    img->bDisplayLock = 0; +    img->display_locked = 0;      pthread_mutex_unlock (&img->mutex);      vo_frame_displayed (img); | 
