PDA

View Full Version : MPEGDecoder.dll (Direct VOB/M2v -> AviSynth)


Pages : [1] 2

Nic
13th August 2002, 13:13
http://nic.dnsalias.com/MPEGDecoder.zip

This is a beta I wrote for direct MPEG-2 into AviSynth...

sample script looks like:
LoadPlugin("MPEGDecoder.dll")
MPEGSource("d:\mp2transcode\mya.m2v")

It decodes quicker than MPEG2Source (MPEG2DEC.DLL) & therefore speeds up encoding...also you dont need to make a d2v file.

It can also read MPEG-2 Transport Streams :)

Ill be modifiying over the next few days, but I thought people could try it out... :)

Cheers,
-Nic

ps
Read the Readme.txt b4 use!

kyousuke
13th August 2002, 13:23
i'll try this right now!

thanks you ! :D

Koepi
13th August 2002, 13:41
Ahoy Nic,

how _dare_ you...?

Now I'm busy somehow extracting the m2v from my matrix VOBs which are unencrypted on HD (the DVD is gone somehow *whistle*), which is a major pain in the a..iroplane.

Would something like

s1=MPEGSource("vob_01_01.m2v")
s2=MPEGSource("vob_01_02.m2v")
s3=MPEGSource("vob_01_03.m2v")

Source=s1+s2+s3

work?

Another idea is
MPEGSource("D:\Video_TS\TheMatrix\vob_01_01.m2v"+
"D:\Video_TS\TheMatrix\vob_01_02.m2v"+
"D:\Video_TS\TheMatrix\vob_01_03.m2v"...)

Unsure if this works either...

(I can't simply join all MPEGs as FAT32 has a well known 4GB barrier :-/ )

I'm not sure as new vobs usually can start with a p-frame...

Anyways, great work, and hope fully I can report some success about the speed impact :)

Thanks,

best regards,
Koepi

EDIT:

ARGS! Dumb I am! Read the readme. Should do that before I start creating a plain MPEG2 file *lol*

Nic
13th August 2002, 13:48
s1=MPEGSource("vob_01_01.m2v")
s2=MPEGSource("vob_01_02.m2v")
s3=MPEGSource("vob_01_03.m2v")

Source=s1+s2+s3

doesnt seem to work (grrrr...) ill fix that now :)

Cheers,
-Nic

Koepi
13th August 2002, 13:52
Damn. I didn't want to cause more work...

Btw., nice credits in the readme ;)

I'm looking forward to the seeking support!

Best regards,
Koepi

ACClarke
13th August 2002, 14:01
A real speed improvement, very good work !!!
But I can just load 1 vob file....

This script crashes in virtualdub

LoadPlugin("C:\DIVX\avisynth\MPEGDecoder.dll")
mpegsource("F:\VTS_01_PGC_04_1.VOB")+mpegsource("F:\VTS_01_PGC_04_2.VOB")

But it's really a very great job.

Koepi
13th August 2002, 14:05
That script is technically the same as that one which Nic said it doesn't work and that he's fixing it ATM.

Regards,
Koepi

ACClarke
13th August 2002, 14:09
I didn't refresh the page before posting :)
so i don't see his answer.......
I'm sorry

Koepi
13th August 2002, 14:13
No need to be sorry, I just wanted to clear that up, some people don't know weather it's different or not. It wasn't meant offensive or anything in that direction.

Best regards,
Koepi

Nic
13th August 2002, 14:23
Hmmm, ive fixed it, ill edit this post & say when the latest version is up in a minute (im just testing at present)

Thinking about it though, using multiple vob files could cause problems because if the code guesses slightly wrongly about how many frames there are, you could miss a couple at the end of each vob, thats something that needs to be worked on...

Cheers,
-Nic

Dreassica
13th August 2002, 14:57
Originally posted by ACClarke
A real speed improvement, very good work !!!
But I can just load 1 vob file....

This script crashes in virtualdub

LoadPlugin("C:\DIVX\avisynth\MPEGDecoder.dll")
mpegsource("F:\VTS_01_PGC_04_1.VOB")+mpegsource("F:\VTS_01_PGC_04_2.VOB")

But it's really a very great job.

If im not mistaken u can merge the VOB's when riping them with Smartripper!! Would that work or is there some hidden prob with it?
I tried it and although it seemed slightly faster!

hakko504
13th August 2002, 15:00
If I recall correctly, one of the problems with using DirectShowSource on vobs are that unless you start each vob with a (I-)key-frame there would be problems with dropped frames when changing vob. I suspect it is the same problem you experience here. I think you should try to create something like SegmentedAVISource, where you give the filename as "filename.avi" but in reality loads filename.00.avi + filename.01.avi + ... Then you could have SegmentedMPEGSource("filename.vob") that automatically loads filename00.vob + filename01.vob + ...

ACClarke
13th August 2002, 15:01
If im not mistaken u can merge the VOB's when riping them with Smartripper!! Would that work or is there some hidden prob with it?
I have some problems with files bigger than 4GB
and i already have the vobs files on my hard disk

WarpEnterprises
13th August 2002, 15:08
1. Looks VERY VERY GOOD!!!
2. What's the reason (beside not having some time) that such a plugin doesn't already exist? (Was it difficult to make, or some drawbacks not clearly visible or mentioned?)

Dreassica
13th August 2002, 15:08
Originally posted by ACClarke

I have some problems with files bigger than 4GB
and i already have the vobs files on my hard disk
That only applies to AVI files, not MPEG

ACClarke
13th August 2002, 15:15
That only applies to AVI files, not MPEG
There is no limit for the file size under w98 ????
I'm sure that FAT32 file size limit is 4GB....

Koepi
13th August 2002, 15:17
I like the idea of SegmentedMPEGSource(). It should work a little different as usual though, because else we'd need to rename our vobs ;)

It wouldn't make a big differnce to do that, but while we're at it, it would be nice if that algo searches for "vts_02_X.vob", so the last number before the suffix should be incremented. This would make the frame-number problem less painfully I think, as that way you could treat the vobs as a virtual, huge single vob ;) (dunno if that's possible, but this is the idea that came to my mind).

Best regards,
Koepi

Nic
13th August 2002, 15:27
Hmmm...That does sound the right idea. If I treat it as one vob (i.e. make the read commands span over all the vobs, that could solve easily :) )

"I'm sure that FAT32 file size limit is 4GB" that is correct, (BTW standard (not DML) AVI files tend to have problems over 2GB (in size))

Ill work on that tonight :)

Cheers,
-Nic

easyfab
13th August 2002, 15:29
First at all, thanks Nic for this great work. For me, it give 5% acceleration.
I've a little question about iDCT, in the readme you say it's the same as in dvd2avi but 32 bit, 64 bit or IEEE-1180 reference ?

Nic
13th August 2002, 15:31
Its the SSE MMX idct (i.e. the 32-bit one)...Do you want others? (for me its always been the fastest (apart from SSE2 ones) & the accuracy very good)

-Nic

Koepi
13th August 2002, 15:34
Hehehe...

work on the 4GB limit of FAT32? ;)

Damn. Then I've now the time to fix OggMux, and I just looked at my sources and they're in such a mess that I really dislike doing that ;) Nic, c'mon, code now ;)

Btw., could you try and compile the filter with the intel compiler and with the options

-Ot -G6 -Qunroll -Qvec_report1 -QxiM -Qip -Gf -Qopenmp -openmp_report1

(removing other /O2 and /G* references)? This could give another speed boost I think :) (well, and it doesn't run on k6/k6-2 anymore... maybe we need two versions of that dll ;) )


Hm.

Thanks for your work Nic, I really appreciate it!

Best regards,
Koepi

Nic
13th August 2002, 15:39
Yep ill try with those Params...I normally just use /O3. Doesn't that use full optimisation?

There is too much SSE code in MPEGDecoder.dll so no k6-2/k6-3 support anyway :)
(I could use 3D-Now Motion Compensation for Athlon's etc, but im unsure that it would be better/quicker than SSE MMX.... )

Cant code now :) will later :)

-Nic

easyfab
13th August 2002, 15:49
Nic says :
Its the SSE MMX idct (i.e. the 32-bit one)...Do you want others? (for me its always been the fastest (apart from SSE2 ones) & the accuracy very good)

For me SSE MMX idct is good, actually just wanted to know if some speed optimisation could be done with using it.

CruNcher
13th August 2002, 18:22
Nic could u intergrate Dmitry and Frankensteins SSE2 Code Optimizations to get a little more speed on P4 systems that would be fine :)

Nic
13th August 2002, 18:25
Ive already thought about that :) I will do...
Do you have a link to Frankenstein's source? I know it must be in the DVD2AVI forum somewhere... :)

-Nic

trbarry
13th August 2002, 18:38
Nic -

Great work!

Much of DmitryR & Dr. Frankensteins source is already in the save-oe project, but not the GetBytes or color conversion code. But I have all of it from a few months ago. Email me if you need it.

But the performance important parts are probaby SSE2 motion estimation and IDCT, and they are already in there.


Thinking about it though, using multiple vob files could cause problems because if the code guesses slightly wrongly about how many frames there are, you could miss a couple at the end of each vob, thats something that needs to be worked on...

A wild idea ... have you considered taking your best shot and then sticking to it. ;)

That is, estimate the number of frames as good as you can and then returning exactly that many. Stop if long or pad black frames if needed.

Otherwise there may sometimes be Vdub like problems (used to be) where when you used DirectShowSource it would cause an error at the end of the file.

Maybe even stopping isn't necessary but I'll bet padding is. If you report 10000 frames then maybe you should return that many, even if they are not really there. ???

I don't know what the effect of all this would be on audio sync.

- Tom

dividee
13th August 2002, 19:19
Very nice Nic ! :)

I'm curious: Wouldn't it be difficult to implement random access without a d2v ?

What's going to be next? Azid-based AC3 decoding ? :p

