RadicalEd
13th August 2003, 07:30
Well, the other day I stumbled upon some OLD CD's full of fansubbed Sailor Moon episodes from way back in like '98 or '99 (long before S was licensed and released overseas, mind you). Actually, a couple of these were encoded by ErMaC (http://forum.doom9.org/member.php?s=&action=getinfo&userid=10216).
Well, this is the online fansub distro scene in '98, so we're talking hard subbed 150 kbps RVG2 encodes off of like 5th gen VHS tapes at 320x240 and 15fps. Beautiful, as you might imagine. So I started wondering how today's methods and codecs would fare in comparison. Having 3 DVDs of the S series myself, I decided to try it out.
I took a lot of liberties in this comparison. The old resolution was actually 316x236 for some odd reason. I used 320x240. In the name of advanced technology, I didn't deinterlace and half the framerate, I IVTCed and used a variable framerate based on dropped frames (dupedrop). I didn't use 5th gen vhs tapes, I used R1 DVDs :\
In addition, I didn't use .ram, I muxed the video and audio with soft subs and chapters into the best NEW format, matroska.
By that same then:now comparison logic I could have made a regular 700kbps 640x480 encode, since that's the norm now. But instead I wanted to compare how good a same resolution same bitrate file could be.
So, I took one episode and encoded it using helix producer 9.2 milestone 5 RV9 with very-high encoder complexity (85 EHQ). The video was encoded at ~132 kbps and the audio at 16.5 kbps cook-17 (stereo RA8).
That's compared to ~140 kbps RVG2 (rv2.0) with 8 kbps mono cook-0 audio.
As far as posting links to full episodes on this site goes.. well.. I'm not sure. Technically it is piracy, but it's with educational intent for comparison of old/new encoding methods.. so I don't know. I'll leave that up to the administration to remove the links if they deem it a threat. I hope not though :\
For obvious reasons, I replaced the full (25mb 24 min) videos with just the 1:52 prologue and intro. However, when cut the new encode wound up to be more than a meg larger :\ that's vbr for ya.
If anyone still wants the whole episodes PM me :P
the old:
http://members.shaw.ca/NME/sms100_99CUT.rm
and the new:
http://members.shaw.ca/NME/sms100CUT_03.mkv
Check out the difference.
[edit1]hmm.. in retrospect, the old encode looks unfairly washed out and smooth for compressibility. Also I'm getting ~9 fps avg for the old encode and ~19 fps avg for mine. I'm considering redoing it with bilinear resizing and acually doing manual dup (eck..) threshold=1.0 is obviously not doing the trick if I'm getting 19fps avg on an anime like Sailor Moon :\
Still, it looks damn good for being smaller than a decent mp3.
the avisynth script:
mpeg2source("proj.d2v",idct=7)
Telecide(order=1,guide=1,blend=True,post=2,hints=true)
Decimate(mode=2,quality=3)
Deen("a3d",4,12,20,15)
clip1 = trim(16,493).crop(8,0,-4,-0).lanczosresize(320,240)
clip2 = trim(494,2699).crop(16,2,-8,0).lanczosresize(320,240)
clip3 = trim(2700,31775).crop(8,0,-4,-0).lanczosresize(320,240)
clip4 = trim(31776,34011).crop(16,0,-8,-0).lanczosresize(320,240)
clip1 + clip2 + clip3 + clip4
Deen("a3d",4,4,8,2)
dup(blend=true,threshold=1.0)
and the helix jobfile:
<?xml version="1.0" encoding="UTF-8"?>
<job xmlns="http://ns.real.com/tools/job.2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://ns.real.com/tools/job.2.0 http://ns.real.com/tools/job.2.0.xsd">
<enableTwoPass type="bool">true</enableTwoPass>
<clipInfo>
<entry>
<name>Copyright</name>
<value type="string">(C) 2003</value>
</entry>
</clipInfo>
<parInputs>
<input xsi:type="avFileInput">
<filename type="string">G:\G\SAILORMOON_2\VIDEO_TS\proj2.wav</filename>
<prefilters>
<prefilter xsi:type="videoDupFrameDropper">
<enabled type="bool">true</enabled>
<maxDroppedFrames type="uint">4000</maxDroppedFrames>
<maxAvgSSD type="uint">10</maxAvgSSD>
<maxAreaSSD type="uint">10</maxAreaSSD>
<maxAvgChromaSSD type="uint">10</maxAvgChromaSSD>
<maxAreaChromaSSD type="uint">10</maxAreaChromaSSD>
<earlyExit type="bool">false</earlyExit>
<enableDetailedLogInfo type="bool">true</enableDetailedLogInfo>
<pluginName type="string">rn-prefilter-dupframedropper</pluginName>
</prefilter>
<prefilter xsi:type="deinterlacePrefilter">
<deinterlace type="bool">false</deinterlace>
<enabled type="bool">false</enabled>
<inverseTelecine type="bool">false</inverseTelecine>
<manual type="bool">false</manual>
<pluginName type="string">rn-prefilter-deinterlace</pluginName>
</prefilter>
<prefilter xsi:type="audioGainPrefilter">
<enabled type="bool">false</enabled>
<gain type="double">0.000000</gain>
<pluginName type="string">rn-prefilter-audiogain</pluginName>
</prefilter>
<prefilter xsi:type="videoNoiseReductionPrefilter">
<enabled type="bool">false</enabled>
<level type="string">low</level>
<pluginName type="string">rn-prefilter-videonoisereduction</pluginName>
</prefilter>
<prefilter xsi:type="blackLevelPrefilter">
<enabled type="bool">false</enabled>
<pluginName type="string">rn-prefilter-blacklevel</pluginName>
</prefilter>
</prefilters>
</input>
</parInputs>
<parOutputs>
<output>
<destinations>
<destination xsi:type="fileDestination">
<filename type="string">G:\G\SAILORMOON_2\VIDEO_TS\proj.rmvb</filename>
</destination>
</destinations>
<mediaProfile>
<audioMode type="string">music</audioMode>
<audioResamplingQuality type="string">high</audioResamplingQuality>
<disableAudio type="bool">false</disableAudio>
<disableVideo type="bool">false</disableVideo>
<outputHeight type="uint">0</outputHeight>
<outputWidth type="uint">0</outputWidth>
<resizeQuality type="string">high</resizeQuality>
<videoMode type="string">normal</videoMode>
<audienceRefs>
<audienceRef>newaud</audienceRef>
</audienceRefs>
</mediaProfile>
</output>
</parOutputs>
<audiences>
<audience>
<avgBitrate type="uint">136192</avgBitrate>
<maxBitrate type="uint">20000000</maxBitrate>
<name type="string">newaud</name>
<streams>
<stream xsi:type="videoStream">
<codecProperties type="bag">
<noisyEdgeFilter type="bool">false</noisyEdgeFilter>
</codecProperties>
<codecName type="string">rv9</codecName>
<enableLossProtection type="bool">false</enableLossProtection>
<encodingComplexity type="string">very-high</encodingComplexity>
<encodingType type="string">vbrBitrate</encodingType>
<maxFrameRate type="double">24.000000</maxFrameRate>
<maxKeyFrameInterval type="double">12.500000</maxKeyFrameInterval>
<maxStartupLatency type="double">60.000000</maxStartupLatency>
<pluginName type="string">rn-videocodec-realvideo</pluginName>
<quality type="uint">50</quality>
</stream>
<stream xsi:type="audioStream">
<codecFlavor type="uint">21</codecFlavor>
<codecName type="string">cook</codecName>
<pluginName type="string">rn-audiocodec-realaudio</pluginName>
<streamContext type="bag">
<audioMode type="string">music</audioMode>
<presentationType type="string">audio-video</presentationType>
</streamContext>
</stream>
<stream xsi:type="audioStream">
<codecFlavor type="uint">3</codecFlavor>
<codecName type="string">sipr</codecName>
<pluginName type="string">rn-audiocodec-realaudio</pluginName>
<streamContext type="bag">
<audioMode type="string">voice</audioMode>
<presentationType type="string">audio-video</presentationType>
</streamContext>
</stream>
<stream xsi:type="audioStream">
<codecFlavor type="uint">17</codecFlavor>
<codecName type="string">cook</codecName>
<pluginName type="string">rn-audiocodec-realaudio</pluginName>
<streamContext type="bag">
<encodingType type="string">vbrUnconstrainedBitrate</encodingType>
<audioMode type="string">music</audioMode>
<presentationType type="string">audio-only</presentationType>
</streamContext>
</stream>
<stream xsi:type="audioStream">
<codecFlavor type="uint">3</codecFlavor>
<codecName type="string">sipr</codecName>
<pluginName type="string">rn-audiocodec-realaudio</pluginName>
<streamContext type="bag">
<audioMode type="string">voice</audioMode>
<presentationType type="string">audio-only</presentationType>
</streamContext>
</stream>
</streams>
</audience>
</audiences>
</job>
Well, this is the online fansub distro scene in '98, so we're talking hard subbed 150 kbps RVG2 encodes off of like 5th gen VHS tapes at 320x240 and 15fps. Beautiful, as you might imagine. So I started wondering how today's methods and codecs would fare in comparison. Having 3 DVDs of the S series myself, I decided to try it out.
I took a lot of liberties in this comparison. The old resolution was actually 316x236 for some odd reason. I used 320x240. In the name of advanced technology, I didn't deinterlace and half the framerate, I IVTCed and used a variable framerate based on dropped frames (dupedrop). I didn't use 5th gen vhs tapes, I used R1 DVDs :\
In addition, I didn't use .ram, I muxed the video and audio with soft subs and chapters into the best NEW format, matroska.
By that same then:now comparison logic I could have made a regular 700kbps 640x480 encode, since that's the norm now. But instead I wanted to compare how good a same resolution same bitrate file could be.
So, I took one episode and encoded it using helix producer 9.2 milestone 5 RV9 with very-high encoder complexity (85 EHQ). The video was encoded at ~132 kbps and the audio at 16.5 kbps cook-17 (stereo RA8).
That's compared to ~140 kbps RVG2 (rv2.0) with 8 kbps mono cook-0 audio.
As far as posting links to full episodes on this site goes.. well.. I'm not sure. Technically it is piracy, but it's with educational intent for comparison of old/new encoding methods.. so I don't know. I'll leave that up to the administration to remove the links if they deem it a threat. I hope not though :\
For obvious reasons, I replaced the full (25mb 24 min) videos with just the 1:52 prologue and intro. However, when cut the new encode wound up to be more than a meg larger :\ that's vbr for ya.
If anyone still wants the whole episodes PM me :P
the old:
http://members.shaw.ca/NME/sms100_99CUT.rm
and the new:
http://members.shaw.ca/NME/sms100CUT_03.mkv
Check out the difference.
[edit1]hmm.. in retrospect, the old encode looks unfairly washed out and smooth for compressibility. Also I'm getting ~9 fps avg for the old encode and ~19 fps avg for mine. I'm considering redoing it with bilinear resizing and acually doing manual dup (eck..) threshold=1.0 is obviously not doing the trick if I'm getting 19fps avg on an anime like Sailor Moon :\
Still, it looks damn good for being smaller than a decent mp3.
the avisynth script:
mpeg2source("proj.d2v",idct=7)
Telecide(order=1,guide=1,blend=True,post=2,hints=true)
Decimate(mode=2,quality=3)
Deen("a3d",4,12,20,15)
clip1 = trim(16,493).crop(8,0,-4,-0).lanczosresize(320,240)
clip2 = trim(494,2699).crop(16,2,-8,0).lanczosresize(320,240)
clip3 = trim(2700,31775).crop(8,0,-4,-0).lanczosresize(320,240)
clip4 = trim(31776,34011).crop(16,0,-8,-0).lanczosresize(320,240)
clip1 + clip2 + clip3 + clip4
Deen("a3d",4,4,8,2)
dup(blend=true,threshold=1.0)
and the helix jobfile:
<?xml version="1.0" encoding="UTF-8"?>
<job xmlns="http://ns.real.com/tools/job.2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://ns.real.com/tools/job.2.0 http://ns.real.com/tools/job.2.0.xsd">
<enableTwoPass type="bool">true</enableTwoPass>
<clipInfo>
<entry>
<name>Copyright</name>
<value type="string">(C) 2003</value>
</entry>
</clipInfo>
<parInputs>
<input xsi:type="avFileInput">
<filename type="string">G:\G\SAILORMOON_2\VIDEO_TS\proj2.wav</filename>
<prefilters>
<prefilter xsi:type="videoDupFrameDropper">
<enabled type="bool">true</enabled>
<maxDroppedFrames type="uint">4000</maxDroppedFrames>
<maxAvgSSD type="uint">10</maxAvgSSD>
<maxAreaSSD type="uint">10</maxAreaSSD>
<maxAvgChromaSSD type="uint">10</maxAvgChromaSSD>
<maxAreaChromaSSD type="uint">10</maxAreaChromaSSD>
<earlyExit type="bool">false</earlyExit>
<enableDetailedLogInfo type="bool">true</enableDetailedLogInfo>
<pluginName type="string">rn-prefilter-dupframedropper</pluginName>
</prefilter>
<prefilter xsi:type="deinterlacePrefilter">
<deinterlace type="bool">false</deinterlace>
<enabled type="bool">false</enabled>
<inverseTelecine type="bool">false</inverseTelecine>
<manual type="bool">false</manual>
<pluginName type="string">rn-prefilter-deinterlace</pluginName>
</prefilter>
<prefilter xsi:type="audioGainPrefilter">
<enabled type="bool">false</enabled>
<gain type="double">0.000000</gain>
<pluginName type="string">rn-prefilter-audiogain</pluginName>
</prefilter>
<prefilter xsi:type="videoNoiseReductionPrefilter">
<enabled type="bool">false</enabled>
<level type="string">low</level>
<pluginName type="string">rn-prefilter-videonoisereduction</pluginName>
</prefilter>
<prefilter xsi:type="blackLevelPrefilter">
<enabled type="bool">false</enabled>
<pluginName type="string">rn-prefilter-blacklevel</pluginName>
</prefilter>
</prefilters>
</input>
</parInputs>
<parOutputs>
<output>
<destinations>
<destination xsi:type="fileDestination">
<filename type="string">G:\G\SAILORMOON_2\VIDEO_TS\proj.rmvb</filename>
</destination>
</destinations>
<mediaProfile>
<audioMode type="string">music</audioMode>
<audioResamplingQuality type="string">high</audioResamplingQuality>
<disableAudio type="bool">false</disableAudio>
<disableVideo type="bool">false</disableVideo>
<outputHeight type="uint">0</outputHeight>
<outputWidth type="uint">0</outputWidth>
<resizeQuality type="string">high</resizeQuality>
<videoMode type="string">normal</videoMode>
<audienceRefs>
<audienceRef>newaud</audienceRef>
</audienceRefs>
</mediaProfile>
</output>
</parOutputs>
<audiences>
<audience>
<avgBitrate type="uint">136192</avgBitrate>
<maxBitrate type="uint">20000000</maxBitrate>
<name type="string">newaud</name>
<streams>
<stream xsi:type="videoStream">
<codecProperties type="bag">
<noisyEdgeFilter type="bool">false</noisyEdgeFilter>
</codecProperties>
<codecName type="string">rv9</codecName>
<enableLossProtection type="bool">false</enableLossProtection>
<encodingComplexity type="string">very-high</encodingComplexity>
<encodingType type="string">vbrBitrate</encodingType>
<maxFrameRate type="double">24.000000</maxFrameRate>
<maxKeyFrameInterval type="double">12.500000</maxKeyFrameInterval>
<maxStartupLatency type="double">60.000000</maxStartupLatency>
<pluginName type="string">rn-videocodec-realvideo</pluginName>
<quality type="uint">50</quality>
</stream>
<stream xsi:type="audioStream">
<codecFlavor type="uint">21</codecFlavor>
<codecName type="string">cook</codecName>
<pluginName type="string">rn-audiocodec-realaudio</pluginName>
<streamContext type="bag">
<audioMode type="string">music</audioMode>
<presentationType type="string">audio-video</presentationType>
</streamContext>
</stream>
<stream xsi:type="audioStream">
<codecFlavor type="uint">3</codecFlavor>
<codecName type="string">sipr</codecName>
<pluginName type="string">rn-audiocodec-realaudio</pluginName>
<streamContext type="bag">
<audioMode type="string">voice</audioMode>
<presentationType type="string">audio-video</presentationType>
</streamContext>
</stream>
<stream xsi:type="audioStream">
<codecFlavor type="uint">17</codecFlavor>
<codecName type="string">cook</codecName>
<pluginName type="string">rn-audiocodec-realaudio</pluginName>
<streamContext type="bag">
<encodingType type="string">vbrUnconstrainedBitrate</encodingType>
<audioMode type="string">music</audioMode>
<presentationType type="string">audio-only</presentationType>
</streamContext>
</stream>
<stream xsi:type="audioStream">
<codecFlavor type="uint">3</codecFlavor>
<codecName type="string">sipr</codecName>
<pluginName type="string">rn-audiocodec-realaudio</pluginName>
<streamContext type="bag">
<audioMode type="string">voice</audioMode>
<presentationType type="string">audio-only</presentationType>
</streamContext>
</stream>
</streams>
</audience>
</audiences>
</job>