Printable Version of Topic
Click here to view this topic in its original format
Unofficial VirtualDub Support Forums > VirtualDub Filters and Filter Development > VirtualDub File Input Filter


Posted by: fccHandler Sep 25 2007, 05:43 AM
As an experiment, I'm going to try to create a simple VirtualDub file input filter for the old Autodesk FLIC animation format. (If this filter is successful, I'll set my goals higher in the future; ultimately I'm aiming for full-blown WMV and MPEG-2 input filters...) cool.gif

I'm running into some gray areas though. The 128-byte FLIC signature begins with the size of the file (which is unpredictable), so apparently I need to set the "kFlagCustomSignature" bit, so my driver will be able to verify each signature in its "DetectBySignature()" function.

This scenario seems unclear in the docs. For example, what should be the values of "mpSignature" and "mSignatureLength" in this case? I want the host to NOT check for a signature at all. Should my driver set the values to NULL and 0 respectively?

Or, can I set "mpSignature" to NULL, and "mSignatureLength" > 0 to request a specific header size be sent to "DetectBySignature()"? (That would be sweet.)

Thanks for any help.


EDIT: Oh, another curious thing... The MOCRAP example filter sets the "kFlagSupportsVideo" bit, but it doesn't set "kFlagSupportsAudio". Yet when I build the filter and play the MOCRAP sample, it does indeed produce audio.

Posted by: phaeron Sep 26 2007, 03:54 AM
Yeah, docs aren't quite finished yet.

The signature is an array of pairs of bytes, where the first byte contains bits to match and the second byte is a mask. The mask selects which bits are significant for the comparison. This means you can skip the first four bytes by using 4 x (0,0). You can also indeed set it to (NULL, 0) and just rely on the custom signature match function. When both are present, both must pass, so you can use the signature as a first-strike test before doing the heavy lifting.

The SupportsVideo/SupportsAudio flags are used to control the contexts in which the plugin in used -- specifically, whether it's available for the open video / open audio dialogs. I don't think the audio flag is used yet.


Posted by: fccHandler Sep 27 2007, 05:16 AM
QUOTE (phaeron @ Sep 25 2007, 11:54 PM)
The signature is an array of pairs of bytes, where the first byte contains bits to match and the second byte is a mask. The mask selects which bits are significant for the comparison.

Ah, I hadn't noticed that. That's pretty ingenious.

QUOTE
The SupportsVideo/SupportsAudio flags are used to control the contexts in which the plugin in used -- specifically, whether it's available for the open video / open audio dialogs. I don't think the audio flag is used yet.

I see. So that means we may someday be able to write audio import filters too? Very cool!

Thanks for your help.

Posted by: fccHandler Sep 29 2007, 12:42 AM
My FLIC filter is up and running now. But I've run into one problem I haven't been able to figure out...

It seems to me that FLIC is a perfect candidate for using the I/P video decoding model which the host provides automatically, but it doesn't seem to work. I could only get the frames to decode correctly by rolling a custom video decoding model.

So my question is, has the built-in I/P video decoding model actually been tested? I can't quite tell whether it's really bugged, or whether I'm simply doing something wrong.

Here is the main.cpp and a dancer.fli:
http://fcchandler.home.comcast.net/flic.zip (188K)

Posted by: phaeron Sep 29 2007, 05:09 AM
Aha, the default I/P model is busted -- I broke it when I was reworking and simplifying the API. 1.7.5 will have that fixed and I'll also be bumping the API version to V2.

The FLIC plugin works... cool!

Posted by: Moitah Sep 29 2007, 07:11 AM
What about something like ASF... certainly you wouldn't write a custom video decoder for that right? How would you access VirtualDub's built-in VFW video decoder?

Posted by: fccHandler Sep 29 2007, 05:48 PM
I don't think you can. It looks like filters must always handle the decompression themselves. But assuming a VFW codec is involved, we can just ask the system (VCM) for a decompressor.

On the other hand, we also have the choice to implement a custom decompressor which doesn't use VCM, and that could be a very powerful thing.

Make no mistake; an ASF or MPEG-2 filter is going to involve a HUGE amount of work. I've already started an MPEG-2 filter project, and the scale of it (compared to FLIC) is pretty frightening.

Posted by: phaeron Sep 29 2007, 06:02 PM
VirtualDub doesn't have much in the way of built-in decompression services. Currently it has MPEG-1, MJPEG, DV, and some uncompressed image formats, and a few audio formats will be joining that in a future version. Everything else goes through VFW, and all that VirtualDub has there is a bunch of workarounds for broken codecs. Didn't think this was worth exposing, but I'm open to suggestions.

Posted by: Moitah Sep 29 2007, 06:26 PM
The workarounds were precisely the reason why I thought it would be a good idea to be able to use VirtualDub's internal VFW decompressor. You've already got it figured out and stable, why should other input plugins that decode via VFW have to reimplement all that stuff. Although, I suppose a lot of the workarounds are for codecs that are only typically used in AVI, but still having the workaround for reliably locating a decompressor even when some codecs falsely report they can decompress everything is useful, for example. And I mentioned ASF already, but actually the one I really had in mind that I might want to write someday is for FLV smile.gif (VFW would be used for decompression).

Posted by: ale5000 Sep 30 2007, 05:05 PM
Edit: Removed

Posted by: neuron2 Sep 30 2007, 05:54 PM
.

Posted by: fccHandler Sep 30 2007, 07:51 PM
Phaeron: Thank you for VirtualDub 1.7.5.

I have a skeleton of an MPEG-2 plugin up and running now, but there is one problem. VirtualDub is grabbing the ".mpg" extension by default, and I can't make it give my plugin priority for MPEG files. I need it to do so, because VirtualDub doesn't detect MPEG-2 until it's too late, at which time its parser fails.

I can force my plugin to be chosen by selecting "MPEG-2 files" in the dropdown menu, so at least that gives me an alternate way to invoke it. FWIW, here is the code I'm currently testing:

CODE

const uint8 MPEG2_sig[] = {
   0x00, 0xFF,
   0x00, 0xFF,
   0x01, 0xFF,
   0xB2, 0xF6    // either 0x1B3 or 0x1BA
};

const VDInputDriverDefinition mpeg2_input = {
   sizeof(VDInputDriverDefinition),
   VDInputDriverDefinition::kFlagSupportsVideo,
   1,        // priority?
   sizeof(MPEG2_sig),
   MPEG2_sig,
   L"*.mpg",
   L"MPEG-2 files (*.mpg)|*.mpg",
   L"MPEG-2",
   mpeg2_create
};


I've tried priority values of -1, 0, 1, and 0x7FFFFFFF, but it doesn't make a difference. I'm not using a custom signature just yet. (Trying to keep it simple right now.)

Posted by: phaeron Oct 1 2007, 01:44 AM
Hmm... I just hacked that signature and priority into your FLIC plugin, and it seemed to work fine. Did you remember to change the custom check routine? If the priority value is working, the plugin should move up and down in the filter list in the Open dialog.

Posted by: fccHandler Oct 1 2007, 02:12 AM
When I set priority = 1, it does move to the top of the list (or rather, just under "All supported"). Still, when I try to open an MPEG-2 file with the extension .mpg, I get the familiar "MPEG Import Filter: invalid pack..." error from VirtualDub's internal driver.

Right now, my "DetectBySignature()" function consists of only the line "return 1." Placing a breakpoint there shows that it's never called by VirtualDub (which is the behavior I would expect, since I didn't set the custom signature flag in the driver definition).

FWIW, here is a very experimental build of my MPEG-2 plugin with priority = 1. It's far from being finished, but it does actually work:

http://fcchandler.home.comcast.net/MPEG2.zip (82K)

To repro, try to open an MPEG-2 file with the extension ".mpg" and you'll see what I mean. You can only do it by explicitly choosing "MPEG-2" from the dropdown list.


EDIT: Since posting the above, I've discovered two additional bits of info:

If I go ahead and implement the DetectBySignature() function, and set the custom signature flag in the driver description, then it solves my problem.

If I don't set the custom signature flag, then VirtualDub's internal MPEG import filter always takes precedence, even when the file has a .vob extension! ohmy.gif

Posted by: ale5000 Oct 1 2007, 09:15 AM
Can you add .mpeg additionally to .mpg in your plug-in?
Try to open a vob crash VirtualDub.

Posted by: phaeron Oct 2 2007, 05:20 AM
w00t!!!! biggrin.gif

I found the bug in the host code -- the problem is that when no custom signature function is provided, the host code returns a weak match, which is overridden by the default MPEG plugin's strong match. I'll fix in 1.6.6, but in the meantime, you've already found the workaround of always having a custom signature function. It'll cause your plugin to be loaded and unloaded all the time, but that's not too bad for now.

Found a bug in the plugin, btw -- it's returning false on SetTargetFormat(0, false). I guess I'd better get cracking on finishing the documentation. This is basically just a broken out version of the internal setTargetFormat(), where format zero means default format. This is causing output playback on default settings to fail.

Posted by: fccHandler Oct 2 2007, 08:52 PM
QUOTE (phaeron @ Oct 2 2007, 01:20 AM)
Found a bug in the plugin, btw -- it's returning false on SetTargetFormat(0, false).

Funny, I never tested Color Depth = Autoselect! (I had long ago saved my default as YUY2.) Thanks for the info; it's fixed now.

I have a question about audio. Let's say for the sake of argument that the plugin can't support the GetDirectFormat() call for the audio stream. (Perhaps it's some kind of stream that won't work in AVI.) The API says that direct stream copy won't be possible for that stream; fair enough.

But when a video stream fails GetDirectFormat(), the plugin can still decompress it internally and send it on, and VirtualDub simply works with a mutually-agreed-upon kPixFormat. However, when an audio stream fails GetDirectFormat(), I don't see any other way for audio to be passed. It looks like we lose, period.

Is that true, or have I missed something?

Posted by: phaeron Oct 3 2007, 05:04 AM
You are correct. That's why the internal MPEG-1 decoder plugin exposes an audio stream that simply says it is PCM -- it invisibly handles the decompression during the read() call. The only real difference between the current API and one that could expose raw I/O and a decoder is that the latter would allow for parallelism. That would be nice, but it didn't seem like something that would be viable to put in V1 of the API anyway, given that nothing else in the app would exercise it. There are also other complications, such as the fact that the current MPEG-1 audio stream code bends over backwards to preread enough data to avoid glitching, and it's unclear how that would generalize. I'm open for suggestions, though.

Now, an interesting side case is if you have a format which CAN be represented in a WAVEFORMATEX, but for which a decoder isn't generally available. I've been reworking the internal audio handling on the side to support internal audio codecs, so there's some possibilities here. Right now the API's basically just a simpler form of the ACM API, though.

Posted by: fccHandler Oct 3 2007, 06:51 AM
QUOTE (phaeron @ Oct 3 2007, 01:04 AM)
You are correct. That's why the internal MPEG-1 decoder plugin exposes an audio stream that simply says it is PCM -- it invisibly handles the decompression during the read() call.

You read my mind. smile.gif

That's precisely the scenario I'd like to avoid in the new input file plugin API. The usual complaint is that Direct Stream Copy doesn't work as it should, and I think it's a valid complaint.

For a plugin developer, the current API presents a dilemma... If my plugin doesn't support GetDirectFormat(), then I lose the audio, period. If my plugin does support GetDirectFormat(), then I'm stuck with that format only. If my host can't find a compatible ACM codec for that format, then decoding fails on the host side, and there's nothing I can do to help him. Even if my plugin knows how to decode the audio internally, it won't be given a chance to do so.

QUOTE
There are also other complications, such as the fact that the current MPEG-1 audio stream code bends over backwards to preread enough data to avoid glitching

Honestly, I think you're the only one bending over backwards to achieve "perfect" MPEG decompression from a random starting point! I think MPEG decoders recover pretty quickly, and any glitch at the break will be minimal and brief, and not worth worrying about.

Even if you disagree with that, I still tend to view this as solely the plugin's problem, and not the host's problem at all. I don't really see that this concern has any bearing on how the API should work.

QUOTE
I'm open for suggestions, though.

Well, my only suggestion is to make the audio stream source more like the video stream source. IVDXVideoDecoder has the SetTargetFormat() and SetDecompressedFormat() functions, which lets the host and plugin pass the video in a mutually accepted generic format, even when Direct Stream Copy is unsupported.

How about a mutually acceptable generic PCM format for the audio source? This would be the format used in "Full Processing" mode exclusively. Meanwhile, the raw format (whatever it may be) could still be used in "Direct Stream Copy" mode, if the plugin supports that feature.

Posted by: -SPM-Mad Oct 4 2007, 01:19 AM
Listening to you two talking is like listening to some geek kind of precious music ^^

Sorry for interrupting, go on =)

Posted by: phaeron Oct 4 2007, 05:17 AM
QUOTE

Honestly, I think you're the only one bending over backwards to achieve "perfect" MPEG decompression from a random starting point! I think MPEG decoders recover pretty quickly, and any glitch at the break will be minimal and brief, and not worth worrying about.

Even if you disagree with that, I still tend to view this as solely the plugin's problem, and not the host's problem at all. I don't really see that this concern has any bearing on how the API should work.


While I admit I hate hearing oinks on seeks, it's not simply a question of an audible glitch -- the decoder also has to be able to estimate how many samples were lost due to the compressed data that could not be decoded so that a skew isn't introduced. That's simple for CBR. It isn't possible for VBR without a priori knowledge of the previous frames. This issue thus definitely has a bearing on the API because there has to be some way to convey that knowledge. For video this isn't a big deal as there is a fairly well established convention of frame dependencies and preroll frames, and the video decoder model handles this. There isn't as good of a convention for audio other than the "throw bytes at the audio decoder and hope it figures out the garbage at the beginning" model, which yes, I do dislike. It makes my audio decoder fire all sorts of asserts.

QUOTE

Well, my only suggestion is to make the audio stream source more like the video stream source. IVDXVideoDecoder has the SetTargetFormat() and SetDecompressedFormat() functions, which lets the host and plugin pass the video in a mutually accepted generic format, even when Direct Stream Copy is unsupported.

How about a mutually acceptable generic PCM format for the audio source? This would be the format used in "Full Processing" mode exclusively. Meanwhile, the raw format (whatever it may be) could still be used in "Direct Stream Copy" mode, if the plugin supports that feature.


That is definitely an option, and some precedent in the audio filter API... but note that the video decoding API is based on discrete samples, whereas most audio decoders like byte streams instead, so there's a little more API design involved than that.

I'm thinking something like this:

  • The audio decoder model is fairly simple in that it translates starting time/sample positions into a starting read point plus an offset. The starting read point is at the beginning of a frame, with the frames being predetermined by the plugin with a scan if necessary, but frames are opaque to the host.
  • The host begins reading at the determined start point and pushing it through the audio decoder.
  • The audio decoder receives the offset from the audio decoding model and uses it to properly handle the preload at the beginning of the stream.
  • Audio decoding is done via a stream model, similar to ACM.


One thing that is missing here is that the host can't determine when to stop reading data except by when enough decompressed data is received. Not sure it's worth trying to add an API for that, given that ACM doesn't offer such ability.

The current internal audio decoding API in my sb2 branch, btw, looks like this:
CODE

// VDWaveFormat == WAVEFORMATEX
class VDINTERFACE IVDAudioCodec {
public:
virtual ~IVDAudioCodec() {}
virtual void Shutdown() = 0;

virtual bool IsEnded() const = 0;

virtual unsigned GetInputLevel() const = 0;
virtual unsigned GetInputSpace() const = 0;
virtual unsigned GetOutputLevel() const = 0;
virtual const VDWaveFormat *GetOutputFormat() const = 0;
virtual unsigned GetOutputFormatSize() const = 0;

virtual void  Restart() = 0;
virtual bool  Convert(bool flush, bool requireOutput) = 0;

virtual void  *LockInputBuffer(unsigned& bytes) = 0;
virtual void  UnlockInputBuffer(unsigned bytes) = 0;
virtual const void *LockOutputBuffer(unsigned& bytes) = 0;
virtual void  UnlockOutputBuffer(unsigned bytes) = 0;
virtual unsigned CopyOutput(void *dst, unsigned bytes) = 0;
};


Side note: I just realized that there's no provision in the input plugin API for obtaining a window handle for displaying progress API. What are you using for the parent hwnd?

Posted by: fccHandler Oct 4 2007, 07:12 AM
QUOTE (phaeron @ Oct 4 2007, 01:17 AM)
There isn't as good of a convention for audio other than the "throw bytes at the audio decoder and hope it figures out the garbage at the beginning" model, which yes, I do dislike.

I don't dislike it myself. In fact, the "throw bytes at the decoder" model is the one I'm most accustomed to dealing with, oddly enough. smile.gif

To be honest, I still prefer my idea about having an agreed-upon generic PCM format for Full Processing Mode, and another "anything goes" format for Direct Stream Copy, laying the responsibility squarely on the plugin to generate an AVI-compatible compressed audio format, if it intends to support DSC.

But ultimately it's your API, and you're the boss. I'll do my best to eat whatever you dish out.


QUOTE
Side note: I just realized that there's no provision in the input plugin API for obtaining a window handle for displaying progress API. What are you using for the parent hwnd?

I tried several ideas to get a handle to VirtualDub's main window, but none of them worked. In the end I settled for GetActiveWindow(), and that seemed to give the result I wanted.

Note that VirtualDub's window is not disabled, and it still accepts UI. My progress window steals the foreground using the DS_SETFOREGROUND bit.

Here is tonight's build, BTW:
http://fcchandler.home.comcast.net/MPEG2.zip (86K)

As soon as I finish cleaning out some cruft, I'll start hosting GPL source on my web page.

Posted by: fccHandler Oct 5 2007, 01:45 AM
OK, plugin is up:

http://fcchandler.home.comcast.net/Plugins/MPEG2/

But I ask that everyone be aware of two things. VirtualDub's API isn't rock solid yet, and neither is the plugin. If VirtualDub crashes while using the plugin, and it isn't a known issue, please post the full crash report.

Here are the known issues so far:

  • "Video/Frame Rate/Inverse telecine" tends to crash the plugin immediately, and the crash report isn't very helpful.

  • Direct Stream Copy of MPEG audio is not possible yet.

  • Previously chosen audio streams are not remembered in jobs.

  • For AC-3 decompression, you must have AC3ACM installed.

  • Audio skew report in File Information may not be accurate.

Currently, I'm trying to have any nonzero audio skew handled internally by the plugin, and the skew report is purely informative. However, it may not be entirely accurate because I'm not tracking the PTS very well yet. I need to work on this problem.

Posted by: Moitah Oct 5 2007, 04:45 AM
This is really cool, fccHandler biggrin.gif.

Okay, I noticed a crash a while back while testing the demo input plugin from the SDK, and it happens with this one too. So this isn't your fault fccHandler. It only happens when http://rbtray.sourceforge.net/ is running. RBTray runs in the background and lets you minimize any program to the tray by right clicking on its minimize button, so it involves some kind of hooking, I guess it's conflicting with VirtualDub. Crash report is http://www.moitah.net/misc/crashinfo-rb.txt.

After I exit RBTray, it works fine when I load files by drag/drop, or by File > Open but only when MPEG-2 file type is selected. With file type all, it crashes like http://www.moitah.net/misc/crashinfo-ofd.txt. I'm not sure if this is something to worry about, maybe it will be fine once the non-custom-signature thing is fixed in VD 1.7.6.

EDIT: I meant VD 1.7.6 of course, not 1.6.6 smile.gif. I must have copied that from an above post.

Posted by: Gromozeka Oct 5 2007, 04:48 AM
My VirtualDub 1.7.5 is crashed
Only this:

http://imageshack.us

You can make wmv plugin?smile.gif

Posted by: fccHandler Oct 5 2007, 05:26 AM
Gromozeka:
If you can make this crash happen again, please click on the second button to save a "crashlog.txt" in VirtualDub's folder. Then open that file in Notepad, and cut and paste the contents here.

Your crash suggests that somebody isn't honoring the CPU flags, either the MPEG-2 decoder or Priss. I'll check into it, but it will be easier for me if you post the full crash log.

QUOTE (Gromozeka @ Oct 5 2007, 12:48 AM)
You can make wmv plugin?

Yes, I've already started on it. smile.gif

Posted by: fccHandler Oct 5 2007, 05:56 AM
QUOTE (Moitah @ Oct 5 2007, 12:45 AM)
After I exit RBTray, it works fine when I load files by drag/drop, or by File > Open but only when MPEG-2 file type is selected.  With file type all, it crashes like http://www.moitah.net/misc/crashinfo-ofd.txt.  I'm not sure if this is something to worry about, maybe it will be fine once the non-custom-signature thing is fixed in VD 1.6.6.

That one is weird, because it crashes in something called "mmfinfo.dll", which appears immediately after VirtualDub calls my DetectBySignature() function.

According to Google, mmfinfo seems to be a legitimate Matroska shell extension thingy. Unfortunately I don't know how it is involved in this crash...

FWIW, my VirtualDub doesn't crash using drag/drop, or file type all. I think I'll just wait for VirtualDub 1.7.6 and see if that makes a difference.

Posted by: Gromozeka Oct 5 2007, 10:15 AM

wmv plugin will have the decoder or it is necessary to install ffdshow? smile.gif

My crashinfo:
http://rapidshare.com/files/60409470/crashinfo.txt.html

Posted by: gss Oct 5 2007, 11:13 AM
One more crashinfo...
http://rapidshare.com/files/60418378/crashinfo.txt.html

Posted by: fccHandler Oct 5 2007, 06:23 PM
QUOTE (Gromozeka @ Oct 5 2007, 06:15 AM)
wmv plugin will have the decoder or it is necessary to install ffdshow? smile.gif

It won't have a decoder built-in.

I was wrong about your crash, it has nothing to do with the CPU flags. Unfortunately it isn't clear to me what is happening in any of the crashes so far. sad.gif

They do have one thing in common, they all crash very soon after the DetectBySignature() function, which I think strongly implicates the API or plugin.

I'll probably need to reproduce a crash before I can try to debug it, so if anyone can upload an MPEG file that crashes, that would be mighty helpful.

Posted by: heustess Oct 5 2007, 06:40 PM
crashinfo.txt