Nic
13th August 2002, 19:48
:) Yup very difficult without a d2v file (well not difficult, but Id have to make an educated guess, seek to there in the file, scan for the correct frame, etc etc :) )

No random access with this filter, because for encoding, we dont use it :)

What's going to be next? Azid-based AC3 decoding ?
:) Now thats not a bad idea :) lol

-Nic

Koepi
13th August 2002, 19:51
Niiiiic!

Stop posting, add the multisegment reading, I want to do a testrun for the matrix! ;)

Best regards,
Koepi

dvman
13th August 2002, 21:33
I've used your sample script and only modified it to reflect my local paths. And guess what! I have no speed increase over the "old" dvd2avi(1.76)+avisynth(2.04)+mpeg2dec.dll. But thanks for your work anyway... :)

My core specs: AthlonTB 1400, 1Gig of Ram...

Nic
13th August 2002, 22:38
Strange ? Well it was definitely faster for me...but ive now added a MMX version of memcpy & restructured the decoding (I directly decode into AviSynth's frame buffer)

Dont expect a big increase though, its just that little bit quicker :)
(best to look at the estimated end time in VDub & compare)

@Koepi: LoL :) Ive just finished it (not yet for transport streams though), testing it now...

It now works so a sample script would look like:
LoadPlugin("MPEGDecoder.dll")
MPEGSource("e:\video_ts\vts_05_01.vob + e:\video_ts\vts_05_02.vob")

You can add upto 30 file names like that...does anyone know if there is a limit on the string size of AVISynth parameters??

Cheers,
-Nic

Koepi
13th August 2002, 23:25
Heh :)

Nice Nic!

If I remember correctly, a statement can only have 255 characters (somewhere deep hidden in the original aviysnth documentation).

Maybe it helps if you rename your files to something short and put the avisynth script into the same dir, then it shouldn't be a problem.

For now, it's beta, so such limitations are still very comfortable to live with, I think :)

Best regards,

Cheers *hicks*, :)
Koepi

Nic
13th August 2002, 23:57
Hmmm... 255 Thats even less than MAX_PATH. I guess I could also add support for .lst files then :)

-Nic

dividee
14th August 2002, 00:00
By looking at the source, I think there isn't any length limitation on strings. If there is one, it should be more than 4096 chars.

But it would be nice to have a SegmentedMPEG2Source anyway :p

For memcpy, you might want to use the env->BitBlt function provided by avisynth. For now it uses the stock C lib memcpy, but soon it will be replaced by highly optimized processor-dependent code.

Moat
14th August 2002, 04:28
Hmm, It doesn't seem to like my .m2v files. Mine are created from my tivo using extraction methods.

-Moat

Nic
14th August 2002, 08:31
@dividee:
Thats good news, ill add a segmented mpeg source too :)
(The memcpy im using at present is the mmx one supplied by AMD, Ive tried to cut the number of memcpy's now as well :) )

@moat:
Could you upload a sample somewhere of one of your small m2v files?

-Nic

jonas
14th August 2002, 12:48
sadly vdub crashes when I try to load my test.avs:
LoadPlugin("C:\...\MPEGDecoder.dll")
MPEGSource("C:\...\test.mpg")

Am I doing something wrong?
I'll add vdubs crashinfo as attachment.
The test.mpg is an mpeg2 file, 4.5 Mb in size, created with power vcrIII and works fine with .dv2+mpeg2dec.dll.

jonas

Edit:
Forgot to mention. I'm using the 2.04 avisynth at the moment. so might be that?

Nic
14th August 2002, 13:16
Hi Jonas,

is there anyway you can upload/send me a bit of that file.
I have a feeling it might be a raw mpeg2 file (ES stream). My new version has support for that....(i.e. you type "raw" in the PID field to set the decoder in raw mode)

I should release it soon :)

-Nic

ps
Whoever, came up with state sequence codes & program end codes for MPEG-2 should be taken outside & shot :)

jonas
14th August 2002, 13:25
Hi Nic,
I don't have much time at the momet, so I'll just add the mpeg2 file as attachment.
Would be great if it's allready solved.

jonas

jonas
14th August 2002, 13:34
the hurry made me forget to add the addachment

Koepi
14th August 2002, 13:51
Originally posted by Nic
I should release it soon :)


I'm sure plenty people will appreciate that! :)

Regards,
Koepi

sh0dan
14th August 2002, 15:25
Originally posted by jonas
sadly vdub crashes when I try to load my test.avs:
LoadPlugin("C:\...\MPEGDecoder.dll")
MPEGSource("C:\...\test.mpg")

[...]
The filter seems to require integer SSE - If you haven't got a P3, P4 or K7 this will happend.

Maybe there should be fallback to slower (pure MMX?) code?

(it's an illegal instruction with a pshufw)

Nic
14th August 2002, 15:33
Well spotted sh0dan, I just assumed that he had read the thread & seen & understood that it needs SSE...I should have made it more clear.

The original C code is still quite quick, so Ill add that back in later, but most probably have a SSE computer (even this ancient Celeron im using does) :)

Just added a new function called NicCrop...same as AviSynth's Crop but takes more obvious parameters...
i.e.
NicCrop(8,10,64,68)
will crop 8 off the left handside
10 off the right handside
64 off the top &
68 off the button

(well, it will be useful for me at least...just testing to do now :) )

-Nic

Koepi
14th August 2002, 15:37
Nic,

you certainly rule! I like that crop version, it's easier to take over the values you found in vdub, thus more intuitive (no more switching around between the filter chain view and the cropping window! YES!).

Thanks for your nice work!

Btw., could you upload a current snapshot? I'm still waiting to encode the matrix again ;)

Best regards,
Koepi

Nic
14th August 2002, 16:05
Well just to please Koepi: :D

http://nic.dnsalias.com/MPEGDecoder.zip
version 1.0 beta (beta because I havent tested thoroughly yet)

The documentation has been hurriedly updated so please re-read for new features, ill update it properly soon :)

This version is definitely faster, supports multiple files, list files, NicCrop & more stable (hopefully)

Cheers,
-Nic

hakko504
14th August 2002, 16:18
Just nitpicking a little, but how would NicCrop(8,10,64,68) differ from the regular (A2.03+) Crop(8,10,-64,-68) ?

WarpEnterprises
14th August 2002, 16:24
It seems not at all.
We will have to mark the new functions very clearly in the docs.
(There isn't only this example!)

Nic
14th August 2002, 16:25
:D LoL Didn't know you could do that with the negative numbers....oh well, its there anyway for people to use :)

Cheers,
-Nic

ps
Oh I didnt realise its a recent addition (Avisynth 2.03+), Im glad I did it then, because im still using beta 5 :)

hakko504
14th August 2002, 17:24
Originally posted by Nic
Oh I didnt realise its a recent addition (Avisynth 2.03+), Im glad I did it then, because im still using beta 5 :)
I thought so. :D


Keep up the good work: I haven't had time to test the new decoder properly yet, but I will do so in the near future. It looks very promising, to say the least. Just adding a few fps will be very useful :)

ACClarke
14th August 2002, 17:45
multi vobs is OK
but there is a problem with frames estimation
for exemple
Lord of the ring (the anime not the movie)
real frame number(dvd2avi) -> 192008 frames
when I use a lst file -> 221898 frames
with vob1 + vob2 + ...... -> 285598 frames

for me it's the last bad point

The Link
14th August 2002, 18:03
I made a little test: Encoding one VOB-file and looking at "Time remaining" in VirtualDub after 3 minutes. AVS2.04, Win2000, P3 667, 256 SDRAM

With Nicīs plugin the estimated remaining time was ~1 minute shorter than with mpeg2dec.

But when I insert "SetMemoryMax(40)" in my script, the behaviour is upside down: mpeg2dec is faster than Nicīs plugin though there are peaks up to 17 fps with Nicīs plugin but it falls down to 1 fps very often. mpeg2decīs behaviour is more stable.

I know that this is not very specific. Sorry!

Regards,

The Link

jonas
14th August 2002, 18:18
oop sorry, forot that this crappy thinkpad I'm using while I'm not at home (for the next to weeks) is a P2.

Well, I'll borrow one with SSE to do some testing. Thanks for the hint sh0dan.

jonas

Nic
14th August 2002, 18:20
@TheLink:
But is MPEG2DEC.DLL with SetMemoryMax(40) as quick as my decoder without SetMemoryMax(40)?

-Nic

ps
Ill work on that frame accuracy :)

ACClarke
14th August 2002, 18:23
Originally posted by Nic
Ill work on that frame accuracy :)
cool !

The Link
14th August 2002, 18:23
@Nic

Iīll repeat the test with "SetMemoryMax(40)" to be absolutely sure!
Will be back soon...

The Link
14th August 2002, 18:44
Same test arrangement as above (with "SetMemoryMax(40)"):

Mpeg2dec: remaining time ~19:30 min; relatively stable fps

Nicīs plugin: temaining time ~19:40 min; heavy peaks (falling down to 1 fps very often and rising up to 17 fps)

In this test you can see no significant difference in speed. But this has nothing to say because of the unstable behaviour of Nicīs plugin regarding fps (Iīve waited one minute more and the remaining time was 20:40 mins). To make a significant test Iīll have to encode the whole VOB-file. This will need some more time!

Regards,

The Link

edit: I didnīt read Nicīs answer as well as I should so forget this post! Iīll do it in the right way now.

The Link
14th August 2002, 19:18
ad 1: Donīt drink and post! :D
ad 2: "remaining time" = "Total time (estimated)"
ad 3: Mpeg2dec with "SetMemoryMax(40)" ---> 20:45 mins
Nicīs plugin without "SetMemoryMax(40)" ---> 19:30 mins
ad 4: This is my last post for today! Just a measurement to hold this forum "clean"!

Regards,

The Link

int 21h
14th August 2002, 21:39
Tested with the latest version of MPEGDecoder.dll available via Nic's site. Target clip was Chapter 37 of LotR, Region 1, Retail. Both scripts shared the following:

