Changeset 947

Show
Ignore:
Timestamp:
10/20/99 10:33:29 (15 years ago)
Author:
piers
Message:

Updated to use 'signal' dropdown menu for selection of video signal type
(from Jean-Marc Orliaguet <jmo@…>)

Location:
vic/trunk
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • vic/trunk/tcl/ui-grabber.tcl

    r944 r947  
    2727proc build.v4l w { 
    2828    set f [smallfont] 
    29     global contrast brightness hue saturation  
     29    global contrast brightness hue saturation norm  
    3030    set contrast 128 
    3131    set brightness 128 
    3232    set hue 128 
    3333    set saturation 128 
     34    set norm 0  
    3435 
    3536    label $w.title -text "Video4Linux grabber controls" 
     
    4243    button $w.f.left.reset -font $f -width 10 -text "Reset" -command "set contrast 128; set brightness 128; set hue 128; set saturation 128; grabber controls reset"  -padx 1 -pady 1 
    4344    pack $w.f.left.reset  
    44  
    45     set m  $w.f.left.norm 
    46     set m1 $m.m1 
    47     menubutton $m -text " Norm... " -menu $m1 -relief raised -width 10 -font $f 
    48     menu $m1 
    49     $m1 add radiobutton  -font $f -label "PAL" -command "grabber norm 0"  
    50     $m1 add radiobutton  -font $f -label "NTSC" -command "grabber norm 1" 
    51     $m1 add radiobutton  -font $f -label "SECAM" -command "grabber norm 2" 
    52   
    53     pack $m 
    54  
    5545 
    5646    frame $w.f.right -relief flat   
  • vic/trunk/video/grabber-video4linux.cpp

    r938 r947  
    1313     by Jean-Marc Orliaguet <jmo@medialab.chalmers.se> 
    1414 
    15      Added support for NTSC/PAL/SECAM norm selection. (14/10/99) 
     15     Added support for NTSC/PAL/SECAM video norm selection. (14/10/99) 
    1616     by Jean-Marc Orliaguet <jmo@medialab.chalmers.se> 
    1717 
     
    7474#define BYTE_ORDER_UYVY 2 
    7575#define BYTE_ORDER_VYUY 3 
     76 
     77/* VIDEO NORMS */ 
     78#define MAX_NORMS 4 
    7679 
    7780 
     
    241244                palette_name[pict.palette]:"??"); 
    242245 
     246        strcat(attr,"type {auto pal ntsc secam}"); 
    243247 
    244248        nick = new char[strlen(capability.name)+6]; 
    245249        sprintf(nick,"v4l- %s",capability.name); 
    246250        new V4lDevice(dev[i],nick,attr); 
    247  
    248251 
    249252        close(fd); 
     
    327330     
    328331    port_      = 0; 
     332    norm_      = 0; 
    329333    decimate_  = 2; 
    330334} 
     
    343347    int i; 
    344348    struct video_channel     channel; 
     349    static const char *norms[] = {"pal", "ntsc", "secam", "auto"}; 
    345350 
    346351    Tcl &tcl = Tcl::instance(); 
     
    350355    if ( tcl.attr("yuv_byteOrder") != NULL )  
    351356        byteorder_ = atoi( tcl.attr("yuv_byteOrder") ); 
    352   
     357 
    353358    if ( ! ((byteorder_ >= 0) && (byteorder_ <= 3)) ) byteorder_=0; 
    354  
    355359 
    356360    if (argc == 3) { 
     
    363367        if (strcmp(argv[1], "port") == 0) { 
    364368            for (i = 0; i < capability.channels; i++) 
    365                 if(!strcmp(argv[2], channels[i].name)) 
     369                if(!strcmp(argv[2], channels[i].name)) { 
    366370                    port_ = i; 
     371            } 
    367372            if (running_) 
    368373                format(); 
     
    435440        } 
    436441 
    437  
    438  
    439442        if (strcmp(argv[1], "yuv_byteorder") == 0) { 
    440443                        byteorder_ = atoi(argv[2]); 
     
    442445        } 
    443446 
    444         if (strcmp(argv[1], "norm") == 0) { 
    445                         norm_ = atoi(argv[2]); 
    446  
    447                         channel.channel=port_; 
    448                         channel.norm=norm_; 
    449  
    450                         if (-1 == ioctl(fd_, VIDIOCSCHAN, &channel)) 
    451                         perror("ioctl VIDIOCSCHAN"); 
    452  
    453                         DEBUG(fprintf(stderr, "V4l: Norm = %d\n", norm_)); 
    454                         return (TCL_OK); 
    455         } 
    456447 
    457448        if (strcmp(argv[1], "fps") == 0) { 
    458449            DEBUG(fprintf(stderr,"V4l: fps %s\n",argv[2])); 
    459450        } 
    460     } 
     451 
     452 
     453        if (strcmp(argv[1], "type") == 0) { 
     454                        if (strcmp(argv[2], "auto") == 0) 
     455                                norm_ = VIDEO_MODE_AUTO; 
     456                        else if (strcmp(argv[2], "pal") == 0) 
     457                                norm_ = VIDEO_MODE_PAL; 
     458                        else if (strcmp(argv[2], "secam") == 0) 
     459                                norm_ = VIDEO_MODE_SECAM; 
     460                        else 
     461                                norm_ = VIDEO_MODE_NTSC; 
     462                        if (running_) 
     463                                format(); 
     464                        return (TCL_OK); 
     465                } 
     466     
     467    }  
    461468 
    462469    return (Grabber::command(argc, argv)); 
     
    768775    DEBUG(fprintf(stderr," size=%dx%d",width_,height_)); 
    769776 
     777    bzero(&channel, sizeof(struct video_channel)); 
     778    if (-1 == ioctl(fd_, VIDIOCGCHAN, &channel)) 
     779        perror("ioctl VIDIOCGCHAN"); 
     780 
    770781    channel.channel = port_; 
    771782    channel.norm = norm_; 
     783 
    772784    if (-1 == ioctl(fd_, VIDIOCSCHAN, &channel)) 
    773785        perror("ioctl VIDIOCSCHAN"); 
     786 
    774787    DEBUG(fprintf(stderr," port=%d\n",port_)); 
    775788    DEBUG(fprintf(stderr," norm=%d\n",norm_));