diff options
author | Miguel Freitas <miguelfreitas@users.sourceforge.net> | 2002-11-19 00:45:41 +0000 |
---|---|---|
committer | Miguel Freitas <miguelfreitas@users.sourceforge.net> | 2002-11-19 00:45:41 +0000 |
commit | 7580770c5ff6df373c6056626abae7328ae5ab48 (patch) | |
tree | e24f050292d6562a6b169cacba4f294895105cd0 /src/xine-engine | |
parent | 1667cd964d92d9c7f7f53ff7f5343cafd08c3249 (diff) | |
download | xine-lib-7580770c5ff6df373c6056626abae7328ae5ab48.tar.gz xine-lib-7580770c5ff6df373c6056626abae7328ae5ab48.tar.bz2 |
spu and overlay cleanups, mostly cosmetic
CVS patchset: 3298
CVS date: 2002/11/19 00:45:41
Diffstat (limited to 'src/xine-engine')
-rw-r--r-- | src/xine-engine/metronom.c | 17 | ||||
-rw-r--r-- | src/xine-engine/osd.c | 6 | ||||
-rw-r--r-- | src/xine-engine/video_overlay.c | 111 | ||||
-rw-r--r-- | src/xine-engine/video_overlay.h | 16 |
4 files changed, 41 insertions, 109 deletions
diff --git a/src/xine-engine/metronom.c b/src/xine-engine/metronom.c index 78b044b05..a8ab454b6 100644 --- a/src/xine-engine/metronom.c +++ b/src/xine-engine/metronom.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: metronom.c,v 1.100 2002/11/12 18:40:54 miguelfreitas Exp $ + * $Id: metronom.c,v 1.101 2002/11/19 00:45:42 miguelfreitas Exp $ */ #ifdef HAVE_CONFIG_H @@ -264,13 +264,14 @@ static int64_t metronom_got_spu_packet (metronom_t *this, int64_t pts) { pthread_mutex_lock (&this->lock); - if (pts >= 0 ) { - vpts = pts + this->vpts_offset; - } else { - /* pts < 0 */ - vpts = this->vpts_offset; - } - + vpts = pts + this->vpts_offset; + + /* no vpts going backwards please */ + if( vpts < this->spu_vpts ) + vpts = this->spu_vpts; + + this->spu_vpts = vpts; + pthread_mutex_unlock (&this->lock); return vpts; } diff --git a/src/xine-engine/osd.c b/src/xine-engine/osd.c index 302e0ac8d..1db60b349 100644 --- a/src/xine-engine/osd.c +++ b/src/xine-engine/osd.c @@ -216,7 +216,7 @@ static int osd_show (osd_object_t *osd, int64_t vpts ) { memcpy(this->event.object.overlay->clip_color, osd->color, sizeof(osd->color)); memcpy(this->event.object.overlay->clip_trans, osd->trans, sizeof(osd->trans)); - this->event.event_type = EVENT_SHOW_SPU; + this->event.event_type = OVERLAY_EVENT_SHOW; this->event.vpts = vpts; this->video_overlay->add_event(this->video_overlay,(void *)&this->event); } @@ -247,7 +247,7 @@ static int osd_hide (osd_object_t *osd, int64_t vpts) { /* not really needed this, but good pratice to clean it up */ memset( this->event.object.overlay, 0, sizeof(this->event.object.overlay) ); - this->event.event_type = EVENT_HIDE_SPU; + this->event.event_type = OVERLAY_EVENT_HIDE; this->event.vpts = vpts; this->video_overlay->add_event(this->video_overlay,(void *)&this->event); @@ -784,7 +784,7 @@ static void osd_free_object (osd_object_t *osd_to_close) { /* not really needed this, but good pratice to clean it up */ memset( this->event.object.overlay, 0, sizeof(this->event.object.overlay) ); - this->event.event_type = EVENT_FREE_HANDLE; + this->event.event_type = OVERLAY_EVENT_FREE_HANDLE; this->event.vpts = 0; this->video_overlay->add_event(this->video_overlay,(void *)&this->event); diff --git a/src/xine-engine/video_overlay.c b/src/xine-engine/video_overlay.c index f38c79890..56409e63a 100644 --- a/src/xine-engine/video_overlay.c +++ b/src/xine-engine/video_overlay.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_overlay.c,v 1.25 2002/10/21 12:11:03 jcdutton Exp $ + * $Id: video_overlay.c,v 1.26 2002/11/19 00:45:42 miguelfreitas Exp $ * */ @@ -130,7 +130,7 @@ static void remove_events_handle( video_overlay_t *this, int32_t handle, int loc /* mark as free */ this->events[this_event].next_event = 0; - this->events[this_event].event->event_type = EVENT_NULL; + this->events[this_event].event->event_type = OVERLAY_EVENT_NULL; this_event=this->events[last_event].next_event; } @@ -252,7 +252,6 @@ static int32_t video_overlay_add_event(video_overlay_instance_t *this_gen, void video_overlay_event_t *event = (video_overlay_event_t *) event_gen; video_overlay_t *this = (video_overlay_t *) this_gen; uint32_t last_event,this_event,new_event; - printf("xine-lib:video_overlay_add_event called\n"); pthread_mutex_lock (&this->events_mutex); @@ -310,8 +309,8 @@ static int32_t video_overlay_add_event(video_overlay_instance_t *this_gen, void /* not currently used. James might need this for debugging menu stuff */ -static void video_overlay_print_overlay( vo_overlay_t *ovl ) { #ifdef LOG_DEBUG +static void video_overlay_print_overlay( vo_overlay_t *ovl ) { printf ("video_overlay: OVERLAY to show\n"); printf ("video_overlay: \tx = %d y = %d width = %d height = %d\n", ovl->x, ovl->y, ovl->width, ovl->height ); @@ -325,9 +324,9 @@ static void video_overlay_print_overlay( vo_overlay_t *ovl ) { ovl->clip_color[0], ovl->clip_color[1], ovl->clip_color[2], ovl->clip_color[3]); printf ("video_overlay: \tclip_trans [%d %d %d %d]\n", ovl->clip_trans[0], ovl->clip_trans[1], ovl->clip_trans[2], ovl->clip_trans[3]); -#endif return; } +#endif /* process overlay events @@ -347,7 +346,7 @@ static int video_overlay_event( video_overlay_t *this, int64_t vpts ) { processed++; handle=this->events[this_event].event->object.handle; switch( this->events[this_event].event->event_type ) { - case EVENT_SHOW_SPU: + case OVERLAY_EVENT_SHOW: #ifdef LOG_DEBUG printf ("video_overlay: SHOW SPU NOW\n"); #endif @@ -378,28 +377,8 @@ static int video_overlay_event( video_overlay_t *this, int64_t vpts ) { add_showing_handle( this, handle ); } break; - - case EVENT_FREE_HANDLE: -#ifdef LOG_DEBUG - printf ("video_overlay: FREE SPU NOW\n"); -#endif - /* free any overlay associated with this event */ - if (this->events[this_event].event->object.overlay != NULL) { - free(this->events[this_event].event->object.overlay); - this->events[this_event].event->object.overlay = NULL; - } - /* this avoid removing this_event from the queue - * (it will be removed at the end of this loop) */ - this->events[this_event].event->object.handle = -1; - remove_showing_handle(this,handle); - remove_events_handle(this,handle,0); - internal_video_overlay_free_handle( this, handle ); - break; - - /* implementation for HIDE_SPU and HIDE_MENU is the same. - i will keep them separated in case we need something special... - */ - case EVENT_HIDE_SPU: + + case OVERLAY_EVENT_HIDE: #ifdef LOG_DEBUG printf ("video_overlay: HIDE SPU NOW\n"); #endif @@ -410,51 +389,26 @@ static int video_overlay_event( video_overlay_t *this, int64_t vpts ) { } remove_showing_handle( this, handle ); break; - - case EVENT_HIDE_MENU: + + case OVERLAY_EVENT_FREE_HANDLE: #ifdef LOG_DEBUG - printf ("video_overlay: HIDE MENU NOW %d\n",handle); + printf ("video_overlay: FREE SPU NOW\n"); #endif + /* free any overlay associated with this event */ if (this->events[this_event].event->object.overlay != NULL) { free(this->events[this_event].event->object.overlay); this->events[this_event].event->object.overlay = NULL; } - remove_showing_handle( this, handle ); - break; - - case EVENT_SHOW_MENU: -#ifdef LOG_DEBUG - printf ("video_overlay: SHOW MENU NOW\n"); -#endif - if (this->events[this_event].event->object.overlay != NULL) { -#ifdef LOG_DEBUG - video_overlay_print_overlay( this->events[this_event].event->object.overlay ) ; -#endif - /* this->objects[handle].overlay is about to be - * overwritten by this event data. make sure we free it if needed. - */ - if( this->objects[handle].overlay ) { - if( this->objects[handle].overlay->rle ) - free( this->objects[handle].overlay->rle ); - free( this->objects[handle].overlay ); - this->objects[handle].overlay = NULL; - } - - this->objects[handle].handle = handle; - if( this->objects[handle].overlay ) { - printf("video_overlay: error: object->overlay was not freed!\n"); - } - this->objects[handle].overlay = - this->events[this_event].event->object.overlay; - this->objects[handle].pts = - this->events[this_event].event->object.pts; - this->events[this_event].event->object.overlay = NULL; - - add_showing_handle( this, handle ); - } + /* this avoid removing this_event from the queue + * (it will be removed at the end of this loop) */ + this->events[this_event].event->object.handle = -1; + remove_showing_handle(this,handle); + remove_events_handle(this,handle,0); + internal_video_overlay_free_handle( this, handle ); break; - - case EVENT_MENU_BUTTON: + + + case OVERLAY_EVENT_MENU_BUTTON: /* mixes palette and copy clip coords */ #ifdef LOG_DEBUG printf ("video_overlay:MENU BUTTON NOW\n"); @@ -465,7 +419,10 @@ static int video_overlay_event( video_overlay_t *this, int64_t vpts ) { this->objects[handle].pts) ) { vo_overlay_t *overlay = this->objects[handle].overlay; vo_overlay_t *event_overlay = this->events[this_event].event->object.overlay; + +#ifdef LOG_DEBUG printf ("video_overlay:overlay present\n"); +#endif this->objects[handle].handle = handle; overlay->clip_top = event_overlay->clip_top; overlay->clip_bottom = event_overlay->clip_bottom; @@ -480,28 +437,6 @@ static int video_overlay_event( video_overlay_t *this, int64_t vpts ) { overlay->clip_trans[2] = event_overlay->clip_trans[2]; overlay->clip_trans[3] = event_overlay->clip_trans[3]; overlay->clip_rgb_clut = event_overlay->clip_rgb_clut; -/*********************************** - if((event_overlay->color[0] + - event_overlay->color[1] + - event_overlay->color[2] + - event_overlay->color[3]) > 0 ) { - overlay->color[0] = event_overlay->color[0]; - overlay->color[1] = event_overlay->color[1]; - overlay->color[2] = event_overlay->color[2]; - overlay->color[3] = event_overlay->color[3]; - - overlay->rgb_clut = event_overlay->rgb_clut; - } - if((event_overlay->trans[0] + - event_overlay->trans[1] + - event_overlay->trans[2] + - event_overlay->trans[3]) > 0 ) { - overlay->trans[0] = event_overlay->trans[0]; - overlay->trans[1] = event_overlay->trans[1]; - overlay->trans[2] = event_overlay->trans[2]; - overlay->trans[3] = event_overlay->trans[3]; - } -***********************************/ #ifdef LOG_DEBUG video_overlay_print_overlay( this->events[this_event].event->object.overlay ) ; #endif diff --git a/src/xine-engine/video_overlay.h b/src/xine-engine/video_overlay.h index 79088d62a..052d9a38f 100644 --- a/src/xine-engine/video_overlay.h +++ b/src/xine-engine/video_overlay.h @@ -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_overlay.h,v 1.11 2002/10/23 17:12:35 guenter Exp $ + * $Id: video_overlay.h,v 1.12 2002/11/19 00:45:42 miguelfreitas Exp $ * */ @@ -36,15 +36,11 @@ #define MAX_EVENTS 50 #define MAX_SHOWING 5 -#define EVENT_NULL 0 -#define EVENT_SHOW_SPU 1 -#define EVENT_HIDE_SPU 2 -#define EVENT_SHOW_MENU 3 -#define EVENT_HIDE_MENU 4 -#define EVENT_MENU_BUTTON 5 -#define EVENT_DELETE_RESOURCE 6 /* Maybe release handle will do this */ -#define EVENT_SHOW_OSD 7 /* Not yet implemented */ -#define EVENT_FREE_HANDLE 8 /* Frees a handle, previous allocated via get_handle */ +#define OVERLAY_EVENT_NULL 0 +#define OVERLAY_EVENT_SHOW 1 +#define OVERLAY_EVENT_HIDE 2 +#define OVERLAY_EVENT_MENU_BUTTON 3 +#define OVERLAY_EVENT_FREE_HANDLE 8 /* Frees a handle, previous allocated via get_handle */ /* number of colors in the overlay palette. Currently limited to 256 at most, because some alphablend functions use an 8-bit index into |