crop(0,59,720,357)
Decimate(cycle=5)
BicubicResize(640,272,0,0.65)

and only differed in relation to plugin load, and obvious source declarations. Target compressor was XviD, the 06/28 build from Nic's page, with a search precision of 5 and MPEG quants.

Mpeg2dec.dll
Returned 9588 frames
Slowest rate: 16 fps
Fastest rate: 20 fps


Mpeg2dec2.dll (Tom's 'special' P4 Loving version, and with
edited .d2v file to use idct=5 (i.e. sse2))
Returned 9588 frames
Slowest rate: 18 fps
Fastest rate: 22 fps


MPEGDecoder.dll
Returned 9580 frames
Slowest rate: 24 fps
Fastest rate: 27 fps


This shows some definite promise once the frame issue is resolved. Some random access-ness would be nice too, and once the SSE2 optimizations are in, idct, etc. I imagine it will be quite fast :) (Correct me if I'm wrong, but the random access-ness is required for CCE to function correctly?)

All benchmarks gathered from P4 1.5ghz, 256mb RDRAM, running Windows 2000 SP3.

WarpEnterprises
14th August 2002, 21:45
CCE to function correctly
I suppose it is necessary for ALL multi-pass encoding (TMPG 2pass,...) ?!

int 21h
14th August 2002, 21:47
Originally posted by WarpEnterprises

I suppose it is necessary for ALL multi-pass encoding (TMPG 2pass,...) ?!

Anything that doesn't specifically close the handle to the file and reopen it will screw up I think. So two pass XviD via VDub will work if you use the Job Control, however, CCE, et al, I don't think will work correctly, but I haven't tried it yet...

trbarry
14th August 2002, 22:20
Actually, except for great leaps forward in the file you could rely on building an internal d2v file on the fly as you read forward (slowly and sequentially) but allow yourself to teleport rapidly to anywhere you had already been, using logic pilphered from DVD2AVI.

But it would still take forever if you opened it in vdub and dragged the pointer over to the right.

- Tom

int 21h
14th August 2002, 22:43
Come to think of it, I've never really seen anything that handles non-sequential access on the fly in MPEG-2 very gracefully.

WarpEnterprises
14th August 2002, 23:30
The bad news:
* TMPG definitely can't do 2pass with mpegsource
VERY SAD. Maybe a workaround is

mpegsource("clip.mpg + clip.mpg")

then TMPG "sees" the same clip twice ?

[EDIT]: Sorry, doesn't work. It sticks to the last real frame :(

* there seems to be a minimum clip length (~35secs) below the frame count gets completely wrong / negativ

The good news:
* It's really fast (~25% faster than mpeg2dec) and handy (you have to count the time for DVD2AVI-save_project)

Koepi
15th August 2002, 02:33
Hm. I'm not sure yet if I fell over a bug or what that is what I experienced...

using the
MPEGSource("file-a + file-b +file-c..") version, the first von gets decoded _fast_.
But after ~1h30mins the rate dropped from 11-16fps down to 7-8 fps and stayed at that level.

I restarted the computer and try again now, maybe avisynth got somehow swapped out into the swapfile or something.

Another note, using that opening option from above, if you provide a frame-number, the avs crashes vdub.

Hmmm. Did I notice anything else? Well, not really. Just want to help the development here :)

Best regards,
Koepi

Koepi
15th August 2002, 05:27
Hm, too bad. it's getting slower and slower.
It consumes more and more memory - maybe there's a leak in it?

Regards,
Koepi

EDIT: I'm using the avisynth cvs snapshot from yesterday btw., might there be a problem?

jonas
15th August 2002, 11:45
Hi Nic,
is there any way of getting the source code?

I just played a little with the mpeg2dec.dll to make it save the audio on the fly to disc. Still having one tiny problem, but anyway.
My aim is to make the decoder buffer the audio until it is requested by getaudio. Although it might still be of interesst to keep the posibillity to save certain tracks to disc...
Its just demuxing and not decoding, as later on, when comressed auido streaming may be possible with avisynth people might want to keep the mpa or ac3. So I thought its best if it just gives back the raw data, which would that have to interpreted by an audio plugin (I think someone allready metioned a Besweet plugin earlier in this post).

Anyway, I'd basicly like to do the same to your .dll

sorry for this long post
jonas

Nic
15th August 2002, 12:13
Im at a clients so ill be quick :)

1) Ill add random access, it doesnt take too long to flick thru the file & keep a table of appropriate points in the file...but this will take some time

2) Ahh yes, the two pass problem, didnt think of that. Ill make it so when asked for frame 0, it will reset itself to the start, that will hack it enough for now :)

There shouldn't be any memory leak in it ?? Ive kept memory utiliasation to a minimum...(have you tried AviSynth beta 5?)...I look for a leak tonight though)

Cheers,
-Nic

ps
Sounds unbelievable I know, but does MPEG2DEC.DLL report the correct number of frames, I was manually going throu each PTS, SCR & GOP with a bit of code last night, & still wasnt getting exactly what MPEG2DEC.DLL reports....I might have to ask for mpucoders help on this...

Koepi
15th August 2002, 12:23
I'll try again with 2.02 avisynth version, worked best for me until now :)

MPEG2DEC delivers the right framecount, at least here... matrix has the 196155 frames that are corresponding with the real data ;)

Regards,
Koepi

Nic
15th August 2002, 12:29
How do you exactly how many frames there are in the film?

-Nic

Koepi
15th August 2002, 12:47
Virtualdub reports them to you, just move the slider to the last frame. VDub also shows it when encoding, frame no. X/Y.

My "chained vobs" get reported as ~1193000 frames btw when using mpegdecode ;)

Hope this helps,

regards,
Koepi

Nic
15th August 2002, 12:52
Mmmm..Yep thats what MPEG2DEC.DLL reports, but I think its very slightly out (you can also just go File->Information to get the frame length)

Thats way out! Ooops, must have made a real mistake there with the estimation :D

Ill fix it to be more accuate either tonight or tomorrow...

Cheers,
-Nic

Koepi
15th August 2002, 15:22
Just rechecked with mpeg2dec.dll, it reports 196155 frames, which is correct for the matrix... (or maybe it's wrong? ;) )

Best regards,
Koepi

Nic
15th August 2002, 15:31
LoL.

@WarpEnterprises: do you have a clip around ~30secs you could upload? That would help alot (the smallest I have is a 1minute transport stream one)

maven
15th August 2002, 19:08
Not that I want to lessen Nic's work, but saving the time to create the DVD2AVI project does not really count as a "pro"-argument... (although speed does ;))
just create the .d2v while ripping (as you have to read / copy / decrypt the data anyway...)

Nic
15th August 2002, 19:19
:D lol, that would require folks to use VStrip though wouldn't it :)
You're right it's not really a pro argument, but not everyone does dvd ripping when encoding from MPEG-2 & if I can get the frame estimation accurate then it might make life a little easier for some folk...

Take Care,
-Nic

WarpEnterprises
15th August 2002, 22:33
I attach a 16secs mpeg2-clip, that doesnt't work. The same when longer than ~35secs works fine.

@maven: It's not only the time creating a d2v which I see as a con but the dependence on a 3rd program with all versioning conflicts just for creating an index that is not ALWAYS needed. I will take whatever best suites, both ways have their place (in analogy to Avisynth and VD - both do the same but nevertheless you also need both.)

...waiting for the 2pass fix :D

jonas
15th August 2002, 22:38
A solution to get an accurate frame count would be to determine the VideoPTS at start and beginning of each 'chained mpeg2' file and calculate the number of frames.
If the VideoPTS at the start of the second (or third...) file is not set to 0 (the files are not seperatly encoded) the framenumber of the end of the 1st file would just be -1 that framenumber.
For the last file in the sequance one would have to seek near the end and read until the last frame is decoded and get that PTS.

This would also make seeking to certain frame easier, as it would be approx. at (frame/(start_file_frame-end_file_frame)*filesize) , wouldn't it?

This would of course require up to 2*number_of_files seeks to get the frame number at worst case, and a min. number_of_files +1 seeks.

just a thought
jonas

Nic
15th August 2002, 23:27
A solution to get an accurate frame count would be to determine the VideoPTS at start and beginning of each 'chained mpeg2' file and calculate the number of frames.

Thats exactly what it is doing now! :) (although a bit buggy :) )

This would also make seeking to certain frame easier, as it would be approx. at (frame/(start_file_frame-end_file_frame)*filesize) , wouldn't it?

Its not quite as simple as that...but I get what you mean :)

@Warp:
Thanks for the file, Ill try that out tomorrow :)

Cheers,
-Nic

Moat
16th August 2002, 00:14
Okay the new verison with the 0,"raw" option works on my Tivo .m2v files now. Sweet. Thanks

-Moat

Nic
16th August 2002, 15:50
http://nic.dnsalias.com/MPEGDecoder.zip

version 1.1

Should now work with multipass (not tested, but it should do :) )
(When asked for Frame 0 it will reset to start)

No more memory leak...was due to the way I was giving the frame to avisynth.

new option of -1 for frames, this should calculate the number of frames more accuratly (& slowly).

Will work with real small mpeg files now (thanks WarpEnterprise)
(was due to doing a seek from SEEK_END that was bigger then the file length)

Documentation in HTML

Cheers,
-Nic

