[artoolkit-commits] artoolkit/lib/SRC/VideoLinux1394Cam video.c, 1.15, 1.16
Optical marker tracking and overlay for augmented reality.
Brought to you by:
philip_lamb
From: Wayne P. <ti...@us...> - 2007-03-13 04:27:15
|
Update of /cvsroot/artoolkit/artoolkit/lib/SRC/VideoLinux1394Cam In directory sc8-pr-cvs11.sourceforge.net:/tmp/cvs-serv20625/lib/SRC/VideoLinux1394Cam Modified Files: video.c Log Message: The code had a completely duplicated set of constants for video modes and frame rates, which is then mapped to the DC1394 versions. There is no need for this so I deleted all the local constants and now we use the values in the dc1394 library. It is much easier to understand the code now. This also involved me deleting the int_* elements from the big camera config struct because they are not needed any more. The second major change is that the default video mode was YUV411_HALF, and by default the simpleTest application does not work. So I'm not sure when this did work or if something else changed, but I have now modified it so that the default mode is 640x480 with RGB. You can always override this with a vconf string, but this will make all the normal applications work by default now like it should. Index: video.c =================================================================== RCS file: /cvsroot/artoolkit/artoolkit/lib/SRC/VideoLinux1394Cam/video.c,v retrieving revision 1.15 retrieving revision 1.16 diff -C2 -d -r1.15 -r1.16 *** video.c 23 Jan 2007 00:39:28 -0000 1.15 --- video.c 13 Mar 2007 04:26:43 -0000 1.16 *************** *** 75,78 **** --- 75,84 ---- * - Better config string support with ARTOOLKIT_CONFIG to override defaults from the shell * + * + * Revision: 1.4 Date: 2007/03/13 ( wa...@cs... ) + * - Removed local definition of video mode constants + * - Use RGB by default which works on all cameras instead of YUV411_HALF from before + * - Other clean ups in error checking and debugging errors + * */ *************** *** 124,143 **** /* Defines that control various aspects of this code */ #define VIDEO_NODE_ANY -1 - #define VIDEO_MODE_320x240_YUV422 32 - #define VIDEO_MODE_640x480_YUV411 33 - #define VIDEO_MODE_640x480_RGB 34 - #define VIDEO_MODE_640x480_YUV411_HALF 35 - #define VIDEO_MODE_640x480_MONO 36 - #define VIDEO_MODE_640x480_MONO_COLOR 37 - #define VIDEO_MODE_640x480_MONO_COLOR_HALF 38 - #define VIDEO_FRAME_RATE_1_875 1 - #define VIDEO_FRAME_RATE_3_75 2 - #define VIDEO_FRAME_RATE_7_5 3 - #define VIDEO_FRAME_RATE_15 4 - #define VIDEO_FRAME_RATE_30 5 - #define VIDEO_FRAME_RATE_60 6 #define DEFAULT_VIDEO_NODE VIDEO_NODE_ANY ! #define DEFAULT_VIDEO_MODE VIDEO_MODE_640x480_YUV411_HALF ! #define DEFAULT_VIDEO_FRAME_RATE VIDEO_FRAME_RATE_30 --- 130,136 ---- /* Defines that control various aspects of this code */ #define VIDEO_NODE_ANY -1 #define DEFAULT_VIDEO_NODE VIDEO_NODE_ANY ! #define DEFAULT_VIDEO_MODE MODE_640x480_RGB ! #define DEFAULT_VIDEO_FRAME_RATE FRAMERATE_15 *************** *** 335,345 **** if( strncmp( a, "-mode=", 6 ) == 0 ) { if ( strncmp( &a[6], "320x240_YUV422", 14 ) == 0 ) { ! vid->mode = VIDEO_MODE_320x240_YUV422; } else if ( strncmp( &a[6], "640x480_YUV411", 14 ) == 0 ) { ! vid->mode = VIDEO_MODE_640x480_YUV411; } else if ( strncmp( &a[6], "640x480_RGB", 11 ) == 0 ) { ! vid->mode = VIDEO_MODE_640x480_RGB; } else { --- 328,338 ---- if( strncmp( a, "-mode=", 6 ) == 0 ) { if ( strncmp( &a[6], "320x240_YUV422", 14 ) == 0 ) { ! vid->mode = MODE_320x240_YUV422; } else if ( strncmp( &a[6], "640x480_YUV411", 14 ) == 0 ) { ! vid->mode = MODE_640x480_YUV411; } else if ( strncmp( &a[6], "640x480_RGB", 11 ) == 0 ) { ! vid->mode = MODE_640x480_RGB; } else { *************** *** 385,404 **** else if( strncmp( a, "-rate=", 6 ) == 0 ) { if ( strncmp( &a[6], "1.875", 5 ) == 0 ) { ! vid->rate = VIDEO_FRAME_RATE_1_875; } else if ( strncmp( &a[6], "3.75", 4 ) == 0 ) { ! vid->rate = VIDEO_FRAME_RATE_3_75; } else if ( strncmp( &a[6], "7.5", 3 ) == 0 ) { ! vid->rate = VIDEO_FRAME_RATE_7_5; } else if ( strncmp( &a[6], "15", 2 ) == 0 ) { ! vid->rate = VIDEO_FRAME_RATE_15; } else if ( strncmp( &a[6], "30", 2 ) == 0 ) { ! vid->rate = VIDEO_FRAME_RATE_30; } else if ( strncmp( &a[6], "60", 2 ) == 0 ) { ! vid->rate = VIDEO_FRAME_RATE_60; } else { --- 378,397 ---- else if( strncmp( a, "-rate=", 6 ) == 0 ) { if ( strncmp( &a[6], "1.875", 5 ) == 0 ) { ! vid->rate = FRAMERATE_1_875; } else if ( strncmp( &a[6], "3.75", 4 ) == 0 ) { ! vid->rate = FRAMERATE_3_75; } else if ( strncmp( &a[6], "7.5", 3 ) == 0 ) { ! vid->rate = FRAMERATE_7_5; } else if ( strncmp( &a[6], "15", 2 ) == 0 ) { ! vid->rate = FRAMERATE_15; } else if ( strncmp( &a[6], "30", 2 ) == 0 ) { ! vid->rate = FRAMERATE_30; } else if ( strncmp( &a[6], "60", 2 ) == 0 ) { ! vid->rate = FRAMERATE_60; } else { *************** *** 429,433 **** if( ar2Video1394Init(vid->debug, &vid->card, &vid->node) < 0 ) { ! fprintf (stderr, "Could not initialise 1394\n"); exit(1); } --- 422,426 ---- if( ar2Video1394Init(vid->debug, &vid->card, &vid->node) < 0 ) { ! fprintf (stderr, "Could not initialise 1394 bus with card=%d and node=%d\n", vid->card, vid->node); exit(1); } *************** *** 435,483 **** } - switch( vid->mode ) - { - case VIDEO_MODE_320x240_YUV422: - vid->int_mode = MODE_320x240_YUV422; - break; - case VIDEO_MODE_640x480_YUV411: - vid->int_mode = MODE_640x480_YUV411; - break; - case VIDEO_MODE_640x480_RGB: - vid->int_mode = MODE_640x480_RGB; - break; - default: - printf("Sorry, Unsupported Video Format for IEEE1394 Camera.\n"); - exit(1); - break; - } - - - switch( vid->rate ) { - case VIDEO_FRAME_RATE_1_875: - vid->int_rate = FRAMERATE_1_875; - break; - case VIDEO_FRAME_RATE_3_75: - vid->int_rate = FRAMERATE_3_75; - break; - case VIDEO_FRAME_RATE_7_5: - vid->int_rate = FRAMERATE_7_5; - break; - case VIDEO_FRAME_RATE_15: - vid->int_rate = FRAMERATE_15; - break; - case VIDEO_FRAME_RATE_30: - vid->int_rate = FRAMERATE_30; - break; - case VIDEO_FRAME_RATE_60: - vid->int_rate = FRAMERATE_60; - break; - default: - fprintf(stderr, "Sorry, Unsupported Frame Rate for IEEE1394 Camera.\n"); - exit(1); - } - - - - /*-----------------------------------------------------------------------*/ --- 428,431 ---- *************** *** 487,491 **** vid->node, &(vid->features)) != DC1394_SUCCESS ) { ! fprintf( stderr, "unable to get feature set\n"); } else if( vid->debug ) { --- 435,439 ---- vid->node, &(vid->features)) != DC1394_SUCCESS ) { ! fprintf( stderr, "Unable to get feature set from device\n"); } else if( vid->debug ) { *************** *** 528,532 **** /* Check that the camera supports the particular video mode we asked for */ dc1394_query_supported_modes(arV1394.handle, vid->node, FORMAT_VGA_NONCOMPRESSED, &value); ! i = 31 - (vid->int_mode - MODE_FORMAT0_MIN); p1 = 1 << i; p2 = value & p1; --- 476,480 ---- /* Check that the camera supports the particular video mode we asked for */ dc1394_query_supported_modes(arV1394.handle, vid->node, FORMAT_VGA_NONCOMPRESSED, &value); ! i = 31 - (vid->mode - MODE_FORMAT0_MIN); p1 = 1 << i; p2 = value & p1; *************** *** 546,556 **** { fprintf (stderr, "Detected a mono camera, assuming DragonFly camera with Bayer image decoding\n"); ! vid->int_mode = MODE_640x480_MONO; ar2Video_dragonfly = 1; } } ! dc1394_query_supported_framerates(arV1394.handle, vid->node, FORMAT_VGA_NONCOMPRESSED, vid->int_mode, &value); ! i = 31 - (vid->int_rate - FRAMERATE_MIN); p1 = 1 << i; p2 = value & p1; --- 494,504 ---- { fprintf (stderr, "Detected a mono camera, assuming DragonFly camera with Bayer image decoding\n"); ! vid->mode = MODE_640x480_MONO; ar2Video_dragonfly = 1; } } ! dc1394_query_supported_framerates(arV1394.handle, vid->node, FORMAT_VGA_NONCOMPRESSED, vid->mode, &value); ! i = 31 - (vid->rate - FRAMERATE_MIN); p1 = 1 << i; p2 = value & p1; *************** *** 582,588 **** #endif vid->format, ! vid->int_mode, vid->speed, ! vid->int_rate, vid->dma_buf_num, #ifdef LIBDC_10 --- 530,536 ---- #endif vid->format, ! vid->mode, vid->speed, ! vid->rate, vid->dma_buf_num, #ifdef LIBDC_10 *************** *** 657,663 **** #endif vid->format, ! vid->int_mode, vid->speed, ! vid->int_rate, vid->dma_buf_num, #ifdef LIBDC_10 --- 605,611 ---- #endif vid->format, ! vid->mode, vid->speed, ! vid->rate, vid->dma_buf_num, #ifdef LIBDC_10 *************** *** 756,760 **** ! switch( vid->int_mode ) { case MODE_640x480_RGB: return (ARUint8 *)vid->camera.capture_buffer; --- 704,708 ---- ! switch( vid->mode ) { case MODE_640x480_RGB: return (ARUint8 *)vid->camera.capture_buffer; |