Welcome to Doom9's Forum, THE in-place to be for everyone interested in DVD conversion. Before you start posting please read the forum rules. By posting to this forum you agree to abide by the rules. |
|
8th May 2005, 17:26 | #1 | Link |
Guest
Join Date: Jan 2002
Posts: 21,901
|
DGMPGDec 1.4.0 Final!
This version provides the following new features relative to version 1.3.0:
1. Standard call wrappers for dgdecode.dll access functions for use by Visual Basic, etc. E.g.: getRGBFrame_SC(). 2. Fix for slice error recovery bug that caused some (rare) picture decoding errors. 3. Program streams with video stream IDs other than 0xE0 are now supported. 4. The preview info box of DGIndex now shows the audio type of all the audio tracks. This is populated when doing a Preview (F5). 5. Fixed decoding errors due to improper recovery from corruption of transport streams. 6. Fixed the pitch=width assumption, thereby allowing proper operation under newer versions of Avisynth that modify the alignment rules (revisions kindly contributed by 'tritical'). 7. Fixed the emulated header problem by properly parsing the pack or transport layer when getting the initial sequence header. 8. Corrected an error in the D2V format document (bits 6 and 7 of the per-frame flags byte was erroneously reversed). 9. The process priority can now be changed in DGIndex during a Save Project operation. 10. A bug in the PAT/PMT parser was repaired that could cause DGIndex to erroneously think that a PAT/PMT is not present. 11. Added the .vro and .mpv file types to the DGIndex open dialog. 12. Fixed the Reference IDCT (type 4). Changes by jackei derived from his latest DVD2AVI version. 13. MPEG1 is now supported. 14. DGVfapi now supports multiple instantiation, i.e., multiple "fake" AVIs served at the same time. It can also open AVS scripts as well as D2V files. Thanks to "tritical" for these enhancements. 15. DGParse and DGFix have been integrated into a new menu pulldown of DGIndex called "Tools". 16. The integrated DGParse info now shows the GOP structure, and properly shows the effect of the field operations. 17. Fixed a bug such that during preview the info dialog did not show the audio track information for transport streams and PVA streams. 18. The Detect PIDs dialog now has a "Done" button. 19. Fixed a bug in parsing of transport streams. 20. Removed YV12toYUY2() and YV12toRGB24() because they duplicate Avisynth native filters. 21. Replaced the buggy LumaFilter() with a new, optimized LumaYV12() filter by ARDA. 22. Added a rudimentary playback speed control, for people with very fast machines and who don't like watching their previews race by at 170 fps. 23. Added a new CLI option, -SD, that allows setting of a custom delimiter character. 24. "Process WAV" functionality was removed. SRC/normalization can no longer be applied to LPCM. 25. LPCM support was improved: 1) 48K/96K, 16bit/24/bit, and mono/stereo are now supported. 2) The format info is included in the filename and the info dialog. 3) Demux Track and Demux All Tracks now work for LPCM (no special handling). 26. The D2V format version is now checked when loading a D2V file. 27. IDCT support was fixed: 1) The IDCT algorithm specified in the INI or D2V file is now not automatically promoted (e.g., previously if you had IDCT=1 in the INI file and then started DGIndex, you'd end up with IDCT=3). However, the IDCT is scaled down if it is not supported by the processor. 2) A bug in DGDecode was fixed that caused SSEMMX to be used when SSE2MMX was requested. 3) The IDCT algorithm is now consistently numbered between the CLI, D2V, etc. 28. Added audio processing to the Quick Start guide. 29. Fixed a problem that caused failure of AC3 audio demuxing from a transport stream if the audio stream was not contained in the PAT/PMT tables. 30. Fixed a problem in DGVfapi that caused conversion of AVS scripts to fail when they delivered RGB32. [fix by 'tritical'] http://neuron2.net/dgmpgdec/dgmpgdec.html Last edited by Guest; 12th July 2005 at 01:50. |
8th May 2005, 18:13 | #2 | Link |
Pig on the wing
Join Date: Mar 2002
Location: Finland
Posts: 5,718
|
Did you notice the problem with the latest Avisynth beta?
http://forum.doom9.org/showthread.ph...0&pagenumber=5
__________________
And if the band you're in starts playing different tunes I'll see you on the dark side of the Moon... |
8th May 2005, 18:57 | #3 | Link |
Registered User
Join Date: Dec 2003
Location: MO, US
Posts: 999
|
I made a quick fix for this... it took a few more changes then I thought it would because of the way field based PP is done. The changes were in store.cpp where the postprocess() call is made, in postprocess I added a new parameter called iPP so that the fast_copy code would work in field based mode when the pitches weren't the same, and then in avisynthapi.cpp I changed the postprocess() calls in blindpp. Also, there seemed to be a bug in YV12 BlindPP with iPP=true, the src pitch needed to be doubled and wasn't being. I tested it with the new avisynth and it seemed to work fine... the changed files are in the zip below, originally from v1.3 source.
EDIT: needed another small change to the main postprocess routine for field based pp to work when pitch and width weren't equal. Last edited by tritical; 10th May 2005 at 16:40. |
8th May 2005, 22:06 | #5 | Link |
Registered User
Join Date: Dec 2003
Location: MO, US
Posts: 999
|
Thought about it some more and my patch is still busted for field based PP when pitch doesn't match width. The copying will work, and it will process all the pixels, but the QP pointer will be incorrect for the second half of each line due to the extra pixels in the middle. Possible fixes I can think of: change a lot of stuff in the post-processing code, forget changing the pping code and just add in an extra copy step where needed so that field based post-processing is always done on a buffer with pitch==width, or forget about changing that other stuff and simply change the env->NewVideoFrame calls to return 16/8 byte aligned frames as before. There is probably another, better option that I am not thinking of, hopefully you or someone else can .
Last edited by tritical; 8th May 2005 at 22:23. |
10th May 2005, 01:21 | #6 | Link |
Registered User
Join Date: Dec 2003
Location: MO, US
Posts: 999
|
Was making another fix today just using copies where field based post-processing is used, and realized this problem runs deeper then just post-processing. Specifically, the copy functions at the bottom of vfapidec.cpp are broken if width != pitch and you pass the larger one first so it only shows up if rff's are present. Those can be fixed easily, but then some of the colorspace conversions seem to depend on width == pitch as well (420 to 422 and 422 to 444). That can also be fixed without too much hassle, but who knows if there are still other places that need changing. It seems to be quite a mess when width != pitch .
Last edited by tritical; 10th May 2005 at 16:39. |
10th May 2005, 01:42 | #7 | Link |
Guest
Join Date: Jan 2002
Posts: 21,901
|
I want to know why the author made this change to Avisynth and why it is seen as so important that he is happy to break existing applications, and important ones at that. To be quite honest, I can't say I'm particularly motivated to fix all this, especially when I had no say in the decision. Maybe the author will clean up the mess?
How about some polymorphism, so that existing applications can work the old way? And just in case anyone wants to rag on me, I inherited all this code assuming pitch = width; I didn't write a single line of it. All the precursors of DGDecode are going to be broken too. Last edited by Guest; 10th May 2005 at 02:36. |
10th May 2005, 02:46 | #8 | Link |
Registered User
Join Date: Dec 2003
Location: MO, US
Posts: 999
|
Don't know that, though I suspect the change was mainly for sse2/sse3 optimization purposes. Its only a beta so I'm sure there is some room for discussion on the change.
env->NewVideoFrame() already allows one to call with a negative align argument that will force a specific alignment even if it is less then the default. That could be used to get the same alignment as before, but the filters that request frames from a clip (blindpp, etc..) could still get 32byte aligned frames as input. Though technically it is possible they could get that type of alignment now if another filter up the chain calls env->NewVideoFrame() with an align value other then the default. However, fixing those few filters for when pitch!=width would definitely be much easier then the core stuff. I'm sure no one is blaming you for it. I forgot that this would also break previous mpeg2dec3 versions as well. |
10th May 2005, 02:54 | #9 | Link |
Guest
Join Date: Jan 2002
Posts: 21,901
|
OK, I'll chill. It's only been a day since it came to light, and, as you say, it's a beta.
And oh, thanks for your analyses! Saves me quite a bit of thinking, which gets harder as I get older, and, anyway, I'm obsessed with the metaphysics of QM these days, which limits my available cerebral bandwidth, sad to say. Some argue it was quite limited to start with, but I won't dignify that. Last edited by Guest; 10th May 2005 at 02:58. |
10th May 2005, 14:17 | #10 | Link |
Moderator
Join Date: Oct 2001
Location: England
Posts: 3,285
|
"I'm obsessed with the metaphysics of QM"
So, your too involved with unimportant things like a formula for it god exists or not when you could be adding MPEG-1 support to your DVD2AVI suite? If you need to me look at any particular pitch != width problems let me know... Cheers, -Nic |
10th May 2005, 16:06 | #12 | Link |
Registered User
Join Date: Oct 2004
Posts: 51
|
I’m not sure if this is a problem with MPlayer 1.0pre7, AviSynth 2.5.6b3 or the DGDECODE alignment issue, but I can play the following script fine in Windows Media Player, but it is garbage when played in MPlayer 1.0pre7. Is there something I can add to the script to make it work? I’m using MPlayer to convert the file to raw I420.
LoadPlugin("DGDECODE.DLL") Source = Mpeg2Source("Video.D2V", iDCT=4, CPU=0) Return(Source) |
10th May 2005, 17:20 | #17 | Link | |
Guest
Join Date: Jan 2002
Posts: 21,901
|
Quote:
|
|
10th May 2005, 17:28 | #19 | Link | |
Registered User
Join Date: Oct 2004
Posts: 51
|
Quote:
|
|
10th May 2005, 18:43 | #20 | Link | |
Guest
Join Date: Jan 2002
Posts: 21,901
|
Quote:
http://neuron2.net/dgmpgdec/DGDecodeX.zip I just did this: PVideoFrame frame = env->NewVideoFrame(vi, -16); EDIT: It appears I need -8 instead of -16. I'll put up another version tonight. Last edited by Guest; 10th May 2005 at 20:52. |
|
Thread Tools | Search this Thread |
Display Modes | |
|
|