Log in

View Full Version : Demo RV9 EHQ encoding ...


Sagittaire
25th June 2003, 23:16
I made a demonstation of encoding RV9 EHQ. The video is in 640*340 715 Kbps and the audio in RA8 Surround 96 Kbps with a source WMV9 of very high quality ...

http://jfl1974.free.fr/Download/confidence_trailer.rar


"Confidence" (1280*720, 7.9 Mbps, 2:14 min, 121 MB)

http://windowsmedia.com/9series/DemoCenter/VideoQuality.asp?page=6&lookup=VideoQuality


This source is slightly compressible. Here rates of compressibility obtained with XviD Koepi Ultra Hight, H263, VHQ4, Chroma Motion, bframe 1/150/100/200 with same bitrate and same script ...



640*340 ..... 38% Bad quality
576*320 ..... 42% Better compromise quality resolution
512*288 ..... 48% Too weak resolution




I used this advanced script to make there encoding ...


################################################################################

# AviSynth 2.52 #

# Script Motion Detection Filter Version 3 20/06/03 #

################################################################################


################################## Faq ...;-) ##################################


# Plugin MPEG2Dec3.dll version 1.08 #
# Plugin Convolution3DYV12.dll #
# Plugin FluxSmooth.dll #

# Source : Path projet .d2v of DVD2AVI 1.76 #
# CPU_type : you will choose 5 for Pentium IV and 7 for the other processors #
# Motion_Type : choose "light", "medium" or "strong" filtering #

# Threshold : adjustment of the threshold of detection of the scenes #

# Top : Crop top of the image #
# Left : Crop left of the image #
# Right : Crop right of the image #
# Bottom : Crop bottom of the image #

# DimX : Width of the image #
# DimY : Height of the image #

# Start : Start Frame #
# End : End Frame #


################################## Variables ###################################


Source = "C:\Stock\confidence_trailer_tpr_vfapi.avi"
CPUType = 7
MotionType = "medium"

Left = 30
Top = 24
Right = 34
Bottom = 24

DimX = 640
DimY = 340

Start = 0
End = 0

ThresholdSM = 2.5
ThresholdHM = 7.5


############################### Script Principal ###############################


clip = AviSource( Source)
clip = ConvertToYV12( clip)
clip = Trim( clip, Start, End)
clip = Crop( clip, Left, Top, -Right, -Bottom)
clip = FluxSmooth( clip, 5, 3)
clip = DMF( clip, DimX, DimY, MotionType, ThresholdSM, ThresholdHM)
Return clip


################################## Fonctions ###################################


# Motion_Hight : function of filtering of fast scenes #

function Motion_Hight( clip Hight, float DimX, float DimY, float N)

{

Hight = BicubicResize( Hight, DimX, DimY, 0.33, 0.33)
Hight = Convolution3D( Hight, 0, 3*(N+1), 3*(N+1)+2, (N+1), (N+1)+2, 3, 0)
Return Hight

}


# Motion_Medium : function of filtering of Mediums scenes #

function Motion_Medium( clip Medium, float DimX, float DimY, float N)

{

Medium = BicubicResize( Medium, DimX, DimY, 0, 0.5)
Medium = Convolution3D( Medium, 0, 2*(N+1), 2*(N+1)+2, 2*(N+1), 2*(N+1)+2, 3, 0)
Return Medium

}


# Motion_Slow : function of filtering of Slow scenes #

function Motion_Slow( clip Slow, float DimX, float DimY, float N)

{

Slow = BicubicResize( Slow, DimX, DimY, 0, 0.7)
Slow = Convolution3D( Slow, 0, (N+1), (N+1)+2, 3*(N+1), 3*(N+1)+2, 3, 0)
Return Slow

}


# DMF : function of filtage of scenes slow, medium and rapid #

function DMF( clip filter, float DimX, float DimY, string MotionType, float ThresholdSM, float ThresholdHM)

{

N = FiltrageType( MotionType)

global filter = filter

output1 = Conditionalfilter( filter , Motion_Slow( filter, DimX, DimY, N), Motion_Medium( filter, DimX, DimY, N), "diff_Previous", "<", "ThresholdSM", false)

output2 = Conditionalfilter( filter , output1, Motion_Medium( filter, DimX, DimY, N), "diff_Next", "<", "ThresholdSM", false)

output3 = Conditionalfilter( filter , Motion_Hight( filter, DimX, DimY, N), output2, "diff_Previous", ">", "ThresholdHM", false)

output4 = Conditionalfilter( filter , output3, output2, "diff_Next", ">", "ThresholdHM", false)

output4 = frameevaluate( output4, "diff_Previous = 0.5*YDifferenceFromPrevious( filter) + 0.25*UDifferenceFromPrevious( filter) + 0.25*VDifferenceFromPrevious( filter)")

output4 = frameevaluate( output4, "diff_Next = 0.5*YDifferenceToNext( filter) + 0.25*UDifferenceToNext( filter) + 0.25*VDifferenceToNext( filter)")

return output4

}


# FiltrageType : function of filtering level #

function FiltrageType( string MotionType)

{

N = MotionType == "light" ? 1 : 0
N = MotionType == "medium" ? 2 : N
N = MotionType == "strong" ? 3 : N

return N

}


################################################################################

outlyer
25th June 2003, 23:25
nice

karl_lillevold
26th June 2003, 15:38
that is indeed a very nice looking RV9-EHQ encode, after examining it closely on my high-res monitor. Thanks! I would of course attribute it all to the highly advanced Avisynth script :) Seriously, I am curious as to its effect, so I may try to encode with and without it to see the difference.

Sagittaire
27th June 2003, 00:00
Here a small faq on the operation of script. Script detecte the level of movement of the current image by comparing it has the preceding and following image. If the scene is slow then resize very precis, temporal Filtrage extremely and weak filtering spacial. If the scene is fast then resize little precis, weak temporal filtering and filtering spacial extremely.

The final result gives a source with a better quality and a better compressibility than with traditional scripts ... ;-)

kilg0r3
27th June 2003, 12:57
Ouch this looks good ;)

iago
27th June 2003, 16:45
Not to go off topic, but regarding the script, for those who are interested, a similar (wise! ;)) approach to filtering according to motion levels is discussed in the avisynth usage forum too: http://forum.doom9.org/showthread.php?threadid=56051

regards,
iago