diff options
author | Simon Farnsworth <simon.farnsworth@onelan.co.uk> | 2007-05-02 17:23:48 +0100 |
---|---|---|
committer | Simon Farnsworth <simon.farnsworth@onelan.co.uk> | 2007-05-02 17:23:48 +0100 |
commit | 84133d2fad4c392de75d41d88a19850734ea5523 (patch) | |
tree | 92d3b7478b36d6608aa5bffe55543f48b07ef3e4 /src/video_out | |
parent | 3155b9939440647b201c4da412b5ef04fc7f7af7 (diff) | |
download | xine-lib-84133d2fad4c392de75d41d88a19850734ea5523.tar.gz xine-lib-84133d2fad4c392de75d41d88a19850734ea5523.tar.bz2 |
[PATCH] Enhance logging in demux_ts, input_dvb and video_out_xv
The three attached patches (against 1.1.6) each increase the amount of
debug logging in their respective components. We've found the extra
logging useful when trying to track down faults.
I've split this into three patches to make it easier to apply only some
of our changes.
--
Comments welcome,
Simon Farnsworth
Diffstat (limited to 'src/video_out')
-rw-r--r-- | src/video_out/video_out_xv.c | 48 |
1 files changed, 47 insertions, 1 deletions
diff --git a/src/video_out/video_out_xv.c b/src/video_out/video_out_xv.c index dde15fb0f..95a847c2c 100644 --- a/src/video_out/video_out_xv.c +++ b/src/video_out/video_out_xv.c @@ -56,6 +56,7 @@ #include <X11/extensions/XShm.h> #include <X11/extensions/Xv.h> #include <X11/extensions/Xvlib.h> +#include <time.h> #define LOG_MODULE "video_out_xv" #define LOG_VERBOSE @@ -262,7 +263,9 @@ static XvImage *create_ximage (xv_driver_t *this, XShmSegmentInfo *shminfo, height = 1; if (this->use_pitch_alignment) { + lprintf ("use_pitch_alignment old width=%d",width); width = (width + 7) & ~0x7; + lprintf ("use_pitch_alignment new width=%d",width); } switch (format) { @@ -286,6 +289,7 @@ static XvImage *create_ximage (xv_driver_t *this, XShmSegmentInfo *shminfo, gX11Fail = 0; x11_InstallXErrorHandler (this); + lprintf( "XvShmCreateImage format=0x%x, width=%d, height=%d\n", xv_format, width, height ); image = XvShmCreateImage(this->display, this->xv_port, xv_format, 0, width, height, shminfo); @@ -297,6 +301,22 @@ static XvImage *create_ximage (xv_driver_t *this, XShmSegmentInfo *shminfo, goto finishShmTesting; } + { + int q; + + lprintf( "XvImage id %d\n", image->id ); + lprintf( "XvImage width %d\n", image->width ); + lprintf( "XvImage height %d\n", image->height ); + lprintf( "XvImage data_size %d\n", image->data_size ); + lprintf( "XvImage num_planes %d\n", image->num_planes ); + + for( q=0; q < image->num_planes; q++) + { + lprintf( "XvImage pitches[%d] %d\n", q, image->pitches[q] ); + lprintf( "XvImage offsets[%d] %d\n", q, image->offsets[q] ); + } + } + shminfo->shmid = shmget(IPC_PRIVATE, image->data_size, IPC_CREAT | 0777); if (image->data_size==0) { @@ -750,6 +770,16 @@ static int xv_redraw_needed (vo_driver_t *this_gen) { return ret; } +/* Used in xv_display_frame to determine how long XvShmPutImage takes + - if slower than 60fps, print a message +*/ +static double timeOfDay() +{ + struct timeval t; + gettimeofday( &t, NULL ); + return ((double)t.tv_sec) + (((double)t.tv_usec)/1000000.0); +} + static void xv_display_frame (vo_driver_t *this_gen, vo_frame_t *frame_gen) { xv_driver_t *this = (xv_driver_t *) this_gen; xv_frame_t *frame = (xv_frame_t *) frame_gen; @@ -793,9 +823,14 @@ static void xv_display_frame (vo_driver_t *this_gen, vo_frame_t *frame_gen) { * ask for offset and output size */ xv_redraw_needed (this_gen); + { + double start_time; + double end_time; + double elapse_time; + int factor; LOCK_DISPLAY(this); - + start_time = timeOfDay(); if (this->use_shm) { XvShmPutImage(this->display, this->xv_port, this->drawable, this->gc, this->cur_frame->image, @@ -814,9 +849,20 @@ static void xv_display_frame (vo_driver_t *this_gen, vo_frame_t *frame_gen) { } XSync(this->display, False); + end_time = timeOfDay(); UNLOCK_DISPLAY(this); + elapse_time = end_time - start_time; + factor = (int)(elapse_time/(1.0/60.0)); + + if( factor > 1 ) + { + lprintf( "%s PutImage %dX interval (%fs)\n", + log_line_prefix(), factor, elapse_time ); + } + } + /* printf ("video_out_xv: xv_display_frame... done\n"); */ |