jonas
16th August 2002, 16:22
Hi Nic,
just making sure:
without the -1 option: is the incuracy as large as described by koepi or up to about 10 frames, as you described in theGetting SCR values from a program stream (http://forum.doom9.org/showthread.php?s=&threadid=29262&pagenumber=2) thread?

I guess it's the second....but anyway

jonas

Nic
16th August 2002, 16:27
I dont understand how Koepi got such an inaccuracy, ive never got that. Best bet is to give it a try & tell me how you get, I dont have a large complement of vobs to try it with....

Thanks,
-Nic

ps
version 1.1 out at http://nic.dnsalias.com/MPEGDecoder.zip

WarpEnterprises
16th August 2002, 21:42
* Sorry, but 2pass doesn't work.
In TMPG it crashes in the 2nd pass (as if it tries to read over the border).
In VD there is sometimes a jump to 0 but not always (I couldn't reproduce the behaviour). It seems as if there is a delay from calling frame 0 and the actual reset.

* Short clips are OK.

* There is a crash when the file is not found.

* The -1 framecount option is reasonable fast/slow (1000fps), but there is an error when the stream is mpg2-svcd. Then you get a false count by a constant factor of about 0.1%.
* m2v works 100% accurate.

Please, continue your good work!!!

Nic
16th August 2002, 23:06
Thanks for the feedback...back to the old drawing board then...

Time to download TMPG i guess.... :)

There is a crash when the file is not found
Cant believe I havent fixed that yet :)

The -1 framecount option is reasonable fast/slow (1000fps), but there is an error when the stream is mpg2-svcd. Then you get a false count by a constant factor of about 0.1%
Hmmm, how was it with 0 framecount on SVCDs? I only ask becaus I tried today with a 3 CD SVCD (LOTR btw) & the frame count was exactly right with framecount = 0;

m2v works 100% accurate
cool :)

Well ill keep trying :)

Cheers,
-Nic

WarpEnterprises
16th August 2002, 23:15
- with the frames "0" setting the number are 100% ok on SVCD.

- I think the "request 0" thingy should work in VirtualDub in the first place, at least in Preview mode (F5), there it is clearly visible what happens (don't waste time with TMPG).

Koepi
17th August 2002, 01:10
Hi,

ok, downloaded the latest version and tried again, following avs:

SetMemoryMax(40)
LoadPlugin("D:\Video_TS\sbc-ripping\avisynth\mpegdecoder.dll")
mpegsource("D:\Video_TS\TheMatrix\vts_02_1.vob + D:\Video_TS\TheMatrix\vts_02_2.vob + D:\Video_TS\TheMatrix\vts_02_3.vob + D:\Video_TS\TheMatrix\vts_02_4.vob + D:\Video_TS\TheMatrix\vts_02_5.vob + D:\Video_TS\TheMatrix\vts_02_6.vob")
Crop(0,78,720,420)
BicubicResize(640,272,0,0.5)

I'm using avisynth 2.0.2 again ATM.

Find attached the vdub fileinfo screenshot (hurry up mods, make it visible ;) )

Koepi
17th August 2002, 02:35
Ok, 1h20mins of the encoding first pass done, time for some results:

The speed remains constant now (yay!).
The frame sizes differ from a usual mpeg2dec.dll encoding (unsure yet if it's a yay!, but it's a difference :) )

Heh, just wanted to report my experiences until now :)

Btw., I use a range within vdub now, set to 196874 (just did a -1000000 on the value returned by vdub for total frames) which is relatively close to 196155 reported via mpeg2dec.dll.

Time for me to get some rest, I'll report more tomorrow!

Nice work Nic!

Best regards,
Koepi

unplugged
17th August 2002, 03:20
Originally posted by Koepi
Crop(0,78,720,420)
BicubicResize(640,272,0,0.5)

Just only curious,

Is this setup targeted for 2 700Mb CDs ?

Koepi
17th August 2002, 03:24
Nope, that's for 1CD. Exactly the same setup that doom9 uses for codec comparisons.

regards,
koepi

unplugged
17th August 2002, 03:41
Nic,

MPEG2 content is often coded in YV12 (2x2 chroma), some time ago trbarry has said that (normally) Avisynth when grabbing the MPEG2 frame (think it was referring mpeg2dec.dll) interpolates the chroma when passing from 2x2 field scheme to 2x1 (YUY).
Of course this would create undesirable, "guessed" stuff.

Could you avoid that interpolation in MPEGsource?


(this also to favour and maximize macroblock-to-macroblock matching in my "lucky" flasking encodes at aligned strategic crop offsets (8,72) and resolutions (704,432) ;) ... allowing me, with mpeg2avi yet, very low 1st-pass sizes!!)

trbarry
17th August 2002, 05:57
MPEG2 content is often coded in YV12 (2x2 chroma), some time ago trbarry has said that (normally) Avisynth when grabbing the MPEG2 frame (think it was referring mpeg2dec.dll) interpolates the chroma when passing from 2x2 field scheme to 2x1 (YUY).
Of course this would create undesirable, "guessed" stuff.

unplugged -

That actually happens in MPEG2DEC.dll. DVD's are stored with only one row of color info between 2 rows of luma info, so all the YUY2 color info is guessed at, since none of it represents sample points that were actually stored in the DVD.

A similar process happens again if it gets converted up even further to RGB, say by going to Virtualdub not in Fast Recompress mode.

So by the time you have gone from YV12->YUY2->RGB you have created 4 points of color info from only one and that one did not even represent any pixel location in the RGB image.

Luckily our eyes can't see color as good as brightness. ;)

- Tom

Nic
17th August 2002, 09:15
Well,

(I was up until 3am last night trying to fix this....so im very bleary eyed at present :) )

I have to do a YV12->YUY2 conversion...Im hoping one of the plans for the new AVISynth is to have YV12 support (& therefore have some YV12 filters)...That would be great (& even quicker :) )
So im not sure what I can do different to MPEG2DEC.DLL

At present I can get CCE & Nandub to do multipass encodes (so thats good :) ) (havent tried tmpg yet)

More code to write ;)

-Nic

Emp3r0r
17th August 2002, 12:12
Great Job Nic!

I tested and with the -1 option i got 186340 frames. Yet it took way long time. With d2v file there was 186446. So you are very close to having the frame count correct. Good luck! BTW, this was multiple VOBs like koepi's setup.

Koepi
17th August 2002, 13:42
Hi again,

I tried the -1 parameter now, it took nearly 7 minutes to scan the files (so about the time dvd2avi needs to scan them... ;) ), the result is:
196556 frames. That's much closer, but since I tried to set a range of 196874 yesterday, I could see that the movie _really_ has 196290 frames, since at frame 196291 vdub crashed.

So DVD2AVI reports too few frames - and mpegdecoder slightly too much ;)

is there something you could do to prevent such chrashes, Nic? How about padding black frames when the mpeg2stream ends? shouldn't cost many bits in encoding, and it would make an automatic 2pass possible ;)


Best regards,
Koepi

unplugged
17th August 2002, 13:42
Originally posted by trbarry
...since none of it represents sample points that were actually stored in the DVD.

This is sure.
What I meant is

Why do not perform a specular projection?
I point this because "later" the frame will be re-treated as YV12

Originally posted by trbarry
Luckily our eyes can't see color as good as brightness. ;)

I always talk from the encoder's point of view (eye) :)
More accurate is data (especially when not further filtered/resized), more near to transcoding is the re-encoding process.
Although, I may be too purist... but I think that don't cost much such modification to allow pix-to-pix projection (of course, doubling 2x2 data to 2 twin 2x1)

Koepi
17th August 2002, 14:40
Hi,

another suggestion:

If you read the frame count via -1, can you write out a file which stores these informations, so you can access the files faster the next time? something like "inputfile.fc" would be appropiate. if file_exists("<inputfile.rc>") {gain info there} else {scan the input files} ?

Best regards,
Koepi

Koepi
17th August 2002, 15:35
I'm starting feeling bad because I post so much here...

I tried a "short twopass" to check a feature for xvid which was suggested by syskIn (btw., I'm going to release a new binary very soon, just have to recompile the sources again and do some cleanups like setting "better" default values for alt CC...).

There I fell over following:
The first pass (2000 frames) went well
The second pass, started immediatly after that, wasn't returning the frames starting at 0, which you can clearly see watching the debug output - scaled size and reached size didn't correspond in any way.

Reloading the AVS script and then doing the second pass, the AVS returned the first few seconds correctly, reset itself to zero - and there the damage was done again.

That happened tonight with a full matrix 2pass as well, and I started wondering where the curve distribution derived from (I was asleep so I couldn't watch the debugview output).
The distribution looked like having a near perfect gaussian statistical spectrum within uants 2-7.... and that distributed nearly perfectly repeated from 8-16...

I'm sorry to always cause troubles with that fine dll, I really like the attempt and that's why I guess! :)

Great respect for that work Nic!

Best regards,
Koepi

EDIT: I'm trying again now with rebooting the computer. maybe the system is f***ed up somehow due to different dll versions etc over the time, so this could help it. I'll do so before the second pass as well, and will do the same procedure (fetching "file information" before starting the second pass to ensure the result is the same).

Nic
17th August 2002, 17:24
All feed back is welcome (I feel bad for posting here too much too, I dont want people to think im bumping this thread up....(if im irritating anyone with this monstrous thread let me know & ill move comments,feedback etc to my site)

CCE (id never used before until about midnight last night :) ) tells me if the frames im returning on the second pass are the same as those on the first pass (it does a checksum)...That was very useful. Ive fixed the bug & two pass seems to be fine (as long as mpegsource doesnt overestimate the number of frames...i still need to work on that)

still needs work though, ive lost a little of the speed, so I need to rectify that before the next release :)

Cheers,
-Nic

Emp3r0r
17th August 2002, 23:41
AVS returned the first few seconds correctly, reset itself to zero - and there the damage was done again. I'm getting the same exact error. If you open in a player and hit play you can see it happen within a few seconds.

Nic
18th August 2002, 00:12
It should be fixed in the next release, part of the problem was the decoder wasn't being reset correctly on a frame 0, the other problem was that it was possible for me to return the frame & then my thread start fiddling with its memory... :)

I have better thread sync'ing now ;)
(at least I hope it will work better now, I can at least do CCE two pass fine :) )

Cheers,
-Nic

ps
I broke the speed of the version I was working on & couldnt get it back up so I had to go back to an early version & reimplement everything again slowly...hence the delay :)

Koepi
18th August 2002, 00:17
I'm really looking forward to that! :)

Even if there's no speed boost, I'd prefer it over mpeg2dec.dll as it opens the "native" mpeg2/vobs directly... well, it's just cosmetical, but I prefer that ;)

I hope everything works out fine there nic!

Off-topic: your email still gives me a connection time-out :-/

Best regards,
Cheers,
Koepi

Emp3r0r
19th August 2002, 06:49
bump, your MPEGDecoder.dll is exciting and I test it daily.
I too am looking forward to it's development.

Nic
19th August 2002, 12:29
version 1.11:

http://nic.dnsalias.com/MPEGDecoder.zip

Should now work on multiple passes,
the frame estimation still needs work....
(now works with Decomb as well...it crashed Telecide before)

-Nic

WarpEnterprises
19th August 2002, 13:34
yeah, now it's play time again :)
Speed is 50% faster than mpeg2dec !

:( Sorry, found a new bug: if the first frame called for the first time is not frame 0 then it hangs (but doesn't consume any cpu??).
So if you open in VD and move slider to the right (to frame1) it hangs, as VD doesn't display frame0 on opening.
If you press Preview before, then all is OK.

Nic
19th August 2002, 13:50
Oh yeah... Good point :) checking like that I normally take out. But its easy to solve (i.e. I check with each GetFrame to see if the decoder thread is running (WaitForSingleObject(hDecoderThread,0) but then again the filter doesnt support seeking.... :)

-Nic

WarpEnterprises
19th August 2002, 14:06
Sorry for not understanding you completely.
Does "then again" mean:
1- After the bug-correction there will be no seeking any more
or
2- telling us again: mpegsource does not support seeking

Nic
19th August 2002, 14:21
Number 2: :) MPEGDecoder.dll doesnt support seeking (as that would slow things down at present...) So although its bad that it crashes like that, it shouldn't ever happen with normal encoding use...

Cheers,
-Nic

Koepi
19th August 2002, 15:56
Nice Nic, thanks! :) Testing with the matrix again now :)

Best regards,
Koepi

Emp3r0r
19th August 2002, 16:43
Nic: could it be possible to enable or disable seeking based upon an argument in avisynth script? This way when you are cropping or searching for Credits start frame you can enable it and then when you encode just disable it. Just an idea for your amazing work, keep it up.

Nic
19th August 2002, 16:50
Definitely emperor thats the ideal solution, but thats probably a little way off yet...Do you remember that Japanese VFAPI Mpeg-2 codec? The later versions of that can be used as a AviSynth filter....that supports seeking...but it is ssssllllloooowwww :)

-Nic

unplugged
19th August 2002, 17:12
I may understand "sssssssssloooooowwwwwww" because NOT index based.
Do I think so? :rolleyes:

Or.... "Seeking slows sequential decoding" is the news of week!??!? :)

I don't intend to push, but further, you could insert the option (and of course, the code) to create a binary .IDX file named with the same VOBs' name, that contains the seek points. (source scan will just performed one time until the index file is made).

WarpEnterprises
19th August 2002, 19:15
When creating an index what's wrong on generating it in memory?

Koepi
19th August 2002, 19:37
You'd need to regenerate it with every close/reopen again, which is time consuming.

Regards,
Koepi

Danny
19th August 2002, 19:43
is it just me or is the "-1" option not working anymore?

Danny

unplugged
19th August 2002, 19:44
When creating an index what's wrong on generating it in memory?

ah! ... :D

Creating such like operation, as I'm pointing, require entire MPEG content scanning, just similar as creating D2V projets.
for eg. DVD2AVI takes on my K7-2100+/IBM-60GXP 2 mins 10 secs.
Couldn't repeat it for each avisynth session re-runned...
...so to save it you must simply dump memory to one file... movie.idx

[Edit]

...excuse me ... post storming!

Nic
19th August 2002, 20:26
@unplugged: ssllooww...because its slow. at everything.
Maybe its the language barrier unplugged...but I dislike your tone...

@danny: Doh! I had to start from a earlier code base (I broke the increased speed somehow). So I may have broke that with the re-implementing...Ill fix it v.soon. :)

-Nic

Danny
19th August 2002, 20:47
no problem,
Maybe to help you: The maximum frame number you can put in does work.

Danny

jonas
19th August 2002, 23:04
As the discussion on frame seeking came up again, I thought I might poil the post with my thoughts again, even though it'll probabbly be a while until Nic has implemented the seeking.

anyways, I somehow don't really like the idea of going through the like creating a DVD2Avi like GOPList, since the usual amount of seeks people need of a file probbaly is not that hight (i think).

For small offsets of frames wouldn't it be acceptable to just read out the data until we're at the right frame?
For larger offsets a binary search should still require a ralativly small amount of seeks (as soon as you're close you can just read out again)
Although I'm not sure about how to know where we are in the file (at what frame) if calucating the framenumber from PTS doesn't ork propperly. (which I don't understand, but that would you said Nic, wasn't it)

While this is done a tiny List could be created storing framenumber &position every once in a while and a important positions (before and after seeks), so binary search start min&max values can be found by doing a bin search in the List first.
This way the second pass seeks would be accurate again, so no unnecessary seeking during second pass.

I feel I wrote some pointless stuff, but I'm not sure,
jonas

btw: just wanted to thank Nic for doing this great work

unplugged
20th August 2002, 03:27
Originally posted by Nic
@unplugged: ssllooww...because its slow. at everything.
Maybe its the language barrier unplugged...but I dislike your tone...
Not to be tedious (voice), excuse me :)
Just haven't understood the point in your past post
Originally posted by Nic
...Do you remember that Japanese VFAPI Mpeg-2 codec? The later versions of that can be used as a AviSynth filter....that supports seeking...but it is ssssllllloooowwww
Sorry again...

Diable
21st August 2002, 02:06
Originally posted by Danny
is it just me or is the "-1" option not working anymore?

Danny

I'm using 1.11 and it dosen't work for me either.

Nic
21st August 2002, 07:03
Before I go away for a week...

http://nic.dnsalias.com/MPEGDecoder.zip

Version 1.2

Now has basic seeking :D
(& using -1 works again)
Also, Koepi found a problem I think at VOB changes, this should now be fixed. (I hope!)

Cheers,
-Nic

GZZ
21st August 2002, 08:36
very nice Nic.

Its gets better and better every day. :D

The seeking works perfekt here. :D


GZZ

Koepi
21st August 2002, 10:30
Very nice work again, Nic.

I can't test it before tonight as now I'm in the middle of a 720x304-1CD-Matrix encode ;) (with evil convolution3d filtering...amazing to see all the details, no ghosting... and all the noise is gone!)

Best regards,
Koepi

P.S.: enjoy your week off Nic :)

Wimpy
21st August 2002, 10:32
Nic,

Is MPEGDecoder.dll being developed as a component part for your modified DVD2AVI?

BTW, is there a download URL for your DVD2AVI? I would like to give it whirl ;-)

In any case, thanks for all your hard work on this plug-in, it is most useful and super speedy :-D

GZZ
21st August 2002, 10:52
mpegdecoder has nothing to do with dvd2avi.

You can use it in your Avisynth script eks:

LoadPlugin("SimpleResize.dll")
LoadPlugin("MPEGDecoder.dll")
MPEGSource("E:\Test3\VTS_01_1.vob + E:\Test3\VTS_01_2.vob + E:\Test3\VTS_01_3.vob", 0)
SimpleResize(480,432)
AddBorders(0,72,0,72)
ResampleAudio(44000)


But read the html file which comes with mpegdecoder.dll.

GZZ

Wimpy
21st August 2002, 12:27
GZZ,

Yep, I know avisyth is seperate from DVD2AVI ;-) But I read some threads about Nic's version of DVD2AVI and he says that he has added Decomb and IVTC to DVD2AVI.

I was wondering if these features were added directly to DVD2AVI, or if he has integreated avisynth.dll (and some plug-ins) as a pre-processor for DVD2AVI.

GZZ
21st August 2002, 19:23
I tested mpegdecoder a little bit more and I got 2 vob file which mpegdecoder says have the wrong timecode.

I made a avs file with these two lines:

LoadPlugin("E:\Test3\MPEGDecoder.dll")
MPEGSource("E:\Test3\vts_01_1.vob", 0)

and loaded it into MS Media player and it says the time length was 03:59:02 (almost 4 hours).

I rippede the movie with Vstrip and its only file 1 and 2 (1 GB each) which have the time length wrong.

I also tryed other program like Smartripper. But some of the vobfiles just have a wrong timecode.

I can be anything from 2 hour for 11 hours. A normal vob file at 1 GB should be around 20-25 min long.

So when I my script with the hole movie into ms media player. The movie is about 20 hours long. I have tested a few movies and they all have the same problem. I also tried the -1 and it gives the same result as the 0.


GZZ

PS: The vobs have no error or anything. They play fine in DVD2AVI and other apps.

benf2
21st August 2002, 22:23
I tried importing a m2v .... no luck

tried vob files .. no luck


Just trying to do basic script...no filters.
Did the load thing and source but when i try to load the avs into link2 its not correct...shows wrong res. and movie lentgh. Have u tested this dll with link2?

Koepi
21st August 2002, 23:11
Should be a problem of link2 (always blame the commercial product first, before blamin a near-alpha-free-software piece ;) )

Regards,
Koepi

Emp3r0r
22nd August 2002, 06:30
also try opening the avs script in virtual dub too

[edit] OT: How do you programmatically get the length (in time) of a movie in a vob file?

public long Duration()
{
long dur = 0; int hr;
if (mediaSeek != null) hr = mediaSeek.GetDuration( out dur );
return dur;
}works (except with VOB sources) using DShowNET in C#

GZZ
22nd August 2002, 08:49
yea I get the same problem with the timecode even ind Vitrualdub.

and I know all that with directshow. Its the same kind of code you can use in Delphi. But before vob files works. You need to have a DS filter install. Like WinDVD DS filter.


GZZ

Koepi
22nd August 2002, 10:21
Originally posted by Emp3r0r

[edit] OT: How do you programmatically get the length (in time) of a movie in a vob file?

public long Duration()
{
long dur = 0; int hr;
if (mediaSeek != null) hr = mediaSeek.GetDuration( out dur );
return dur;
}works (except with VOB sources) using DShowNET in C#

Wua, c# is no programming language :-/

well, anyways, go to the developers forum and find a long thread about getting file times from vobs... It's active ATM so it's at the top of that forum, something like "getting SRC times".

Koepi

Emp3r0r
23rd August 2002, 06:30
thanks for pointing me to that thread... an interesting read indeed ;)

ok, back to mpegdecoder.dll, i can verify seeking is working. great job nic! is the frame search code using -1 the same as before?

ps: i have a UML and a C++ class this semester, soWua, c# is no programming language :-/ I may aggree with you by the end of the year :D

Moat
23rd August 2002, 16:55
Is it possible to call mpegdecoder.dll from VB or c++ and have it return video info(Height/Width/# Frames)?

-Moat

Nic
24th August 2002, 11:27
@Moat:
Ill try to add something in that does that soon :)

@emperor:
UML & C++ hey? :) Im sure youll like them :)

@gzz:
I can now work on getting this frame estimation right, I should be able to improve it quite a bit, the only other thing I want to do with MPEGDecoder.dll now is that & make it into a DirectShow filter...

@benf2:
Hmmm, I have tested with Link2 & it works fine for me....please keep trying.

@wimpy:
Yes, because my DVD2AVI uses AviSynth, it may also use MPEGDecoder.dll in the future... :)

Im away till tuesday, but then ill try to address the problems...

Cheers,
-Nic

pankov
24th August 2002, 18:52
In the documentation I read that MMX and SSE are required but I have Duron@1000MHz which only has MMX and 3DNow!. Despite this I tried mpegdecode.dll and it worked with .vob files but not with .m2v files. I also tried using
mpegsource("work.m2v,0,"raw")
but it doesn't too. I got this .m2v file from work.vob which opens fine. I used De-mulitplex tool of TMPGEnc and the file should be OK because it opens just fine in Windows Media Player and WinDVD and DVD2AVI.

Can someone tell me what's wrong?

In this thread there was a discussion about the audio in the file that's loaded. What's the current state? Is the audio decoded? Can I use this plugin to demux my .vobs to .m2v and .ac3(.dts) so I can stop using DVD2AVI? In the last question I try to emphasise on .dts.

vlad59
24th August 2002, 19:03
I can only answer to one of your questions :
Your duron has Integer SSE (wich is called extended 3Dnow by AMD) that explain that MpegSource worked on your computer.

sh0dan
24th August 2002, 19:03
@pankov: Your Duron has INTEGER SSE, as does all Athlon processors. This is the part of SSE, that doesn't deal with float-numbers.

@vlad: damn, you beat me to it :)

pankov
24th August 2002, 19:26
:)
I know that Duron processors has Integer SSE but I didn't know that MPEGDecoder.dll needed only this.

10x to both of you for clearing this to me. Now I have to search elsewhere for a reason for my problem

Marc FD
24th August 2002, 23:56
@Nic
hi. i really don't need more speed because for me,
MPEG2DEC.dll work @ 60 fps in full res. (and i've only 1.4 Gzs...)

but, damn, im a so curious guy that i wanted to take a look of on it.
after all, 80 fps could be even better than 60 fps, right :D

so i install, add it to my lib.avs import library,
and make a little test with a .m2v on my HD.

1st attempt ) MPEGDecode("c:/dvd/dvd.m2v")
2nd attempt ) MPEGDecode("c:/dvd/dvd.m2v",0)
3rd attempt ) MPEGDecode("c:/dvd/dvd.m2v",-1)
4th attempt ) MPEGDecode("c:/dvd/dvd.m2v",1000)
5th attempt ) MPEGDecode("c:/dvd/dvd.m2v",1000,"raw")

for all these, (the only ones i tested)
VDub crashes. a very strange crash. not the habitual access violation.
(not from avs but from my filters ;) ) nor the rare suddenly-vanish-in-air (my favorite)
no. it does nothing : it seems to wait for something (0% cpu load).
maybe MPEGDecoder need 5 min to a look in the file?
but i don't think so since it's designed to avoid this step needed with MPEG2Dec.
i think it's a PEBCAK (problem lies between chair and keyboard)
my .m2v file be muxed and i need to type something else than "raw" (but i don't know what...)

2 little features requests (doable)
- could you add friendly error boxes ??
- any way to autodetect the main video stream (the biggest of all ;) )

a big feature request.
- ac3 demuxing & ac3 playback. The dream would become true. :) :D :cool:
i think this feature is asked by all. but i wont complain if it's never implemented. (by you, trbarry or ony other _good_ coder (so i'm excluded ;) )
but if a day someone do it, it would be... i think you simply can't put it in words.
I'm already very happy because dividee added acm audio in AVIsource.