VirtualDub crash report -- build 28225 (release)
--------------------------------------

Disassembly:
cc001c40: 0000 add [eax], al
cc001c42: 0000 add [eax], al
cc001c44: 0000 add [eax], al
cc001c46: 0000 add [eax], al
cc001c48: 0000 add [eax], al
cc001c4a: 0000 add [eax], al
cc001c4c: 0000 add [eax], al
cc001c4e: 0000 add [eax], al
cc001c50: 0000 add [eax], al
cc001c52: 0000 add [eax], al
cc001c54: 0000 add [eax], al
cc001c56: 0000 add [eax], al
cc001c58: 0000 add [eax], al
cc001c5a: 0000 add [eax], al
cc001c5c: 0000 add [eax], al
cc001c5e: 0000 add [eax], al
cc001c60: 0000 add [eax], al
cc001c62: 0000 add [eax], al
cc001c64: 0000 add [eax], al
cc001c66: 0000 add [eax], al
cc001c68: 0000 add [eax], al
cc001c6a: 0000 add [eax], al
cc001c6c: 0000 add [eax], al
cc001c6e: 0000 add [eax], al
cc001c70: 0000 add [eax], al
cc001c72: 0000 add [eax], al
cc001c74: 0000 add [eax], al
cc001c76: 0000 add [eax], al
cc001c78: 0000 add [eax], al
cc001c7a: 0000 add [eax], al
cc001c7c: 0000 add [eax], al
cc001c7e: 0000 add [eax], al
cc001c80: 0000 add [eax], al
cc001c82: 0000 add [eax], al
cc001c84: 0000 add [eax], al
cc001c86: 0000 add [eax], al
cc001c88: 0000 add [eax], al
cc001c8a: 0000 add [eax], al
cc001c8c: 0000 add [eax], al
cc001c8e: 0000 add [eax], al
cc001c90: 0000 add [eax], al
cc001c92: 0000 add [eax], al
cc001c94: 0000 add [eax], al
cc001c96: 0000 add [eax], al
cc001c98: 0000 add [eax], al
cc001c9a: 0000 add [eax], al
cc001c9c: 0000 add [eax], al
cc001c9e: 0000 add [eax], al
cc001ca0: 0000 add [eax], al
cc001ca2: 0000 add [eax], al
cc001ca4: 0000 add [eax], al
cc001ca6: 0000 add [eax], al
cc001ca8: 0000 add [eax], al
cc001caa: 0000 add [eax], al
cc001cac: 0000 add [eax], al
cc001cae: 0000 add [eax], al
cc001cb0: 0000 add [eax], al
cc001cb2: 0000 add [eax], al
cc001cb4: 0000 add [eax], al
cc001cb6: 0000 add [eax], al
cc001cb8: 0000 add [eax], al
cc001cba: 0000 add [eax], al
cc001cbc: 0000 add [eax], al
cc001cbe: 0000 add [eax], al
cc001cc0: 0000 add [eax], al
cc001cc2: 0000 add [eax], al <-- FAULT
cc001cc4: 0000 add [eax], al
cc001cc6: 0000 add [eax], al
cc001cc8: 0000 add [eax], al
cc001cca: 0000 add [eax], al
cc001ccc: 0000 add [eax], al
cc001cce: 0000 add [eax], al
cc001cd0: 0000 add [eax], al
cc001cd2: 0000 add [eax], al
cc001cd4: 0000 add [eax], al
cc001cd6: 0000 add [eax], al
cc001cd8: 0000 add [eax], al
cc001cda: 0000 add [eax], al
cc001cdc: 0000 add [eax], al
cc001cde: 0000 add [eax], al
cc001ce0: 0000 add [eax], al
cc001ce2: 0000 add [eax], al
cc001ce4: 0000 add [eax], al
cc001ce6: 0000 add [eax], al
cc001ce8: 0000 add [eax], al
cc001cea: 0000 add [eax], al
cc001cec: 0000 add [eax], al
cc001cee: 0000 add [eax], al
cc001cf0: 0000 add [eax], al
cc001cf2: 0000 add [eax], al
cc001cf4: 0000 add [eax], al
cc001cf6: 0000 add [eax], al
cc001cf8: 0000 add [eax], al
cc001cfa: 0000 add [eax], al
cc001cfc: 0000 add [eax], al
cc001cfe: 0000 add [eax], al
cc001d00: 0000 add [eax], al
cc001d02: 0000 add [eax], al
cc001d04: 0000 add [eax], al
cc001d06: 0000 add [eax], al
cc001d08: 0000 add [eax], al
cc001d0a: 0000 add [eax], al
cc001d0c: 0000 add [eax], al
cc001d0e: 0000 add [eax], al
cc001d10: 0000 add [eax], al
cc001d12: 0000 add [eax], al
cc001d14: 0000 add [eax], al
cc001d16: 0000 add [eax], al
cc001d18: 0000 add [eax], al
cc001d1a: 0000 add [eax], al
cc001d1c: 0000 add [eax], al
cc001d1e: 0000 add [eax], al
cc001d20: 0000 add [eax], al
cc001d22: 0000 add [eax], al
cc001d24: 0000 add [eax], al
cc001d26: 0000 add [eax], al
cc001d28: 0000 add [eax], al
cc001d2a: 0000 add [eax], al
cc001d2c: 0000 add [eax], al
cc001d2e: 0000 add [eax], al
cc001d30: 0000 add [eax], al
cc001d32: 0000 add [eax], al
cc001d34: 0000 add [eax], al
cc001d36: 0000 add [eax], al
cc001d38: 0000 add [eax], al
cc001d3a: 0000 add [eax], al
cc001d3c: 0000 add [eax], al
cc001d3e: 0000 add [eax], al

Built on KOS-MOS on Sat Sep 29 12:55:33 2007 using compiler version 1400

Windows 6.0 (Windows Vista build 6000) []

EAX = 05d5fc20
EBX = 00000000
ECX = 00000000
EDX = 000000ff
EBP = 0000000f
ESI = 01422780
EDI = 00000000
ESP = 05d5fbb0
EIP = cc001cc2
EFLAGS = 00010246
FPUCW = ffff027f
FPUTW = ffffffff

Crash reason: Access Violation

Crash context:
An out-of-bounds memory access (access violation) occurred at cc001cc2...

...reading address CC001CC2...

...while running thread "Processing" (thread.cpp:152).

Pointer dumps:

EAX 05d5fc20: ffffff80 00000000 0000000f 00000000 ffffff80 00000000 00000000 00000000
ESI 01422780: 005b64fc 04e00020 00000000 00000000 00000000 00000000 00000000 00000000
ESP 05d5fbb0: 00412ace 05d5fc20 05d5fd1c 00000000 01422780 05d5fdb0 014223e0 01422878
05d5fbd0: 01530000 00000000 00003bf8 000007ff 013f0000 00000000 0000077f 015300c4
05d5fbf0: 01532ce0 00000801 014e7770 01530000 01530000 004e7770 00000001 100016ff
05d5fc10: 00000001 05d5fc40 027d8918 02870f20 ffffff80 00000000 0000000f 00000000

Thread call stack:
00412ace: VBitmap::BitBlt()
100016ff: MPEG2!000016ff
005146ad: VDPostCheckExternalCodeCall()
004638d9: VDExternalCodeBracket::~VDExternalCodeBracket()
004147b4: CVideoTelecineRemover::ProcessIn()
0047401c: VDDubProcessThread::WriteVideoFrame()
77a02447: ntdll!RtlTryEnterCriticalSection [779a0000+618e6+b61]
77a0214c: ntdll!RtlTryEnterCriticalSection [779a0000+618e6+866]
77a02447: ntdll!RtlTryEnterCriticalSection [779a0000+618e6+b61]
77a0214c: ntdll!RtlTryEnterCriticalSection [779a0000+618e6+866]
0058a986: malloc()
004777bf: VDStreamInterleaver::PushStreams()
004749d7: VDDubProcessThread::ThreadRun()
779ff870: ntdll!NtDuplicateObject [779a0000+5f864+c]
7694a9d1: kernel32!DuplicateHandle [76920000+2a969+68]
0050dc97: VDThread::StaticThreadStart()
00590178: _callthreadstartex()
0059021d: _threadstartex@4()
76963833: kernel32!BaseThreadInitThunk [76920000+43821+12]
779da9bd: ntdll!LdrInitializeThunk [779a0000+3a970+4d]

-- End of report

Posted by: KornX Oct 5 2007, 06:44 PM
Hi fcchandler,

are you planning a plugin for asf/wmv too?
Or some other formats?

KornX

Posted by: fccHandler Oct 5 2007, 07:15 PM
QUOTE (KornX @ Oct 5 2007, 02:44 PM)
are you planning a plugin for asf/wmv too?
Or some other formats?

Yes, you haven't been reading the thread. I've already started one for ASF/WMV. smile.gif

In other news, I just spent the last half hour opening just about every MPEG I could find, about 80 files, one after the other. I never saw any crashes, but I began to see some alarming memory usage. By the time I ended my session, VirtualDub's memory use had climbed to 110 MB, with no files open. I could be wrong, but I have the feeling that something isn't right about that...

I also noticed a cosmetic bug (perhaps intentional). When closing a video file, the timeline doesn't reset.


@heustess:
I got a similar crash when I tried to use Inverse Telecine in VirtualDub. I'll try to track that down.

Posted by: Gromozeka Oct 5 2007, 07:26 PM
fcchandler
Hold my piece of video smile.gif
http://rapidshare.com/files/60511270/Proba.mpg.html
You asked it? Or I have not correctly translated from English on Russian? biggrin.gif

Posted by: fccHandler Oct 5 2007, 07:42 PM
Thank you! But this doesn't crash on my computer. I opened it and played it OK in VirtualDub. Is there anything else I need to do to reproduce your crash?

Posted by: Gromozeka Oct 5 2007, 07:51 PM
I do not know!
But VirtualDub crashed at the majority of people!
Here at anybody from my friends has not opened correctly sad.gif

Posted by: heustess Oct 5 2007, 08:08 PM
@fccHandler:
The problem must be with inverse telecine (an important feature). VirtualDub did not crash when I tried the same m2v and wav input without using inverse telecine. Is this a problem with your plugin or VirtualDub-1.7.5 itself?

Posted by: fccHandler Oct 5 2007, 08:17 PM
QUOTE (heustess @ Oct 5 2007, 04:08 PM)
@fccHandler:
The problem must be with inverse telecine (an important feature). VirtualDub did not crash when I tried the same m2v and wav input without using inverse telecine. Is this a problem with your plugin or VirtualDub-1.7.5 itself?

Yes, I knew about the problem with IVTC before I posted the plugin (see previous page, list of known issues). I don't know yet where the fault lies, but I'll be looking into it.

Posted by: phaeron Oct 5 2007, 08:50 PM
Problem's on my end in the plugin code. I'll see if I can push out a fixed test release of 1.7.6 later today.

Updated
Docs are slightly out of date -- dibalignment=true on the second parameter to SetTargetFormat() requires DIB-compatible layout, i.e. bottom-up orientation and DWORD aligned scanlines for RGB.

Posted by: fccHandler Oct 5 2007, 09:16 PM
QUOTE (phaeron @ Oct 5 2007, 04:50 PM)
Problem's on my end in the plugin code. I'll see if I can push out a fixed test release of 1.7.6 later today.

Excellent!

QUOTE
dibalignment=true on the second parameter to SetTargetFormat() requires DIB-compatible layout, i.e. bottom-up orientation and DWORD aligned scanlines for RGB.

Actually I'm not even checking that parameter, I'm just defaulting to DWORD-aligned scanlines regardless. Should I not?

And just to clarify, if useDIBAlignment is true, you're saying I must return a bottom-up bitmap (with a negative pitch, I presume). If useDIBAlignment is false, do I return a top-down bitmap with a positive pitch?


EDIT: Hmm, I'm receiving a SetTargetFormat() call with format = kPixFormat_YUV420_Planar, and useDIBAlignment = true. I'm not quite sure how to handle that one. Do I align the scanlines, or just the planes? And should the pitches be negative (I'm thinking no)?

Posted by: phaeron Oct 5 2007, 10:21 PM
The purpose of that parameter is to optimize the decoding process for when a DIB is necessary. Specifically, if it doesn't require extra work to provide a DIB compatible layout, then this option avoids an extra memory copy when writing the data directly into AVI or passing it off to a video codec.

If the parameter is true, then for RGB formats, pitch needs to be exactly -ceil(w*bitdepth/32)*4. For YCbCr formats, it needs to be -ceil(w*bitdepth/8).

If the parameter is false, then you have the freedom to choose a more suitable alignment and orientation. In particular, scanlines can be aligned to 8 or 16 bytes.

Posted by: fccHandler Oct 5 2007, 10:53 PM
Should the pitch be negative for planar YUV420 also? That seems kind of strange to me. (EDIT: Nevermind, that was a dumb question.)

Also, is this at all related to the problem with IVTC? Because I'm testing a lot of target format variations in my plugin and so far it isn't fixing that particular crash.

I understand the purpose of the useDIBAlignment parameter a little better now. But it seems to me that if everything is working as it should, the sign of the pitch won't matter as long as the data pointer is set correctly (first scanline if pitch is positive, or last scanline if pitch is negative). The worst that could go wrong is you get an upside-down picture, but not a crash, right?

What I'm thinking (to simplify my code) is just to ALWAYS use a DIB compatible layout everywhere...


EDIT: Ah, that decision IS making a difference. I'm already finding places in the decoder which are not "negative pitch safe," so to speak. smile.gif

EDIT: I've just noticed that "Fast Recompress" mode doesn't seem to work using the MOCRAP, FLIC, or MPEG-2 plugins. I get a "Video format negotiation failed" error every time. I tested Xvid, WMV9, and Huffyuv codecs.

Posted by: phaeron Oct 6 2007, 01:47 AM
Whoops, you're right, YCbCr formats should use a positive pitch, not negative. What's actually causing the crash is an internal problem though -- the format information's getting scrambled.

Use this version -- it should work a bit better:

http://www.virtualdub.org/beta/VirtualDub-1.7.6-test1.zip
http://www.virtualdub.org/beta/VirtualDub-1.7.6-test1-AMD64.zip
http://www.virtualdub.org/beta/VirtualDub-1.7.6-test1-src.7z

I'll see if I can track down what's causing the fast recompress problem.

Posted by: fccHandler Oct 6 2007, 07:10 AM
Great work! The IVTC problem seems to be fixed. I wonder if this will fix those other odd crashes too...

Also, I don't need to implement the DetectBySignature() function anymore, so that part is fixed too. But it seems that I must still run at priority > 0 to override VirtualDub's internal MPEG driver. If I run at priority 0, there is nothing my plugin can do to claim the file, no way, no how. But maybe that's intentional...

For now, I'm going back to work on the WMV plugin.

Posted by: Gromozeka Oct 6 2007, 07:38 AM
This file crashed in virtualDub 1.7.6:
http://rapidshare.com/files/60609665/video.mpv.html

My crashinfo:
http://rapidshare.com/files/60609923/crashinfo.txt.html

This file does not open in VirtualDub mpeg2 1.6.19 But opens in virtualDubmod (such happened and with other files in VirtualDub mpeg2 1.6.19):

http://imageshack.us

I think it because the videofile has no audio of a stream

Posted by: fccHandler Oct 6 2007, 08:10 AM
QUOTE (Gromozeka @ Oct 6 2007, 03:38 AM)
This file crashed in virtualDub 1.7.6:
http://rapidshare.com/files/60609665/video.mpv.html

Strange... I don't have a problem with that file, using VirtualDub-MPEG2 1.6.19, or VirtualDub 1.7.6 with the MPEG-2 plugin.

There was a problem with .m2v files giving an "Out of memory" error in a previous release of VirtualDub-MPEG2 1.6.19, but that problem was fixed. Make sure you are using the latest build 24586:

http://fcchandler.home.comcast.net/stable

Sorry, I don't know why VirtualDub 1.7.6 crashed. sad.gif

Posted by: Gromozeka Oct 6 2007, 08:30 AM
I using version VirtualDub mpg2 build 24570 - ooops
But VirtualDub 1.7.6 does not work with mpeg2 plugin. But what speaks mine scrashinfo (I it has attached in the previous message)?
sad.gifsad.gifsad.gif

Posted by: fccHandler Oct 6 2007, 08:42 AM
QUOTE (Gromozeka @ Oct 6 2007, 04:30 AM)
But what speaks mine scrashinfo (I it has attached in the previous message)?

Unfortunately, it doesn't reveal the cause of the crash. sad.gif

Posted by: Gromozeka Oct 6 2007, 08:52 AM
Really it only at me bug? There can be you will make while full version VirtualDub mpeg2 1.7.6? Excuse that so I bother
Sorry, I badly speak English

Posted by: fccHandler Oct 6 2007, 09:33 AM
QUOTE (Gromozeka @ Oct 6 2007, 04:52 AM)
Really it only at me bug?

No, I've received several bug reports today from many people. Have patience; we're working on them.

QUOTE
you will make while full version VirtualDub mpeg2 1.7.6?

I don't know yet... Ask me again in two weeks. tongue.gif

Posted by: Gromozeka Oct 6 2007, 09:43 AM
QUOTE
I don't know yet...  Ask me again in two weeks. tongue.gif

Really you will forget about it? rolleyes.gif

Posted by: pintcat Oct 6 2007, 12:07 PM
I think it's easier to handle the import of foreign video formats by a plug-in. So you don't have to compile a complete new build every time a new version of VDub is released.
Btw no crashes for me so far. I just tested VDub 1.7.5 and MPEG2 Plug-in 1.0 with several videos (MPEG1 & 2).

Posted by: Gromozeka Oct 6 2007, 12:25 PM
It is certainly better to make perfectly working plug-in, but the plug-in does not work for several people

Posted by: pintcat Oct 6 2007, 12:54 PM
Well, it doesn't work, yet. But the development has just started, so be a bit patient.
After some more testing, I've found a bug for myself: The picture cropping doesn't work anymore! VirtualDub hangs itself right after clicking the 'Cropping' button in the filter window (it's a total crash, so no crash report possible, sorry). Tested with VDub 1.7.5, MPEG2 plug-in 1.0 & 1.1 and several videos. After removing the plug-in and using VDub's native MPEG1 import filter, everything works fine again.

Posted by: squid_80 Oct 6 2007, 02:12 PM
A crash log that I don't think matches any of the others:
CODE
VirtualDub crash report -- build 28234 (release)
--------------------------------------

Disassembly:
10015240: 198b480485c9    sbb    [ebx-367afbb8], ecx
10015246: 7412            jz     1001525a
10015248: 8b4608          mov    eax, [esi+08h]
1001524b: 8b4804          mov    ecx, [eax+04h]
1001524e: 8bd1            mov    edx, ecx
10015250: 894e08          mov    [esi+08h], ecx
10015253: 8b4204          mov    eax, [edx+04h]
10015256: 85c0            test   eax, eax
10015258: 75ee            jnz    10015248
1001525a: 8b4608          mov    eax, [esi+08h]
1001525d: 85c0            test   eax, eax
1001525f: 7432            jz     10015293
10015261: 8b4808          mov    ecx, [eax+08h]
10015264: 85c9            test   ecx, ecx
10015266: 57              push   edi
10015267: 8b3d04a10110    mov    edi, [1001a104]
1001526d: 741a            jz     10015289
1001526f: 90              nop    
10015270: 8b4608          mov    eax, [esi+08h]
10015273: 8b4808          mov    ecx, [eax+08h]
10015276: 50              push   eax
10015277: 894e08          mov    [esi+08h], ecx
1001527a: ffd7            call   edi
1001527c: 8b5608          mov    edx, [esi+08h]
1001527f: 8b4208          mov    eax, [edx+08h]
10015282: 83c404          add    esp, 04h
10015285: 85c0            test   eax, eax
10015287: 75e7            jnz    10015270
10015289: 8b4608          mov    eax, [esi+08h]
1001528c: 50              push   eax
1001528d: ffd7            call   edi
1001528f: 83c404          add    esp, 04h
10015292: 5f              pop    edi
10015293: 5e              pop    esi
10015294: c3              ret    
10015295: cc              int    3
10015296: cc              int    3
10015297: cc              int    3
10015298: cc              int    3
10015299: cc              int    3
1001529a: cc              int    3
1001529b: cc              int    3
1001529c: cc              int    3
1001529d: cc              int    3
1001529e: cc              int    3
1001529f: cc              int    3
100152a0: 56              push   esi
100152a1: 8bf1            mov    esi, ecx
100152a3: 8b16            mov    edx, [esi]
100152a5: 8b4608          mov    eax, [esi+08h]
100152a8: 42              inc    edx
100152a9: 85c0            test   eax, eax
100152ab: 8916            mov    [esi], edx
100152ad: c7460400000000  mov    dword ptr [esi+04h], 00000000
100152b4: 741c            jz     100152d2
100152b6: 8b4808          mov    ecx, [eax+08h]
100152b9: 85c9            test   ecx, ecx
100152bb: 7415            jz     100152d2
100152bd: 8d4900          lea    ecx, [ecx+00h]
100152c0: 8b4608          mov    eax, [esi+08h]
100152c3: 8b4808          mov    ecx, [eax+08h]
100152c6: 8bd1            mov    edx, ecx
100152c8: 894e08          mov    [esi+08h], ecx
100152cb: 8b4208          mov    eax, [edx+08h]      <-- FAULT
100152ce: 85c0            test   eax, eax
100152d0: 75ee            jnz    100152c0
100152d2: 6a0c            push   0ch
100152d4: ff15dca00110    call   dword ptr [1001a0dc]
100152da: 8b4c240c        mov    ecx, [esp+0ch]
100152de: 8908            mov    [eax], ecx
100152e0: 8b5608          mov    edx, [esi+08h]
100152e3: 895004          mov    [eax+04h], edx
100152e6: 8b4e08          mov    ecx, [esi+08h]
100152e9: 83c404          add    esp, 04h
100152ec: 85c9            test   ecx, ecx
100152ee: 7403            jz     100152f3
100152f0: 894108          mov    [ecx+08h], eax
100152f3: c7400800000000  mov    dword ptr [eax+08h], 00000000
100152fa: 894608          mov    [esi+08h], eax
100152fd: 8b06            mov    eax, [esi]
100152ff: 48              dec    eax
10015300: 5e              pop    esi
10015301: c20400          ret    0004
10015304: cc              int    3
10015305: cc              int    3
10015306: cc              int    3
10015307: cc              int    3
10015308: cc              int    3
10015309: cc              int    3
1001530a: cc              int    3
1001530b: cc              int    3
1001530c: cc              int    3
1001530d: cc              int    3
1001530e: cc              int    3
1001530f: cc              int    3
10015310: 53              push   ebx
10015311: 56              push   esi
10015312: 8bf1            mov    esi, ecx
10015314: 8b4608          mov    eax, [esi+08h]
10015317: 85c0            test   eax, eax
10015319: 57              push   edi
1001531a: c7460400000000  mov    dword ptr [esi+04h], 00000000
10015321: 741f            jz     10015342
10015323: 8b4804          mov    ecx, [eax+04h]
10015326: 85c9            test   ecx, ecx
10015328: 7418            jz     10015342
1001532a: 8d9b00000000    lea    ebx, [ebx+00]
10015330: 8b4608          mov    eax, [esi+08h]
10015333: 8b4804          mov    ecx, [eax+04h]
10015336: 8bd1            mov    edx, ecx
10015338: 894e08          mov    [esi+08h], ecx
1001533b: 8b4204          mov    eax, [edx+04h]
1001533e: 85c0            test   eax, eax

Built on KOS-MOS on Fri Oct 05 16:10:09 2007 using compiler version 1400

Windows 5.2 (Windows XP build 3790) [Service Pack 2]

EAX = 002e0025
EBX = 0228952c
ECX = 00ffffff
EDX = 00ffffff
EBP = 02289528
ESI = 02289540
EDI = 02289518
ESP = 002cf7ed
EIP = 100152cb
EFLAGS = 00010206
FPUCW = 027f
FPUTW = ffff

Crash reason: Access Violation

Crash context:
An out-of-bounds memory access (access violation) occurred in module 'events'...

...reading address 01000007.

Pointer dumps:

EAX   002e0021: 20002e00 00002e00 ff000000 00ffffff 00000000 00000000 00000000 00000000
EBX   02289528: 005cd978 00000002 02289528 0228af80 0228afae 0228afae 00000001 00000000
ESI   02289540: 00000001 00000000 00ffffff 0228b14a 00090004 000c0190 0070002a 0061006c
EDI   02289518: 00000000 02282d30 0311f3d8 02282d94 005cd978 00000002 02289528 0228af80
ESP   002cf7e9: ff000000 02289510 10007ecc 02289510 2c004dca 18022895 ec022895 08002cf8
     002cf809: 10000000 01022895 80000000 cc0228af 9b005cda 4c000004 28002cf8 00005ade
     002cf829: 8e000000 10004dd1 01002cfe 94000000 00002cf9 40000000 58000000 60002cf8
     002cf849: 880228af 40002cf9 ff005adf 97ffffff e8004d08 40002cf8 40000000 40002cf9
EBP   02289528: 005cd978 00000002 02289528 0228af80 0228afae 0228afae 00000001 00000000
     02289548: 00ffffff 0228b14a 00090004 000c0190 0070002a 0061006c 00620079 00630061
     02289568: 0000006b 00460020 00040004 000a0194 00690028 0074006e 00720065 0061006e
     02289588: 0029006c 006d0000 00040013 000c0188 005c43a4 00000001 02289630 02289640

Thread call stack:
100152cb: events!addCompPtr [10000000+c420+8eab]
10007ecc: events!00007ecc
10002cff: events!00002cff

-- End of report
I get this whenever I try and open a .m2v demuxed from .ts with projectx. Same thing happens when trying to open .vob files.

Posted by: squid_80 Oct 6 2007, 02:24 PM
Wait a second; events.dll is part of Trillian. I closed Trillian and it works perfectly fine.

Posted by: GrofLuigi Oct 6 2007, 04:25 PM
QUOTE (squid_80 @ Oct 6 2007, 04:24 PM)
Wait a second; events.dll is part of Trillian. I closed Trillian and it works perfectly fine.

Yep, that's a nasty one - hooking into windows whoknows what. I've experienced crashes with it by itself when I couldn't shutdown windows (total slowdown of everything).

BTW, what's with the windows build?

GL

Posted by: squid_80 Oct 6 2007, 04:42 PM
QUOTE
Yep, that's a nasty one - hooking into windows whoknows what. I've experienced crashes with it by itself when I couldn't shutdown windows (total slowdown of everything).
I don't think trillian's at fault - a little while after closing it I started getting crashes again, this time in module p4exp - part of Perforce.
QUOTE
BTW, what's with the windows build?

Windows xp x64.

I tried compiling the input plugin using VS2005 and running vdub from the debugger and I get a VC++ runtime error - Buffer overrun detected. But it doesn't tell me where this is occurring and as soon as I close the message box the process terminates and the debugger says everything finished normally.

Posted by: Moitah Oct 6 2007, 04:54 PM
I think the RBTray, mmfinfo, and Trillian crashes are all related. These DLLs are loaded into the VirtualDub.exe process. For RBTray and Trillian because they set hooks, and mmfinfo because it's a shell extension that's loaded by the file browse dialog box. Maybe VirtualDub is trying to call into the input plugin DLL but it gets the handle to the wrong DLL. Just guessing, I don't know too much about how this kind of stuff works.

The easiest way to reproduce it would be to run RBTray, you can grab it http://www.moitah.net/misc/RBTray_3.3_Mod.zip. Just start RBTray.exe and it will run in the background. When using input plugins, it causes crashes consistently on both computers I've tried.

Posted by: squid_80 Oct 6 2007, 05:08 PM
I was thinking they'd have to be related too, p4exp.dll handles perforce's explorer integration.

Posted by: fccHandler Oct 6 2007, 07:00 PM
QUOTE (pintcat @ Oct 6 2007, 08:54 AM)
The picture cropping doesn't work anymore! VirtualDub hangs itself right after clicking the 'Cropping' button in the filter window.

I can confirm this with 1.7.6 test1 also. Except for IVTC (which is fixed now), this is the only other crash I've been able to reproduce. And it's a nasty one; VirtualDub hangs and has to be forcibly ended.

It also hangs with MOCRAP and FLIC, however, I was able to pull up the cropping window once with a FLIC loaded. Attempting to pull it up a second time caused it to hang.

Posted by: phaeron Oct 6 2007, 08:15 PM
I've fixed the cropping crash.

The miscellaneous DLL issues are due to a problem with the plugin load/unload logic in VirtualDub, which I'm currently trying to debug. The reason for the miscellaneous random DLL crashes is that nobody rebases their DLLs and thus they all load at 0x10000000... the bug is causing those DLLs to be unloaded by accident. Neither I nor fccHandler probably saw it because we were loading the plugin via the /F command line switch, which locks the DLL in memory. Do that to workaround the problem for now.

Will release a 1.7.6 test-2 once I've got this figured out.

Update:
http://www.virtualdub.org/beta/VirtualDub-1.7.6-test2.zip
http://www.virtualdub.org/beta/VirtualDub-1.7.6-test2-AMD64.zip
http://www.virtualdub.org/beta/VirtualDub-1.7.6-test2-src.7z

Posted by: Moitah Oct 6 2007, 09:16 PM
That fixed the crash with RBTray smile.gif. Unfortunately now it crashes the 2nd time I open a file that relies on an input plugin (with or without RBTray running). I tested with both MPEG2 and MOCRAP. Crash report is http://www.moitah.net/misc/crashinfo-ro.txt.

Posted by: fccHandler Oct 6 2007, 09:41 PM
Just noticed that Fast Recompress mode is working again. Thanks! cool.gif

Posted by: Gromozeka Oct 6 2007, 10:00 PM
OOOPS

This file has been opened VirtualDub-1.7.6-test2 correctly:
http://rapidshare.com/files/60758162/video.m2v.html

This file has been opened VirtualDub-1.7.6-test2 incorrectly:
http://rapidshare.com/files/60760213/Video_2.mpg.html

My crashinfo:
http://rapidshare.com/files/60758292/crashinfo.txt.html

Posted by: fccHandler Oct 6 2007, 10:39 PM
Did you open the second one after the first one, without quitting VirtualDub? That crashes mine too, but only with 1.7.6 test2. (See Moitah's post above.)

Posted by: phaeron Oct 7 2007, 12:06 AM
Found another place where pointers were not getting updated after reload. Fetch:

http://www.virtualdub.org/beta/VirtualDub-1.7.6-test3.zip
http://www.virtualdub.org/beta/VirtualDub-1.7.6-test3-AMD64.zip
http://www.virtualdub.org/beta/VirtualDub-1.7.6-test3-src.7z

Posted by: Gromozeka Oct 7 2007, 03:26 AM
Perfectly! VirtualDub-1.7.6-test3 does not crashed
smile.gifsmile.gifsmile.gifsmile.gifsmile.gifsmile.gifsmile.gifsmile.gifsmile.gifsmile.gifsmile.gifsmile.gifsmile.gifsmile.gif

Posted by: fccHandler Oct 7 2007, 06:38 AM
OK, here goes my first attempt at a WMV plugin:

http://fcchandler.home.comcast.net/Plugins/WMV/

I'm finding that VBR audio support in the current API seems ineffective. If I return IsVBR() = true, the playback does feel a bit different (but that might just be my imagination). However, I can't verify that my TimeToPositionVBR() and PositionToTimeVBR() functions are ever called by the host.

Posted by: heustess Oct 7 2007, 07:42 AM
At http://heustess.com/filmclips.htm all of the film clips except the first 3 are very short wmv with video and audio. I tried to load "Birthday Blues 1" into VirtualDub 1.7.6-test3 with the WMV plugin and wmv9VCMsetup.exe from Microsoft installed. I could get no audio (perhaps I am missing some codec). Would you guys please try one of these to see if you have the same problem?

Posted by: Gromozeka Oct 7 2007, 07:46 AM
http://imageshack.us

Posted by: fccHandler Oct 7 2007, 08:00 AM
@heustess:
I see audio tag 0x0161 with "birthdayblues1.wmv," and it opens and plays OK on my computer.

@Gromozeka:
Video stream "Decompressor = N/A" is not supposed to happen, ever... Can you post that WMV?

Posted by: phaeron Oct 7 2007, 08:16 AM
This should fix VBR support in the input plugin API:
http://www.virtualdub.org/beta/VirtualDub-1.7.6-test4.zip
http://www.virtualdub.org/beta/VirtualDub-1.7.6-test4-AMD64.zip
http://www.virtualdub.org/beta/VirtualDub-1.7.6-test4-src.7z

If IsVBR() returns true, the TimeToPositionVBR() and PositionToTimeVBR() routines should be called. The main difference you'll notice is whether rendering starts at the correct location.

Posted by: Gromozeka Oct 7 2007, 08:16 AM
Gspot
WMV2 WMP v8
Mime Type: video/x-ms-asf
File Length Correct
Sys Bitrate: 1378 kb/s
0x0161 (WMA v2) CBR
0x01:44100Hz 64 kb/s tot (2 chnls)
File Type: ASF (.WMA/.WMV)
640 x 480

Posted by: heustess Oct 7 2007, 08:19 AM
@fccHandler:
The video plays fine for me but there is no audio. I get the following message: "No audio decompressor could be found to decompress the source audio format. (source format tag: 0161)" I guess I need to find and install the proper audio decompressor. Thanks for trying it.

Posted by: Gromozeka Oct 7 2007, 08:58 AM
fccHandler:
When i install wmv2 from ffdshow - virtualDub test 3 and test4 has open this wmv mellow.gif May be you must added decoder wmv1, wmv2 and wmv3 on your plugin?

Posted by: KornX Oct 7 2007, 09:15 AM
QUOTE (fccHandler @ Oct 5 2007, 09:15 PM)
QUOTE (KornX @ Oct 5 2007, 02:44 PM)
are you planning a plugin for asf/wmv too?
Or some other formats?

Yes, you haven't been reading the thread. I've already started one for ASF/WMV. smile.gif


Me s´cusi!
But the questions with the other formats is still a little open!
I had imagined about wmv/asf, but some others also?
(I had kinda hoped 'bout evo smile.gif)

Enjoy the day,

KornX

Posted by: phaeron Oct 7 2007, 06:35 PM
Hey guys, it's not fccHandler's job to write all of the input plugins. We need more people. smile.gif

Posted by: pintcat Oct 7 2007, 07:42 PM
True. Regarding the WMV plug-in, I've spotted a little bug when configuring a filter with a preview option. Once the option is enabled and you try to move the timeline in the small preview window to somewhere in the middle of the movie, VDub completely crashes and has to be forced to shut down. Same effect with the preview in the cropping window. Watching the video in the main window still works fine.

Posted by: tateu Oct 7 2007, 08:22 PM
QUOTE (phaeron @ Oct 7 2007, 06:35 PM)
Hey guys, it's not fccHandler's job to write all of the input plugins. We need more people. smile.gif

I've started porting my avisynth quicktime reader. It seems to be working...so far. I hope to have a test version ready within a week or so.

Posted by: heustess Oct 7 2007, 08:28 PM
QUOTE (phaeron @ Oct 7 2007, 06:35 PM)
Hey guys, it's not fccHandler's job to write all of the input plugins. We need more people. smile.gif

I certainly agree. However, would it be possible, fccHandler, to tell me what audio codec you have installed that allows you to play the audio in "Birthday Blues 1"? All the wmvs on my site have this type of audio and can be played in Windows Media Player but not in VirtualDub (even with all your great plugins).

Posted by: fccHandler Oct 7 2007, 08:40 PM
QUOTE (pintcat @ Oct 7 2007, 03:42 PM)
I've spotted a little bug when configuring a filter with a preview option. Once the option is enabled and you try to move the timeline in the small preview window to somewhere in the middle of the movie, VDub completely crashes and has to be forced to shut down. Same effect with the preview in the cropping window.

I can't reproduce that. Although I did notice that the filter preview can be extremely slow when dragging the timeline pointer around, to the point where you might think it hanged.

I uploaded a new build today with some fixes:

http://fcchandler.home.comcast.net/Plugins/WMV/

If you're opening a WMV with VBR audio, you'll also need the VirtualDub 1.7.6 test4 build (previous page) which greatly improves the sync.

Posted by: fccHandler Oct 7 2007, 08:50 PM
QUOTE (heustess @ Oct 7 2007, 04:28 PM)
would it be possible, fccHandler, to tell me what audio codec you have installed that allows you to play the audio in "Birthday Blues 1"?

Except for AC3ACM, I only have the audio codecs which came with Windows XP Pro SP2. I've never installed any others myself. However, I did install Windows Media Player 10, and I know it added and changed a lot of things. Which version of WMP do you have installed?

When I open birthdayblues1.wmv in the new version of my WMV plugin, the information dialog says "Windows Media Audio V2 (0x0161)".

Posted by: phaeron Oct 7 2007, 08:56 PM
I was able to reproduce the hang. What's happening is that the WMV plugin isn't setting the byte and sample count return values on a buffer-too-small error, which is causing the getFrame() routine to loop in some cases. I went ahead and changed the API to not require this as it's more consistent with AVIStreamRead() anyway. New version:

(deleted)

FYI, I had planned on releasing 1.7.6 this weekend to fix the nasty AMD64 crashes, but I'm going to hold this release until the input driver plugin API problems are worked out. Stay tuned for some updated docs, too.

Updated:
Test-5 pulled, still broken. Fixing

Posted by: fccHandler Oct 7 2007, 09:03 PM
QUOTE (phaeron @ Oct 7 2007, 04:56 PM)
the WMV plugin isn't setting the byte and sample count return values on a buffer-too-small error

That was actually one of the goofs I fixed in version 1.1, which is why I couldn't reproduce it.

Posted by: tateu Oct 7 2007, 09:08 PM
Is there a permanent place available to store default preferences for our plugin, instead of opening a dialog box for every new video, such as adding a new option to Main Menu -> Options -> Preferences?

Posted by: phaeron Oct 7 2007, 09:40 PM
No. If the extended options checkbox is checked in the open dialog or SHIFT is held when a file is selected on the MRU list, however, your input plugin will get calls to its options dialog call just like the internal plugins do.

Posted by: heustess Oct 7 2007, 10:12 PM
@fccHandler:
I have WMP11 that came with Vista Home Premium. I installed Windows Media Encoder and your AC3ACM and WMV plugin only and could not play video or audio in VirtualDub. After installing Microsoft's Codecs Installation Package for Windows Media Video 9 VCM (wmv9VCMsetup.exe) I could play the video but not the audio in VirtualDub. Perhaps WMP9 or WMP10 has the missing audio codec. My WMV information says " Compression: Unknown tag 0x0161".

Posted by: fccHandler Oct 7 2007, 10:40 PM
I believe the codec is msaud32.acm in my system32 folder. It has the same date as all of the original system files, so it probably came with Windows XP as part of Windows Media Player 9.

AFAIK, wmv9VCMsetup.exe only installs the video codec. But a Google search for "codecs installation package" brings up a lot of interesting links:

http://www.google.com/search?hl=en&safe=off&q=codecs+installation+package


everyone:
In other news, I just found out that neither of my plugins will work on Windows 98, due to a really stupid bug. I'll fix that in the next releases.

Posted by: phaeron Oct 7 2007, 11:56 PM
Sheesh, let's try this again. New update for host and SDK:

http://www.virtualdub.org/beta/VirtualDub-1.7.6-test6.zip
http://www.virtualdub.org/beta/VirtualDub-1.7.6-test6-AMD64.zip
http://www.virtualdub.org/beta/VirtualDub-1.7.6-test6-src.7z

http://www.virtualdub.org/beta/VDPluginSDK-0.6.zip

Test-6 fixes some rather nasty bugs in the streamGetFrame() path regarding null frames, which was causing all of the havoc in the filter preview. However, one consequence of the fixes is that I had to break the current version of fccHandler's MPEG-2 plugin (it periodically decodes duplicate frames). Here are the changes to watch out for:

  • The last parameter to IVDXVideoDecoder::DecodeFrame() was documented as a frame number -- it's actually a sample number. In addition, the render path was always passing down garbage for this value, which is now fixed.
  • Some code paths were passing empty samples to the decoder with the frame number as the sample number. Knowing the frame to decode for a null frame is necessary to handle B frame decoding, and this ended up being quite a mess because it meant that the video decoder had to do frame<->sample translation. The last two parameters to the decode call are now always the sample number, and -1 is passed for the sample number for the null case in order to distinguish it from a legitimate frame. This is the change that breaks the MPEG-2 plugin.
  • The render path was always passing preroll=false. (There may be a bit of speed improvement with MPEG formats as a result, due to omitted unnecessary framebuffer conversions when decoding I/P frames on the way to B frames.)
  • The path that the filter preview was using was not doing frame translation correctly. IVDXVideoDecoderModel::SetDesiredFrame() now always receives a sample number as documented.
  • TimeToPositionVBR() and PositionToTimeVBR() was documented as always being required -- this was false and the docs now say that they are only called if IsVBR() returns true.


Posted by: fccHandler Oct 8 2007, 02:21 AM
Phaeron: Thank you for all your work on this.

As far as breaking the plugin, the fix was pretty simple. (Either that, or I'm misunderstanding the whole concept, which is quite probable...) Anyway, I uploaded a new build:

http://fcchandler.home.comcast.net/Plugins/MPEG2

In the case of the MPEG-2 plugin, a "reconstructed" frame (one with the RFF flag set) is never actually available in any buffer. Instead, it will be laced together when requested, if "is_preroll" is false. The workaround for DecodeFrame() being sent -1 was simply:

if (streamFrame < 0) streamFrame = targetFrame;

In other words, the decoder maintains enough state in itself to figure out if the target frame is present in its buffers, or needs to be decoded, or needs to be laced. Thus the interface it aims to present to the host (and must present) is one in which each frame is one sample, all of them in display order.

BTW, making the WMV plugin was so much easier because I could simply use the default I/P decoding model. That thing is a godsend. cool.gif

Posted by: phaeron Oct 8 2007, 02:47 AM
Nope, you got it right. In fact, that's similar to the fix I made for the internal MPEG-1 driver.

As for the default I/P driver, that's surprising since the implementation in the host is only about a page long. It's the I/P/B case that I worry about, because that's rather challenging to get right. I couldn't think of a straightforward default model that would be general enough.


Posted by: heustess Oct 8 2007, 03:01 AM
For future reference:
fccHandler was right again! For a wmv to play audio from the WMV plugin and VirtualDub in Vista with WMP11 you need to obtain msaud32.acm and install it in C:\Windows\System32.

If you can't view or hear WMVs with VirtualDub, this solved my problem:

1. Download and install http://download.microsoft.com/download/9/8/a/98a6cb2d-6659-485e-b1f9-2c0d9bf6c328/wmv9VCMsetup.exe
2. Download but don't install http://download.microsoft.com/download/4/6/1/461e47d9-bff9-4d3f-b97c-93476581f6ef/wmp6cdcs.exe
3. Extract from wmp6cdcs.exe only msaud.inf and msaud32.acm. (I use WinRAR to do this.)
4. Right click msaud.inf and select install.

Thanks again for all your help!

Posted by: fccHandler Oct 8 2007, 04:28 AM
I'm seeing a reproducible hang in the filter preview of the latest test version, with the WMV plugin. To repro, open any WMV. Add the brightness/contrast filter and click preview. In the preview window, move the slider about a minute into the movie. Now switch to another maximized application which covers VirtualDub's window, then switch back to VirtualDub. When I do this, it hangs for a period of time which depends on how far I moved the slider, as if it's decoding ALL of the frames up to the preview frame...

It doesn't happen with the MPEG-2 plugin, perhaps because it uses a custom decoder model?

MOCRAP and FLIC seem broken in the filter preview also, but maybe that's because of the changes in the API.

Anyway, I'll keep messing with the plugin code; maybe it's something I'm doing wrong...


Update: It must be a bug in the default I/P decoding model. When I implemented a custom decoding model, the problem disappeared. I've uploaded version 1.2 as a temporary fix:

http://fcchandler.home.comcast.net/Plugins/WMV/

Posted by: phaeron Oct 8 2007, 05:48 AM
Fixed:
http://www.virtualdub.org/beta/VirtualDub-1.7.6-test7.zip
http://www.virtualdub.org/beta/VirtualDub-1.7.6-test7-AMD64.zip
http://www.virtualdub.org/beta/VirtualDub-1.7.6-test7-src.7z

Posted by: fccHandler Oct 8 2007, 06:20 AM
QUOTE (phaeron @ Oct 8 2007, 01:48 AM)
Fixed

Thanks!

Posted by: fccHandler Oct 8 2007, 07:20 AM
Another bug, sorry. sad.gif

To repro, open some WMV (e.g., the "birthdayblues1.wmv" which heustess posted), and jump to some position near the middle. If you start "input playback" from that position, audio and video are in sync. If you start "output playback" from that same position, audio and video are not in sync.

FWIW, this happens regardless of whether I use the default I/P decoding model or not. I'm guessing it's a flaw in the VBR audio support.


EDIT: Clicking the system menu [X] in the File Information dialogs doesn't work in my plugins. I'll fix that in the next releases.

Posted by: Moitah Oct 8 2007, 10:09 PM
Avery, I saw a few things in the documentation that I suspect may be mistakes.

In Video decoder model:

next_sample = nearest_key(desired_frame);

Shouldn't that be next_frame?

In Autodetect:

Each pair matches only if the bits in the file byte match those in the mask byte, for all bits set in the mask byte.

Shouldn't that be match byte?

I'm not done reading it all yet but I'll let you know if I spot anything else.

Posted by: phaeron Oct 9 2007, 06:57 AM
@fccHandler:
Oh no, that's quite alright. Actually, this is a bug that I had thought I'd seen but wasn't able to reproduce.

http://www.virtualdub.org/beta/VirtualDub-1.7.6-test8.zip
http://www.virtualdub.org/beta/VirtualDub-1.7.6-test8-AMD64.zip
http://www.virtualdub.org/beta/VirtualDub-1.7.6-test8-src.7z

@Moitah:
Both are erroneous, but in the first case, it's actually that all of the parts that say "frame" should actually say "sample."

Posted by: pintcat Oct 9 2007, 08:18 PM
I think I've found a small but very strange bug and it might be that I'm the only user who's having this one. Here's what happens: I open a custom mpeg file (no matter if mpeg1 or 2) with the latest releases of VirtualDub 1.7.6 & MPEG2 plug-in. Then I configure XviD for the 1st pass and start the process with the 'Run video analysis pass' option. Until now everything works great and the pass file is written correctly. But then when finishing the pass, VirtualDub crashes every time! The strange thing is that this happens only if I use 'Run video analysis pass" in conjunction with XviD. If I do the 1st pass with 'Save as AVI...' everything works. Also, if I use another codec which offers 2 pass encoding, no crash occurs. Btw for XviD I'm using Koepi's XviD build v1.2.127. Never tested another build till now. I know this crash isn't very important because the pass is already finished at the time VDub crashes; it's just a bit annoying. At last I have this crashreport - I hope it will help a little bit...


VirtualDub crash report -- build 28280 (release)
--------------------------------------

Disassembly:
10001920: f1 db 0f1h
10001921: 1800 sbb [eax], al
10001923: 10cb adc bl, cl
10001925: 16 push ss
10001926: 0010 add [eax], dl
10001928: 90 nop
10001929: 90 nop
1000192a: 90 nop
1000192b: 90 nop
1000192c: 90 nop
1000192d: 90 nop
1000192e: 90 nop
1000192f: 90 nop
10001930: 56 push esi
10001931: 8b742408 mov esi, [esp+08h]
10001935: 8b460c mov eax, [esi+0ch]
10001938: 85c0 test eax, eax
1000193a: 7506 jnz 10001942
1000193c: 33c0 xor eax, eax
1000193e: 5e pop esi
1000193f: c22000 ret 0020
10001942: 8b44241c mov eax, [esp+1ch]
10001946: 53 push ebx
10001947: 55 push ebp
10001948: 57 push edi
10001949: 85c0 test eax, eax
1000194b: 7f18 jg 10001965
1000194d: 7c08 jl 10001957
1000194f: 8b6c2424 mov ebp, [esp+24h]
10001953: 85ed test ebp, ebp
10001955: 7312 jnc 10001969
10001957: 8b442430 mov eax, [esp+30h]
1000195b: 8b6c242c mov ebp, [esp+2ch]
1000195f: 89442428 mov [esp+28h], eax
10001963: eb04 jmp 10001969
10001965: 8b6c2424 mov ebp, [esp+24h]
10001969: 8b4e08 mov ecx, [esi+08h]
1000196c: 8b9190100000 mov edx, [ecx+1090]
10001972: 8b4204 mov eax, [edx+04h]
10001975: 50 push eax
10001976: 8b08 mov ecx, [eax]
10001978: ff510c call dword ptr [ecx+0ch]
1000197b: 8b4e0c mov ecx, [esi+0ch]
1000197e: 8bf8 mov edi, eax
10001980: c1e802 shr eax, 02h
10001983: 8b11 mov edx, [ecx]
10001985: 2401 and al, 01h
10001987: 50 push eax
10001988: ff522c call dword ptr [edx+2ch]
1000198b: 8b4e0c mov ecx, [esi+0ch]
1000198e: 8bc7 mov eax, edi
10001990: c1e803 shr eax, 03h
10001993: 8b11 mov edx, [ecx]
10001995: 2401 and al, 01h
10001997: 50 push eax
10001998: ff5230 call dword ptr [edx+30h]
1000199b: 8b4608 mov eax, [esi+08h]
1000199e: 8b4e0c mov ecx, [esi+0ch]
100019a1: 8a4075 mov al, [eax+75h]
100019a4: 8b11 mov edx, [ecx]
100019a6: 50 push eax
100019a7: ff5228 call dword ptr [edx+28h]
100019aa: 8b4e08 mov ecx, [esi+08h]
100019ad: 8b5160 mov edx, [ecx+60h]
100019b0: 8b1caa mov ebx, [edx+ebp*4] <-- FAULT
100019b3: 8d04aa lea eax, [edx+ebp*4]
100019b6: 8a542420 mov dl, [esp+20h]
100019ba: 84d2 test dl, dl
100019bc: 0f84f3000000 jz 10001ab5
100019c2: f6c301 test bl, 01h
100019c5: 0f8487000000 jz 10001a52
100019cb: 8b542428 mov edx, [esp+28h]
100019cf: 85d2 test edx, edx
100019d1: 7c7f jl 10001a52
100019d3: 7f04 jg 100019d9
100019d5: 85ed test ebp, ebp
100019d7: 7679 jbe 10001a52
100019d9: 8b40fc mov eax, [eax-04h]
100019dc: 8b4910 mov ecx, [ecx+10h]
100019df: d1fb sar ebx, 1
100019e1: d1f8 sar eax, 1
100019e3: 8bfb mov edi, ebx
100019e5: 53 push ebx
100019e6: c1e004 shl eax, 04h
100019e9: c1e704 shl edi, 04h
100019ec: 03c1 add eax, ecx
100019ee: 03f9 add edi, ecx
100019f0: 8b4e0c mov ecx, [esi+0ch]
100019f3: 89442424 mov [esp+24h], eax
100019f7: 8b01 mov eax, [ecx]
100019f9: ff5010 call dword ptr [eax+10h]
100019fc: 8be8 mov ebp, eax
100019fe: 8a470c mov al, [edi+0ch]
10001a01: 3c03 cmp al, 03h
10001a03: 0f8424040000 jz 10001e2d
10001a09: 83fd01 cmp ebp, 01h
10001a0c: 0f841b040000 jz 10001e2d
10001a12: 8b4e0c mov ecx, [esi+0ch]
10001a15: 6a01 push 01h
10001a17: 6a02 push 02h
10001a19: 8b11 mov edx, [ecx]
10001a1b: ff521c call dword ptr [edx+1ch]
10001a1e: 83 db 83h
10001a1f: fd std

Built on KOS-MOS on Mon Oct 08 23:30:35 2007 using compiler version 1400

Windows 5.1 (Windows XP x86 build 2600) [Service Pack 1]

EAX = 014e3600
EBX = 00bfae48
ECX = 014e3628
EDX = 014e47c8
EBP = 406d1388
ESI = 01d72040
EDI = 0000003f
ESP = 02fbfc84
EIP = 100019b0
EFLAGS = 00010206
FPUCW = ffff027f
FPUTW = ffffffff

Crash reason: Access Violation

Crash context:
An out-of-bounds memory access (access violation) occurred in module 'MPEG2'...

...reading address 030295E8...

...while running thread "Processing" (thread.cpp:152).

Pointer dumps:

EAX 014e3600: 00000000 00000000 01010003 00080100 014e4718 01d6fc30 00000010 000041cd
EBX 00bfae48: 005c11c4 005c11c8 000001ec 0000023c 005c11c0 0012fa50 00bfb11c 3f800000
ECX 014e3628: 1001f6b8 00000001 00004bb0 01d72c78 01df0048 01db4950 01dbb4c8 000041cc
EDX 014e47c8: 00000000 00000002 00000004 00000006 00000008 0000000a 0000000c 0000000e
ESI 01d72040: 1001f410 00000001 014e3628 01d72098 00001d03 00000000 01cf97b0 00000000
ESP 02fbfc80: 00000000 00bfc8f0 02fbfdc8 00bfae48 00bfc8f0 004db054 01d72040 00000000
02fbfca0: 00000000 00000000 ffffffff 00000000 406d1388 00000000 00bfc8f0 001689d8
02fbfcc0: 00bf7448 005ceaec 0000021c 02fbfdbc 005adfc0 00000000 00473ebd 005b7afe
02fbfce0: 00000000 00000000 ffffffff ffffffff 406d1388 00000000 02fbfe78 00bfae48

Thread call stack:
100019b0: MPEG2!000019b0
004db054: VDVideoSourcePlugin::streamGetFrame()
00473ebd: VDDubProcessThread::WriteVideoFrame()
0046c705: Dubber::Init()
77f431b7: ntdll!wcschr [77f40000+307c+13b]
77e5a65f: kernel32!WaitForSingleObjectEx [77e40000+1a5a2+bd]
77e5a652: kernel32!WaitForSingleObjectEx [77e40000+1a5a2+b0]
77e55e43: kernel32!SetEvent [77e40000+15e37+c]
00474a77: VDDubProcessThread::ThreadRun()
77f4119a: ntdll!RtlNtStatusToDosError [77f40000+116b+2f]
77f4119f: ntdll!RtlNtStatusToDosError [77f40000+116b+34]
77e5f02b: kernel32!DuplicateHandle [77e40000+1efb6+75]
77e5f02b: kernel32!DuplicateHandle [77e40000+1efb6+75]
00463b1a: VDThreadInitHandler()
00454502: ?$VDProtectedAutoScope1::?$VDProtectedAutoScope1()
0050e247: VDThread::StaticThreadStart()
00590708: _callthreadstartex()
005907ad: _threadstartex@4()
77e5d33b: kernel32!RegisterWaitForInputIdle [77e40000+1d2f8+43]

-- End of report

Posted by: fccHandler Oct 9 2007, 11:24 PM
I believe it crashed in my DecodeFrame() function because "streamFrame" was way out of bounds. I can guard against that in the next release, and it's good that you posted this because I was just about to upload it.

The original cause lies elsewhere, though, and I wasn't able to reproduce your crash. However, I am using a different build of Xvid (1.1.3) which I compiled myself.

Posted by: fccHandler Oct 10 2007, 03:21 AM
My FTP is broken tonight, so I can't update my plugins online. Bummer. sad.gif

In other news, I found that VirtualDub 1.7.6 test8 crashes if any plugin returns false in IVDXInputFile::GetVideoSource().

Posted by: Moitah Oct 10 2007, 04:51 AM
I have very basic FLV support working biggrin.gif:

user posted image

Need to fix it up a lot before it's ready for release.

Posted by: phaeron Oct 10 2007, 05:20 AM
Yeah, your website was a bit Comcastic when I tried to grab the latest plugins. Fortunately, I was able to figure out what happened anyway. The XviD codec is significant, but what's missing is that it has to be in B-frame mode.

http://www.virtualdub.org/beta/VirtualDub-1.7.6-test9.zip
http://www.virtualdub.org/beta/VirtualDub-1.7.6-test9-AMD64.zip
http://www.virtualdub.org/beta/VirtualDub-1.7.6-test9-src.7z

I had the no-video crash already fixed in the 1.7.6+N branch, but I went ahead and backported it since it's such a simple fix.

Posted by: fccHandler Oct 10 2007, 06:03 AM
MPEG-2 plugin v1.3 is up now. To the end user, not much has changed, but I found an awful lot of lurking bugs in the code, and I'm sure they would have bitten me someday...

http://fcchandler.home.comcast.net/Plugins/MPEG2/


QUOTE (phaeron @ Oct 10 2007, 01:20 AM)
The XviD codec is significant, but what's missing is that it has to be in B-frame mode.

Good call! I usually have B-frames disabled, and I didn't think to enable them. Thank you for test9.


QUOTE (Moitah @ Oct 10 2007, 12:51 AM)
I have very basic FLV support working

Wow. That's gonna be cool. cool.gif

Posted by: Moitah Oct 10 2007, 08:50 AM
Avery,

Are you aware that VideoSource::GetSampleInfo is being called for the last dummy frame on the timeline? This causes MoCrap to crash too.

Posted by: Gromozeka Oct 10 2007, 12:35 PM
"I have very basic FLV support working ..."
Where I can download him? sad.gif

Posted by: pintcat Oct 10 2007, 10:06 PM
@fccHandler: Thank you for the fast support and your great work - I tested the new bug-fix of your MPEG2 plug-in with VirtualDub 1.7.6 test9 and it solves my little XviD problem! Unfortunately, this introduces another bug right in the filter/cropping preview (not again!): There's no preview available. No matter if you move the timeline cursor or you just skip single frames, no preview picture comes up.

Posted by: Moitah Oct 10 2007, 10:33 PM
I'll post what I have done of the FLV plugin in case someone wants to play with it. There is no audio support yet but I will be working on it tonight. It uses the FourCC "FLV1" for H.263 and "VP6F" for VP6, so you need a decoder to handle those. ffdshow-tryouts contains both, be sure to enable them in the VFW configuration.

http://www.moitah.net/download/latest/FLV_Input_Driver.zip [EDIT: Updated link]

Posted by: fccHandler Oct 11 2007, 12:07 AM
QUOTE (pintcat @ Oct 10 2007, 06:06 PM)
Unfortunately, this introduces another bug right in the filter/cropping preview (not again!)

This one I can reproduce, and I'll see if I can fix it ASAP.

EDIT: Found it, and it's embarrassing. I could swear I had already fixed this, yet the current version is still unfixed. I must be losing my mind... Anyway, it's definitely fixed now, and I'll upload a new version later tonight.

EDIT: Ah, that was painless. (The gods of Comcast are with me tonight!) Here you go:

http://fcchandler.home.comcast.net/Plugins/MPEG2

Posted by: fccHandler Oct 11 2007, 07:20 AM
QUOTE (Moitah @ Oct 10 2007, 06:33 PM)
I'll post what I have done of the FLV plugin in case someone wants to play with it.  There is no audio support yet but I will be working on it tonight.

Your plugin works great so far. I didn't notice any problems at all...

As for audio, the plugin API is a bit limited in that you can only pass the audio in one format. You can either decompress it internally and pass it on as uncompressed PCM, or you can pass the real compressed audio to the host and hope he figures out how to decompress it.

Anyway, keep up the good work. smile.gif

Posted by: Moitah Oct 11 2007, 07:35 AM
Thanks for testing it. I don't know if you looked at the code but I borrowed your VFW decoder class tongue.gif so thanks for that as well.

Most FLV files have MP3 audio. I'd like to pass the compressed MP3 frames but I'm not completely sure how to do it. I tried to do it similar to how VBR MP3 is written to AVI, with the sample rate = 44100 / 1152 for example, and nBlockAlign = 1152. Then each sample should correspond to 1 MP3 frame. I'm not having any luck so far, but it could be a really stupid mistake in the code, I haven't spent a lot of time debugging yet. Anyway, if Avery reads this maybe he can tell me if I'm going in the right direction with this...

EDIT: I think it's not my fault, but VirtualDub doesn't allow me to do it this way. When I check the audio by doing File > Save WAV and look at it in a hex editor, there are MP3 frames spaced every 1152 bytes with a bunch of 0's in between.

EDIT2: It works when I set nBlockAlign to the exact byte size of each MP3 frame, but I guess this wouldn't work all the time for CBR because of the way MP3 frames are padded, and for VBR I guess it wouldn't work at all.

EDIT3: Tomorrow I'll try it so that each sample is 1 byte, that is how CBR MP3 is written to AVI from what I understand.

Posted by: phaeron Oct 11 2007, 08:49 AM
I couldn't reproduce the end-frame issue, but I went ahead and added guards around all of the stream calls into the plugin to make sure it doesn't happen. There shouldn't be any places where VirtualDub actually cares what is returned for invalid frames.

http://www.virtualdub.org/beta/VirtualDub-1.7.6-test10.zip
http://www.virtualdub.org/beta/VirtualDub-1.7.6-test10-AMD64.zip
http://www.virtualdub.org/beta/VirtualDub-1.7.6-test10-src.7z

As for the VBR issue, you cannot currently return variable-sized frames from an audio stream. If you try, there is code in the audio path that traps it and corrects the sample sizes. The main code in current versions that doesn't like variable frame sizes is the audio pipe between the I/O and processing thread. I'm actually in the process of working through some of these issues, but it turns out there are a bunch of little problems in other places that I don't think even the modded versions addressed, such as what happens if the preview code is pushing the VBR audio into the waveOut device -- in that case the device can return only sample timestamps and the only way to handle audio sync properly is to maintain a running lookup table. Right now it just stutters horribly.

I won't say more than this for now, since I'll probably start pushing the code out for test after 1.7.6 finals and will explain the API solution at that point... but in the meantime, you need to do what the AVI code currently does and rewrite the format as CBR, which will work for at least decompressing the audio as long as you implement the VBR timing translation calls so the sync is correct.

Posted by: Gromozeka Oct 11 2007, 08:51 AM
And probably loadings d2v files or all vob's smile.gif

Posted by: Moitah Oct 11 2007, 08:59 AM
QUOTE (phaeron @ Oct 11 2007, 03:49 AM)
I couldn't reproduce the end-frame issue, but I went ahead and added guards around all of the stream calls into the plugin to make sure it doesn't happen.

Strange that you couldn't reproduce it, it happens every time for me. Just open test.mocrap and Ctrl+G to 73, or drag the seek bar all the way to the end, and crash (test9 but I think all the older ones did it too). But test10 does indeed fix it.

Thanks for the info about the VBR audio.

Posted by: pintcat Oct 11 2007, 05:57 PM
@fccHandler: Good job! Everything seem to work now with your latest release. Thanks again for the very fast and great support.

Posted by: Moitah Oct 11 2007, 08:28 PM
I have the audio part working but it will take some effort to get it completely correct especially for seeking. It turns out that FLV files sometimes have MP3 frames split across tags (a tag is similar to a chunk in AVI) so I need to actually parse all the audio bytes to find the MP3 frames. Each tag is timestamped though, which I could use instead, but it's not quite as accurate and I would rather do it properly.

EDIT: Here's another version you guys can play with if you want, it supports MP3 audio (the vast majority of FLV files) but the synch will probably be messed up until I can code it properly: http://www.moitah.net/download/latest/FLV_Input_Driver.zip [EDIT: Updated link]

Posted by: Loadus Oct 11 2007, 11:06 PM
@fcchandler:

Thanks from here too. Plugin works beautifully - good work, man.


@Moitah:

Just finished testing the FLV input - works, some clips show black but
they're probably VP6 or some other exotic video .. But all 'normal' clips
worked very well. Good job.

Posted by: Moitah Oct 12 2007, 02:55 AM
The 0.2.0 version will crash if the file doesn't have audio, will be fixed in the next release.

@Loadus: Thanks smile.gif. It does support VP6 if you have a recent ffdshow-tryouts build with VP6F VFW decoding enabled. Aside from that and H.263, the only other video codecs currently possible in FLV are Screen Video and Screen Video 2, I'm not exactly sure what those are, I guess for screen recording. It won't handle those but I haven't seen any FLV files in that format. As for audio, only MP3 works right now but I will support uncompressed PCM audio after I get the MP3 stuff fixed up. FLV also allows Nellymoser and ADPCM audio but I won't be able to support those.

Posted by: tateu Oct 12 2007, 03:09 AM
And here's the first release for quicktime video (mov, some mp4, etc.):

binary
http://www.tateu.net/software/dl.php?f=qtvd_bin

source code
http://www.tateu.net/software/dl.php?f=qtvd_src


"Quicktime.vdplugin" should go in your plugins32 folder and "Quicktime.ini" should go in the VirtualDub root folder.

There are several different modes that can be used to open a movie, these are specified in Quicktime.ini as "mode=." Mode=-1 and color=-1 are the recommended defaults but you can read about the different modes in "Quicktime_ReadMe.txt." Eventually, these options will be implemented as an "Ask for Extended Options Dialog."

Audio is currently not implemented and I am sure there are many bugs. Questions, comments, suggestions, whatever...are welcome.


I will also most likely...someday...implement my avisynth OMF importer.

Posted by: Moitah Oct 12 2007, 03:26 AM
@tateu: Wow, great job biggrin.gif. Works great on the files I tried, except for the ones I didn't have a decompressor for. Maybe you could show the FourCC in the "Could not init VFW" error message so we know which decompressor to look for. It's really cool that VirtualDub can open all these formats now biggrin.gif.

EDIT: Ah nice, I was able to switch to mode=0 to open the file and see the file information. It's Sorenson Video 3 which I found in ffdshow and enabled so now it works in mode=-1.

Posted by: Moitah Oct 12 2007, 06:16 AM
http://www.moitah.net/download/latest/FLV_Input_Driver.zip [EDIT: Updated link]

I implemented TimeToPositionVBR/PositionToTimeVBR based on the audio tag timestamps. It seems to work pretty well, maybe I'll just leave it like this, but I'm not sure yet. Also, PCM audio might work with this version, but I don't have a FLV file to test it with (only have one .flv with PCM but there's no video stream). The synch in most files is pretty good now. I did spot one file that was quite a bit off but it isn't a problem with the audio, rather because the framerate of the video was variable.

EDIT: I should warn everyone, it's a bad idea to direct stream copy the MP3 audio into an AVI. It doesn't play correctly in most players, maybe because the MP3 frames are split across the AVI chunks or something, I'm not sure.

Also if you just want to extract the MP3 without decompression, you might think to File > Save WAV and strip off the RIFF headers, but I don't recommend this because the end may be slightly truncated (I think this would be fixed by using ceil instead of rounding nAvgBytesPerSec, I'll consider doing that). Instead, I recommend http://www.moitah.net/.

EDIT2: I'm thinking about how to handle variable framerate videos because a handful of the FLVs I saved from YouTube are like this. I could pad gaps of missing frames with drop frames, it might not be too hard.

Posted by: fccHandler Oct 12 2007, 06:16 AM
I've uploaded a new build of my WMV plugin, which adds experimental support for loading WMA files (audio only):

http://fcchandler.home.comcast.net/Plugins/WMV

Posted by: tateu Oct 12 2007, 07:53 AM
Moitah, you're right, it should display the required codec info if it fails. In auto mode, I think it should fall back to using Quicktime API's if VFW fails. Otherwise, it's not much of an auto mode.


Hmm...I though I had checked what happens when you preview quicktime video in one of the filters, such as sharpen...I guess I didn't. In RGB24 & RGB32, the preview displays upside down, in YUY2 it is scrambled and in YV12 it crashes. I guess I'll have to fix that.

Posted by: Gromozeka Oct 12 2007, 07:53 AM
tateu, Moitah, phaeron, fccHandler
Thank you very much smile.gif

QUOTE
I will also most likely...someday...implement my avisynth OMF importer.

What is it??? smile.gif

Posted by: tateu Oct 12 2007, 08:06 AM
It's just another video container...Open Media Framework Interchange. It's the standard format that Avid's capture to. At work, we switched to an Avid editing system a few years ago; we had previously been using Avi based systems. The switch to an Avid was the reason I started working on Quicktime and OMF file import, in the first place.

Posted by: fccHandler Oct 12 2007, 08:11 AM
@Moitah:
So far, your latest FLV plugin works great for me. cool.gif

Posted by: XYZ Oct 12 2007, 08:22 AM
This is really great what is happening. I wish to thank you to all!

phaeron, could it be possible to expand this approach for support of output plug-ins as well?

fccHandler, how about a support for loading of successive VOB files in one go?

Posted by: Gromozeka Oct 12 2007, 09:02 AM
QUOTE
phaeron, could it be possible to expand this approach for support of output plug-ins as well?


For example mkv?

QUOTE
fccHandler, how about a support for loading of successive VOB files in one go?


It will be supported? smile.gif

P.S: flvPlugin not work - file opens, but not played sad.gif
http://rapidshare.com/files/62001036/460_med.flv.html

Posted by: Placio74 Oct 12 2007, 10:33 AM
QUOTE (Gromozeka @ Oct 12 2007, 09:02 AM)
...
P.S: flvPlugin not work - file opens, but not played sad.gif
http://rapidshare.com/files/62001036/460_med.flv.html

Switch-on VP6F in ffdshow VfW configuration?
Work for me with this sample.

Posted by: Loadus Oct 12 2007, 11:37 AM
QUOTE (Moitah @ Oct 11 2007, 08:55 PM)
@Loadus: Thanks smile.gif.  It does support VP6 if you have a recent ffdshow-tryouts build with VP6F VFW decoding enabled.

Kewl.
I have VP6 decoder installed, and some players show these (like GOM).
I don't know what these have eaten, but yes, have some:
http://www.loadusfx.net/physical.flv
http://www.loadusfx.net/storm.flv

If these work at your end then my decoders are screwed up. ;D

Posted by: Gromozeka Oct 12 2007, 11:54 AM
I installed other Ffdshow and put decoder vp6f - all files played! smile.gif)))))))))))))
But file info not work! sad.gif

Posted by: Placio74 Oct 12 2007, 01:29 PM
QUOTE (Loadus @ Oct 12 2007, 11:37 AM)
QUOTE (Moitah @ Oct 11 2007, 08:55 PM)
@Loadus: Thanks smile.gif.  It does support VP6 if you have a recent ffdshow-tryouts build with VP6F VFW decoding enabled.

Kewl.
I have VP6 decoder installed, and some players show these (like GOM).
...

DirectShow decoder?
GOM Player is DirectShow player and most other too.

VirtualDub not use DirectShow filters - required VfW codecs (or wrapper as ffdshow VfW).

Repeat...
Switch-on VP6F in ffdshow VfW configuration?
ffdshow video encoder configuration > Decoder > Codecs > VP6F (and FLV1)

Posted by: heustess Oct 12 2007, 02:58 PM
@fccHandler:
On [Input playback] of the short file maryann.wma downloaded from http://heustess.com/soundbytes.htm I get the following error message:

The audio codec reported an error while decompressing audio data. Error code 512 (ACMERR_NOTPOSSIBLE)

I also get this error message from the longer files downloaded from http://heustess.com/music.htm

Posted by: Gromozeka Oct 12 2007, 03:16 PM
QUOTE
On [Input playback] of the short file maryann.wma downloaded from http://heustess.com/soundbytes.htm I get the following error message:


But the truth - if played decompressed, but not filtered - right at the end shows the message: " The audio codec reported an error while decompressing audio data. Error code: 512 (ACMERR_NOTPOSSIBLE) "

Preview inpet - bad
Preview filtered - good

Posted by: tateu Oct 12 2007, 03:51 PM
QUOTE (tateu @ Oct 12 2007, 12:53 AM)
Hmm...I though I had checked what happens when you preview quicktime video in one of the filters, such as sharpen...I guess I didn't.  In RGB24 & RGB32, the preview displays upside down, in YUY2 it is scrambled and in YV12 it crashes.  I guess I'll have to fix that.

Well, I know why YUY2 and YV12 are broken. My import plugin can only decode to one color format at a time.

When you first open a video, VirtualDub calls the import plugin with SetTargetFormat(). It requests color formats in the following order. If the plugin returns false, it calls SetTargetFormat again with the next format in this list:
07 = kPixFormat_RGB888
08 = kPixFormat_XRGB8888
05 = kPixFormat_XRGB1555
00 = kPixFormat_Null (When this one gets called, I set it to the format requested by the user in Quicktime.ini)
04 = kPixFormat_Pal8

When you open the preview window for one of the filters (brightness, etc.) , VirtualDub calls the import plugin with SetTargetFormat() requesting color formats in the following order:
07 = kPixFormat_RGB888
08 = kPixFormat_XRGB8888
05 = kPixFormat_XRGB1555
04 = kPixFormat_Pal8

Notice that the filter preview never calls kPixFormat_Null. It only accepts video in RGB24, RGB32, RGB15 and PAL8. The other import plugins (Mpeg2, WMV and FLV) have methods that can change the decompression colorspace format on a per frame basis. My quicktime plugin does not and I am not sure what to do about it.

Possible solutions:
1) I could set up two decompression sessions if YV12 or YUY2 are selected as the main decompression colorspace. This sounds like a nasty solution to me, though. Just thinking about what I would have to add to the quicktime code makes my head hurt.

2) Decompress to YUY2/YV12 as usual and borrow code from somewhere that can convert a buffer in YV12/YUY2 format into RGB when a filter preview is requested.

3) Disable YUY2/YV12 altogether and only allow the plugin to decode to RGB.

And I still don't know why the RGB previews are upside down.

Posted by: Loadus Oct 12 2007, 04:18 PM
QUOTE (Placio74 @ Oct 12 2007, 07:29 AM)
QUOTE (Loadus @ Oct 12 2007, 11:37 AM)
QUOTE (Moitah @ Oct 11 2007, 08:55 PM)
@Loadus: Thanks smile.gif.� It does support VP6 if you have a recent ffdshow-tryouts build with VP6F VFW decoding enabled.

Kewl.
I have VP6 decoder installed, and some players show these (like GOM).
...

DirectShow decoder?
GOM Player is DirectShow player and most other too.

VirtualDub not use DirectShow filters - required VfW codecs (or wrapper as ffdshow VfW).

Repeat...
Switch-on VP6F in ffdshow VfW configuration?
ffdshow video encoder configuration > Decoder > Codecs > VP6F (and FLV1)

Aah, good point. There's no VP6 decoding in the ffdshow version I have, I'll have to get the latest.

Posted by: fccHandler Oct 12 2007, 06:17 PM
QUOTE (XYZ @ Oct 12 2007, 04:22 AM)
fccHandler, how about a support for loading of successive VOB files in one go?

I think it could only be done with a hack. The "append" function will never work for this, as too much info is destroyed and/or reorganized after the first file is parsed, and it isn't feasible to add additional files. Instead, I'm considering popping up a dialog allowing you to choose multiple files.

QUOTE (heustess @ Oct 12 2007, 10:58 AM)
@fccHandler:
On [Input playback] of the short file maryann.wma downloaded from http://heustess.com/soundbytes.htm I get the following error message:

The audio codec reported an error while decompressing audio data. Error code 512 (ACMERR_NOTPOSSIBLE)

I have the same problem. It happens in preview, but not in output playback. Changing "Audio / Error mode" doesn't make any difference. The error comes from the WMA codec on the host's side, and I don't know what causes it. Last night in the debugger, I thought I saw some exceptions in kernel32.

FWIW, if there's no video, the plugin returns IsVBR() = false for the audio stream. It seemed like IsVBR() = true made the playback even worse. Anyway, that's why I've logged this change as "experimental." smile.gif

Thanks for the links, BTW. I only had two WMA files handy to test with last night.

Posted by: Moitah Oct 12 2007, 07:01 PM
@Loadus: Yeah, it has to be a VFW decoder. http://ffdshow-tryout.sourceforge.net/ (not the official ffdshow) is the only decoder I know of that will work right now. It would be possible to make the On2 VP6 VFW decoder work but it doesn't right now. This is because I use the FourCC 'VP6F' (F indicates the Flash variety) which the On2 decoder doesn't recognize. However, as far as I know the only difference between regular VP6 and Flash VP6 is that the image is stored upside down. So I could use a FourCC that it recognizes such as 'VP62' and flip the image before handing it to VirtualDub. This would be nice because I came across one file (demo file on Adobe's site, haven't seen any like this in the wild) that the libavcodec decoder can't decode correctly, some strange bitstream option that hasn't been reverse engineered yet.

EDIT: Those files you posted work fine for me. storm.flv is variable framerate though so the synch is messed up. But when you look at the timestamps of VFR FLVs it's usually pretty obvious that they could be converted to constant framerate cleanly:
CODE
33
100
166
200
233
266
300
366
400

This one is just NTSC and most of the timestamps jump 33/34 ms, but for larger gaps drop frames could be inserted to maintain constant framerate.

Posted by: heustess Oct 12 2007, 07:11 PM
@fccHandler:
I don't know if it helps, but all of those wma files were created with Windows Media Encoder 9 Series with default settings except for -a_setting 20_22_2.

Posted by: Gromozeka Oct 12 2007, 07:33 PM
QUOTE
I'm considering popping up a dialog allowing you to choose multiple files.

Its very, very good idea! smile.gif smile.gif smile.gif

Posted by: Loadus Oct 13 2007, 12:29 AM
QUOTE (Moitah @ Oct 12 2007, 01:01 PM)
@Loadus: Yeah, it has to be a VFW decoder.

I always forget that. biggrin.gif

Where's that 'Directshow Input filter' for Virtualdub when you need one. wink.gif

Posted by: fccHandler Oct 13 2007, 06:20 AM
I've uploaded tonight's version of the MPEG-2 plugin:

http://fcchandler.home.comcast.net/Plugins/MPEG2

This experimental version will allow you to open multiple MPEG files. But I'm not really happy with this first attempt, and I guarantee that it will be completely rewritten before I'm finished with it. Therefore, please don't complain about any missing features just yet. I welcome any crash reports though...

The plugin will "virtually" join up to 16 files, of any type, and parse them all as a single MPEG. However, if the files you select were not meant to be joined together, well, you'll get what's coming to you. tongue.gif

Posted by: Gromozeka Oct 13 2007, 07:06 AM
QUOTE
I've uploaded tonight's version of the MPEG-2 plugin:


It is not work. It works as previous plugin sad.gif

Posted by: fccHandler Oct 13 2007, 07:14 AM
You have to check the "Ask for extended options after this dialog" checkbox when you open your MPEG file.

Posted by: Gromozeka Oct 13 2007, 08:04 AM
Vaooooooooooooo, he has opened all files and played his very good!
smile.gif)))))))))))))))))))))
THANKS!
If compile VirtualDub 1.7.6 + plugins32 + VirtualDubMod (mkv + subtitles & chapters) = virtualDub 2.x.x.
But its my fantasion

Posted by: Moitah Oct 13 2007, 08:07 AM
I tried out the drop frame idea for padding VFR->CFR and it works quite well. It actually was a lot easier than I expected it might be. So that will probably be in the next release, but I want to look through some more of my videos and make sure it doesn't mess up anything.

Posted by: Gromozeka Oct 13 2007, 08:13 AM
fccHandler
And it is possible to unite also wma, wmv or other format (flv or mp3?) smile.gif

Moitah
We wait smile.gif smile.gif smile.gif

Posted by: Moitah Oct 13 2007, 08:20 AM
I don't plan on allowing FLVs to be appended. If you really need to do it for some reason it would probably be better handled with AviSynth. Maybe something like:

DirectShowSource("file1.flv", fps=30, convertfps=true) ++ DirectShowSource("file2.flv", fps=30, convertfps=true)

Of course you need a DirectShow FLV splitter installed.

Posted by: Gromozeka Oct 13 2007, 08:54 AM
Directshow - it's I know, but VirtualDub can directstream copy overtake from flv and wmv in avi - without a compression

Posted by: phaeron Oct 13 2007, 09:06 AM
QUOTE

Notice that the filter preview never calls kPixFormat_Null. It only accepts video in RGB24, RGB32, RGB15 and PAL8. The other import plugins (Mpeg2, WMV and FLV) have methods that can change the decompression colorspace format on a per frame basis. My quicktime plugin does not and I am not sure what to do about it.


It's fairly easy for me to change the filter preview code to accommodate any format, but note that you'll probably still want to support an RGB format for best compatibility. I wouldn't be surprised if there was another portion of code that wanted RGB (scene detector comes to mind). I don't think I'd want to try fully lifting this restriction in 1.7.6 since it'd be a bigger change. The conversion code path doesn't have to be fast, since the render path can accommodate any supported format.

QUOTE

And I still don't know why the RGB previews are upside down.


Check that you are correctly linearizing the frame data layout. When the second parameter (useDIBAlignment) to SetTargetFormat() is NULL, you are required to lay out the frame buffer in DIB compatible fashion, which means bottom-up memory order for RGB.

Posted by: pintcat Oct 13 2007, 09:40 AM
@fccHandler: Your new MPEG2 plug-in worked fine for me. I've opened a video directly from DVD (5 VOBs in a row) and it did the job. The movie ran very smooth during preview. The only thing to complain is that video and audio were out of sync. But I think I can handle this with VDub's Interleave option. Besides, the ability to append several MPEGs to one big stream as a feature for your import plug-in is a VERY good idea, since I had to do this with other tools like SmartRipper or DGIndex. Now, importing an MPEG2 stream has been reduced to one single step, which is quite convenient. For me, VirtualDub makes the most significant improvements since it is able to handle external video import filters!

Posted by: Gromozeka Oct 13 2007, 10:49 AM
But VirtualDub can will use external video export filters? For example use matroska on an output

Posted by: fccHandler Oct 13 2007, 04:40 PM
QUOTE (pintcat @ Oct 13 2007, 05:40 AM)
I've opened a video directly from DVD (5 VOBs in a row) and it did the job. The movie ran very smooth during preview. The only thing to complain is that video and audio were out of sync.

If you are adding VTS_##_0.VOB, try it without.

BTW, I still have one peculiar VOB which I keep as an example. It starts with audio and video in sync, then the audio stream disappears during a copyright notice, and reappears later with a reset of the PTS. This causes a big delay in VirtualDub-MPEG2 and the MPEG-2 plugin. I keep it because someday I'd like to figure out a good way to deal with oddities like this, but to date I haven't.


@Gromozeka:
The WMV plugin still has some serious sync issues that I'm trying to find solutions for, so adding an Append feature is very low priority right now. I might try it later, after I get the other issues worked out.

Posted by: Gromozeka Oct 13 2007, 05:12 PM
fccHandler
Thanks
P.S: mpeg1 not splitting! sad.gif

Posted by: fccHandler Oct 13 2007, 09:29 PM
No, you can't join just anything. The feature is primarily intended for joining VOBs on DVDs. Other types of MPEG files won't usually work, because they are complete individual sequences, and the parser ends when it finishes parsing one sequence.

As I said, a generic "append" mechanism for MPEG is pretty much impossible with the current code, and the join feature is NOT a solution for that. Instead, it's just a workaround for sequences (like VOBs) which have been deliberately split into chunks.

I recommend http://www.tmpgenc.net/ for joining MPEG-1 files and MPEG-2 files which are not DVD VOBs.

Posted by: Gromozeka Oct 14 2007, 09:24 AM
fccHandler
QUOTE
I recommend TMPGEnc for joining MPEG-1 files and MPEG-2 files which are not DVD VOBs.


Thanks, I'm using avidemux smile.gif

Posted by: XYZ Oct 14 2007, 10:46 AM
fccHandler, I am really grateful for your work on MPEG-2 plug-in, but I have few suggestions and observations.

- Opening many successive VOB files is not very user-friendly, it involves almost same number of clicks and steps as manually appending files with VD built-in command. I think it would be better if your plug-in could select automatically all VOB files with a same suffix, as older version of DGindex did. You should at least support Shift+click and/or Ctrl+click in the open dialog.

- Memory is drastically lacking, it comes to 0 MB (installed 512 MB) and not released after parsing. Fortunately, I have installed resident FreeRAM XP Pro.

- During parsing MPEG-2 files, I/O activities of other applications are reduced and computer responses slowly, for example surfing Internet.

I just tried VirtualDub-MPEG2 and it has same problems. Parsing in VirtualDubMod, DGIndex 1.5.0 and Avidemux 2.4 works fine.

EDIT: considering load of sequential VOB files - the VD open dialog already has an option "Automatically load linked segments". Could you test this settings instead to require users to check "Ask for extended options after this dialog" and again check similar option in a new dialog?

Posted by: XYZ Oct 14 2007, 11:45 AM
QUOTE (fccHandler @ Oct 13 2007, 04:40 PM)
BTW, I still have one peculiar VOB which I keep as an example.  It starts with audio and video in sync, then the audio stream disappears during a copyright notice, and reappears later with a reset of the PTS.  This causes a big delay in VirtualDub-MPEG2 and the MPEG-2 plugin.  I keep it because someday I'd like to figure out a good way to deal with oddities like this, but to date I haven't.

Did you tried this VOB with DGIndex/Avidemux? How they responds with it? Do this VOB have multi-PGCs? If this is a case, maybe you should consider to integrate IFO parsing. In that way user could choose which angle/PGC wants, if VTS contains multiple of them.

Posted by: fccHandler Oct 14 2007, 04:47 PM
Regarding opening multiple files, I'll repeat what I said earlier:

QUOTE (fccHandler @ Oct 13 2007, 02:20 AM)
I'm not really happy with this first attempt, and I guarantee that it will be completely rewritten before I'm finished with it.  Therefore, please don't complain about any missing features just yet.


Regarding memory not being released, I thought I saw something similar after opening 80 MPEG files. I don't know yet why it happens.


QUOTE (XYZ @ Oct 14 2007, 07:45 AM)
Did you tried this VOB with DGIndex/Avidemux?

It was out of sync in DGIndex also. In fact, I got the VOB from a post in the DGIndex forum at Doom9. I kept it because it's such an odd case.

Posted by: Moitah Oct 14 2007, 09:26 PM
@phaeron: Do you plan on having a way for a plugin to report a non-zero start time of the audio stream relative to the start of the video stream? A way to change the audio skew correction programmatically by a plugin, for example. Or should it be up the plugin to handle this internally, by removing or duplicating audio frames at the beginning (this is what the MPEG2 plugin does if I understand correctly)?

Posted by: phaeron Oct 14 2007, 11:13 PM
I'm not going to comment on future plans because it wouldn't make any difference whether I said yes or no -- but for now, yes, the best approach is for the plugin to pad the beginning of the stream. This is particularly true if the plugin has special knowledge of a compressed stream and can pad it properly, versus blindly introducing runt samples at the start.

Posted by: fccHandler Oct 15 2007, 06:00 AM
I've added a checkbox in the "extended open" dialog of my MPEG-2 plugin which allows you to save an index when you open an MPEG file:

http://fcchandler.home.comcast.net/Plugins/MPEG2

The name of the index will be "[filename].idx". It's basically a giant memory dump of all of the info which was generated by the parser, including your chosen audio stream, and the names of multiple file parts (if any).

After this index is saved, if you open the base file again, the parser will find and use that index instead of reparsing the file(s), so re-opening is almost instantaneous. It works in jobs too.

Posted by: Gromozeka Oct 15 2007, 07:25 AM
fccHandler

The first opening mpeg2 file is normal - is created *idx file, but at the second opening this file there is a following:

http://imageshack.us

If it play:
My crashinfo:
http://rapidshare.com/files/62655501/crashinfo.txt.html

But info of the file shows correctly:

http://imageshack.us

Posted by: fccHandler Oct 15 2007, 04:15 PM
The crash info doesn't reveal much, but the info dialog says "MPEG-2 Information (0 files)." That gives me a good idea where the problem is.

EDIT: Well, I'm not sure. Please test this one for me:
http://fcchandler.home.comcast.net/MPEG2.zip

Posted by: Gromozeka Oct 15 2007, 06:26 PM
It works smile.gif, but virtualdub have information "0 files"???
Why?
You can do open idx file too?

Posted by: fccHandler Oct 15 2007, 07:12 PM
QUOTE (Gromozeka @ Oct 15 2007, 02:26 PM)
virtualdub have information "0 files"???

This one does also? That's surprising. Anyway, I'll keep working on it. Thanks for testing.

Also, adding the ability to open the .idx directly is a cool idea, which would be easy to do! I hadn't even thought of that. smile.gif

Posted by: Gromozeka Oct 15 2007, 08:17 PM
very good smile.gif
Excuse me for my English sad.gif
I will can best asked, but lsnguage not good.

Áîëüøîå ñïàñèáî òåáå çà òâîé òðóä! smile.gif

Posted by: fccHandler Oct 15 2007, 08:44 PM
Just a warning to everyone...

I will be changing the format of the .idx file for version 1.7 of the MPEG-2 plugin (probably tonight), so don't save a bunch of index files yet. They won't work with the next release.

Posted by: neuron2 Oct 15 2007, 09:54 PM
.

Posted by: fccHandler Oct 15 2007, 10:49 PM
Yeah, the version number is the second DWORD. And though I like backwards compatibility, some of the ideas I'll be implementing tonight are major breaking changes. Fortunately this file index thing is still in the larval stage, so backwards compatibility isn't much of a problem (yet).

Posted by: tateu Oct 16 2007, 12:57 AM
v0.2.0.0 of my quicktime import filter...same links as before:

binary
http://www.tateu.net/software/dl.php?f=qtvd_bin
source code
http://www.tateu.net/software/dl.php?f=qtvd_src

Some of the changes/fixes:
A) Fixed a bug or three (and probably added 4 or 5 new ones).
B) Audio decoding now works.
C) Implemented the "Ask for Extended Options Dialog" (this controls the options contained in "Quicktime.ini").
D) When a movie is opened in YV12 or YUY2 mode, decoding to RGB32 is also available (this should make the preview for most, if not all, video filters work). Although, this almost didn't need to be done. I noticed there was a nice addition to VirtualDub v1.7.6 that allows video filter preview windows to open YV12/YUY2 video...thanks.
E) Creates 320x240, 30fps blank video for an audio only file (aac, etc.).

Posted by: fccHandler Oct 16 2007, 05:00 AM
Here is MPEG-2 plugin version 1.7:
http://fcchandler.home.comcast.net/Plugins/MPEG2

This version cannot use the .idx files created by version 1.6. You'll have to resave them in the 1.7 format.

Posted by: Gromozeka Oct 16 2007, 05:57 AM
When I has open idx file (idx from version mpeg2 plugin 1.7) - VirtualDub crashed:
my crashinfo:
http://rapidshare.com/files/62875980/crashinfo.txt.html

Posted by: Loadus Oct 16 2007, 06:36 AM
@fcchandler:

Just opened a 19.7GB HD clip /w .idx writing. Worked beautifully. Also opening from the .idx file works here, no prob. Excellent.


@tateu:

.mov import has been on the "me wants" list for ages. And this plugin opened every .mov I had. Very good work!

Posted by: fccHandler Oct 16 2007, 07:02 AM
@Gromozeka:
Your crash report certainly implicates the MPEG-2 plugin. Unfortunately, I'm not able to reproduce this crash with any of my own MPEG files. (FWIW, I couldn't reproduce your previous crash either.)

Would you be able to upload an MPEG file that crashes? I need to reproduce your crash on my system so I can track down the cause.

Posted by: Gromozeka Oct 16 2007, 07:31 AM
fccHandler
I can it, but it is not meaningful
Because crash occurs to all VOB files, all dvd!

Posted by: fccHandler Oct 16 2007, 07:42 AM
I don't doubt you my friend, but it doesn't crash for me with any of my own VOB files. Are you able to help me reproduce this on my system, by uploading one of your VOB files that crashes?

Posted by: tateu Oct 16 2007, 07:43 AM
@fcchandler:
http://www.tateu.net/ColorBars.mpg

ColorBars.avs
ColorBars(720,480).Trim(0,29)

Encoded in TMPGEnc:
720x480, 4:3, 29.97, CQ Max bitrate = 6000, MP@ML, Non-Interlaced, 10Bit DC
Mpeg-1, Layer 2 audio 44.1KHz, 224kbps, Error Protection on
GOP Structure:
IPBBPBBPBBPBB
IBBPBBPBBPBBPBB
IB

It only crashes with the Release version of your plugin. If I compile it in Debug mode, it opens fine. If an idx has already been created, as soon as I open this mpg with the Release version, ram usage jumps to over 800MB, VM Ram jumps to 1GB. Ram usage slowly drops down to about 10MB, but VM Ram stays at 1GB. VirtualDub CPU usage drops to 0, but system jumps to a constant load of 20%.

The exact same clip encoded without audio to a video only program stream works fine:
http://www.tateu.net/ColorBars_na.mpg

Posted by: fccHandler Oct 16 2007, 08:04 AM
Thank you tateu!

Indeed, ColorBars.mpg is giving me all kinds of problems. I'll see if I can track down those bugs.

Posted by: Gromozeka Oct 16 2007, 08:37 AM
fccHandler
I'm reinstall my windows xp and open my vob again. Then I'll you inform

Posted by: heustess Oct 16 2007, 01:16 PM
VirtualDub crashes also for me after I create a vob index file when I try to open either the vob or the vob index. This happens with every vob I try using MPEG-2 plugin 1.7. I am using Windows Vista Home Premium.

Posted by: Loadus Oct 16 2007, 01:34 PM
@fcchandler:

Can you make it as a default that the plugin writes the .idx? I'm so used to opening files with "Send To". I know, I'm lay-zee. biggrin.gif

Posted by: heustess Oct 16 2007, 02:07 PM
QUOTE (Loadus @ Oct 16 2007, 01:34 PM)
Can you make it as a default that the plugin writes the .idx? I'm so used to opening files with "Send To". I know, I'm lay-zee. biggrin.gif

The problem with that is that it creates extra files in a directory that you may not want extra files in.

Posted by: Gromozeka Oct 16 2007, 02:21 PM
fccHandler
I'm install new windows XP and my virtualDub again crashed! sad.gif

Posted by: Loadus Oct 16 2007, 04:41 PM
QUOTE (heustess @ Oct 16 2007, 08:07 AM)
QUOTE (Loadus @ Oct 16 2007, 01:34 PM)
Can you make it as a default that the plugin writes the .idx? I'm so used to opening files with "Send To". I know, I'm lay-zee. biggrin.gif

The problem with that is that it creates extra files in a directory that you may not want extra files in.

The solution with that lies between the "insert" and "left arrow" key. wink.gif

Posted by: foxidrive Oct 16 2007, 04:53 PM
Who was lay-zee? biggrin.gif

Posted by: fccHandler Oct 16 2007, 06:43 PM
After tearing my hair out over this, I think I've found the problem with the MPEG-2 index, and believe it or not, it's Avery Lee's fault. biggrin.gif

It's a funky little hack that probably goes back to the earliest days of VirtualDub's MPEG support. The parser actually creates one extra packet index for the video and audio streams, and those hidden packets aren't included in the total packet count. And because they aren't counted, they weren't getting saved to the .idx file. It's actually vital that they exist though, because the binary search in ReadStream() depends on them.

I changed my code to write those extra hidden packets into the saved index, and it fixed my problem with ColorBars.mpeg. I hope this will fix the other crashes too. I'll upload a new version later today.

Posted by: heustess Oct 16 2007, 06:48 PM
QUOTE (Loadus @ Oct 16 2007, 04:41 PM)
QUOTE (heustess @ Oct 16 2007, 08:07 AM)
QUOTE (Loadus @ Oct 16 2007, 01:34 PM)
Can you make it as a default that the plugin writes the .idx? I'm so used to opening files with "Send To". I know, I'm lay-zee. biggrin.gif

The problem with that is that it creates extra files in a directory that you may not want extra files in.

The solution with that lies between the "insert" and "left arrow" key. wink.gif

There is no need to be sarcastic. I know the files can be deleted. I'm sure that I am not the only one who does not like programs that automatically create file after file unless you have opted for the creation of such files. I like the idx idea. I just would like the option of whether or not one is created when I open a vob in VirtualDub.

Posted by: fccHandler Oct 16 2007, 07:18 PM
QUOTE (heustess @ Oct 16 2007, 02:48 PM)
I'm sure that I am not the only one who does not like programs that automatically create file after file unless you have opted for the creation of such files.

Totally agree.

I can add a button or something in the extended open dialog, that will make the options permanent by saving them in the registry. But this isn't a good time to add that functionality, because the .idx format isn't set in stone yet. I have to make a version that doesn't crash first. tongue.gif

Posted by: tateu Oct 16 2007, 07:57 PM
QUOTE (Loadus @ Oct 16 2007, 06:34 AM)
@fcchandler:

Can you make it as a default that the plugin writes the .idx? I'm so used to opening files with "Send To". I know, I'm lay-zee. biggrin.gif

This is why I requested a new feature: hold down the shift key when opening a new file and the extended options dialog window will automatically open.

http://forums.virtualdub.org/index.php?act=ST&f=11&t=14713

Posted by: fccHandler Oct 16 2007, 08:37 PM
OK, let's try this again. Here is version 1.8:

[removed]


EDIT: Nevermind, it still crashes.

EDIT: Well, this is seriously f*d up. The release build crashes, but the debug build doesn't. Furthermore, if I run the release build in the debugger, it doesn't crash. I've never seen anything like it. sad.gif

Posted by: Loadus Oct 16 2007, 10:11 PM
QUOTE (heustess @ Oct 16 2007, 12:48 PM)
There is no need to be sarcastic.

Yeah, sorry about that. I didn't mean to be rude and a jerk, but that's the kind of person I am so that's how it comes out.

Peace. biggrin.gif

Posted by: heustess Oct 16 2007, 10:29 PM
QUOTE (Loadus @ Oct 16 2007, 10:11 PM)
Yeah, sorry about that. I didn't mean to be rude and a jerk, but that's the kind of person I am so that's how it comes out.

No problem. I think we all are just trying to help with the testing and future features of these terriffic additions to VirtualDub, one of the best media programs around. Maybe fccHandler can meet everyone's needs with his clever idea about saving the option in the registry.

Posted by: fccHandler Oct 16 2007, 10:57 PM
I think the MPEG-2 plugin is OK now. That last problem turned out to be an uninitialized variable (of course), but it took me a good hour to find it. wacko.gif

So here is version 1.8:
http://fcchandler.home.comcast.net/Plugins/MPEG2

Obviously, the index files created with 1.7 won't work anymore (they were corrupt anyway).


EDIT: Hold on, there is still one bug. I've removed the link for a moment.

EDIT: OK, it's back. If anyone downloaded it during those few minutes before I took it down, please delete that one and download this one instead.

Posted by: heustess Oct 16 2007, 11:52 PM
I had no crashes with the latest mpeg-2 plugin (1.8) opening a vob and the vob index. Great job!

Posted by: Aks020 Oct 17 2007, 03:04 AM
I get this error when i load flv file in virtualdub 1.7.6

Posted by: Moitah Oct 17 2007, 03:18 AM
Can't see image...

Posted by: Gromozeka Oct 17 2007, 04:43 AM
fccHandler
all works, but Idon't select second audio from vob's DVD! sad.gif
First - russian audio
Second - english audio

Posted by: fccHandler Oct 17 2007, 05:35 AM
QUOTE (Gromozeka @ Oct 17 2007, 12:43 AM)
all works, but Idon't select second audio from vob's DVD! sad.gif
First - russian audio
Second - english audio

Try it with VirtualDub-MPEG2, because both should display the same audio selections. If they don't, then it's probably a bug in the plugin.

Posted by: Gromozeka Oct 17 2007, 07:06 AM
If to do correctly it is necessary to load at once 2 or 3 audiopaths from DVD. But VirtualDub does not support such opportunity in difference from VirtualDubMod! It is a pity! sad.gif

Posted by: fccHandler Oct 17 2007, 07:28 AM
Unfortunately, we can't do it "correctly" with the current stable version of VirtualDub 1.7.6. You get exactly one video stream, and one audio stream. That's it.

If there is more than one audio stream, both VirtualDub-MPEG2 and the MPEG-2 plugin pop up a dialog box listing the streams, and you can choose which one you want to process in this session.

If VirtualDub-MPEG2 and the MPEG-2 plugin behave differently with your VOB, please tell me, because that would strongly suggest a bug in the MPEG-2 plugin, and I would like to know about it.

Posted by: BitBasher Oct 17 2007, 08:33 PM

(begins to salivate)

Will these new plugin filters ever work or be hooked up to the Capture path?

I can think of a few plugins I could use for my Canon camera in preview mode.

Bit.

Posted by: Aks020 Oct 17 2007, 10:45 PM
QUOTE (Aks020 @ Oct 17 2007, 03:04 AM)
I get this error when i load flv file in virtualdub 1.7.6

CODE
[URL=http://imageshack.us][IMG]http://img81.imageshack.us/img81/2972/errorvirtualdubflvplugifz9.jpg[/IMG][/URL]


http://img81.imageshack.us/my.php?image=errorvirtualdubflvplugifz9.jpg

OR
http://img81.imageshack.us/my.php?image=errorvirtualdubflvplugifz9.jpg

http://imageshack.us


Ok this is the image i posted again.

Posted by: Moitah Oct 17 2007, 11:48 PM
@Aks020: Do you have a suitable decompressor installed? Like a recent http://ffdshow-tryout.sourceforge.net/ with FLV1 and VP6F enabled in the VFW decoder configuration.

Posted by: Aks020 Oct 18 2007, 12:09 AM
QUOTE (Moitah @ Oct 17 2007, 11:48 PM)
@Aks020: Do you have a suitable decompressor installed? Like a recent http://ffdshow-tryout.sourceforge.net/ with FLV1 and VP6F enabled in the VFW decoder configuration.

ok just did it i can play but when i drag the video virtual dub crashed.

VirtualDub crash report -- build 28280 (release)
--------------------------------------

Disassembly:
014c3cc0: 8d4580 lea eax, [ebp-80h]
014c3cc3: 8945d0 mov [ebp-30h], eax
014c3cc6: 8d45d8 lea eax, [ebp-28h]
014c3cc9: 83c40c add esp, 0ch
014c3ccc: c745800d0000c0 mov dword ptr [ebp-80h], c000000d
014c3cd3: 89758c mov [ebp-74h], esi
014c3cd6: 8945d4 mov [ebp-2ch], eax
014c3cd9: ff1514304d01 call dword ptr [014d3014]
014c3cdf: 6a00 push 00h
014c3ce1: 8bf0 mov esi, eax
014c3ce3: ff1510304d01 call dword ptr [014d3010]
014c3ce9: 8d45d0 lea eax, [ebp-30h]
014c3cec: 50 push eax
014c3ced: ff150c304d01 call dword ptr [014d300c]
014c3cf3: 85c0 test eax, eax
014c3cf5: 750c jnz 014c3d03
014c3cf7: 85f6 test esi, esi
014c3cf9: 7508 jnz 014c3d03
014c3cfb: 6a02 push 02h
014c3cfd: e862170000 call 014c5464
014c3d02: 59 pop ecx
014c3d03: 680d0000c0 push c000000d
014c3d08: ff1508304d01 call dword ptr [014d3008]
014c3d0e: 50 push eax
014c3d0f: ff1504304d01 call dword ptr [014d3004]
014c3d15: 8b8da4020000 mov ecx, [ebp+2a4]
014c3d1b: 33cd xor ecx, ebp
014c3d1d: 5e pop esi
014c3d1e: e8c9160000 call 014c53ec
014c3d23: 81c5a8020000 add ebp, 000002a8
014c3d29: c9 leave
014c3d2a: c3 ret
014c3d2b: 55 push ebp
014c3d2c: 8bec mov ebp, esp
014c3d2e: ff3580844d01 push dword ptr [014d8480]
014c3d34: e894180000 call 014c55cd
014c3d39: 85c0 test eax, eax
014c3d3b: 59 pop ecx
014c3d3c: 7403 jz 014c3d41
014c3d3e: 5d pop ebp
014c3d3f: ffe0 jmp eax
014c3d41: 6a02 push 02h
014c3d43: e81c170000 call 014c5464
014c3d48: 59 pop ecx
014c3d49: 5d pop ebp
014c3d4a: e9e0feffff jmp 014c3c2f
014c3d4f: 33c0 xor eax, eax
014c3d51: 50 push eax
014c3d52: 50 push eax
014c3d53: 50 push eax
014c3d54: 50 push eax
014c3d55: 50 push eax
014c3d56: e8d0ffffff call 014c3d2b
014c3d5b: 83c414 add esp, 14h <-- FAULT
014c3d5e: c3 ret
014c3d5f: 6a0c push 0ch
014c3d61: 6830524d01 push 014d5230
014c3d66: e891230000 call 014c60fc
014c3d6b: 33db xor ebx, ebx
014c3d6d: 895de4 mov [ebp-1ch], ebx
014c3d70: 33c0 xor eax, eax
014c3d72: 8b7d08 mov edi, [ebp+08h]
014c3d75: 3bfb cmp edi, ebx
014c3d77: 0f95c0 setnz al
014c3d7a: 3bc3 cmp eax, ebx
014c3d7c: 751c jnz 014c3d9a
014c3d7e: e832230000 call 014c60b5
014c3d83: c70016000000 mov dword ptr [eax], 00000016
014c3d89: 53 push ebx
014c3d8a: 53 push ebx
014c3d8b: 53 push ebx
014c3d8c: 53 push ebx
014c3d8d: 53 push ebx
014c3d8e: e898ffffff call 014c3d2b
014c3d93: 83c414 add esp, 14h
014c3d96: 33c0 xor eax, eax
014c3d98: eb79 jmp 014c3e13
014c3d9a: 33c0 xor eax, eax
014c3d9c: 8b750c mov esi, [ebp+0ch]
014c3d9f: 3bf3 cmp esi, ebx
014c3da1: 0f95c0 setnz al
014c3da4: 3bc3 cmp eax, ebx
014c3da6: 74d6 jz 014c3d7e
014c3da8: 33c0 xor eax, eax
014c3daa: 381e cmp [esi], bl
014c3dac: 0f95c0 setnz al
014c3daf: 3bc3 cmp eax, ebx
014c3db1: 74cb jz 014c3d7e
014c3db3: e892210000 call 014c5f4a
014c3db8: 894508 mov [ebp+08h], eax
014c3dbb: 3bc3 cmp eax, ebx
014c3dbd: 750d jnz 014c3dcc
014c3dbf: e8 db 0e8h

Built on KOS-MOS on Mon Oct 08 23:30:35 2007 using compiler version 1400

Windows 5.1 (Windows XP x86 build 2600) [Service Pack 2]

EAX = 3e336f36
EBX = 000007ae
ECX = 00000002
EDX = 7c90eb94
EBP = 0012f4ec
ESI = 014e3c40
EDI = 0012f370
ESP = 0012f31c
EIP = 014c3d5b
EFLAGS = 00000206
FPUCW = 360037
FPUTW = 720066

Crash reason: unknown exception 0xc000000d

Crash context:
An exception occurred in module 'FLVInputDriver'.

Pointer dumps:

EDX 7c90eb90: 90909090 24a48dc3 00000000 0024648d 90909090 24548d90 c32ecd08 9cec8b55
ESI 014e3c40: 00000000 01670048 01677b28 01679628 00000009 00000000 0167d8d8 01689498
EDI 0012f370: 00000000 00013308 ffffffff ffffffff 0012f4e0 005ae080 00000001 004aedc5
ESP 0012f318: 0012f4ec 014c3d5b 00000000 00000000 00000000 00000000 00000000 014c1ca6
0012f338: 000007ae 00b89a90 00000000 004db57c 014e4cf8 000007ae 00000000 0012f370
0012f358: 0012fd84 004ba14b 00000000 00b7ac40 005ceaec 00000295 00000000 00013308
0012f378: ffffffff ffffffff 0012f4e0 005ae080 00000001 004aedc5 000007ae 00000000
EBP 0012f4e8: 00000000 0012f928 0044fcd5 0012f554 000001e6 000007ae 00000000 00b7b400
0012f508: ffffffff 7c910732 7c911596 7c9106eb 00000020 00000000 00720046 006d0061
0012f528: 00200065 00390031 00360036 00280020 003a0030 00310030 0031003a 002e0038
0012f548: 00340036 00290030 005b0020 7c910738 ffffffff 7c910732 7c911596 7c9106eb

Thread call stack:
014c3d5b: FLVInputDriver!VDGetPluginInfo [014c0000+2d60+ffb]
014c3d5b: FLVInputDriver!VDGetPluginInfo [014c0000+2d60+ffb]
014c1ca6: FLVInputDriver!00001ca6
004db57c: VDVideoSourcePlugin::getFrameTypeChar()
004aedc5: VDProjectUI::GetFrameString()
00598d20: _woutput_l()
7c90eae3: ntdll!KiUserCallbackDispatcher [7c900000+ead0+13]
77d487ff: USER32!GetDC [77d40000+8697+168]
77f18fb7: GDI32!GetNearestColor [77f10000+8e07+1b0]
0044fcd5: VDPositionControlW32::UpdateString()
7c910732: ntdll!RtlAllocateHeap [7c900000+105d4+15e]
7c911596: ntdll!wcsncpy [7c900000+10a8f+b07]
7c9106eb: ntdll!RtlAllocateHeap [7c900000+105d4+117]
7c910732: ntdll!RtlAllocateHeap [7c900000+105d4+15e]
7c911596: ntdll!wcsncpy [7c900000+10a8f+b07]
7c9106eb: ntdll!RtlAllocateHeap [7c900000+105d4+117]
7c910732: ntdll!RtlAllocateHeap [7c900000+105d4+15e]
7c9106ab: ntdll!RtlAllocateHeap [7c900000+105d4+d7]
7c910732: ntdll!RtlAllocateHeap [7c900000+105d4+15e]
7c910732: ntdll!RtlAllocateHeap [7c900000+105d4+15e]
7c9106ab: ntdll!RtlAllocateHeap [7c900000+105d4+d7]
7c9106ab: ntdll!RtlAllocateHeap [7c900000+105d4+d7]
7c910732: ntdll!RtlAllocateHeap [7c900000+105d4+15e]
7c910732: ntdll!RtlAllocateHeap [7c900000+105d4+15e]
5d0a85c4: COMCTL32!DefSubclassProc [5d090000+184f1+d3]
0058af16: malloc()
0058b4ff: (special)()
004092a7: ?$list::_Buynode()
7c9106eb: ntdll!RtlAllocateHeap [7c900000+105d4+117]
0058af16: malloc()
0050f8a7: VDStringW::reserve_slow()
7c9105c8: ntdll!RtlFreeHeap [7c900000+1043d+18b]
7c910551: ntdll!RtlFreeHeap [7c900000+1043d+114]
7c91056d: ntdll!RtlFreeHeap [7c900000+1043d+130]
00514c4a: VDPostCheckExternalCodeCall()
00463a4f: VDExternalCodeBracket::~VDExternalCodeBracket()
004dbea5: VDAudioSourcePlugin::TimeToPositionVBR()
00469056: InitStreamValuesStatic()
7c91056d: ntdll!RtlFreeHeap [7c900000+1043d+130]
0058afd2: free()
0058aff1: free()
0058aff1: free()
004a1015: VDProject::BeginTimelineUpdate()
7c9105c8: ntdll!RtlFreeHeap [7c900000+1043d+18b]
0044e96d: VDPositionControlW32::SetFrameRate()
004add88: VDProjectUI::UIDubParametersUpdated()
004a5961: _catch$?UpdateDubParameters@VDProject@@IAEXXZ$0()
004a1032: VDProject::EndTimelineUpdate()
004a1a13: VDProject::DeleteInternal()
77d4df52: USER32!GetActiveWindow [77d40000+df1e+34]
7c90eae3: ntdll!KiUserCallbackDispatcher [7c900000+ead0+13]
77d4de84: USER32!SetPropW [77d40000+ddb3+d1]
77d4dec7: USER32!SetPropW [77d40000+ddb3+114]
004a1742: VDProject::Delete()
004a91ef: VDProjectUI::MenuHit()
77d4b2a1: USER32!DefWindowProcW [77d40000+b1e5+bc]
77d4b250: USER32!DefWindowProcW [77d40000+b1e5+6b]
77d4b250: USER32!DefWindowProcW [77d40000+b1e5+6b]
004b9e79: VDUIFrame::DefProc()
004aac7b: _catch$?MainWndProc@VDProjectUI@@IAEJIIJ@Z$0()
77d48832: USER32!GetDC [77d40000+8697+19b]
77d487ff: USER32!GetDC [77d40000+8697+168]
77d487ff: USER32!GetDC [77d40000+8697+168]
77d4c00e: USER32!DestroyCaret [77d40000+bfb0+5e]
77d4c034: USER32!CallWindowProcW [77d40000+c019+1b]
77d494a7: USER32!GetWindowLongA [77d40000+947c+2b]
004aaa97: VDProjectUI::WndProc()
004ba3f4: VDUIFrame::StaticWndProc()
77d4b9b2: USER32!GetPropW [77d40000+b983+2f]
5d0a859c: COMCTL32!DefSubclassProc [5d090000+184f1+ab]
5d0a8537: COMCTL32!DefSubclassProc [5d090000+184f1+46]
5d0e2cba: COMCTL32!ImageList_LoadImage [5d090000+445a5+e715]
77d48709: USER32!GetDC [77d40000+8697+72]
77d487eb: USER32!GetDC [77d40000+8697+154]
77d4b368: USER32!DefWindowProcW [77d40000+b1e5+183]
00caac23: AdMunch!Interface [00c80000+1395+2988e]
77d4b3b4: USER32!DefWindowProcW [77d40000+b1e5+1cf]
7c90eae3: ntdll!KiUserCallbackDispatcher [7c900000+ead0+13]
77d4fe66: USER32!TranslateAccelerator [77d40000+fe23+43]
77d4fe83: USER32!TranslateAccelerator [77d40000+fe23+60]
004ba01b: VDUIFrame::TranslateAcceleratorMessage()
77d4cff8: USER32!PeekMessageA [77d40000+cefd+fb]
77d4d50d: USER32!GetAncestor [77d40000+d501+c]
0049b9e6: VDGetAncestorW32()
00483250: guiCheckDialogs()
0048fb41: WinMain@16()
005927cc: __set_flsgetvalue()
00592978: _getptd_noexit()
0058ff4a: __tmainCRTStartup()
7c816d4f: kernel32!RegisterWaitForInputIdle [7c800000+16d06+49]

-- End of report

Posted by: Moitah Oct 18 2007, 12:20 AM
Does it crash with all FLV files or only certain ones? If it's only certain ones maybe you can provide a sample.

Posted by: phaeron Oct 18 2007, 08:16 AM
@BitBasher:
No, these are completely different than anything you'd use in capture mode. These are only for files.

@Moitah:
C000000D means STATUS_INVALID_PARAMETER... unusual to receive that, but some API call bombed.

Posted by: vlada Oct 18 2007, 11:33 AM
I just tried to open a FLV file (FLV4/MP3). Everything works fine (ffdshow as a decoder).

I'm wondering if the "Append segment" feature could also work with input plugins. I think it is incorrect to request appending of files from input plugin. It should work more globally and I should be able to append f.e. MP4 to AVI if they have the same picture and sound format.

Posted by: ale5000 Oct 18 2007, 02:43 PM
fccHandler: The .idx extension is used on DVDs for other things.
Can you use another extension for your index, please?

Posted by: foxidrive Oct 18 2007, 03:22 PM
.idx is used for indexes on squillions of programs - is there an issue with using it in the plugin?

Posted by: fccHandler Oct 18 2007, 05:22 PM
@ale5000:
I'm open to suggestions.

The current index code is a mess, and after that business with the crashing and the hidden packet entries, I've decided that I have to find a better way to do this. I have some new code up and running, which I'll post as soon as I put it through some fair testing.

The biggest improvement is in memory usage. MPEGPacketInfo is now 8 bytes (down from 16) per packet, and MPEGSampleInfo is 12 bytes (down from 16) per sample.

Unfortunately this will again break all the previous .idx versions... rolleyes.gif

Posted by: fccHandler Oct 19 2007, 07:36 AM
MPEG-2 plugin version 1.9:
http://fcchandler.home.comcast.net/Plugins/MPEG2

Posted by: Gromozeka Oct 19 2007, 03:29 PM
fccHandler
QUOTE
MPEG-2 plugin version 1.9:
http://fcchandler.home.comcast.net/Plugins/MPEG2


Thanks! smile.gif

Can be Avery will make work with two audiopaths in virtualDub? As in VirtualDubMod? rolleyes.gif

Posted by: XYZ Oct 19 2007, 03:50 PM
QUOTE (Gromozeka @ Oct 19 2007, 03:29 PM)
Can be Avery will make work with two audiopaths in virtualDub? As in VirtualDubMod?

Don't you read other forums?

http://forums.virtualdub.org/index.php?act=ST&f=15&t=14715

Posted by: Gromozeka Oct 20 2007, 07:16 AM
biggrin.gif Thanks

Posted by: ale5000 Oct 22 2007, 09:25 PM
@fccHandler: The current extension looks good, it is the abbreviation of mpeg index. biggrin.gif

Posted by: DarrellS Oct 24 2007, 04:30 AM
Get "CodecMissing" when opening WMV2 in Virtualdub 1.7.6x3 with fccHandler's WMV plugin. Audio plays but no video.

Is this because there is no VFW codec for WMV1 and WMV2?

Thanks for all the work. Virtualdub is really growing up.


EDIT: set ffdshow video codec in VDub to use WMV9 to open WMV7 & WMV8 and now it opens.

Posted by: DarrellS Oct 24 2007, 07:28 PM
Not that I use Real Media but is there a real media input plugin in the works or is it too messed up of a format to even bother with?

Posted by: fccHandler Oct 24 2007, 11:03 PM
The RealMedia format isn't too bad, but (like WMV and FLV) it doesn't have a fixed frame rate, and that's always a problem. Codecs might also be a problem. The answer to your question is yes, I'm kinda toying with it, but I don't know yet if it's really going to work.

Posted by: DarrellS Oct 25 2007, 02:17 AM
Thanks.

I usually use TMPGEnc for the WMV files since it usually doesn't cause any sync problems converting to mpeg but it's good to able to open them and any other format in Virtualdub if you want. There are times when putting a different sound track to these formats and converting to AVI is desirable and sometimes you get lucky with one of these files if it was created close to a normal framerate and it will turn out fine.

Thanks for all your hard work.

Posted by: fccHandler Oct 25 2007, 05:34 AM
Well, I hate to say it, but it doesn't look like this is going to work. The problem is the codec. I've come far enough to where I can extract a single keyframe from one of my .rm files, but I'm not finding a way to decompress it.

I did my best to create correct BITMAPINFOHEADERS for 'RV20' and RGB24, and to my surprise ICLocate() succeeded. It gave me a handle to ffdshow-tryouts libavcodec. Unfortunately the VFW configuration for ffdshow warns that their RV20 codec is "incomplete," and that does indeed seem to be the case. It just crashes when I send it my keyframe.

Unless I can find a solution for this, my RealMedia plugin is doomed from the start. Damn. sad.gif

Posted by: goodone91 Oct 25 2007, 11:36 AM
If ffdshow is open-source, can't you mod it?

Posted by: tateu Oct 25 2007, 04:57 PM
QUOTE (fccHandler @ Oct 24 2007, 10:34 PM)
I did my best to create correct BITMAPINFOHEADERS for 'RV20' and RGB24, and to my surprise ICLocate() succeeded.  It gave me a handle to ffdshow-tryouts libavcodec.

I've run into a similar problem trying to use FFDShow's h264 decoder on data from quicktime files. ICLocate succeeds but ICDecompress fails. FFMpeg can decode the exact same data, though.

I don't think I'm the one to do it...though I do have a partially working filter already for video only...but an FFMpeg input filter would be nice. My test seems to work for quite a few mkv, flv, mov, mp4, wmv, ogg, mpg and rm (RV10 + RV20, not RV30 or RV40) files...except for seeking and I'm not really sure what it does with variable frame stuff. It also just outright crashes on quite a number of files. I think getting a fully working filter is beyond my capabilities.

Posted by: fccHandler Oct 25 2007, 06:22 PM
QUOTE (goodone91 @ Oct 25 2007, 07:36 AM)
If ffdshow is open-source, can't you mod it?

Yeah, but I don't know how to fix it. I only know how to parse the file format (container). I don't know anything about the Real Video codecs. That's supposed to be ffdshow's job.


QUOTE (tateu @ Oct 25 2007, 12:57 PM)
I've run into a similar problem trying to use FFDShow's h264 decoder on data from quicktime files.  ICLocate succeeds but ICDecompress fails. FFMpeg can decode the exact same data, though.

What I found out today is that ffdshow's DirectShow RV20 decoder works; only the VFW codec crashes. There are different approaches to RV in all of the open source projects I've looked at (ffdshow, realmediasplitter, ffmpeg, and mplayer), and they seem to be using different builds of libavcodec. The RV20 decoder in ffmpeg is quite different from the RV20 decoder in mplayer, and both are different from the ones in ffdshow, and so on. What a mess.

This is turning into way more trouble than I anticipated, so I'm going to put it aside for now. I may come back to it some day, but right now I want to go back to trying to fix the sync issues in my WMV plugin.

Posted by: DarrellS Oct 25 2007, 07:02 PM
I read on a thread on dvdhelp on converting RM to avi to download the helix codecs from here. Not sure if it will help you.

http://forum.doom9.org/showthread.php?s=&threadid=56972

Posted by: fccHandler Oct 29 2007, 09:22 PM
MPEG-2 plugin 2.0 is up:
http://fcchandler.home.comcast.net/Plugins/MPEG2

This is actually a build of the experimental MPEG2X (which exposes multiple audio streams to the host). But for compatibility with VirtualDub 1.7.6 I've disabled that code and restored the dialog that asks you to choose which audio stream to process. It's a #define, so if/when Avery adds support for multiple audio streams in the stable VirtualDub, I'll just rem out the #define. smile.gif

Also, I've made some important changes in the dialog for joining multiple files, and I think I'm pretty happy with it now.


EDIT:
I've also released version 1.4 of my WMV plugin. I think this version will finally fix the problems with variable frame rate video in Windows Media files.

http://fcchandler.home.comcast.net/Plugins/WMV

Posted by: olnima Oct 30 2007, 11:42 AM
Dear Mr. Handler smile.gif

just want to say thanks very much for all your great work !!!

Olnima

Posted by: achibus Oct 31 2007, 05:47 PM
I also want to say thank you for the MPEG Plugin. Very good job rolleyes.gif

I am wondering if it would be possible to have the MPEG Plugin as a DirectShow Filter. It is a great MPEG Decoder when it comes to step forward and backward.

Are there any plans to do that?

achibus

Posted by: fccHandler Oct 31 2007, 06:38 PM
No, sorry. I don't have any experience writing DirectShow filters, and I'm not sure it's feasible with this code. It relies on extensive parsing of the file before any video can be shown. In fact, the reason it can step forward and backward so smoothly is because it gathers all that information during parsing. I'm not sure a DirectShow filter can do that.

Posted by: DarrellS Nov 6 2007, 07:47 AM
I assume that the reason that this thread has been dead for almost a week is because everyone is working on a new H264 plugin with PAFF support based on the new ffdshow? smile.gif

Posted by: fccHandler Nov 6 2007, 08:06 AM
Not me. I'm actually busy with some other stuff unrelated to VirtualDub...

I just assume the thread died because all of our plugins are finally working properly, which is a good thing. smile.gif

Posted by: heustess Nov 6 2007, 02:25 PM
@fccHandler:
Were you ever able to correct the audio skew information off by 1 problem? I did not see it in your MPEG-2 plugin change log.

Posted by: Saribro Nov 7 2007, 04:19 AM
I think he did. I have a bunch of MPEG2 source I've been converting. In the originals, there's some progressive syncproblem that brings the audio early by about half a second at the end of a 40-minute stream. With 1.6.19-MPEG2, in the conversion, it would be 2.5 seconds behind, with 1.7.6 with plugin 2.0, it's the same 0.5 seconds ahead (and with a stretch filter the conversion is in better sync than the original biggrin.gif). Something got fixed/changed.

Posted by: fccHandler Nov 7 2007, 07:23 AM
QUOTE (heustess @ Nov 6 2007, 10:25 AM)
Were you ever able to correct the audio skew information off by 1 problem? I did not see it in your MPEG-2 plugin change log.

Yep, I corrected it the same night you pointed it out. I just forgot to mention it in the change log.

Posted by: heustess Nov 7 2007, 04:10 PM
@fccHandler:

I retested the same 17 non-zero skew vobs as before with vStrip and your MPEG-2 plugin 1.4 with VirtualDub 1.7.6. vStrip still reports the skew (delay) on each 1 more than VirtualDub File Information does. For example when your plugin reports a delay of -206, vStrip reports a delay of -207. It doesn't seem to matter if the skew is an even or odd number. Does this mean that vStrip is wrong or is the correct File Information not getting passed on to VirtualDub?

Posted by: fccHandler Nov 7 2007, 07:17 PM
Well, except for the rounding error I fixed, there is no other flaw in the code (that I'm aware of) that would cause it to be 1 ms off. I'll glance over it again next time I return to it, but offhand I can only conclude that vStrip is wrong.

I'll be honest with you though, I can't say I'm losing any sleep over it. tongue.gif

Posted by: heustess Nov 7 2007, 07:28 PM
I appreciate your time. What confuses me is that VirtualDub-MPEG2 1.6.19 reports the same exact values as vStrip.

Posted by: Aks020 Nov 7 2007, 09:18 PM
i want to know now as we can import vob files by the plugin
can u add some plugin so we can save the file in vob or mpeg instead of avi .
thanks


and why file with resolution 352 X 576 dont display correctly . i mean any avi file with that resolution cant be displayed coreectly. yes width is 352 and height is 576

only vob file with that resolution plays ok
test your self and save file with 352(width) and 576 (height)

thanks for the support.

Posted by: Aks020 Nov 7 2007, 09:20 PM
i am caputuring in 352 x 576 (height is 576) and when i convert that video to avi the file is not diplayed properly.

but when i add filter and convert to 352 x 288 (height is 288) then it is diplayed correctly.

JUST 1 QUERY
THIS forum has best person to help so i posted here , hope this is right place to ask

When i convert 352 x 576 (height is 576) to
608 x 576 (height is 576) will the quality degrade as i am resizing the image to large one .

i mean original video is 352 x 576 (height is 576)
if i convert to 608x 576 (height is 576) then .


LP 3hrs 3.3Mpbs MPEG2 352X480 352X576
EP 4hrs 2.5Mpbs MPEG2 352X480 352X576
SLP 6hrs 1.7Mpbs MPEG1 352X240 352X288

Posted by: tn123 Nov 8 2007, 06:08 PM
Just wanted to report back on the WMV plugin.

* It crashes when the http://www.fox-magic.com/freeware.html codec is installed. (Crashing straight somewhere in fmcodec.dll via VideoCodec::Decompress -> ICDecompress). Likely a problem in that codec, but you might be interested in this information anyway...

* A remark on the homepage that a capable VfW codec must be installed would be nice. I had my ffdshow-tryout VfW configure not to process WMV. (Or am I missing something?)

Other than that it seems to work fine. Tried a couple of files (all wmv2 I think) and no problems at all. biggrin.gif
Thank you for your work!

Posted by: Aks020 Nov 16 2007, 01:09 AM
QUOTE
i want to know now as we can import vob files by the plugin
can u add some plugin so we can save the file in vob or mpeg instead of avi .
thanks

thanks for the support.




QUOTE
and why file with resolution 352 X 576 dont display correctly . i mean any avi file with that resolution cant be displayed coreectly. yes width is 352 and height is 576

only vob file with that resolution plays ok
test your self and save file with 352(width) and 576 (height)

Any update on this please sir

Posted by: DarrellS Nov 16 2007, 01:49 AM
You need to frameserve to TMPGEnc or other MPEG encoder. Virtualdub, although it can work with MPEG is not an MPEG encoder.



Right click on the display window and change the aspect ratio to display the clip correctly.


Posted by: Aks020 Nov 21 2007, 12:20 AM
QUOTE (DarrellS @ Nov 16 2007, 01:49 AM)
You need to frameserve to TMPGEnc or other MPEG encoder. Virtualdub, although it can work with MPEG is not an MPEG encoder.



Right click on the display window and change the aspect ratio to display the clip correctly.

thanks but there is no option in changing aspect ratio on dvd player (hardware).

vob files of 352(width) and 576 (height) plays correctly
but not avi , xvid ,divx WHY on dvd player.

Posted by: fccHandler Nov 21 2007, 04:55 AM
AFAIK, DVD players will only read aspect ratio information from VOB files, and not those other formats. Meaning that a 352 x 576 VOB file will automatically be resized by the player to fill the screen. A 352 x 576 AVI file will not.

I don't have much experience with standalone DVD players, so I'm just guessing that the fix is to resize your AVI to either a 4x3 ratio or a 16x9 ratio, whichever looks correct on your TV. The math is:

4x3: width = (height * 4) / 3
16x9: width = (height * 16) / 9

Posted by: DarrellS Nov 21 2007, 05:27 AM
QUOTE
thanks but there is no option in changing aspect ratio on dvd player (hardware).


I assumed you were talking about Virtualdub.

You've already gotten advice on what to do in the other thread. If that doesn't work for you then contact the maker of your player. Maybe they'll have the answers. If not, there is always Google.

It might be time to upgrade your player. I've been told that some of the newer DivX players will play 352x576 AVI correctly. You might try http://www.videohelp.com for advice on a new player or to get answers on how to play these files on your player.

Posted by: Gromozeka May 15 2008, 05:40 AM
fccHandler
But you can in mpeg2 plugin realize pulldown 3:2? smile.gif

Posted by: fccHandler May 15 2008, 12:21 PM
What do you mean exactly?

If you mean something like "force FILM", I haven't gotten around to it yet.

Posted by: Gromozeka May 15 2008, 03:48 PM
Yes, I mean 'force FILM'

Posted by: petermg May 16 2008, 04:01 PM
fccHandler,
I am utterly blown away by your mpeg2 and ESPECIALLY your WMV input filters!!! !!!!!!!!!!


Is it possible to up the ante and create one for MOV files and MP4? wink.gif biggrin.gif

Posted by: fccHandler May 16 2008, 10:34 PM
I'm glad you like them. smile.gif

There was a MOV plugin made by tateu, on page 8 of this thread. I think it does some MP4 also.

Posted by: heustess May 18 2008, 04:07 AM
QUOTE (heustess @ Oct 12 2007, 10:58 AM)
@fccHandler:
On [Input playback] of the short file maryann.wma downloaded from http://heustess.com/soundbytes.htm I get the following error message:

The audio codec reported an error while decompressing audio data. Error code 512 (ACMERR_NOTPOSSIBLE)

I also get this error message from the longer files downloaded from http://heustess.com/music.htm

The error message comes with input playback. Choppy playback sometimes still occurs with output playback.

This behavior is still occurring with WMV plugin for VirtualDub (version 1.5). Was the new WMV plugin supposed to correct this behavior?

Posted by: fccHandler May 18 2008, 05:36 AM
No, it hasn't been fixed because I still don't know what causes it. The error comes from the Windows Media Audio ACM codec and that's out of my control.

I posted about choppy playback a long time ago, and phaeron's reply seemed to indicate that the cause originates in VirtualDub's pipeline. It's probably a low priority issue though, being purely cosmetic. It doesn't affect the output file.

Posted by: phileas Jun 24 2008, 07:13 AM
@fccHandler: Thanks for your mpeg/wmv plugins. smile.gif
I may have come accross an error though. When I try to save a wmv3 to an(whether with compression or uncompressed) avi I always get this virtualdub error: "Dub/IO-video error:buffer too small(80044074)". The mpeg plugin has no error, VDub saves just fine.

On an other note, I'm unable to open up wmv2s (I get the missing codec message). I've looked on the net and connot seem to find the codecs required. Is there any out there? I know I can use ffdshow, is that the only solution? Thanks.

Posted by: Placio74 Jun 24 2008, 08:11 AM
QUOTE (phileas @ Jun 24 2008, 09:13 AM)
...
On an other note, I'm unable to open up wmv2s (I get the missing codec message). I've looked on the net and connot seem to find the codecs required. Is there any out there? I know I can use ffdshow, is that the only solution? Thanks.

Yes, for WMV2 (WMV8) can use only ffdshow VfW.
Microsoft just not release this codec as VfW.
It exist as DMO (similar to DirectShow filters).

Posted by: fccHandler Jun 24 2008, 10:02 AM
QUOTE (phileas @ Jun 24 2008, 03:13 AM)
When I try to save a wmv3 to an(whether with compression or uncompressed) avi I always get this virtualdub error: "Dub/IO-video error:buffer too small(80044074)".

That error doesn't come from the plugin, and I have no idea what it means.

Posted by: phaeron Jun 25 2008, 05:11 AM
That's an error from the core, and generally means that something's gone wrong with the input plugin read path: either read() with a null pointer returned BUFFERTOOSMALL (which shouldn't happen since that's a size query) or that read() failed with BUFFERTOOSMALL with a buffer of the size that the size query returned (which means that the size query isn't returning the correct value). Basically, the code does a size query and then does a read with that size, so neither of the two reads should fail that way.

Posted by: Big Digger Jun 25 2008, 06:53 AM
QUOTE (fccHandler @ Jun 24 2008, 10:02 AM)
QUOTE (phileas @ Jun 24 2008, 03:13 AM)
When I try to save a wmv3 to an(whether with compression or uncompressed) avi I always get this virtualdub error: "Dub/IO-video error:buffer too small(80044074)".

That error doesn't come from the plugin, and I have no idea what it means.

got the same error message with WMV plugin v1.5 (VirtualDub v1.8.1)
but this error does not occur with an older version (WMV v1.4)

Posted by: fccHandler Jun 29 2008, 04:35 AM
@phileas, Big Digger:

I want to find this bug, but I think I'm going to need a sample WMV which demonstrates the error. Can you provide one?

Posted by: Big Digger Jun 29 2008, 06:01 AM
QUOTE (fccHandler @ Jun 29 2008, 04:35 AM)
I want to find this bug, but I think I'm going to need a sample WMV which demonstrates the error.  Can you provide one?

http://bigdigger.net/samples/wanted_trailer2_h720p.wmv

Full processing mode

user posted image

Posted by: fccHandler Jun 29 2008, 06:43 PM
@Big Digger: Nice one! Thanks.

I was sent another which demonstrates the issue:

http://fcchandler.home.comcast.net/sample.wmv 959KB

It's very strange. I only see the error when saving an AVI. I never see it using "Input playback" or "Output playback" or "Preview output from start." Plus it doesn't always happen, and when it does it's not always in the same place. It reminds me of a race condition.

Phaeron's answer suggests that my Read() function is faulty, but if so I'm not seeing it. If you ask it about frame n, it always returns the same stuff for frame n. As far as I can tell it's fully deterministic.

At the moment I'm unable to build VirtualDub to see exactly what it does that prompts the error. Even so I'm not sure it would help, since the fault is very erratic...

Posted by: phaeron Jun 29 2008, 07:51 PM
I've got both VirtualDub and the WMV plugin under a debugger.

The problem is that VideoFrameToSample() is returning a different value within the WMV plugin's Read() function between the two calls. I stuck a tracepoint at main.cpp:760 and got this in the debug output:

CODE

265 sample_list[232] = 2382
265 sample_list[238] = 11658


Frame 265 was queried both times, but the mapping changed from frame 232 to frame 238 in between the two calls.

Posted by: fccHandler Jun 30 2008, 01:07 AM
Thank you for finding that. Apparently my Read() isn't deterministic at all. I'm still mystified why it only happens during "Save AVI", and not at the same place every time.

I hope there isn't some memory corruption taking place or something (ugh). I'll go over the code again...

Posted by: phaeron Jun 30 2008, 05:03 AM
It's way too deterministic for that. I'm running on a dual-core system, and if it were a memory corruption issue, it'd be happening far less and with much more mysterious outcomes, i.e. crashing. My guess is that there is an unintended race between different portions of the plugin -- for instance, if the decode portion were able to rewrite the lookup tables referenced by the Read() call (which would be a plugin API violation, btw).

Posted by: fccHandler Jul 1 2008, 02:58 AM
Phaeron was right again. biggrin.gif

A new version 1.6 is up which should fix this:

http://fcchandler.home.comcast.net/Plugins/WMV

I came up with a theory that the VideoFrameToSample() function might return different values for the same input iff it was invoked simultaneously from competing threads. The function depends on a global "guess" variable which it reads and updates constantly. If two or more calling threads were fighting over that one "guess" variable, it would perfectly explain the unpredictable behavior.

And yes, it was a plugin API violation and I'm rather surprised it didn't cause worse problems. I assume the race can only happen during a save operation...

To confirm my theory I changed it so that each caller keeps their own copy of the "guess" variable and presents it to the function when calling it. So far that seems to have fixed the problem.

Nitpick: I've been using the word "deterministic" which feels a bit off. In retrospect I think I should have been using the word "invariant".

Posted by: phileas Jul 1 2008, 04:11 PM
Works now, I've just noticed that its multi-threaded. smile.gif
Many thanks.

Posted by: peter100m Jul 21 2008, 08:36 PM
@tateu: Thanks for the Quicktime Import filter, it works almost as good as good as the qtsource Avisynth plugin. I have found one thing though: it doesn't allow the opening of raw .dv files (which works with the avisynth plugin). If you are still looking into updating the plugin (which I hope you do) could you please consider checking this? Also the audio doesn't work for opening .dv files (problem with both avs and virtualdub version).

many thanks!

Posted by: ale5000 Aug 24 2008, 10:27 PM
Edit: Post removed

Posted by: MisterX1980 Dec 3 2008, 04:39 PM
Hello at all smile.gif

@fccHandler: Thanks for all your Plugins !
Is it possible or intend to make a MPEG-2 64-bit Plugin ?
So we can use the XviD 64bit Codec with VirtualDub 64bit.

Posted by: Kyra Dec 21 2008, 02:43 PM
Hi - I'm new here and I'm a real noob...

I wanted to thank fccHandler for all these great plugins - especially the mpeg-2 one!
Just like MisterX1980 I wanted to ask if it's possible to port this plugin to VDub64. But don't bother if it's too complicated or time consuming!

Thx again! smile.gif

Posted by: hINDUs Jan 6 2009, 10:07 PM
havent found a dedicated thread for a quicktime input plugin so here's a bug (?) report:
the plugin works well with almost all my .mov files, but not all tongue.gif
user posted image
left shot is from quicktime.ini / mode=-1, right from mode=0
i want to set-it-and-forget-it to mode=-1 (auto) but i cant :/
also in mode=0 there is no keyframes

EDiT: bugger, the pic is not scaling automatically...

Posted by: Placio74 Jan 6 2009, 11:25 PM
I have seen it already with some files from cam's.

What's installed QuickTime version?

Can play correctly in QuickTime Player?

Maybe upload some sample file, example on ifile.it or depositfiles.com?

BTW
There is no need to edit quicktime.ini file.
Can call the configuration window when opening a video clip - Ask for extended options after this dialog option.

Posted by: hINDUs Jan 7 2009, 04:17 PM
the QuickTime version was 7.0.3, video plays normal in QT

now i updated to latest 7.5.5 and with mode=-1 (3) VDub is crashing on open
setting by hand mode=1 puts an error window (which is normal)
setting by hand mode=2 opens ok, but crash in movie
setting by hand mode=3 opens as in picture, no crash
setting by hand mode=4 crash VDub

the video is a proud 112MB long, i can put a first 10MB cutted from orginal, what behaves the same as orginal video
i'm also looking from where im downloaded it, but it's not a easy task :>

video sample:
http://rapidshare.com/files/180738762/Chapter_5-Digital_Camera_Specs-H264_Streaming_480p---first10mb.mov

crash:
An out-of-bounds memory access (access violation) occurred in module 'Quicktime'...
...reading address 05628000.
http://paste.org/index.php?id=4731

EDiT: ufff, i found the link to orginal videos:
http://media.panavision.com/ScreeningRoom/Screening_Room/Demystifying_Part5.html

have fun! (btw - those videos are highly informative and i can only recommend you to watch it)

Posted by: Placio74 Jan 7 2009, 06:09 PM
Odd video resolution... it's problem.
853x480

Also, it's problematic not only in VirtualDub with QuickTime input plugin

[EDIT]
No problems with 720p (1280x720) and 1080p (1920x1080) clips.

Posted by: tateu Jan 7 2009, 09:14 PM
QUOTE (hINDUs @ Jan 6 2009, 03:07 PM)
havent found a dedicated thread for a quicktime input plugin so here's a bug (?) report:
the plugin works well with almost all my .mov files, but not all tongue.gif

Yes, it's the odd size video...It's my fault that it skews the video and/or crashes...it has to do with the pitch of the video, which is usually width * BytesPerPixel. For Quicktime in RGB24, that means the buffer for one line of video is 853 * 3 = 2559 bytes. The AviSynth buffer probably gets rounded up to an even number, so when I copy and paste data from the Quicktime buffer to the AviSynth buffer it gets corrupted. I'm not sure when I will get around to fixing it...maybe this weekend or next?

Posted by: Vito Dec 15 2009, 01:27 PM
QUOTE (tateu @ Oct 12 2007, 03:09 AM)
And here's the first release for quicktime video (mov, some mp4, etc.):

binary
http://www.tateu.net/software/dl.php?f=qtvd_bin

source code
http://www.tateu.net/software/dl.php?f=qtvd_src


"Quicktime.vdplugin" should go in your plugins32 folder and "Quicktime.ini" should go in the VirtualDub root folder.

There are several different modes that can be used to open a movie, these are specified in Quicktime.ini as "mode=."  Mode=-1 and color=-1 are the recommended defaults but you can read about the different modes in "Quicktime_ReadMe.txt."  Eventually, these options will be implemented as an "Ask for Extended Options Dialog."

Audio is currently not implemented and I am sure there are many bugs.  Questions, comments, suggestions, whatever...are welcome.


I will also most likely...someday...implement my avisynth OMF importer.

When I open a video the screen turns green and when I hit play VD crashes..
Does anyone know what the problem could be??

I have windows 64bit

here the error:
An out-of-bounds memory access (access violation) occurred in module 'Quicktime'...
...writing address 85B70000...
...while running thread "Dub-I/O" (thread.cpp:163).

Posted by: Placio74 Dec 15 2009, 02:53 PM
Vito, what is installed version of QuickTime and which is used video decoder mode (by plugin)? Also what are characteristics of source video?

Posted by: roseman Dec 15 2009, 05:56 PM
QUOTE (Vito @ Dec 15 2009, 01:27 PM)
QUOTE (tateu @ Oct 12 2007, 03:09 AM)
And here's the first release for quicktime video (mov, some mp4, etc.):

binary
http://www.tateu.net/software/dl.php?f=qtvd_bin

source code
http://www.tateu.net/software/dl.php?f=qtvd_src


"Quicktime.vdplugin" should go in your plugins32 folder and "Quicktime.ini" should go in the VirtualDub root folder.

There are several different modes that can be used to open a movie, these are specified in Quicktime.ini as "mode=."  Mode=-1 and color=-1 are the recommended defaults but you can read about the different modes in "Quicktime_ReadMe.txt."  Eventually, these options will be implemented as an "Ask for Extended Options Dialog."

Audio is currently not implemented and I am sure there are many bugs.  Questions, comments, suggestions, whatever...are welcome.


I will also most likely...someday...implement my avisynth OMF importer.

When I open a video the screen turns green and when I hit play VD crashes..
Does anyone know what the problem could be??

I have windows 64bit

here the error:
An out-of-bounds memory access (access violation) occurred in module 'Quicktime'...
...writing address 85B70000...
...while running thread "Dub-I/O" (thread.cpp:163).

I used to get Green preview and output screens importing a Quicktime .MOV file (with h.264 codec) and the Quicktime plugin, IF i was using a 1.9.x version of VirtualDub.

VirtualDub 1.8.8 was not affected by this particular bug that 1.9.x suffered from.

Have you tried 1.8.8 or earlier to see if you get the same result?
This might narrow down where the problem is...?

Posted by: phaeron Dec 16 2009, 04:09 AM
Please post the full crash dump for the QuickTime crash. There is something curious with the reported error -- that address is above where Windows should be allowing memory allocations (>2GB).

Posted by: Vito Dec 16 2009, 04:38 AM
QUOTE (Placio74 @ Dec 15 2009, 02:53 PM)
Vito, what is installed version of QuickTime and which is used video decoder mode (by plugin)? Also what are characteristics of source video?

it is video which comes from my camera! It saves in h.264

Posted by: Vito Dec 16 2009, 04:42 AM
QUOTE (phaeron @ Dec 16 2009, 04:09 AM)
Please post the full crash dump for the QuickTime crash. There is something curious with the reported error -- that address is above where Windows should be allowing memory allocations (>2GB).


VirtualDub crash report -- build 32661 (release)
--------------------------------------

Disassembly:
100115c0: 01e8 add eax, ebp
100115c2: ad lodsd
100115c3: 37 aaa
100115c4: 0000 add [eax], al
100115c6: 8bf0 mov esi, eax
100115c8: 85f6 test esi, esi
100115ca: 59 pop ecx
100115cb: 59 pop ecx
100115cc: 7434 jz 10011602
100115ce: 56 push esi
100115cf: ff3580170210 push dword ptr [10021780]
100115d5: ff35a42c0210 push dword ptr [10022ca4]
100115db: e8eafaffff call 100110ca
100115e0: 59 pop ecx
100115e1: ffd0 call eax
100115e3: 85c0 test eax, eax
100115e5: 741b jz 10011602
100115e7: 6a00 push 00h
100115e9: 56 push esi
100115ea: e8c1fbffff call 100111b0
100115ef: 59 pop ecx
100115f0: 59 pop ecx
100115f1: ff15a4c00110 call dword ptr [1001c0a4]
100115f7: 834e04ff or dword ptr [esi+04h], 0ffh
100115fb: 8906 mov [esi], eax
100115fd: 33c0 xor eax, eax
100115ff: 40 inc eax
10011600: eb07 jmp 10011609
10011602: e86cfbffff call 10011173
10011607: 33c0 xor eax, eax
10011609: 5e pop esi
1001160a: 5f pop edi
1001160b: c3 ret
1001160c: 8b442404 mov eax, [esp+04h]
10011610: a3b42c0210 mov [10022cb4], eax
10011615: c3 ret
10011616: 55 push ebp
10011617: 8bec mov ebp, esp
10011619: 83ec08 sub esp, 08h
1001161c: 897dfc mov [ebp-04h], edi
1001161f: 8975f8 mov [ebp-08h], esi
10011622: 8b750c mov esi, [ebp+0ch]
10011625: 8b7d08 mov edi, [ebp+08h]
10011628: 8b4d10 mov ecx, [ebp+10h]
1001162b: c1e907 shr ecx, 07h
1001162e: eb06 jmp 10011636
10011630: 8d9b00000000 lea ebx, [ebx+00]
10011636: 660f6f06 movdqa xmm0, [esi]
1001163a: 660f6f4e10 movdqa xmm1, [esi+10h]
1001163f: 660f6f5620 movdqa xmm2, [esi+20h]
10011644: 660f6f5e30 movdqa xmm3, [esi+30h]
10011649: 660f7f07 movdqa [edi], xmm0 <-- FAULT
1001164d: 660f7f4f10 movdqa [edi+10h], xmm1
10011652: 660f7f5720 movdqa [edi+20h], xmm2
10011657: 660f7f5f30 movdqa [edi+30h], xmm3
1001165c: 660f6f6640 movdqa xmm4, [esi+40h]
10011661: 660f6f6e50 movdqa xmm5, [esi+50h]
10011666: 660f6f7660 movdqa xmm6, [esi+60h]
1001166b: 660f6f7e70 movdqa xmm7, [esi+70h]
10011670: 660f7f6740 movdqa [edi+40h], xmm4
10011675: 660f7f6f50 movdqa [edi+50h], xmm5
1001167a: 660f7f7760 movdqa [edi+60h], xmm6
1001167f: 660f7f7f70 movdqa [edi+70h], xmm7
10011684: 8db680000000 lea esi, [esi+80]
1001168a: 8dbf80000000 lea edi, [edi+80]
10011690: 49 dec ecx
10011691: 75a3 jnz 10011636
10011693: 8b75f8 mov esi, [ebp-08h]
10011696: 8b7dfc mov edi, [ebp-04h]
10011699: 8be5 mov esp, ebp
1001169b: 5d pop ebp
1001169c: c3 ret
1001169d: 55 push ebp
1001169e: 8bec mov ebp, esp
100116a0: 83ec1c sub esp, 1ch
100116a3: 897df4 mov [ebp-0ch], edi
100116a6: 8975f8 mov [ebp-08h], esi
100116a9: 895dfc mov [ebp-04h], ebx
100116ac: 8b5d0c mov ebx, [ebp+0ch]
100116af: 8bc3 mov eax, ebx
100116b1: 99 cdq
100116b2: 8bc8 mov ecx, eax
100116b4: 8b4508 mov eax, [ebp+08h]
100116b7: 33ca xor ecx, edx
100116b9: 2bca sub ecx, edx
100116bb: 83e10f and ecx, 0fh
100116be: 33ca xor ecx, edx

Built on Aegis on Sun Oct 18 12:54:39 2009 using compiler version 1400

Windows 5.2 (Windows XP x64 build 3790) [Service Pack 2]

EAX = 86ce0000
EBX = 04cf0f20
ECX = 0000001e
EDX = 00000000
EBP = 0682fca0
ESI = 04cf0f20
EDI = 86ce0000
ESP = 0682fc98
EIP = 10011649
EFLAGS = 00010206
FPUCW = 027f
FPUTW = ffff

Crash reason: Access Violation

Crash context:
An out-of-bounds memory access (access violation) occurred in module 'Quicktime'...

...writing address 86CE0000...

...while running thread "Dub-I/O" (thread.cpp:163).

Pointer dumps:

EBX 04cf0f20: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
ESI 04cf0f20: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
ESP 0682fc98: 00000f00 00000000 0682fcd0 100116ef 86ce0000 04cf0f20 00000f00 050f0020
0682fcb8: 00000000 04cf0020 04cf0f20 00000001 02de4158 80000000 86ce0000 1000903b
0682fcd8: 86ce0000 04cf0f20 00000f00 00000000 02de4158 00000000 00000000 04cf0020
0682fcf8: 00000000 00000000 00000000 000003e9 00000000 00000001 00000001 100065ff
EBP 0682fca0: 0682fcd0 100116ef 86ce0000 04cf0f20 00000f00 050f0020 00000000 04cf0020
0682fcc0: 04cf0f20 00000001 02de4158 80000000 86ce0000 1000903b 86ce0000 04cf0f20
0682fce0: 00000f00 00000000 02de4158 00000000 00000000 04cf0020 00000000 00000000
0682fd00: 00000000 000003e9 00000000 00000001 00000001 100065ff 00000000 00000000

Thread call stack:
10011649: Quicktime!VDGetPluginInfo [10000000+22a0+f3a9]
100116ef: Quicktime!VDGetPluginInfo [10000000+22a0+f44f]
1000903b: Quicktime!VDGetPluginInfo [10000000+22a0+6d9b]
100065ff: Quicktime!VDGetPluginInfo [10000000+22a0+435f]
10002b57: Quicktime!VDGetPluginInfo [10000000+22a0+8b7]
004d2cb1: VDVideoSourcePlugin::_read()
004c77a5: DubSource::read()
0041cdb3: VDDubIOThread::ReadRawVideoFrame()
0051c27c: VDPostCheckExternalCodeCall()
0041d05e: VDDubIOThread::MainAddVideoFrame()
0041d816: VDDubIOThread::ThreadRun()
0051866f: VDThread::StaticThreadStart()
005b75ee: _callthreadstartex()
005b7693: _threadstartex@4()
7d4dfe21: kernel32!FlsSetValue [7d4c0000+1fceb+136]

-- End of report

Posted by: Vito Dec 16 2009, 04:44 AM
QUOTE (roseman @ Dec 15 2009, 05:56 PM)
QUOTE (Vito @ Dec 15 2009, 01:27 PM)
QUOTE (tateu @ Oct 12 2007, 03:09 AM)
And here's the first release for quicktime video (mov, some mp4, etc.):

binary
http://www.tateu.net/software/dl.php?f=qtvd_bin

source code
http://www.tateu.net/software/dl.php?f=qtvd_src


"Quicktime.vdplugin" should go in your plugins32 folder and "Quicktime.ini" should go in the VirtualDub root folder.

There are several different modes that can be used to open a movie, these are specified in Quicktime.ini as "mode=."� Mode=-1 and color=-1 are the recommended defaults but you can read about the different modes in "Quicktime_ReadMe.txt."� Eventually, these options will be implemented as an "Ask for Extended Options Dialog."

Audio is currently not implemented and I am sure there are many bugs.� Questions, comments, suggestions, whatever...are welcome.


I will also most likely...someday...implement my avisynth OMF importer.

When I open a video the screen turns green and when I hit play VD crashes..
Does anyone know what the problem could be??

I have windows 64bit

here the error:
An out-of-bounds memory access (access violation) occurred in module 'Quicktime'...
...writing address 85B70000...
...while running thread "Dub-I/O" (thread.cpp:163).

I used to get Green preview and output screens importing a Quicktime .MOV file (with h.264 codec) and the Quicktime plugin, IF i was using a 1.9.x version of VirtualDub.

VirtualDub 1.8.8 was not affected by this particular bug that 1.9.x suffered from.

Have you tried 1.8.8 or earlier to see if you get the same result?
This might narrow down where the problem is...?

hm..didnt work...but if I change to RGB 24..the screen becomes black instead of green. Also when I hit the left play button at the bottom it crashes. when I hit the second one it plays but only sound.

Powered by Invision Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)