Changeset 2035
- Timestamp:
- Jan 16, 2011, 10:09:17 AM (14 years ago)
- Location:
- trunk
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/examples/video/piv/piv.tcl
r2028 r2035 139 139 button $analyze.go \ 140 140 -text "Analyze" \ 141 -state disabled \ 141 142 -command { 142 143 $vp video stop … … 148 149 pack $analyze.step3 -side left -anchor w 149 150 pack $analyze.go -anchor center 151 152 proc buttonState {b var args} { 153 upvar #0 $var v 154 set state disabled 155 if {"" != $v} { 156 set state normal 157 } 158 $b configure -state $state 159 } 160 161 trace add variable previewVar write "buttonState $analyze.go previewVar" 150 162 151 163 -
trunk/gui/scripts/videopreview.tcl
r2028 r2035 246 246 set _movie [Rappture::Video $type $data] 247 247 file delete $fname 248 set _framerate [${_movie} getframerate]248 set _framerate [${_movie} framerate] 249 249 set _mspf [expr round(((1.0/${_framerate})*1000))] 250 250 set _delay [expr {${_mspf} - ${_ofrd}}] … … 265 265 } 266 266 267 set _lastFrame [$ _movieget position end]267 set _lastFrame [${_movie} get position end] 268 268 269 269 # update the dial with video information … … 426 426 # because the underlying c lib is too slow at reading. 427 427 $_movie seek $cur 428 $_imh put [$ _movieget image ${_width} ${_height}]428 $_imh put [${_movie} get image ${_width} ${_height}] 429 429 } 1] 430 430 regexp {(\d+\.?\d*) microseconds per iteration} ${_ofrd} match _ofrd … … 439 439 } 440 440 441 set cur [$ _movieget position cur]441 set cur [${_movie} get position cur] 442 442 443 443 # update the dial and framenum widgets … … 469 469 error "bad value: \"$val\": should be \"seek value\"" 470 470 } 471 set cur [$ _movieget position cur]471 set cur [${_movie} get position cur] 472 472 if {[string compare $cur $val] == 0} { 473 473 # already at the frame to seek to … … 478 478 479 479 # update the dial and framenum widgets 480 set _settings($this-framenum) [$ _movieget position cur]480 set _settings($this-framenum) [${_movie} get position cur] 481 481 event generate $itk_component(main) <<Frame>> 482 482 … … 505 505 # no play pending schedule one 506 506 set _pendings(play) 1 507 set _nextframe [expr {[$ _movieget position cur] + 1}]507 set _nextframe [expr {[${_movie} get position cur] + 1}] 508 508 after idle [itcl::code $this Play] 509 509 } else { -
trunk/gui/scripts/videoscreen.tcl
r2029 r2035 16 16 package require RapptureGUI 17 17 18 option add *Video.width 300widgetDefault19 option add *Video.height 300widgetDefault18 option add *Video.width -1 widgetDefault 19 option add *Video.height -1 widgetDefault 20 20 option add *Video.foreground black widgetDefault 21 21 option add *Video.controlBackground gray widgetDefault … … 70 70 private common _counters 71 71 72 private variable _width -1 ;# start x for rubberbanding73 private variable _height -1 ;# start x for rubberbanding72 private variable _width -1 ;# width of the movie 73 private variable _height -1 ;# height of the movie 74 74 private variable _movie "" ;# movie we grab images from 75 75 private variable _lastFrame 0 ;# last frame in the movie … … 120 120 121 121 itk_component add main { 122 canvas $itk_interior.main \ 123 -background black 122 canvas $itk_interior.main 124 123 } { 125 124 usual … … 128 127 bind $itk_component(main) <Configure> [itcl::code $this fixSize] 129 128 129 # setup the image display 130 130 # hold the video frames in an image on the canvas 131 131 set _imh [image create photo] 132 $itk_component(main) create image 0 0 -anchor nw -image $_imh 132 133 $itk_component(main) create image 0 0 \ 134 -anchor center \ 135 -image ${_imh} \ 136 -tags videoframe 133 137 134 138 # setup movie controls … … 311 315 312 316 itk_component add framenumlabel { 313 label $itk_component(frnumfr).framenuml -text "Frame:" -font $fg\317 label $itk_component(frnumfr).framenuml -text "Frame:" -font "arial 9" \ 314 318 -highlightthickness 0 315 319 } { … … 376 380 1,3 $itk_component(seekforward) -padx {4 0} \ 377 381 1,4 $itk_component(loop) -padx {4 0} \ 378 2,0 $itk_component(frnumfr) -padx { 20} -columnspan 3 \382 2,0 $itk_component(frnumfr) -padx {0 0} -columnspan 3 \ 379 383 2,3 $itk_component(speed) -padx {2 0} -columnspan 2 380 384 … … 392 396 393 397 eval itk_initialize $args 398 399 $itk_component(main) configure -background black 394 400 } 395 401 … … 404 410 405 411 406 if {[info exists _imh] } {412 if {[info exists _imh] && ("" != ${_imh})} { 407 413 image delete ${_imh} 408 414 set _imh "" … … 466 472 itcl::body Rappture::VideoScreen::load {type data} { 467 473 474 video stop 475 468 476 # open the file 469 477 set fname "" … … 493 501 } 494 502 495 video stop496 497 503 if {"file" == $type} { 498 504 if {("" != [info commands ${_movie}])} { … … 502 508 # if they are different, close the old movie 503 509 # and clear out all old drawings from the canvas. 504 set err [catch {${_movie} getfilename} filename]510 set err [catch {${_movie} filename} filename] 505 511 if {($err == 0)&& ($data == $filename)} { 506 512 # video file already open, don't reopen it. … … 509 515 # clear the old movie 510 516 ${_movie} release 517 set _width -1 518 set _height -1 511 519 512 520 # delete drawings objects from canvas … … 520 528 file delete $fname 521 529 } 522 set _framerate [${_movie} getframerate]530 set _framerate [${_movie} framerate] 523 531 video speed 524 525 video seek 0 526 527 # update the dial and framenum widgets 528 set _settings(framenum) 0 529 530 531 # setup the image display 532 533 foreach {w h} [query dimensions] break 534 if {${_width} == -1} { 535 set _width $w 536 } 537 if {${_height} == -1} { 538 set _height $h 539 } 540 541 set _lastFrame [$_movie get position end] 532 puts stderr "framerate: ${_framerate}" 533 534 set _lastFrame [${_movie} get position end] 542 535 543 536 # update the dial with video information … … 559 552 560 553 fixSize 554 555 # goto the first frame 556 # update the dial and framenum widgets 557 video seek 0 558 set _settings(framenum) 0 561 559 } 562 560 … … 600 598 } 601 599 602 # set _width [winfo width $itk_component(main)] 603 # set _height [winfo height $itk_component(main)] 604 # 605 # # get an image with the new size 606 # ${_imh} put [${_movie} get image ${_width} ${_height}] 607 # 608 # # fix the dimesions of the canvas 609 # #$itk_component(main) configure -width ${_width} -height ${_height} 610 # 611 # $itk_component(main) configure -scrollregion [$itk_component(main) bbox all] 612 613 ###################### 600 # get dimensions for the new image 601 # adjust the aspect ratio, if necessary 602 603 puts stderr "aspect ratio: [query aspectratio]" 604 605 foreach {w h} [query dimensions] break 606 foreach {num den} [query aspectratio] break 607 608 if {[expr 1.0*$w/$h] != [expr 1.0*$num/$den]} { 609 # we need to adjust the frame height and width 610 # to keep the correct aspect ratio 611 # hold the height constant, 612 # adjust the width as close as we can 613 # to the correct aspect ratio 614 set w [expr int(1.0*$num/$den*$h)] 615 } 616 617 if {-1 == ${_width}} { 618 set _width $w 619 } 620 if {-1 == ${_height}} { 621 set _height $h 622 } 614 623 615 624 # get an image with the new size 625 ${_imh} blank 626 ${_imh} configure -width 1 -height 1 627 ${_imh} configure -width 0 -height 0 616 628 ${_imh} put [${_movie} get image ${_width} ${_height}] 617 puts stderr "${_width} ${_height}" 618 619 # fix the dimesions of the video canvas 620 $itk_component(main) configure -width ${_width} -height ${_height} 629 630 # place the image in the center of the canvas 631 set ccw [winfo width $itk_component(main)] 632 set cch [winfo height $itk_component(main)] 633 $itk_component(main) coords videoframe [expr $ccw/2.0] [expr $cch/2.0] 634 635 puts stderr "----------------------------" 636 puts stderr "adjusted = $w $h" 637 puts stderr "data = ${_width} ${_height}" 638 puts stderr "image = [image width ${_imh}] [image height ${_imh}]" 639 foreach {x0 y0 x1 y1} [$itk_component(main) bbox videoframe] break 640 puts stderr "bbox = $x0 $y0 $x1 $y1" 641 puts stderr "ccw cch = [expr $ccw/2.0] [expr $cch/2.0]" 642 puts stderr "main = [winfo width $itk_component(main)] [winfo height $itk_component(main)]" 643 puts stderr "hull = [winfo width $itk_component(hull)] [winfo height $itk_component(hull)]" 621 644 } 622 645 … … 670 693 set ret "" 671 694 switch -- $type { 695 "aspectratio" { 696 set ret [${_movie} aspect display] 697 } 672 698 "dimensions" { 673 699 set ret [${_movie} size] … … 698 724 # not the current frame+1. this happens when we skip frames 699 725 # because the underlying c lib is too slow at reading. 700 $ _movieseek $cur701 $ _imh put [$_movieget image ${_width} ${_height}]726 ${_movie} seek $cur 727 ${_imh} put [${_movie} get image ${_width} ${_height}] 702 728 } 1] 703 729 regexp {(\d+\.?\d*) microseconds per iteration} ${_ofrd} match _ofrd … … 712 738 } 713 739 714 set cur [$ _movieget position cur]740 set cur [${_movie} get position cur] 715 741 716 742 # update the dial and framenum widgets … … 751 777 error "bad value: \"$val\": should be \"seek value\"" 752 778 } 753 set cur [$ _movieget position cur]779 set cur [${_movie} get position cur] 754 780 if {[string compare $cur $val] == 0} { 755 781 # already at the frame to seek to … … 761 787 762 788 # update the dial and framenum widgets 763 set _settings(framenum) [$ _movieget position cur]789 set _settings(framenum) [${_movie} get position cur] 764 790 event generate $itk_component(main) <<Frame>> 765 791 … … 790 816 # no play pending schedule one 791 817 set _pendings(play) 1 792 set _nextframe [expr {[$ _movieget position cur] + 1}]818 set _nextframe [expr {[${_movie} get position cur] + 1}] 793 819 after idle [itcl::code $this Play] 794 820 } else { … … 1217 1243 $itk_component(dialminor) loop disable 1218 1244 } else { 1219 set cur [$ _movieget position cur]1220 set end [$ _movieget position end]1245 set cur [${_movie} get position cur] 1246 set end [${_movie} get position end] 1221 1247 1222 1248 set startframe [expr $cur-10] … … 1236 1262 1237 1263 # ---------------------------------------------------------------------- 1238 # OPTION: -width 1264 # OPTION: -width - width of the video 1239 1265 # ---------------------------------------------------------------------- 1240 1266 itcl::configbody Rappture::VideoScreen::width { … … 1248 1274 1249 1275 # ---------------------------------------------------------------------- 1250 # OPTION: -height 1276 # OPTION: -height - height of the video 1251 1277 # ---------------------------------------------------------------------- 1252 1278 itcl::configbody Rappture::VideoScreen::height { -
trunk/lang/tcl/src/RpVideoTclInterface.cc
r2028 r2035 28 28 static Tcl_ObjCmdProc SizeOp; 29 29 static Tcl_ObjCmdProc ReleaseOp; 30 static Tcl_ObjCmdProc FilenameOp; 31 static Tcl_ObjCmdProc FramerateOp; 32 static Tcl_ObjCmdProc AspectOp; 30 33 31 34 static Rp_OpSpec rpVideoOps[] = { 32 {"get", 1, (void *)GetOp, 3, 5, "[image ?width height?]|[position cur|end]|[framerate]",}, 33 {"next", 1, (void *)NextOp, 2, 2, "",}, 34 {"release", 1, (void *)ReleaseOp, 2, 2, "",}, 35 {"seek", 1, (void *)SeekOp, 3, 3, "+n|-n|n",}, 36 {"size", 1, (void *)SizeOp, 2, 2, "",}, 35 {"aspect", 1, (void *)AspectOp, 3, 3, "type",}, 36 {"filename", 1, (void *)FilenameOp, 2, 2, "",}, 37 {"framerate", 1, (void *)FramerateOp, 2, 2, "",}, 38 {"get", 1, (void *)GetOp, 3, 5, "[image ?width height?]|[position cur|end]",}, 39 {"next", 1, (void *)NextOp, 2, 2, "",}, 40 {"release", 1, (void *)ReleaseOp, 2, 2, "",}, 41 {"seek", 1, (void *)SeekOp, 3, 3, "+n|-n|n",}, 42 {"size", 1, (void *)SizeOp, 2, 2, "",}, 37 43 }; 38 44 … … 81 87 // create a new command 82 88 VideoObj *movie = NULL; 83 movie = VideoInit Cmd();89 movie = VideoInit(); 84 90 if (movie == NULL) { 85 91 Tcl_AppendResult(interp, "error while creating movie object", "\n", 86 "VideoInit Cmd(movie);", (char*)NULL);92 "VideoInit(movie);", (char*)NULL); 87 93 return TCL_ERROR; 88 94 } … … 90 96 if ((*type == 'd') && (strcmp(type,"data") == 0)) { 91 97 Tcl_AppendResult(interp, "error while creating movie: type == data not supported", 92 "\n", "VideoInit Cmd(movie);", (char*)NULL);98 "\n", "VideoInit(movie);", (char*)NULL); 93 99 return TCL_ERROR; 94 100 } else if ((*type == 'f') && (strcmp(type,"file") == 0)) { … … 96 102 if (err) { 97 103 Tcl_AppendResult(interp, "error while creating movie object: ", 98 "\n", "VideoInit Cmd(movie);", (char*)NULL);104 "\n", "VideoInit(movie);", (char*)NULL); 99 105 return TCL_ERROR; 100 106 } … … 138 144 * get framerate 139 145 * get filename 146 * get aspectratio 140 147 * 141 148 */ … … 201 208 (const unsigned char*)img, bufSize); 202 209 } 210 /* 203 211 else if ((*info == 'f') && (strcmp(info,"framerate") == 0)) { 204 212 if (objc != 3) { … … 237 245 Tcl_AppendResult(interp, fname, (char*)NULL); 238 246 } 247 else if ((*info == 'a') && (strcmp(info,"aspectratio") == 0)) { 248 if (objc != 3) { 249 Tcl_AppendResult(interp, "wrong # args: should be \"", cmd, 250 " aspectratio\"", (char*)NULL); 251 return TCL_ERROR; 252 } 253 254 int num = 0; 255 int den = 0; 256 int err = 0; 257 258 err = VideoGetAspectRatio((VideoObj *)clientData, &num, &den); 259 if (err) { 260 Tcl_AppendResult(interp, "error while retrieving aspectratio", 261 (char*)NULL); 262 return TCL_ERROR; 263 } 264 265 Tcl_Obj *dim = NULL; 266 dim = Tcl_NewListObj(0, NULL); 267 Tcl_ListObjAppendElement(interp, dim, Tcl_NewIntObj(num)); 268 Tcl_ListObjAppendElement(interp, dim, Tcl_NewIntObj(den)); 269 Tcl_SetObjResult(interp, dim); 270 } 271 */ 239 272 else { 240 273 Tcl_AppendResult(interp, "unrecognized command \"", info, "\": should be \"", cmd, … … 325 358 /**********************************************************************/ 326 359 // FUNCTION: SizeOp() 327 /// Get the sizeof the video328 /** 329 * Return the original sizeof the video frame360 /// Get the width height of the video 361 /** 362 * Return the original width and height of the video frame 330 363 * 331 364 * Full function call: … … 345 378 346 379 347 err = VideoSize Cmd((VideoObj *)clientData,&width,&height);380 err = VideoSize((VideoObj *)clientData,&width,&height); 348 381 349 382 if (err) { … … 363 396 364 397 /**********************************************************************/ 398 // FUNCTION: FilenameOp() 399 /// Get the filename of the video 400 /** 401 * Return the original filename of the video 402 * 403 * Full function call: 404 * 405 * filename 406 * 407 */ 408 static int 409 FilenameOp (ClientData clientData, Tcl_Interp *interp, int objc, 410 Tcl_Obj *const *objv) 411 { 412 const char *fname = NULL; 413 int err = 0; 414 415 err = VideoFileName((VideoObj *)clientData, &fname); 416 if (err) { 417 Tcl_AppendResult(interp, "error while retrieving filename", 418 (char*)NULL); 419 return TCL_ERROR; 420 } 421 Tcl_AppendResult(interp, fname, (char*)NULL); 422 423 return TCL_OK; 424 } 425 426 /**********************************************************************/ 427 // FUNCTION: FramerateOp() 428 /// Get the framerate of the video 429 /** 430 * Return the framerate of the video 431 * 432 * Full function call: 433 * 434 * framerate 435 * 436 */ 437 static int 438 FramerateOp (ClientData clientData, Tcl_Interp *interp, int objc, 439 Tcl_Obj *const *objv) 440 { 441 double fr = 0; 442 int err = 0; 443 444 err = VideoFrameRate((VideoObj *)clientData, &fr); 445 if (err) { 446 Tcl_AppendResult(interp, "error while calculating framerate", 447 (char*)NULL); 448 return TCL_ERROR; 449 } 450 Tcl_SetObjResult(interp, Tcl_NewDoubleObj(fr)); 451 452 return TCL_OK; 453 } 454 455 /**********************************************************************/ 456 // FUNCTION: AspectOp() 457 /// Get the aspect ratio of the video 458 /** 459 * Return either the pixel or display aspect ratio of the video 460 * Full function call: 461 * 462 * aspect pixel 463 * aspect display 464 * 465 */ 466 static int 467 AspectOp (ClientData clientData, Tcl_Interp *interp, int objc, 468 Tcl_Obj *const *objv) 469 { 470 int err = 0; 471 int num = 0; 472 int den = 1; 473 Tcl_Obj *dim = NULL; 474 475 const char *cmd = Tcl_GetString(objv[1]); 476 const char *info = Tcl_GetString(objv[2]); 477 478 if ((*cmd == 'p') && (strcmp(info,"pixel") == 0)) { 479 err = VideoPixelAspectRatio((VideoObj *)clientData, &num, &den); 480 } 481 else if ((*info == 'd') && (strcmp(info,"display") == 0)) { 482 err = VideoDisplayAspectRatio((VideoObj *)clientData, &num, &den); 483 } 484 else { 485 Tcl_AppendResult(interp, "unrecognized command \"", info, "\": should be \"", cmd, 486 " pixel|display\"", (char*)NULL); 487 return TCL_ERROR; 488 } 489 490 if (err) { 491 Tcl_AppendResult(interp, "error while retrieving ", info, 492 " aspect ratio", (char*)NULL); 493 return TCL_ERROR; 494 } 495 496 dim = Tcl_NewListObj(0, NULL); 497 Tcl_ListObjAppendElement(interp, dim, Tcl_NewIntObj(num)); 498 Tcl_ListObjAppendElement(interp, dim, Tcl_NewIntObj(den)); 499 Tcl_SetObjResult(interp, dim); 500 501 return TCL_OK; 502 } 503 /**********************************************************************/ 365 504 // FUNCTION: ReleaseOp() 366 505 /// Clean up memory from an open video in a movie player object -
trunk/src/objects/RpVideo.c
r2028 r2035 768 768 /* 769 769 * ------------------------------------------------------------------------ 770 * VideoInit Cmd()770 * VideoInit() 771 771 * 772 772 * Implements the body of the _ffmpeg_init method in the "video" class. … … 776 776 */ 777 777 VideoObj * 778 VideoInit Cmd()778 VideoInit() 779 779 { 780 780 /* … … 790 790 /* 791 791 * ------------------------------------------------------------------------ 792 * VideoCleanup Cmd()792 * VideoCleanup() 793 793 * 794 794 * Implements the body of the _ffmpeg_cleanup method in the "video" class. … … 798 798 */ 799 799 int 800 VideoCleanup Cmd(vidPtr)800 VideoCleanup(vidPtr) 801 801 VideoObj *vidPtr; 802 802 { … … 826 826 /* 827 827 * ------------------------------------------------------------------------ 828 * VideoSize Cmd()828 * VideoSize() 829 829 * 830 830 * Implements the body of the "size" method in the "video" class. … … 833 833 */ 834 834 int 835 VideoSize Cmd(vidPtr, width, height)835 VideoSize(vidPtr, width, height) 836 836 VideoObj *vidPtr; 837 837 int *width; … … 863 863 /* 864 864 * ------------------------------------------------------------------------ 865 * VideoGo Cmd()865 * VideoGo() 866 866 * 867 867 * Implements the body of the "go" method in the "video" class. … … 996 996 /* 997 997 * ------------------------------------------------------------------------ 998 * VideoGet Cmd()998 * VideoGet() 999 999 * 1000 1000 * Implements the body of the "get" method in the "video" class. … … 1123 1123 1124 1124 int 1125 Video GetFrameRate (vidPtr, fr)1125 VideoFrameRate (vidPtr, fr) 1126 1126 VideoObj *vidPtr; 1127 1127 double *fr; … … 1155 1155 1156 1156 int 1157 Video GetFileName (vidPtr, fname)1157 VideoFileName (vidPtr, fname) 1158 1158 VideoObj *vidPtr; 1159 1159 const char **fname; … … 1175 1175 1176 1176 *fname = vidPtr->fileName; 1177 1178 return 0; 1179 } 1180 1181 int 1182 VideoPixelAspectRatio (vidPtr, num, den) 1183 VideoObj *vidPtr; 1184 int *num; 1185 int *den; 1186 { 1187 AVCodecContext *vcodecCtx; 1188 1189 if (vidPtr == NULL) { 1190 return -1; 1191 } 1192 1193 if ((num == NULL) || (den == NULL)) { 1194 return -1; 1195 } 1196 1197 if (vidPtr->pFormatCtx == NULL) { 1198 // vidPtr->pFormatCtx is NULL, video not open 1199 return -1; 1200 } 1201 1202 vcodecCtx = vidPtr->pFormatCtx->streams[vidPtr->videoStream]->codec; 1203 1204 *num = vcodecCtx->sample_aspect_ratio.num; 1205 *den = vcodecCtx->sample_aspect_ratio.den; 1206 1207 return 0; 1208 } 1209 1210 int 1211 VideoDisplayAspectRatio (vidPtr, num, den) 1212 VideoObj *vidPtr; 1213 int *num; 1214 int *den; 1215 { 1216 AVCodecContext *vcodecCtx; 1217 int width = 0; 1218 int height = 0; 1219 int64_t gcd = 0; 1220 int64_t gcd2 = 0; 1221 1222 if (vidPtr == NULL) { 1223 return -1; 1224 } 1225 1226 if ((num == NULL) || (den == NULL)) { 1227 return -1; 1228 } 1229 1230 if (vidPtr->pFormatCtx == NULL) { 1231 // vidPtr->pFormatCtx is NULL, video not open 1232 return -1; 1233 } 1234 1235 VideoSize(vidPtr, &width, &height); 1236 VideoPixelAspectRatio(vidPtr, num, den); 1237 1238 width = (*num)*width; 1239 height = (*den)*height; 1240 gcd = av_gcd(FFABS(width), FFABS(height)); 1241 1242 *num = width/gcd; 1243 *den = height/gcd; 1244 1245 if (*den == 0) { 1246 *num = 0; 1247 *den = 1; 1248 } 1177 1249 1178 1250 return 0; … … 1267 1339 ///* 1268 1340 // * ------------------------------------------------------------------------ 1269 // * VideoPut Cmd()1341 // * VideoPut() 1270 1342 // * 1271 1343 // * Implements the body of the "put" method in the "video" class. … … 1275 1347 // */ 1276 1348 //int 1277 //VideoPut Cmd(cdata, interp, argc, argv)1349 //VideoPut(cdata, interp, argc, argv) 1278 1350 // ClientData cdata; /* not used */ 1279 1351 // Tcl_Interp *interp; /* interpreter */ -
trunk/src/objects/RpVideo.h
r2028 r2035 23 23 typedef struct VideoObjRec VideoObj; 24 24 25 VideoObj *VideoInit Cmd();26 int VideoCleanup Cmd(VideoObj *vidPtr);25 VideoObj *VideoInit (); 26 int VideoCleanup (VideoObj *vidPtr); 27 27 int VideoOpenFile (VideoObj *vidPtr, 28 28 const char *fileName, const char *mode); … … 31 31 int VideoGetPositionCur (VideoObj *vidPtr, int *pos); 32 32 int VideoGetPositionEnd (VideoObj *vidPtr, int *pos); 33 int VideoGetFrameRate (VideoObj *vidPtr, double *fr); 34 int VideoGetFileName (VideoObj *vidPtr, const char **fname); 35 // static int VideoPutCmd (ClientData clientData, 33 int VideoFrameRate (VideoObj *vidPtr, double *fr); 34 int VideoFileName (VideoObj *vidPtr, const char **fname); 35 int VideoPixelAspectRatio (VideoObj *vidPtr, int *num, int *den); 36 int VideoDisplayAspectRatio (VideoObj *vidPtr, int *num, int *den); 37 // static int VideoPut (ClientData clientData, 36 38 // Tcl_Interp *interp, int argc, CONST84 char *argv[]); 37 39 int VideoGoNext (VideoObj *vidPtr); 38 40 int VideoGoPlusMinusN (VideoObj *vidPtr, int n); 39 41 int VideoGoToN (VideoObj *vidPtr, int n); 40 int VideoSize Cmd(VideoObj *vidPtr, int *width, int *height);42 int VideoSize (VideoObj *vidPtr, int *width, int *height); 41 43 int VideoClose (VideoObj *vidPtr); 42 44
Note: See TracChangeset
for help on using the changeset viewer.