after this prayer, an idea : (don't laugh please :D )
could it be possible to adapt the postprocessing of your XviD DShow filter to the MPEG-2 decoder ?? I think for bad masterized DVDs, you could use it to do a very subtle fully motion compensated filtering. It would simply be outstanding.

i don't think making feature requests is a very valuable action. it's why i offer here my to help on any devellopement i proposed
(because with my knowledge in this :( i can only help :) )

Regards,
Marc

Blight
25th August 2002, 00:20
Nic,
Nice work there mate, if you're planning on porting this into a DirectShow decoder, you may also want to write an MPEG2 splitter filter. Currently, by default, the microsoft filter is used, and ... it doesn't recognized DTS audio tracks, or multiple audio tracks...

So, when porting to DirectShow, please make sure DTS streams are supported and use the IAMStreamSelect DirectShow interface to allow us to select which audio stream to use (when there's more than one).

P.S.
By DTS stream supported, I do not mean decoded (not sure if there is DTS decoding code around), the splitter should only split the stream, WinDVD's audio decoder can handle DTS...

pankov
25th August 2002, 11:36
@Blight
What do you mean exactly by "WinDVD's audio decoder can handle DTS"?
Do you mean that you can make WinDVD audio decoder to decode the .dts files? Are you saying that I can mux a .dts file into avi and then make a .grf file that with WinDVD's filters and get the audio playing?
Or you simply say that if I reencode everything to .vob I can play it with WinDVD?

Blight
25th August 2002, 18:55
The WinDVD Audio Decoder (DTS version of it, not all versions) can decode DVD-DTS films.

And yes, I mean decode to speakers and not pass-through. As far as from that to decoding AVI with DTS audio, I don't really know. May need another filter in the middle like AC3 currently has.

bbq@KL
26th August 2002, 19:04
Actually all WinDVD Audio Decoder can decode DTS.

http://groups.google.com/groups?selm=145e9110.0208250754.1c469837%40posting.google.com&output=gplain

Right now Zoom Player is using iviaudio.ax from WinDVD 4.0.11.83 trial. DTS decoding is still working after I installed/uninstalled WinDVD 3.1 DTS.

They changed my registry and kinda "activated" DTS decoding during WinDVD 3.1 DTS installation.

The registry changes will stay there and iviaudio.ax will have 2/4/6-channel options available.

MaTTeR gave me this idea and we will need a registry tracker to figure out how to "activate" DTS decoding without installing WinDVD 3.1 DTS.

easyfab
26th August 2002, 21:05
Perhaps a stupid question but how do you mux dts in avi?
i try with graphedit but no way to do it.Mux i use a special filter (dtsparser?)like the ac3parser?
I you had the solution it would be cool. it think if the dts can be mux and recognize by the windvd audio filter the spdif output can work also ?

Acaila
26th August 2002, 21:33
AFAIK there doesn't exist any way to mux a DTS audio stream into an AVI. Would be cool if there was :)

Zarxrax
26th August 2002, 21:55
Im curious if it would be possible to add hardware accelleration to the dll? I know a lot of video cards these days feature hardware accelleration for mpeg-2, so couldn't that be used to boost the speed even more?

trbarry
27th August 2002, 15:51
Yes, cards like the Radeon have pretty extensive IDCT and motion comp support. But I remember one of the guys from Elecard saying that it is very hard to get the needed support info out of ATI.

But it would be really nifty if someone could do it. For instance that would also make a hardware supported Xvid player possible.

Maybe Directx 9 with VMR support will help this, but I'm not that optimistic about it.

- Tom

Wilbert
27th August 2002, 16:56
@bbq@KL,

They changed my registry and kinda "activated" DTS decoding during WinDVD 3.1 DTS installation.

The registry changes will stay there and iviaudio.ax will have 2/4/6-channel options available.

MaTTeR gave me this idea and we will need a registry tracker to figure out how to "activate" DTS decoding without installing WinDVD 3.1 DTS.

Get Winalysis 2.90 (look on the web, it's shareware). Uninstall powerdvd from your computer (including those iviaudio filters), take a snapshort of the registry, install powerdvd, and monitor the changes. Please post the results here.

If this is not according to the forum rules, please delete this message.

bbq@KL
27th August 2002, 18:27
Originally posted by Wilbert
bbq@KL,

Get Winalysis 2.90 (look on the web, it's shareware). Uninstall powerdvd from your computer (including those iviaudio filters), take a snapshort of the registry, install powerdvd, and monitor the changes. Please post the results here.

If this is not according to the forum rules, please delete this message.
I tried Regmon 4.34 (http://www.sysinternals.com/ntw2k/source/regmon.shtml) but there were way too many changes. The log file is 8900 lines. All of the changes were done by IKernel.exe and Setup.exe.

I downloaded Winalysis 3.00 (www.tucows.com/system/preview/195902.html) and I may need to try it somewhere else. My computer is already "activated" by WinDVD 3.1 DTS so a different PC would be better.

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

ookzDVD
12th September 2002, 10:35
@Nic,

I just try to use the .lst file :

MPEGSource("c:\Film.lst")

which contains all the .vob files per line.

but it doesn't work. :(

Tomatschek
12th September 2002, 10:57
Hi nic,
=======

thanx for fast reply. I understand you
and respect that you would like to do
a little break. I only would like to know
if the error will be a result of a wrong
version - please could you upload the right
one. You wrote that you finished 1.3 so you
would not have much to do.

thanx (again)

Thomas
one stupid threat i red in an overclocker forum:
"i could'nt test my system for stability because
it crashes before"

Nic
12th September 2002, 12:15
Hmmm...Try this version 1.31:
http://nic.dnsalias.com/MPEGDecoder.zip

.lst should work now...so should "decss".

Cheers,
-Nic

Tomatschek
12th September 2002, 12:30
hi nic,

thanx for the new link + version,
will try it today evening. Now I
have to experiment a little with
the string 0x0ID's to get the main-
movie. I'll post you my results,
I hope this is o.k. for you?

Thomas

an user says about a stable software
- wow very stable
a developer says about the same software
- what it is stable?-so it has not enougth features yet!

Defiler
12th September 2002, 16:28
If I want this input plugin to give me audio as well, do I need to know the exact stream ids? If so, is there a good tool for enumerating the stream ids in an MPEG-1 or MPEG-2 file? (Not a VOB.)

Nic
12th September 2002, 16:36
This plugin is just for MPEG video! :)

I may try & write a AC3Source AviSynth filter, but apart from that, it will never support full MPEG audio...

-Nic

Suzahara
12th September 2002, 16:55
@Defiler
TMPGEnc can give you stream IDs in its MPEG tools. But as Nic says, this tools doesn't support MPEG audio. But you could always demux it with TMPGEnc and use it other ways.

Defiler
12th September 2002, 18:46
Thanks. That was my first impression, but some of the replies in the thread turned my head. Heh.
I was hoping it could do both video and audio.. I'm always happy to condense more of my toolset into Avisynth. No big deal, though.

Guest
12th September 2002, 19:03
@jdobbs

It appears we don't deserve the courtesy of a response from the author. :(

Stabmaster-Arson
12th September 2002, 23:13
NTFS for win9x will let you use NTFS partitions on win98/ME. So if you want to chekc it out goto www.sysinternals.com , they have a free read only version, or registered full read/write version.

Then your files can have any size.

As for avi file limit, all I know is ive captured avi files 30-40 gigs with no problem.

Nic
13th September 2002, 00:43
It appears we don't deserve the courtesy of a response from the author.

Now what inspires you to say that? Why write that particular statement in such a way?

Of course you deserve the courtesy of an answer, but looking thru this thread now I see:
"Any determiniation on the RFF/TFF support issue? Thank you."

Sorry Donald, I honestly had not seen that post, If I had I would have answered immediately (as I always do, when I can, no matter the question)

The Answer is: Unfortunatly not, As I fear the way I am extracted the frames is at fault, or I have simply made an incorrect setting, but unfortunatly due to work commitments & everything else I havent had time to debug it yet fully. :( Thank you very much for your vob (quite an interesting section of Anime :) ) that displays this problem very cleary.

All I had time to do today was re-add .lst support & remove a seeking bug during my lunch break. I hope to get chance to look into the problem more thoroughly this weekend.

Im sorry I did not answer your question, Id seen jdobbs' post & believed he was just giving his support & desire for the issue to be fixed. But to write: "It appears we don't deserve the courtesy of a response from the author.", I find quite rude & I cant imagine myself ever writing such a thing, just because it appeared my question had been ignored...

But to summarise: I Apologise for not replying, I honestly didn't see your post, thank you for your support & the problem will be resolved as quickly as I can.

Anyway I hope this misunderstanding can be put behind us,

-Nic

Guest
13th September 2002, 04:32
Sorry didn't mean to be rude. It was just that you were quickly answering other people's posts and I had taken a good deal of time to diagnose the problem and jdobbs echoed my question and still you didn't respond. It's all right, don't worry about it. I can get by with DVD2AVI/mpeg2dec.

Tomatschek
13th September 2002, 08:39
hi nic...

like I promised I tested your 1.31
and the "deccs" option. But no,luck.
1.30 +1.31 "decss"
1.30 +1.31 "dec"
Always the error accure: invalid command.

But I'm not worry because I tested the
mpegdecoder.dll with my files from HD.
(of course without "decss" - smartripper
did it before). I have now a +22% speed
improvement over mpeg2dec2.dll. Now I use
the saved time to copy the material to disc.

=;-)

Thomas

Nic
13th September 2002, 09:06
@Tomatschek:

Thats really weird? Works fine here...I cant think what the problem would be. Hmmm, could your post your avs file that you tried?

@neuron2:
Sorry if it seemed I had ignored your help & I thank you for your time spent diagnosing the problem.

-Nic

benf2
13th September 2002, 11:01
Well i finally got it to show correctly in link2, but when i hit encode in cce i get unable to open source...is this a link2 problem?

script is very basic:
LoadPlugin("C:\Documents and Settings\Administrator\My Documents\avs gen\bin\MPEGDecoder.dll")
MPEGSource("C:\Documents and Settings\Administrator\Desktop\count of monte cristo\vts_01_([0xE0]_Video_NTSC_720x480)_1.m2v",-2)

If i want to kill the audio with the (killaudio) command do i need to put a zero in brackets(killaudio(0)? or just put kill audio?

Tomatschek
13th September 2002, 11:03
hi nic...

first I would like to say somthing. You wrote in the past
that the "decss" option works like your opendvdplugin.dll
for dvd2avi. I opened my movie (Heat 164min, 7,7Gb) with
this plugin and i seames to be crypted. Green macroblock
everywhere. (But I initialised the movie with WinDVD4 before)
Is there a problem what could also influence the "deccs"
option and cause the error?

now my script...
LoadPlugIn("C:\xxx\xxx\mpegdecoder.dll")
Mpegsource("F:\xxx\video_ts\vts_01_1.vob", -2, "decss")
Crop(0,74,720,408) (german PAL)
BicibicResize(640,272)
...the error "unknown command/argument mpegsource line 2" accure

In other tests i reseive another strange error.
When i change the line above to the following line...
Mpegsource("F:\xxx\video_ts\vts_01_1.vob", "decss")
...then the message "you may not use the command "crop" for
upscaling or stretching the video crop line3"

this sounds spanish for me...
hope somebody hase an idea

bye

Thomas

Wilbert
13th September 2002, 11:18
@benf2,

If i want to kill the audio with the (killaudio) command do i need to put a zero in brackets(killaudio(0)? or just put kill

Just put killaudio. But I thought that MPEGDecoder has no audio support yet, so it doesn't pass the audio.

benf2
13th September 2002, 11:29
That answers the audio question, anybody no why cce says source not found when i hit enocode...could it be a link2 problem?

ookzDVD
13th September 2002, 13:08
@Nic,

Thank you for the update,
now the .lst is working ;)

_but_ I still having trouble, when I try to encode the short
trailer, both with .vob and .lst, the AviSynth seems never stop
to finish. :( and I have to _abort_ to finish it. :(

benf2
13th September 2002, 22:52
Nic said he had success using this dll with link2. Is there something special for this combo to work? I posted my very basic script and i can now get link2 to show correct info and wrap the file, and cce lets me import it, but when i try to encode it i get unable to open source. I tried both m2v files and vob... Has anyone besides Nic gotten it to work? IF so, do u see anything in the script i missed that would cause cce to say unable to open source? :mad:

Again, this is the script:
LoadPlugin("C:\Documents and Settings\Administrator\My Documents\avs gen\bin\MPEGDecoder.dll")
MPEGSource("C:\Documents and Settings\Administrator\Desktop\count of monte cristo\vts_01_([0xE0]_Video_NTSC_720x480)_1.m2v",-2)
:confused: :confused: :confused: :confused: :confused: :confused:

benf2
18th September 2002, 11:22
Is there nobody out there thats is using this dll with link2?

No matter what i do, CCE says cant open source when i try to load the link2 wraper made using the mpegdecoder.dll. I am using the latest version of the dll. It's not like i have a lot of items in the script.

Any ideas? Anybody??

Nic
18th September 2002, 11:30
@ben:
Ben try helping yourself out here. Try lots of different things as I suggested & report back.

i.e.
1) Does the AVS file load ok in VirtualDub. Try playing with it in VDub to make sure it plays, seeks etc without error
2) Get a copy of DebugView. (sysinternals.com) run that at the same time & give me the messages/errors that come out of it
3) remove all other filters other than my source filter before trying
etc. etc.
4) Tell me what your source is. Is it multiple files
5) Post your EXACT avs script.
6) Do not use really long filenames/directories.
7) Tell me what the source is. Is it DVD vob files? Is it multiple files or just one file.

Link2 has worked fine when Ive tried & Ive tried it quite a bit. So something else is causing the problem. Quite probably MPEGDecoder.dll is just causing an error (have you downloaded the latest version (I think 1.31). Ill look into it more later.
(Im redoing my website & the source code to everything ive ever done will be up there so maybe that will encourage others to help out too)

Cheers,
-Nic

benf2
18th September 2002, 11:51
Thanks Nic for the quick reply...Yes i am using the latest dll.

Script is very basic...no filters!!

LoadPlugin("C:\Documents and Settings\Administrator\My Documents\avs gen\bin\MPEGDecoder.dll")
MPEGSource("C:\Documents and Settings\Administrator\Desktop\count of monte cristo\vts_01_([0xE0]_Video_NTSC_720x480)_1.m2v",-2)

I have also tried moving the dll and the video to C:\ to cut down on the path length, but still same result... I did resolve the wrong time and frame length issue by using the -2. But now i get the stubborn unable to open source in cce.... It loads into cce ok...can make my changes, but when try to start the ecoding proc..it says unable to open source. I aslo tried doing one vob file...same result. I tried reinstalling link2, but prob is still there....I still think it might be a link2 issue, but not sure...u say urs works ok.

benf2
18th September 2002, 12:05
For the hell of it i loaded a movie the old way using mpeg2dec and wrapped using link2 and cce produced same error, but when i used a d2v...and vfapi wrapper into cce it worked.

SILICON
20th September 2002, 12:44
I silly idea fo NIC:

I know very little abour MPEG2DEC. But I know that the imagen is codec in macroblocks.

Often we decoded the MPEG2 and after crop the frame. (i.e the black borders in 2.35:1 aspectratio)

If send the crop values to mpegdecoder, then the mpegdecoder don't need decode the blocks in the crop parts. If less decodec block them less procees time need. ŋok?

I sugess that test the macroblock place before decode it. If the position is out of the visible window (plus the highest estimation motion vectors) then donīt decode it and send a black frame.

ŋIs this a stupid idea?

Note: Sorry by my bad english.

int 21h
20th September 2002, 13:11
Originally posted by benf2
Thanks Nic for the quick reply...Yes i am using the latest dll.

Script is very basic...no filters!!

LoadPlugin("C:\Documents and Settings\Administrator\My Documents\avs gen\bin\MPEGDecoder.dll")
MPEGSource("C:\Documents and Settings\Administrator\Desktop\count of monte cristo\vts_01_([0xE0]_Video_NTSC_720x480)_1.m2v",-2)

I have also tried moving the dll and the video to C:\ to cut down on the path length, but still same result... I did resolve the wrong time and frame length issue by using the -2. But now i get the stubborn unable to open source in cce.... It loads into cce ok...can make my changes, but when try to start the ecoding proc..it says unable to open source. I aslo tried doing one vob file...same result. I tried reinstalling link2, but prob is still there....I still think it might be a link2 issue, but not sure...u say urs works ok.

I think you forgot the Resample Audio line.

benf2
20th September 2002, 13:40
Somebody else sent me a reply stating this dll doesnt support audio.
Does it? I dont know since i cant get it to work :(

Actually, the m2v file is video only, but the vob i tried was a combo(video/audio)... but nothing. I actually just want to pass video along to CCE and mux the audio in Maestro later.

I have to believe that the problem is with Link2, cause i see on videotools.net forum others have had similar problem and not using this dll. Unfortunately i cant get a reply back from Edwin who designed link2.

The reason i believe its link2 is that if i use the old method of mpg2dec it still wont work with link2, but if i do mpg2dec with vfapi it works fine. The only thing different is the link2. So, now i am reinstalling the OS and will try again tonight. Oh yeah, i did the obvious by cking to make sure the wrapper codec was installed and it was. Maybe link2 doesnt like win2k, but i tried using the compatibiliaty mode of nt and win98 and still no luck. I will see how win2k server does...i had win2k prof. before.

sh0dan
20th September 2002, 15:29
You can add audio like this:

LoadPlugin("MPEGDecoder.dll")
MPEGSource("*.m2v",-2)
bc=BlankClip()
audiodub(bc)
resampleaudio(44100)

vidiot
20th September 2002, 15:37
@ benf:
I think int 21h mean you should add the "resample audio" line to
your script.
CCE sometimes need that (especially on older athlons/durons).;)

benf2
20th September 2002, 16:15
Not sure why i would need to add resample audio if the stream is a m2v file(which is video only). And if i was doing a vob file i was told i could add killaudio, is this correct? Is there any special syntax for killaudio(on a line by itself?)?

Are any of you using link2?

int 21h
20th September 2002, 16:22
Yea in CCE 2.5 you definitely need resampleaudio(44100), even if you dont have any audio in the file, you still have to put that.

Just add that to the last line in your avs and try it.

sh0dan
20th September 2002, 16:23
killaudio() on a line for itself:

killaudio()

Sorry - couldn't resist! :sly:

Anyway - you have to use audio at 44100hz for CCE 2.50 to work (or at least I have).

benf2
20th September 2002, 16:28
why do i need the empty brackets after killaudio?

ps i am frameserving to 2.64cce

MaTTeR
20th September 2002, 16:30
AFAIK the empty brackets are needed or you will see a speed decrease during the encode. Try it with or without and you'll see;)

sh0dan
20th September 2002, 16:45
I think the bracething is just a rumor - I always use them anyway.

Belgabor
20th September 2002, 21:39
Originally posted by sh0dan
I think the bracething is just a rumor - I always use them anyway.

Iirc neuron2 broght this up and i trust him enough to think it isn't a rumor (or at least wasn't at that time). Perhaps someone of the core developers should have a look at this issue?

Cheers
Belgabor

MaTTeR
20th September 2002, 21:53
hrm..I thought I even remember reading about the () in documentation. No?

Acaila
20th September 2002, 22:24
That's because it's in Decomb's documentation :)

mmgrover
20th September 2002, 22:44
Where can one get the Source Code?


mike

bugs7
21st September 2002, 00:23
I try MPEGDecoder.
It's crash or i had this avisynth message "avisynth caught acces violation at 0x0102245f".

I try with:
- avisynth 2.04 and 2.05
- MPEGDecoder 1.3 and 1.31

my simple script:

Loadplugin("D:\avsPlug\MPEGDecoder1.3\MPEGDecoder.dll")
Loadplugin("D:\avsPlug\SimpleResize.dll")
MPEGSource("F:\TS2\VTS_04_PGC_01_1.M2V",-2)

and i'try too:
- MPEGSource("F:\TS2\VTS_04_PGC_01_1.M2V",300) (only the first 300 frame for test)
- MPEGSource("F:\TS2\VTS_04_PGC_01_1.M2V",0)
- MPEGSource("F:\TS2\VTS_04_PGC_01_1.M2V")

Nothing work :(

UGAthecat
21st September 2002, 01:27
I was about to post about the same thing as what bugs is running into last night, but it was about 5hrs past bedtime and I was too tired to post coherently.
anyway, I tried basically the same stuff as bugs, except I have more filters loaded (but not really used).
I'm at work so I don't have the script, but as I said, it is basically the same as bugs7's, used with avisynth 2.04 & 2.05.
The only thing I could think of was maybe there is a non-integer SSE instruction horking things, as I have a regular athlon (non-xp), or just a conflict somewhere. I'll post script later if needed.

bugs7
21st September 2002, 10:01
Originally posted by UGAthecat

..
The only thing I could think of was maybe there is a non-integer SSE instruction horking things, as I have a regular athlon (non-xp), or just a conflict somewhere. I'll post script later if needed.

I have athlon TB 1.4Hhz, with no SEE too.

other infos: w2k sp3

Nic
21st September 2002, 13:01
I have a feeling this is caused by my weird optimisations in the Intel Compiler....hmmm. Ill look into it on Monday :)

Cheers,
-Nic

gizmau
21st September 2002, 13:50
@nic

very nice work! mpegdecoder IS fast, giving up to 20% more speed. :-)

unfortunatelly, the increase is partly a result of using 'only' 32bit-idct and therefore getting a drop in quality. i would like to get ieee-1180 as well, even if the quality improvements are only very seldom to see. on dvd there is enough room to fill up, so why not use it for maximum theoretical quality?
would you implement a idct-selection, please?

next is the inacuracy in frame parsing. there are allways problems when trying to encode over the 'dvd2avi-reported-frames'-boundary with cc, tmpg or vd. as a workaround i simply set the encoding range by hand. simple but effective.
it would be nice to use a .d2v as input-argument, because the framecount seems to work quiet good for years. and there would be no need to edit the path of the vobs in the .avs anymore, too. what do you think about?

Nic
21st September 2002, 15:54
You think you can notice a difference between Peter's iDCT & the reference? Id be very surprised if thats the case, I can put in reference DCT quality too if you want, but I think you'd be wasting your time.

I know, I was hoping not to have to put in d2v parsing in, but I will do :)
(got to get round the tff/rff problems first though)

-Nic

ps
& the speed increase isn't due to the iDCT as it uses the same iDCT as most people use with DVD2AVI

benf2
21st September 2002, 15:59
Hi,
you mention earlier u tested with success...mpegdecoder.dll with link2. What os are u running. I just reformatted my win2k prof and installed a fresh copy of win2k server and still get error in cce unable to open source. I have been waiting a week for Edwin..(videotools.net) to reply..but nothing. What is another option besides link2 to server to cce 2.64?

Thanks
Ben

gizmau
21st September 2002, 16:32
sure, i can - everybody can, even easily, see the difference! its just a matter of material used...

in many films are scenes with a plain background (i.e. a roomwall) with a very slight colorprocess as brown to a lighter/darker brown.

on 'bad and/or cheap produced or encoed film' (as i call them) is allways such a scene, where the 'dither- levels' are visible as barks with noisy overlapping (sorry for the bad description!). with 32bit this noise is more visible than with 1180. 'the pledge' is a good example for this, when i remember right. i will make a screenshot of the next film with this behaviour, when i not forget it.

thanks in advance for implementing the features!

MaTTeR
21st September 2002, 16:41
@gizmau

I've never been able to see the difference between 32 & 64bit iDCT, well except the speed but nothing visual.

If you could provide a screenshot it would be most helpful to know what your seeing. Maybe a before and after shot? Thx

bugs7
21st September 2002, 17:54
Originally posted by Nic
I have a feeling this is caused by my weird optimisations in the Intel Compiler....hmmm. Ill look into it on Monday :)

Cheers,
-Nic

Thanks ;)

UGAthecat
21st September 2002, 21:00
@nic
I think you may be right about the optimisations, I tried your latest build of xvid on your site (10/9/02) earlier today and it crashes virtualdub when I use it, and if it was made with the same optimisations that would give more proof to your theory.
I switched to an earlier build and that one worked ok, so did 2 recent builds from koepi.
I'll try them both on my Celeron (the PII based version) and see how that goes to give you more info.