Log in

View Full Version : DgDecode.dll x64 bugged


StainlessS
28th November 2019, 12:34
The DgDecode.dll compiled by JoshyD [current x64 version on Wiki],
is bugged in that if you use arg "upconv=1", it produces an 0xC0000374, [heap corruption] exception.

JoshyD aint been around since 2010.

RAR name:- DGDecode_3-19-2010.rar

dll MD5:- MD5: 59e367434f40728b3cdb1bdca6de0a64

Just a heads up, if anybody wants to fix it.

It produced an exception for one DVD, so I tried on another with upconv=1, and same thing, so only tried on 2 DVD's, both crash.

EDIT: Upconv=1, supposed to return result as YUY2 rather than YV12.

x64 filters on WIKI:- http://avisynth.nl/index.php/AviSynth%2B_x64_plugins

EDIT: Tried on 3rd DVD, same exception.

Is there an alternative x64 dll ?

EDIT: Looks like problem maybe in constructor, or on frame 0 GetFrame() ie all frames problem.

EDIT: Correction, not constructor, problem is in GetFrame.
Tried below, calls constructor, and then just returns colorbars OK, so no problem in constructor.


MPEG2Source(VideoFileName,upconv=1) # Call constructor, Upconv to convert to YUY2, unmangle chroma if encoded as interlaced.

AudioExt=RT_GetFileExtension(AudioFileName)

Audio= (AudioExt==".ac3") ? NICAC3Source(AudioFileName,channels=2,DRC=0)
\ : (AudioExt==".mpa"||AudioExt=="mp1"||AudioExt==".mp2"||AudioExt==".mp3") ? NicMPG123Source(AudioFileName,Normalize=False)
\ : (AudioExt==".wav") ? RaWavSource(AudioFileName)
\ : (AudioExt==".dts") ? NicDTSSource(AudioFileName)
\ : 0

Assert(!isInt(Audio),"NO AUDIO")

(!isInt(Audio)) ? AudioDub(Audio).DelayAudio(AudioDelay).Trim(0,0) : NOP # Trim, chop/add audio to length

(!isInt(Audio) && AudioRate() <> 44100) ? ResampleAudio(44100) : NOP

AssumeTFF
Colorbars


Dont know if JoshyD mod source is available.

real.finder
28th November 2019, 14:29
try this https://kuroko.fushizen.eu/bin/

SaurusX
29th November 2019, 00:37
I had a similar problem with the same build. It’s just bugged. I switched to MPEG2DecPlus from the StaxRip package and haven’t had any more issues. It may not have all the features of DGDecode, though.

https://forum.doom9.org/showthread.php?t=175907

StainlessS
29th November 2019, 04:29
Thanks guys, I'll give MPEG2DecPlus a blast.

StainlessS
29th November 2019, 05:53
Perhaps of use to those of us that do not read Japanese.

ReadMe.md [converted to ReadMe_Eng.md] : from MPEG2DecPlus

# MPEG2DecPlus
This is a project to modify DGDecode.dll for Avisynth+.

What do you want to do: [EDIT: this might mean TODO ie "yet to do"]
- Clean the code like a hot spring inn that has been renovated.
- Eliminate code for VFAPI, code for YUY2, etc. that are not currently required.
- 64bit support by eliminating assemblers and optimization with intrinsic in SSE2/AVX2. Etc

### What you need :
- Windows Vista SP2 Subsequent System Windows OS
- CPU with SSE3 (Intel Pentium4 (prescott) or AMD Athlon64x2 or later)
- Avisynth+ r2172 or later
- Microsoft VisualC++ Redistributable Package 2015.

The following:
```
MPEG2Source(string "d2v", int "cpu", int "idct", bool "iPP", int "moderate_h", int "moderate_v",
bool "showQ", bool "fastMC", string "cpu2", int "info", int "upConv", bool "i420", bool "iCC")
```
d2v: the path of the dv2 file

cpu: Currently unavailable. Nothing happens when you set it up. iPP, moderate_h, moderate_v, fastMC, and cpu2 are similar.

idct: the iDCT algorithm to use.
0: Follow the d2v specification.
1,2,3,6,7: AP922 integer (same as SSE2/MMX).
4: SSE2/AVX2 LLM (single precision floating point, SSE2/AVX2 determination is automatic).
5: IEEE 1180 reference (double precision floating point).

showQ: Display macroblock quantizers.

info: Print debug information.
0: Do not display. (default)
1: Overlay on video frame.
2: Output with OutputDebugString(). (The contents are confirmed by DebugView.exe)
3: Embed hints in 64 bytes of the frame upper left corner.

upConv: The format that outputs the frame.
0: YUV420 source output sits in YV12, YUV422 source output sivs in YV16.
1: Output with YV16.
2: Output with YV24.

i420: If true outputs YUV420 as i420. It is almost the same now.

iCC: YUV420 handling settings in upConv.
Not set: Toggleinterlaced/progressive according to frame flags.
true: Treat scanlaced all frames.
false: Treat scans all frames as progressive.

```
Deblock(clip c, int "quant", int "aOffset", int "bOffset")
```
H.264 deblock filter. It's a filter of manao.

clip: Y8, YV12, YV16, YV411, YV24 support.

quant: 0 to 51 (default 25)
The strength of the deblock.

aOffset: 0 to 51-quant (default 0)
Block detection threshold. The higher it is likely to be determined as a block.

bOffset: 0 to 51-quant (default 0)
The correction value of the strength and detection rate of the deblock.
The higher the deblock takes stronger, it is likely to be determined as a block.

```
LumaYUV(clip c, int "lumoff", int "lumgain")
```
Change the brightness of the input clip by the lumoff and lumgain values. Output Y , (input y , lumgain) + lumoff

clip: Y8, YV12, YV16, YV411, YV24 support.

lumoff: -255 to 255 (default 0)

lumgain: 0.0 to 2.0 (default 1.0)

### Source code
https://github.com/chikuzen/MPEG2DecPlus/


Takes quite a while to convert in BabelFish, you gotta delete all cookies and get new IP address or it errors after conversion of every 4 lines. [says it's too busy]