Changeset 4761
- Timestamp:
- 04/06/10 21:06:53 (3 years ago)
- Location:
- vic/branches/mpeg4
- Files:
-
- 3 modified
-
tcl/ui-ctrlmenu.tcl (modified) (4 diffs)
-
video/grabber-win32DS.cpp (modified) (3 diffs)
-
video/grabber-win32DS.h (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
vic/branches/mpeg4/tcl/ui-ctrlmenu.tcl
r4706 r4761 799 799 } 800 800 801 proc compare {a b} { 802 803 return [string compare [$a nickname] [$b nickname]] 804 805 set a0 [$a nickname] 806 807 set b0 [$b nickname] 808 809 if {$a0 < $b0} { 810 811 return -1 812 813 } elseif {$a0 > $b0} { 814 815 return 1 816 817 } 818 819 return 0 820 821 } 822 823 824 801 825 proc build.device w { 802 826 set f [smallfont] … … 833 857 return 834 858 } 835 foreach d $inputDeviceList { 859 860 set inputDeviceListSorted [lsort -command compare $inputDeviceList] 861 foreach d $inputDeviceListSorted { 836 862 if { [$d nickname] == "still" && ![yesno stillGrabber] } { 837 863 set defaultFormat($d) $videoFormat … … 1087 1113 set defaultPort($device) $s 1088 1114 } else { 1089 set defaultPort($device) [lindex $portnames 0] 1115 # use current port setting 1116 set s [string trim [attribute_class [$device attributes] selected_port]] 1117 if { $s != "" } { 1118 set defaultPort($device) $s 1119 } else { 1120 set defaultPort($device) [lindex $portnames 0] 1121 } 1090 1122 } 1091 1123 } … … 1928 1960 set_dither 1929 1961 } 1930 -
vic/branches/mpeg4/video/grabber-win32DS.cpp
r4750 r4761 213 213 capturing_=0; 214 214 max_fps_ = 30; 215 216 215 memset(inputPorts, 0, NUM_PORTS); 217 216 … … 522 521 IAMCrossbar *xb; 523 522 523 long tmp_input_port; 524 524 525 if( crossbar_ == NULL ) return; 525 526 526 527 xb = crossbar_->getXBar(); 527 528 528 xb->get_IsRoutedTo(0, &input);529 debug_msg("DirectShowGrabber::routeCrossbar(): pin %d is routed to output pin 0\n", input);530 529 531 530 hr = xb->get_PinCounts(&output, &input); 531 debug_msg("num input %d num output %d", input, output); 532 533 534 long selectedPort = -1; 535 long inport = -1; 536 for( int i = 0; i < output; ++i ) { 537 xb->get_IsRoutedTo(i, &inport); 538 debug_msg("DirectShowGrabber::routeCrossbar(): input pin %d is mapped to output pin %d\n", inport, i); 539 if( inport >= 0 ) 540 selectedPort = inport; 541 } 542 543 532 544 if(initializedPorts == 0) { 533 initializedPorts=1; 534 svideoPortNum = 1; 535 compositePortNum = 1; 536 numInputPorts = 0; 537 for( int i = 0; i < input; ++i ) { 538 xb->get_CrossbarPinInfo(TRUE, i, &related, &pinType); 539 if( pinType == PhysConn_Video_SVideo ) { 540 debug_msg("Found svideo port %d\n", svideoPortNum); 541 inputPorts[numInputPorts] = new Port(); 542 inputPorts[numInputPorts]->id = i; 543 if( svideoPortNum > 1 ) 544 sprintf(inputPorts[numInputPorts]->name,"S-Video%d", svideoPortNum ); 545 else 546 strcpy(inputPorts[numInputPorts]->name,"S-Video"); 547 numInputPorts++; 548 svideoPortNum++; 549 550 } 551 if( pinType == PhysConn_Video_Composite ) { 552 debug_msg("Found composite port %d\n", compositePortNum); 553 inputPorts[numInputPorts] = new Port(); 554 inputPorts[numInputPorts]->id = i; 555 if(compositePortNum > 1 ) 556 sprintf(inputPorts[numInputPorts]->name,"Composite%d", compositePortNum); 557 else 558 strcpy(inputPorts[numInputPorts]->name,"Composite"); 559 numInputPorts++; 560 compositePortNum++; 561 } 545 initializedPorts=1; 546 svideoPortNum = 1; 547 compositePortNum = 1; 548 numInputPorts = 0; 549 for( int i = 0; i < input; ++i ) { 550 xb->get_CrossbarPinInfo(TRUE, i, &related, &pinType); 551 if( pinType == PhysConn_Video_SVideo ) { 552 debug_msg("Found svideo port %d\n", svideoPortNum); 553 inputPorts[numInputPorts] = new Port(); 554 inputPorts[numInputPorts]->id = i; 555 if( svideoPortNum > 1 ) 556 sprintf(inputPorts[numInputPorts]->name,"S-Video%d", svideoPortNum ); 557 else 558 strcpy(inputPorts[numInputPorts]->name,"S-Video"); 559 if( selectedPort == i ) 560 strcpy(input_port_, inputPorts[numInputPorts]->name); 561 numInputPorts++; 562 svideoPortNum++; 563 564 } 565 if( pinType == PhysConn_Video_Composite ) { 566 debug_msg("Found composite port %d\n", compositePortNum); 567 inputPorts[numInputPorts] = new Port(); 568 inputPorts[numInputPorts]->id = i; 569 if(compositePortNum > 1 ) 570 sprintf(inputPorts[numInputPorts]->name,"Composite%d", compositePortNum); 571 else 572 strcpy(inputPorts[numInputPorts]->name,"Composite"); 573 if( selectedPort == i ) 574 strcpy(input_port_, inputPorts[numInputPorts]->name); 575 numInputPorts++; 576 compositePortNum++; 577 } 578 } 562 579 } 580 581 for( int i = 0; i < output; ++i ) { 582 xb->get_CrossbarPinInfo(FALSE, i, &related, &pinType); 583 if( pinType == PhysConn_Video_VideoDecoder ) { 584 videoDecoderPort = i; 585 break; 586 } 563 587 } 564 588 565 for( int i = 0; i < output; ++i ) {566 xb->get_CrossbarPinInfo(FALSE, i, &related, &pinType); 567 if( pinType == PhysConn_Video_VideoDecoder) {568 videoDecoderPort = i;569 break;570 }589 port = -1; 590 for( int i=0; i<numInputPorts; i++) { 591 if (strcmp(input_port_,inputPorts[i]->name) == 0) { 592 port = inputPorts[i]->id; 593 break; 594 } 571 595 } 572 573 port = 0; 574 for( int i=0; i<numInputPorts; i++) { 575 if (strcmp(input_port_,inputPorts[i]->name) == 0) { 576 port = inputPorts[i]->id; 577 break; 578 } 596 if( port == -1 ) { 597 debug_msg("**** Failed to find port for %s\n", input_port_); 598 return; 579 599 } 580 if( port == 0 ) {581 debug_msg("**** Failed to find port for %s\n", input_port_);582 }583 600 584 601 if( xb->CanRoute(videoDecoderPort, port) == S_FALSE ) 585 debug_msg("DirectShowGrabber::routeCrossbar(): cannot route input pin %d to output pin %d\n", port, videoDecoderPort);602 debug_msg("DirectShowGrabber::routeCrossbar(): cannot route input pin %d to output pin %d\n", port, videoDecoderPort); 586 603 else { 587 debug_msg("DirectShowGrabber::routeCrossbar() routing pin %d to pin %d\n", port, videoDecoderPort);588 hr = xb->Route(videoDecoderPort, port);589 //showErrorMessage(hr);604 debug_msg("DirectShowGrabber::routeCrossbar() routing pin %d to pin %d\n", port, videoDecoderPort); 605 hr = xb->Route(videoDecoderPort, port); 606 //showErrorMessage(hr); 590 607 } 591 608 … … 1171 1188 strcat(attri_, "external-in "); 1172 1189 } 1190 debug_msg("new DirectShowDevice(): after appending ports\n"); 1173 1191 1174 1192 strcat(attri_, "} "); 1193 1194 char *inport = o.getInputPort(); 1195 sprintf(attri_, "%s selected_port { %s }", attri_, inport ); 1196 free(inport); 1175 1197 attributes_ = attri_; 1198 debug_msg("attributes: %s", attributes_); 1176 1199 } 1177 1200 -
vic/branches/mpeg4/video/grabber-win32DS.h
r4744 r4761 87 87 88 88 class Callback; 89 90 89 struct Port { 91 90 int id; … … 128 127 return inputPorts; 129 128 } 130 129 char * getInputPort(){ 130 return strdup(input_port_); 131 } 131 132 int capturing_; 132 133 HANDLE cb_mutex_; … … 255 256 256 257 }; 258 259
