Page 1 of 2 12 LastLast
Results 1 to 10 of 11

Thread: 618 & 619 COM have new problems

  1. #1
    Join Date
    Jul 2006
    Location
    Englewood, Ohio
    Posts
    1,866

    Default 618 & 619 COM have new problems

    The VBScripts used by VAP are no longer able to terminate a COM QSF process (haven't tried AdScan yet).

    The key code statements (excerpted) are:

    set VideoReDo = VideoReDoSilent.VRDInterface
    openFlag = VideoReDo.FileOpenBatch( args(1) )
    outputXML = VideoReDo.FileSaveProfile(Args(2), Args(3))
    VideoReDo.Close()
    wscript.quit 3

    When the operator stops (deliberately aborts) processing in VAP a file semaphore is written and detected by the VBScript, which causes it to execute the VideoReDo.Close().

    This code stucture hasn't changed in months. But now, although the VBScript process terminates, the Videoredo exe process (per Task Mgr) just keeps on going until completion. And after completion a 25 MB chunk of the exe just sits on the process list using memory but no CPU cycles. To make things worse, when this rogue process generates the output file it displays the message box of statistics and plays the "i'm done" sound. I assume this must happen because the VRD process is missing its owner process (the VBScript).

    I've been experimenting with this....I noticed the AbortOutput() COM function and found if I place that just before the Close() statement, at least the VRD process stops. However it still leaves a dead VRD process in task manager that is using memory but no CPU cycles.

    Has the COM interface changed so as to trigger these problems?

    Note: my platform is an i7 QuadCore running Win7 Pro 64bit and I've been using an H.264 output profile. I jumped from TVS4 build 610 to 618 then 619, so I don't know what version first had the problems.
    Automate VideoReDo processsing with VideoReDo-AutoProcessor (VAP)

  2. #2
    Join Date
    Feb 2004
    Posts
    10,827
    Blog Entries
    7

    Default

    This is interesting. Quite a bit has changed in 618/619 in GUI during output to remove that focus stealing code. Calling VideoReDo.Close() while output is in progress has always been somewhat problematic, but I guess it worked The correct sequence is to call "AbortOutput" and wait for output to complete.

    In any case, we can duplicate and will get it fixed for 620.
    Dan Rosen ( VideoReDo )

  3. #3
    Join Date
    Nov 2007
    Location
    Arizona, USA
    Posts
    402

    Default

    I was just getting ready to test this on my XP SP3 PC with 619 after upgrading from 614, but I guess with Dan's reply I won't have to.
    Sorry about that, Chief!

  4. #4
    Join Date
    Jul 2006
    Location
    Englewood, Ohio
    Posts
    1,866

    Default

    Quote Originally Posted by DanR View Post
    This is interesting. Quite a bit has changed in 618/619 in GUI during output to remove that focus stealing code. Calling VideoReDo.Close() while output is in progress has always been somewhat problematic, but I guess it worked The correct sequence is to call "AbortOutput" and wait for output to complete.

    In any case, we can duplicate and will get it fixed for 620.
    Are you duplicating the problem that even when you use AbortOutput() a dead VideoReDo process remains on the task list? At least for QSF (statements given in first post).

    In my experiments using AbortOutput() the VBScript code didn't wait to verify output was no longer in progress before executing close() -- although the output DID stop. Would that explain the dangling dead process?
    Last edited by dlflannery; April 8th, 2011 at 08:02 AM.
    Automate VideoReDo processsing with VideoReDo-AutoProcessor (VAP)

  5. #5
    Join Date
    Jul 2006
    Location
    Englewood, Ohio
    Posts
    1,866

    Default

    To answer my own question, it does appear that waiting for output progress to cease before closing the VideoReDo object does the trick, e.g.:
    Code:
    		VideoReDo.AbortOutput()
    		while( VideoReDo.IsOutputInProgress() )
    			wscript.sleep 500
    		wend
    		VideoReDo.Close()
    With this construct, the dead videoReDo process no longer remains in Task Manager.

    Thus, IMO, this is not unreasonable behavior of the COM objects and does not need to be considered as requiring a fix.
    Automate VideoReDo processsing with VideoReDo-AutoProcessor (VAP)

  6. #6
    Join Date
    Feb 2004
    Posts
    10,827
    Blog Entries
    7

    Default

    I put in a fix for build 620, so that if you are running in silent mode the .Close() will shut down the app. Will be posting 620 by tomorrow on the FTP site. Some of us will be at the NAB (Natl Assoc of Broadcasters) show next week, so I'd prefer not to post a full beta until we return. There are some H.264 fixes / changes that will need more testing as well.

    But if you want to try 620, check the FTP tomorrow afternoon.
    Dan Rosen ( VideoReDo )

  7. #7
    Join Date
    Jul 2006
    Location
    Englewood, Ohio
    Posts
    1,866

    Default

    Quote Originally Posted by DanR View Post
    I put in a fix for build 620, so that if you are running in silent mode the .Close() will shut down the app. Will be posting 620 by tomorrow on the FTP site. Some of us will be at the NAB (Natl Assoc of Broadcasters) show next week, so I'd prefer not to post a full beta until we return. There are some H.264 fixes / changes that will need more testing as well.

    But if you want to try 620, check the FTP tomorrow afternoon.
    Great, thanks. Will the construct I posted in post #5 still do no harm after your changes?
    Automate VideoReDo processsing with VideoReDo-AutoProcessor (VAP)

  8. #8
    Join Date
    Feb 2004
    Posts
    10,827
    Blog Entries
    7

    Default

    Post #5 is the correct way to do it. The only change I might make is to break out of the loop after about 10-15 seconds just in case the abort didn't take. Then the updated .Close() should kill it anyway.
    Dan Rosen ( VideoReDo )

  9. #9
    Join Date
    Jul 2006
    Location
    Englewood, Ohio
    Posts
    1,866

    Default

    Here's what I ended up using in VAP Ver. 0.70, just released:

    Code:
    		VideoReDo.AbortOutput()
    		endtime = DateAdd("s", 30, Now)
    		while( VideoReDo.IsOutputInProgress() And (Now < endtime) )
    			wscript.sleep 500
    		wend
    		VideoReDo.Close()
    That ends the loop after 30 seconds.
    Automate VideoReDo processsing with VideoReDo-AutoProcessor (VAP)

  10. #10
    Join Date
    Feb 2004
    Posts
    10,827
    Blog Entries
    7

    Default

    I wouldn't have been that clever Instead I would have just counted the number of sleeps. BTW, did you try 620a?
    Dan Rosen ( VideoReDo )

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •