View Full Version : MPEGDecoder.dll (Direct VOB/M2v -> AviSynth)
Pages :
1
2
3
[
4]
5
6
7
8
9
10
Wilbert
28th August 2002, 14:50
How many lines remain (of the 8900) in your reg-file if you uninstall windvd?
Guest
30th August 2002, 03:19
This plugin isn't working for me. It just hangs VirtualDub when I serve to it. I have an AMD Palamino 1900+. Should it work? Thank you.
Guest
30th August 2002, 03:47
OK, I discovered it crashes when you don't give a full path to the file. Being in the current directory is not enough. :(
Then I found that the first few pictures are not decoded properly and have macroblocks that aren't there when decoded with DVD2AVI. Then I found that the file reports the wrong size and doesn't play all the way through to the end. Then it crashes VirtualDub at the "end". Not ready for prime time, IMHO.
Koepi
30th August 2002, 03:48
Do you mean mpeg2decoder.dll?
Give it some time, depending on the mode for frame-counting you choose it'll take up to ~5 minutes to index the files.
After that, you can work normally again (just fire up debugview, when your files show up there [in case you chose multiple files], it should list them there).
Regards,
Koepi
EDIT: it's nowhere mentioned that it's ready. You have to set the range manually in vdub. the MBs you observe I can't reproduce, it works correctly for me...
Guest
30th August 2002, 03:59
It's a short VOB, 300+ frames. It shows instantly in DebugView.
It's simply unusable for me. But if it works for you...
Nic
30th August 2002, 08:14
Im sorry you had no luck with neuron2 :( Ill try to make it more stable (classically every file I try it on it works almost perfect with :( )
Ive added a different method of getting the number of frames & decss for encrypted vobs....
& now ill work on those points you mentioned,
Cheers,
-Nic
ps
Ill get there in the end...i hope....:rolleyes:
Nic
30th August 2002, 11:58
Ok, version 1.3
http://nic.dnsalias.com/MPEGDecoder.zip
(please read documentaion carefully)
This version has support for frame estimation via DirectShow...
you use the parameter -2 in the frames field.
i.e.
MPEGSource("d:\a.mpg", -2)
This then relies on the splitter to give accurate information...which is probably more accurate than mine. (also, if it overestimates, it will no longer crash the decoder ;) )
It also has DeCSS support so DVDs can be read directly...
also has preliminary MPEG-1 support...
Cheers,
-Nic
ps
if anyone has any little clips that cause failure or transport clips they cant get to work, then please just send them to:
nic <at> nic.dnsalias.com
or PM if they are too big. Thanks.
Guest
30th August 2002, 16:01
@Nic
Thank you for the reply. I will post an URL this evening for a problematic small VOB.
GZZ
30th August 2002, 20:37
The new version are really getting better. The -2 works great. No more wrong timecodes and its FAST. :)
But I have problems with Stremlist.lst files.
My streamlist looks like this:
E:\DVDfilm\Harry Potter\VTS_01_1.vob
E:\DVDfilm\Harry Potter\VTS_01_2.vob
E:\DVDfilm\Harry Potter\VTS_01_3.vob
E:\DVDfilm\Harry Potter\VTS_01_4.vob
E:\DVDfilm\Harry Potter\VTS_01_5.vob
E:\DVDfilm\Harry Potter\VTS_01_6.vob
E:\DVDfilm\Harry Potter\VTS_01_7.vob
E:\DVDfilm\Harry Potter\VTS_01_8.vob
and the AVS script is like this (just for testing):
LoadPlugin("E:\DVDfilm\Harry Potter\MPEGDecoder.dll")
MPEGSource("E:\DVDfilm\Harry Potter\Streamlist.lst", -2)
When I load the AVS in Media player I get a AVS script error in line 2. Which is the streamlist. But I have tested each 'link' in the Streamlist.lst file and they work. So I see this as a bug, please confirm this.
Thanks.
GZZ
Nic
30th August 2002, 21:26
Sounds like a bug to me...Ill fix it ASAP, thanks for testing & reporting back ! :)
Cheers,
-Nic
GZZ
30th August 2002, 21:32
Got another error.
If you rip a DVD with Vstrip and it makes 1024 mb files. But not all the DVDs files are 1024 mb, but the first 3 files are 1024 mb and then you get a file which is only 400 mb and then 3 files which i 1024 mb.
When you then use Vstrip on this it mux all the files and splits them in 1024 mb files. The problem comes when you try to load the files which was 400 mb, but is now 1024 mb, because it have been muxed into Mpegdecoder with the parameter '-2'. Then it says Avisynth have an error in line X (the line where you load the vob file).
But If I use Smartripper which keeps the files like on the DVD, it works fine. Don't know if this is something you can fix.
Thanks
GZZ
Nic
30th August 2002, 21:39
Thanks again :) I need to clear some space on my HD so I can try DVDs...
-Nic
benf2
30th August 2002, 23:33
trying to load vob files and i am terrible writing avs files.
I just want the basic(no filters) so i can load it into link2 then cce.
I tried this but it doesnt load into link2. any help would be great!!
LoadPlugin("C:\Documents and Settings\Administrator\My Documents\avs gen\bin\MPEGDecoder.dll")
LoadPlugin("C:\Documents and Settings\Administrator\My Documents\avs gen\bin\AVISynth_Spatial.dll")
MPEGSource("C:\Documents and Settings\Administrator\Desktop\we\video_ts\VTS_04_1.VOB")+MPEGSource("C:\Documents and Settings\Administrator\Desktop\we\video_ts\VTS_04_2.VOB")+MPEGSource("C:\Documents and Settings\Administrator\Desktop\we\video_ts\VTS_04_3.VOB")+MPEGSource("C:\Documents and Settings\Administrator\Desktop\we\video_ts\VTS_04_4.VOB")+MPEGSource("C:\Documents and Settings\Administrator\Desktop\we\video_ts\VTS_04_5.VOB")+MPEGSource("C:\Documents and Settings\Administrator\Desktop\we\video_ts\VTS_04_6.VOB")
Blight
30th August 2002, 23:52
Quality?
You always see comparisons between PowerDVD/WinDVD/CineMaster.
I think these decoders may be using some post-processing to "improve" visible quality. Not quite sure there. But still, it would be nice to have this filter ported into 3 direct show filters (splitter/audio decoder/video decoder). With CSS support, this could become a fully fledged DVD decoder filter (at which point, I advise nic to "duck and cover" from the wrath of the DVD Consortium).
Guest
31st August 2002, 00:21
@Nic
I've moved over here from the other thread. :)
OK, it's clear that you are not honoring the repeat_field flag in the MPEG2 syntax. These are used to do 3:2 pulldown during display. I have proved it by decoding a 3:2 pulldown VOB and seeing this: 1) The count of frames is correct but the number of displayed frames is 4/5 of that (thanks, trbarry!). 2) When using DVD2AVI with Forced Film off, I can see the interlaced frames created by pulldown; when I use MPEGDecoder the interlaced frames are not seen. Your decoder acts as if it is DVD2AVI with Forced Film on all the time.
Would it be possible to properly handle the MPEG2 flags so that 3:2 pulldown material is decoded properly? IIRC, there is a flag to say repeat a field, and a flag to say which of the two fields to repeat. I suggest that you have an option equivalent to Forced Film in DVD2AVI.
If you still want a VOB, please let me know.
Nic
31st August 2002, 09:35
@neuron2:
Thanks alot, Id never noticed it! (dont know how I missed it)...If you could give me that 300 frame vob that would be great (then Ill be able to see exactly what you've seen). Im going to have to go read up on 3:2 pulldown now...
(thanks again for your help in this)
@benf2: you cant have more than one instance of MPEGSource (as it says in the documentation). What you need to do is have:
MPEGSource("d:\vts_01_01.vob+d:\vts_01_02.vob+d:\vts_01_03.vob)
(etc)
@blight:
Yup it should be cool :)
Cheers,
-Nic
Blight
31st August 2002, 10:21
Actually, you do want force-film on most content. But you need to account for frame counts when you ignore the rff flags.
Guest
31st August 2002, 12:51
@Blight
Isn't it more than that? For example, I work with MPEG2 decoders in DirecTV boxes and the video drivers that work with them. For a 3:2 stream, the stream does not contain the extra fields, just flags that say when to repeat some fields. That means a software decoder has to actually create the new fields and properly assemble frames. This is much more than simply adjusting a frame count. Am I off-base?
EDIT: OK. I get your point now. We're both right. In Forced Film mode, the flags are ignored and the frame counting must take that into account. In non-Forced Film mode, the correct fields/frames have to be created in accordance with the flags.
My web site server is refusing my password so until that is straightened out I cannot upload the VOB. Maybe manono would allow me to use his server? :)
Nic
31st August 2002, 14:08
Thanks for the insight you two :)
@neuron2:
Have you checked out Swedes post in mod chat? Might help with uploading?
-Nic
GZZ
31st August 2002, 14:13
Don't know if this has something to do with the decoder you use to estimate the time of the selected vobfiles. I tryed it on Starwars EP1 R2 DVD and it reported the movie to be 02:28:20. But if I use Vstrip on the ifo file, it says the movie is 02:10:43 long. So it still estimates the time wrong.
I use the -2 parameter in my AVS script. 0 and -1 gives me timecodes which are way of like. 26:44:53 and so on.
I hope you can fix this.
Thanks
GZZ
Guest
31st August 2002, 15:01
@Nic
The VOB (originally from manono) is here (right click and Save As):
http://shelob.mordor.net/dgraft/bitch.vob
Sorry about the filename, but this was the first torture file for Decomb, and believe me, it was a bitch! :)
benf2
31st August 2002, 22:11
Thanks Nic....will give it a try again
dattrax
1st September 2002, 09:11
Hi,
Just as a totally stupid idea, can't you skip to the end of the movie and get the last PTS for the last frame. This will tell you the maximum amount of frames you will need.
As rff flags can be altered dynamically during the cause of the film, the only way you could count the exact number would be to scan over the mpeg headers (which wouldn't be exactly fast). My experience with this plugin is that it has underestimated and chopped off some of the video, if it overestimated then at least we could all add a Trim() to the end of the filter chain.
Jim
benf2
1st September 2002, 14:44
I tried the changes u mention Nic, but no luck so i tried importing the m2v file created with smartripper.
LoadPlugin("C:\Documents and Settings\Administrator\My Documents\avs gen\bin\MPEGDecoder.dll")
LoadPlugin("C:\Documents and Settings\Administrator\My Documents\avs gen\bin\AVISynth_Spatial.dll")
MPEGSOURCE("C:\Documents and Settings\Administrator\Desktop\the rookie\vts_01_([0xE0]_Video_NTSC_720x480)_1.m2v")
It loads into link2 ok, but shows 0 for nrFrames and 0 on timelength, now what am i doing wrong? Any anyother suggs. why it still wont load the vobs?
Koepi
1st September 2002, 16:04
for d2v you need another dll (mpeg2dec.dll), I don't think has added support for that (or has he and I just didn't notice?).
Btw, your syntax is wrong, you should READ the documentation that ships with the dll:
MPEGSource("C:\Documents and Settings\Administrator\Desktop\we\video_ts\VTS_04_1.VOB")+MPEGSource("C:\Documents and Settings\Administrator\Desktop\we\video_ts\VTS_04_2.VOB")+MPEGSource("C:\Documents and Settings\Administrator\Desktop\we\video_ts\VTS_04_3.VOB")+...
is wrong.
MPEGSource("C:\Documents and Settings\Administrator\Desktop\we\video_ts\VTS_04_1.VOB" + "C:\Documents and Settings\Administrator\Desktop\we\video_ts\VTS_04_2.VOB" + "C:\Documents and Settings\Administrator\Desktop\we\video_ts\VTS_04_3.VOB" + ...)
is correct.
The spaces around the + are important.
Regards,
Koepi
int 21h
1st September 2002, 16:37
He's importing m2v not d2v. The latter isn't supported afaik, but the former is. (or is supposed to be)
Koepi
1st September 2002, 16:47
sorry, my bad, I read it wrong.
still his syntac is wrong in the abovementioned case.
Nic
1st September 2002, 23:26
@ben:
Weird places to keep your files :) try putting them in a less complex directory structure & try loading the avs file into Windows Media Player & tell me what execption (if any?) is thrown...
-Nic
Koepi
2nd September 2002, 04:46
Hm, it seems I fell over another bug again:
I was trying to 2pass encode the matrix.
Scaled down the curve correctly, etc.
But on second pass, the pictures weren't the same as in the first pass (you can easily tell when first pass quant 2 was 16kb and now the frame at quant 2 has only 4kb :-/ )
That gave me a strange quantizer distribution... ;)
I don't know why this happens, and I don't know how to solve such a problem. Sorry!
Best regards,
and thanks for all your work!
Koepi
trbarry
2nd September 2002, 19:12
Hi Nic -
This morning I received the following PM from junooni, over on the AVS forum:
Nic's mpegdecoder plugin for avisynth.
Have you tried Nic's with a transport stream?
Sorry i had never posted on doom9 so never registered now that i have to it won't let me post a message for at-least five days (long time i thought) anyway. I tired his homepage but there is no email or anything to contact him. If you can answer this or post a reply on his thread at doom9 about this i would appreciate it.
According to him it supports Transport files directly but i tested it with several different files with differe video pids (different stations) none work. I get an access violation in VDub.
avisynth ver 2.05 and mpegdecoder ver 1.03 (both latest i think)
Script:
LoadPlugin("C:\avisynth\MPEGDecoder.dll")
MPEGSource("C:\temp\ItsAllhere.trp", -1, "0x0011")
I tried all the seek methods: -1, 0, and mannually giving number of frames.
Error:
"Error fetching frame 0: Avisynth read error: Avisynth: caught an access violation at 0x015b206f, attempting to read from 0x0000"
any help is appreciated.
I haven't tried MPEGdecoder with ATSC streams, but am going to go check it out now. Are they supported? Any known gotchas I should watch for? And should he also be specifying an audio PID? Usually it is 0x11 & 0x14. (video & audio, respectively)
- Tom
Nic
2nd September 2002, 22:58
Hi Tom,
It should work fine, the only transport streams ive used it with are hardware created (video: 0x1023 mp2 audio: 0x1022). A guy on this forum had some sort of film capturing device and the output from them was on 0x810 (that worked fine too)
Could I get a mini clip from him? I could test it out & hopefully fix it if theres bugs in the ts demux code...
(ive delayed the development of mpegdecoder just for a bit as im working on a mpeg1/2 encoder with koepi... infact I might ask for some advice on some assembly coding :D
(its just porting code from a linux project, but its getting....overly complex :) )
Theres definitely a bug in MPEGDecoder.dll right now when it goes to run from frame 0 again, as well as the errors it makes when estimating the number of frames...I will look at them soon. :)
Cheers,
-Nic
ps
Wow! this is quite a conherent post considering the amount of alochol ive just consumed :)
trbarry
3rd September 2002, 05:22
Nic -
If you have a userid on AVS you can PM junooni there (tomorrow when the blood alchohol drains a bit). Or if you want I can pass on one of your email addresses but I don't think he can PM you on this forum yet.
I used to think I got some of my best ideas when drinking. But anymore it just makes me tired and grumpy at the time and sick the next day. And I've never really been very good at it. :(
Let me know if there is something particularly assembler that you need help on, though I'm sort of thinking about attacking that H26L thingy.
Coffee is your friend. ;)
- Tom
Nic
3rd September 2002, 09:07
@trbarry: Drinking is not good for me either :)
if he gets the latest version of my decoder (normal link) my email address is at the very bottom of the help document (which is just nic <at> nic.dnsalias.com )
Ive been trying to expand my knowledge of mmx/sse, so I might try that h.26l 4x4 transform thing too (although I feel what would take you an hour, might well take me the whole week & then some :) )
have you ever come across some of the more peculiar syntax's of coding assembler (ive only ever used masm/tasm/vc inline), but these linux ones are kind of peculiar. e.g.
__asm__ ( "movl %0, %%eax\n"
"movd %%eax, %%mm6\n"
: :"g" (1) : "eax" );
?! is that just a mov eax, 1 then a movd mm6, eax ??
but ill PM with you with more I think,
Thanks,
-Nic
trbarry
3rd September 2002, 14:49
Nic -
Sorry. While occasionlly M$ annoys me enough that I resolve to switch, I still don't speak Linux. ;)
So I really have no idea what all that means, or even which assembler is being used. The big uncertainty is if the % signs are macro or preprocessor related. I do know that some assemblers put the l or d on the opcode instead of the operand to specify the operand types.
- Tom
benf2
6th September 2002, 16:11
i used it and loaded 6 vobs from a movie...link2 recognized it but the time shows 9+hours instead of appx 2hrs.
It was just the basic script....load plugin and mpgesourc....no filters or any other stuff...any ideas....i am getting closer;)
Koepi
6th September 2002, 16:19
read the posts about the frame counting again please :) it#s all already explained :)
(btw., trim (0, <endframe>) ist your friend here! :) )
Regards,
Koepi
benf2
6th September 2002, 16:30
thanks:)
Nic
6th September 2002, 16:50
Read the docs carefully....& hopefully it will do the best it can at present.
There are bugs in it that need to be addressed, ill get some time in about a week (I think :) )
Cheers,
-Nic
ps
I thought this monstrous thread was finally going to fall off the first page today...lol no luck.
benf2
6th September 2002, 17:55
I know i read it somewhere on one of the threads, but the search function is not specific enough(or its the way i asked). I ask, no i beg for the line of script i use so no audio is served. I just want the video from the vobs...i will use the audio file i got from smartripper later when i author it.
Everything i find on audio is changing it, not stopping it entirely.
This is possible right? I would think it would speed things up like when i used mpeg2dec2...i just did the video.
Here is the script i am working with...it loads into link2..still cant get the time to be correct...tried the trim as listed but link2 didnt like it.
LoadPlugin("C:\Documents and Settings\Administrator\My Documents\avs gen\bin\MPEGDecoder.dll")
LoadPlugin("C:\Documents and Settings\Administrator\My Documents\avs gen\bin\AVISynth_Spatial.dll")
MPEGSource("C:\Documents and Settings\Administrator\Desktop\the rookie\video_ts\VTS_01_1.VOB + C:\Documents and
Settings\Administrator\Desktop\the rookie\video_ts\VTS_01_1.VOB + C:\Documents and
Settings\Administrator\Desktop\the rookie\video_ts\VTS_01_2.VOB + C:\Documents and
Settings\Administrator\Desktop\the rookie\video_ts\VTS_01_3.VOB + C:\Documents and
Settings\Administrator\Desktop\the rookie\video_ts\VTS_01_4.VOB + C:\Documents and
Settings\Administrator\Desktop\the rookie\video_ts\VTS_01_5.VOB + C:\Documents and
Settings\Administrator\Desktop\the rookie\video_ts\VTS_01_6.VOB")
unplugged
7th September 2002, 14:38
Originally posted by trbarry
So I really have no idea what all that means, or even which assembler is being used. The big uncertainty is if the % signs are macro or preprocessor related. I do know that some assemblers put the l or d on the opcode instead of the operand to specify the operand types.
I think this kind of syntax is used because GNU gcc is made to compile for different target CPUs, certainly on the other side it's the most flexible compiler!
However for who is interested to use gcc there is a simple switch to support Intel syntax like NASM/TASM/MSASM instead (and without tons of symbols $,%%... :)).
Taken from gcc (as) doc:
AT&T Syntax versus Intel Syntax
as now supports assembly using Intel assembler syntax. .intel_syntax selects Intel mode, and .att_syntax switches back to the usual AT&T mode for compatibility with the output of gcc. Either of these directives may have an optional argument, prefix, or noprefix specifying whether registers require a % prefix. AT&T System V/386 assembler syntax is quite different from Intel syntax. We mention these differences because almost all 80386 documents use Intel syntax. Notable differences between the two syntaxes are:
* AT&T immediate operands are preceded by $; Intel immediate operands are undelimited (Intel push 4 is AT&T pushl $4). AT&T register operands are preceded by %; Intel register operands are undelimited. AT&T absolute (as opposed to PC relative) jump/call operands are prefixed by *; they are undelimited in Intel syntax.
* AT&T and Intel syntax use the opposite order for source and destination operands. Intel add eax, 4 is addl $4, %eax. The source, dest convention is maintained for compatibility with previous Unix assemblers. Note that instructions with more than one source operand, such as the enter instruction, do not have reversed order. i386-Bugs.
* In AT&T syntax the size of memory operands is determined from the last character of the instruction mnemonic. Mnemonic suffixes of b, w, l and q specify byte (8-bit), word (16-bit), long (32-bit) and quadruple word (64-bit) memory references. Intel syntax accomplishes this by prefixing memory operands (not the instruction mnemonics) with byte ptr, word ptr, dword ptr and qword ptr. Thus, Intel mov al, byte ptr foo is movb foo, %al in AT&T syntax.
* Immediate form long jumps and calls are lcall/ljmp $section, $offset in AT&T syntax; the Intel syntax is call/jmp far section: offset. Also, the far return instruction is lret $stack-adjust in AT&T syntax; Intel syntax is ret far stack-adjust.
* The AT&T assembler does not provide support for multiple section programs. Unix style systems expect all programs to be single sections.
This AT&T syntax is very difficult and cryptic, those Spock-like Linux programmers are really mad with their deep script-like methodical... :D
About syntax, this maybe one of the reasons because some source packages for gcc win32 (MinGW) need Netwide Assembler (NASM) to compile asm files :). (for ex. MAME emulator)
WarpEnterprises
7th September 2002, 22:29
Where can I download the latest version?
The link in the thread (http://nic.dnsalias.com/MPEGDecoder.zip) is dead. Or is it only a temporary effect?
Guest
7th September 2002, 22:31
Nic,
Any determiniation on the RFF/TFF support issue? Thank you.
matrix
8th September 2002, 15:59
@ benf2
I ask, no i beg for the line of script i use so no audio is served. I just want the video from the vobs...
Wouldn't KillAudio() do it?
benf2
8th September 2002, 17:03
thanks for the reply...will tryit!!
i tried a google search for avs syntax and didnt find alot of info...
Is there a site(webpage) that has most of the syntax for most options listed so all I (we) would have to do is plug in our info?
primitive
8th September 2002, 17:35
nic.dnsalias.com is down for me. Anyone have a mirror of v1.3?
-p
Swede
8th September 2002, 20:09
nic.dnsalias.com is down for me. Anyone have a mirror of v1.3? Sorry for this, my provider had trouble. But it's online again.
jdobbs
9th September 2002, 00:10
I'd like to add my request to neuron2 -- RFF/TFF support would really be appreciated.
Thanks,
jdobbs
REIGN_
10th September 2002, 12:44
First time using MPEGDECODER and i had a problem. In vdub it shows the wrong time (2:51:02) but with the d2v file it is correct (2:51:03) The 1 second is not so big but i have a problem with the sound.
Tomatschek
12th September 2002, 08:20
hi Nic, hi mpegdecoder-user,
============================
First I want to say: very good
work. I wait a long time for
a deccs encoder usable in vdub.
I don't like to copy my DVD
material to HD because my
converting is realtinme (22-37fps)
so it does not stress the hardware
more than normal playback would do.
But I've a little problem. When I
use Ver.1.3 and vobs from HD-every-
thing is o.k. But when I use the
follow command (from your helpfile)...
<<<<<<<<<<<Encrypted Vobs>>>>>>>>>>
You can now read encrypted vobs straight from the DVD using the "decss" command in the transport
PID parameter.
e.g.
MPEGSource("g:\video_ts\VTS_02_01.vob", -2, "decss")
>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<
...I reseive the aviscript error:
"decss" is not a known command (or simmilar)
Is this a bug, or is it possible that I have the
helpfile V.1.3 but the mpegdecoder V.1.0 (timestamp
30.Aug.2002)?????
please help me - i think your proggi will
have a great future!!!
thanx
Thomas
(sorry for the bad english - I'm an alien in germany {;-))
Nic
12th September 2002, 09:24
Hmm how odd, maybe I did upload the wrong version....
try using just "dec" instead.
Hope it works out...Im doing too much at present so im going to have to give up some of the things ive been working on (XviD, MPEG2Enc, DVD2AVI a la Nic ;) , MPEGDecoder, etc) So im taking a little timeout. But ill finish it soon :)
(hmmm, my version of DVD2AVI can rip straight from the DVD alot easier :) (although without ifo parsing :( )
Cheers,
-Nic
vBulletin® v3.8.11, Copyright ©2000-2026, vBulletin Solutions Inc.