IPB

Welcome Guest ( Log In | Register )

2 Pages V   1 2 >  
Reply to this topicStart new topic
h264 reference encoder with AviSynth input!
JohnV
post Nov 25 2003, 12:43
Post #1





Group: Developer
Posts: 2797
Joined: 22-September 01
Member No.: 6



I've got via an anonymous developer a special modified build of the reference jm 7.3 commandline h264 encoder, which takes an .avs yv12 (DVD-colorspace) input and of course outputs .avi.

I believe Roberto will be hosting the binary of this in Brazil soon.

Usage of this encoder is simple:
CODE
lencod.exe -p InputFile = "video.avs" -p OutputFile = "video.avi"


In encoder.cfg file you can see that by default it retains constant 24 quantizer. By changing this file you can adjust encoder options.

The unmodified build only accpets some raw yuv420 file, so this is a big improvement.
You can do the dvd2avi and avs script build phase in Gordian Knot and then feed the .avs to this commanline encoder.


--------------------
Juha Laaksonheimo
Go to the top of the page
+Quote Post
rjamorim
post Nov 25 2003, 12:45
Post #2


Rarewares admin


Group: Members
Posts: 7515
Joined: 30-September 01
From: Brazil
Member No.: 81



QUOTE (JohnV @ Nov 25 2003, 09:43 AM)
I believe Roberto will be hosting this binary in Brazil soon.


http://pessoal.onda.com.br/rjamorim/lencod...jm73special.zip

This post has been edited by rjamorim: Nov 25 2003, 13:16


--------------------
Get up-to-date binaries of Lame, AAC, Vorbis and much more at RareWares:
http://www.rarewares.org
Go to the top of the page
+Quote Post
JohnV
post Nov 25 2003, 13:29
Post #3





Group: Developer
Posts: 2797
Joined: 22-September 01
Member No.: 6



Ok, the encoder is still slow. Unfortunately the package doesn't include any decoder.
I happen to have a working h264 dshow decoder in testing, but it's strictly forbidden to share it to anybody.

I tested the VSS h264 beta decoder which is publicly available, but seems it didn't work. Somebody might want to test with their latest beta decoder though if it works.


--------------------
Juha Laaksonheimo
Go to the top of the page
+Quote Post
LordofStars
post Nov 25 2003, 19:04
Post #4





Group: Members
Posts: 353
Joined: 28-April 02
Member No.: 1894



Perhaps you might be able to share the information about who created the working decoder so we might look forward to and in the proper channels for it.


--------------------
r3mix zealot.
Go to the top of the page
+Quote Post
JohnV
post Nov 25 2003, 19:12
Post #5





Group: Developer
Posts: 2797
Joined: 22-September 01
Member No.: 6



Well.. one thing in the encoder. It currently produces fourcc's a264 and A264 (Edit. it should now produce h264 H264).
Hex edit these to h264 and H264 respectively, and it should work with Mplayer.
http://www.mplayerhq.hu/MPlayer/releases/w...gui-preview.zip

The quality of Mplayer h264 playback totally sucks for some reason. My commercial quality decoder filter gives *hugely* better picture.

Anyway, here are few short demo streams:
http://www.hydrogenaudio.org/extra/H264_q2...q24_600kbps.avi (Reso: 720 x 304)
http://www.hydrogenaudio.org/extra/H264_q2...24_1000kbps.avi (Reso: 704 x 288)

These are both made with constant quantizer 24. The first clip just happens to be about 600kbps and the second about 1000kbps. So these are not really targeted to be these bitrates..rather have constant quality.

This post has been edited by JohnV: Nov 26 2003, 03:31


--------------------
Juha Laaksonheimo
Go to the top of the page
+Quote Post
idioteque
post Nov 25 2003, 19:32
Post #6





Group: Members
Posts: 120
Joined: 19-May 03
Member No.: 6712



QUOTE (JohnV @ Nov 25 2003, 10:12 AM)
The quality of Mplayer h264 playback totally sucks for some reason. My commercial quality decoder filter gives *hugely* better picture.

It's possible that MPlayer may be short-cutting or skipping the in-loop deblocking filter to get faster decoding.

This post has been edited by idioteque: Nov 25 2003, 19:33
Go to the top of the page
+Quote Post
danchr
post Nov 25 2003, 19:57
Post #7





Group: Members
Posts: 487
Joined: 6-April 03
From: Århus, Denmark
Member No.: 5861



QUOTE (JohnV @ Nov 25 2003, 07:12 PM)
The quality of Mplayer h264 playback totally sucks for some reason. My commercial quality decoder filter gives *hugely* better picture.

I believe the libavcodec implementation of H.264 doesn't support all the techniques used in it, yet. I'd suggest you contact the FFmpeg developers and hand them a sample in the hope they're willing to give it a try smile.gif
Go to the top of the page
+Quote Post
bond
post Nov 25 2003, 20:09
Post #8





Group: Members
Posts: 881
Joined: 11-October 02
Member No.: 3523



JohnV
can you post some screenshots to show the quality plz (perhaps some upsized ones if possible smile.gif )?


--------------------
I know, that I know nothing (Socrates)
Go to the top of the page
+Quote Post
JohnV
post Nov 25 2003, 21:39
Post #9





Group: Developer
Posts: 2797
Joined: 22-September 01
Member No.: 6



QUOTE (bond @ Nov 25 2003, 09:09 PM)
JohnV
can you post some screenshots to show the quality plz (perhaps some upsized ones if possible smile.gif )?

I will, if I get the permission, but at the moment I can't. But believe me, the difference is truely *significant*. Considering for example the 600kbps demo stream, the difference is that Mplayer picture has very bad artifacting, while this commercial class dshow decoder's picture is truely great, and I'd probably rate it at least 1000kbps divx/xvid if it was MPEG4.

Also the 1000kbps H264 looks very blocky and bad quality for this bitrate with MPlayer, but it's very nice with this better decoder.


--------------------
Juha Laaksonheimo
Go to the top of the page
+Quote Post
Bonzi
post Nov 26 2003, 02:59
Post #10


A/V Moderator


Group: Members
Posts: 278
Joined: 22-February 03
Member No.: 5132



JohnV, probably you are encoding with inloop filtering which is why it looks better on the commercial decoder than mplayer. Mplayer does not support inloop filtering so it can look really bad if it is used. They should look about the same though if inloop filtering is turned off because the decoder in mplayer I think is largely based on reference code. BTW, this makes me very very happy since all of my testing with h.264 has involved converting to yuy2 and then encoding this. I am a little concerned though about how this is stored in avi though since I don't think there is any standard way to do this, all the other encoders that I know only output the raw h.264 bitstream except hdot264 and vss. So definitely people don't archive stuff to this codec but it is definitely free game to do lots of testing!
Go to the top of the page
+Quote Post
JohnV
post Nov 26 2003, 03:14
Post #11





Group: Developer
Posts: 2797
Joined: 22-September 01
Member No.: 6



QUOTE (Bonzi @ Nov 26 2003, 03:59 AM)
JohnV, probably you are encoding with inloop filtering which is why it looks better on the commercial decoder than mplayer.  Mplayer does not support inloop filtering so it can look really bad if it is used.

Indeed, yeah.
I had this in encoder.cfg
CODE
LoopFilterDisable  = 0  # Disable loop filter in slice header (0=Filter, 1=No Filter)


I'll soon encode something with In-Loop Filter disabled and see what is the difference then. Well, it's said here, that in-loop filtering reduces bitrate 5-10%, so at least file size will increase a little with constant quantizer.


--------------------
Juha Laaksonheimo
Go to the top of the page
+Quote Post
JohnV
post Nov 26 2003, 04:03
Post #12





Group: Developer
Posts: 2797
Joined: 22-September 01
Member No.: 6



QUOTE (Bonzi @ Nov 26 2003, 03:59 AM)
So definitely people don't archive stuff to this codec but it is definitely free game to do lots of testing!

I don't think anybody archives anything with this. With 3Ghz P4 encoding about 2 hour movie takes about 15 days, if I calculated correctly. Though maybe changing some of the encoder options makes it faster. Currently it takes about 7-8 sec per frame...

I was thinking maybe someone like Frank Klemm who has experience on encoder speed optimizations and now says is infact more interested in video, would like to start tweaking a h264 encoder. wink.gif
I'm at least going to email him. smile.gif


--------------------
Juha Laaksonheimo
Go to the top of the page
+Quote Post
Bonzi
post Nov 26 2003, 05:11
Post #13


A/V Moderator


Group: Members
Posts: 278
Joined: 22-February 03
Member No.: 5132



QUOTE
I don't think anybody archives anything with this. With 3Ghz P4 encoding about 2 hour movie takes about 15 days, if I calculated correctly. Though maybe changing some of the encoder options makes it faster. Currently it takes about 7-8 sec per frame...

Lol, well, you never know but I would hope that nobody would try to. Certainly it would be great if frank or anyone else could make a fast high quality encoder or even tweak this one so it is faster. But, personally I hope someone will write an encoder from scratch. Clearly, this would be no small task. The interest in h.264 is building quickly, there are many people including some very talented developers that I know of who are interested. I even heard that certain persons already have been developing an encoder which now is approximately the same speed as VSS h.264 implementation but much better quality of course. I haven't seen it yet so we will just see what happens...
Go to the top of the page
+Quote Post
JohnV
post Nov 26 2003, 14:47
Post #14





Group: Developer
Posts: 2797
Joined: 22-September 01
Member No.: 6



I just contacted ffdshow developer Milan Cutka, and if everything goes alright, we should see ffdshow support for h264 avis pretty soon. smile.gif
He had problems creating streams working with libavcodec using hdot264 and vssh264, but hopefully this will work. At least the files work with Mplayer which should use libavcodec for h264 decoding.
I'm also soon finishing an encode with in-loop filtering disabled. I'll upload it also.

Someone might wonder why b-frames don't work. [edit] see my next message.

This post has been edited by JohnV: Nov 26 2003, 18:52


--------------------
Juha Laaksonheimo
Go to the top of the page
+Quote Post
slav!x
post Nov 26 2003, 18:12
Post #15





Group: Members
Posts: 16
Joined: 26-November 03
Member No.: 10049



Hi, because not eveybody have 3ghz pc , this config should be pretty fast

CODE
# New Input File Format is as follows
# <ParameterName> = <ParameterValue> # Comment
#
# See configfile.h for a list of supported ParameterNames


##########################################################################################
# Files
##########################################################################################
InputFile             = ""     # Input sequence, YUV 4:2:0
InputHeaderLength     = 0      # If the inputfile has a header, state it's length in byte here
FramesToBeEncoded     = 299    # Number of frames to be coded
SourceWidth           = 352    # Image width in Pels, must be multiple of 16
SourceHeight          = 288    # Image height in Pels, must be multiple of 16
TraceFile             = ""
ReconFile             = ""
OutputFile            = "res.avi"


##########################################################################################
# Encoder Control
##########################################################################################

IntraPeriod           = 300 # Period of I-Frames (0=only first)
QPFirstFrame          = 24  # Quant. param for first frame (intra) (0-51)
QPRemainingFrame      = 24  # Quant. param for remaining frames (0-51)
FrameSkip             =  0  # Number of frames to be skipped in input (e.g 2 will code every third frame)
UseHadamard           =  1  # Hadamard transform (0=not used, 1=used)
SearchRange           =  8  # Max search range
NumberReferenceFrames =  1  # Number of previous frames used for inter motion search (1-5)
MbLineIntraUpdate     =  0  # Error robustness(extra intra macro block updates)(0=off, N: One GOB every N frames are intra coded)
RandomIntraMBRefresh  =  0  # Forced intra MBs per picture
InterSearch16x16      =  1  # Inter block search 16x16 (0=disable, 1=enable)
InterSearch16x8       =  1  # Inter block search 16x8  (0=disable, 1=enable)
InterSearch8x16       =  1  # Inter block search  8x16 (0=disable, 1=enable)
InterSearch8x8        =  1  # Inter block search  8x8  (0=disable, 1=enable)
InterSearch8x4        =  1  # Inter block search  8x4  (0=disable, 1=enable)
InterSearch4x8        =  0  # Inter block search  4x8  (0=disable, 1=enable)
InterSearch4x4        =  0  # Inter block search  4x4  (0=disable, 1=enable)

##########################################################################################
# Error Resilience / Slices
##########################################################################################

SliceMode             =  0   # Slice mode (0=off 1=fixed #mb in slice 2=fixed #bytes in slice 3=use callback 4=FMO)
SliceArgument         = 50   # Slice argument (Arguments to modes 1 and 2 above)
num_slice_groups_minus1 = 0  # Number of Slice Groups Minus 1, 0 == no FMO, 1 == two slice groups, etc.
FmoType               =  0   # 0:  Slice interleave, 1: Scatter, 2: fully flexible, data in FmoConfigFileName,
                            # 3:  rectangle defined by FmoTopLeftMB and FmoBottomRightMB,
                            #     (only one rectangular slice group supported currently, i.e. FmoNumSliceGroups = 1)
                            # 4-6:evolving slice groups, FmoNumSliceGroups = 1, the evolving method is defined by
                            #     FmoChangeDirection and FmoChangeRate.
FmoTopLeftMB          = 24   # the top left MB of the rectangular shape for slice groups, MB counted in raster scan order
FmoBottomRightMB      = 74   # the bottom right MB of the rectangular shape for slice groups
FmoChangeDirection    = 1    # 0: box-out clockwise, raster scan or wipe right,
                            # 1: box-out counter clockwise, reverse raster scan or wipe left
FmoChangeRate         = 4    # SLICE_GROUP_CHANGE_RATE minus 1

FmoConfigFileName     = "fmoconf.cfg"   # not yet used, for future fully flexible MBAmaps

UseRedundantSlice     = 0    # 0: not used, 1: one redundant slice used for each slice (other modes not supported yet)

##########################################################################################
# B Frames
##########################################################################################

NumberBFrames         =  0  # Number of B frames inserted (0=not used)  
QPBPicture            =  30 # Quant. param for B frames (0-51)
DirectModeType        =  0  # Direct Mode Type (0:Temporal 1:Spatial)

##########################################################################################
# SP Frames
##########################################################################################

SPPicturePeriodicity  =  0  # SP-Picture Periodicity (0=not used)
QPSPPicture           = 28  # Quant. param of SP-Pictures for Prediction Error (0-51)
QPSP2Picture          = 27  # Quant. param of SP-Pictures for Predicted Blocks (0-51)


##########################################################################################
# Output Control, NALs
##########################################################################################

SymbolMode             =  0  # Symbol mode (Entropy coding method: 0=UVLC, 1=CABAC)
OutFileMode            =  0  # Output file mode, 0:Annex B, 1:RTP
PartitionMode          =  0  # Partition Mode, 0: no DP, 1: 3 Partitions per Slice

##########################################################################################
# Search Range Restriction / RD Optimization
##########################################################################################

RestrictSearchRange  =  0  # restriction for (0: blocks and ref, 1: ref, 2: no restrictions)
RDOptimization       =  0  # rd-optimized mode decision (0:off, 1:on, 2: with losses)
LossRateA            = 10  # expected packet loss rate of the channel for the first partition, only valid if RDOptimization = 2
LossRateB            =  0  # expected packet loss rate of the channel for the second partition, only valid if RDOptimization = 2
LossRateC            =  0  # expected packet loss rate of the channel for the third partition, only valid if RDOptimization = 2
NumberOfDecoders     = 30  # Numbers of decoders used to simulate the channel, only valid if RDOptimization = 2
RestrictRefFrames    =  0  # Doesnt allow reference to areas that have been intra updated in a later frame.

##########################################################################################
# Additional Stuff
#########################################################################################

UseConstrainedIntraPred  =  0  # If 1, Inter pixels are not used for Intra macroblock prediction.
LastFrameNumber          =  0  # Last frame number that have to be coded (0: no effect)
ChangeQPP                = 16  # QP (P-frame) for second part of sequence (0-51)
ChangeQPB                = 18  # QP (B-frame) for second part of sequence (0-51)
ChangeQPStart            =  0  # Frame no. for second part of sequence (0: no second part)
AdditionalReferenceFrame =  0  # Additional ref. frame to check (news_a: 16; news_b,c: 24)

NumberofLeakyBuckets     =  8                      # Number of Leaky Bucket values
LeakyBucketRateFile      =  ""  # File from which encoder derives rate values
LeakyBucketParamFile     =  "" # File where encoder stores leakybucketparams

InterlaceCodingOption    =  0  # (0: frame coding, 1: adaptive frame/field coding, 2:field coding, 3:mb adaptive f/f)

NumberFramesInEnhancementLayerSubSequence  = 0  # number of frames in the Enhanced Scalability Layer(0: no Enhanced Layer)
NumberOfFrameInSecondIGOP                  = 0  # Number of frames to be coded in the second IGOP

WeightedPrediction    = 0   # P picture Weighted Prediction (0=off, 1=explicit mode)  
WeightedBiprediction  = 0   # B picture Weighted Prediciton (0=off, 1=explicit mode,  2=implicit mode)  
StoredBPictures    = 0   # Stored B pictures (0=off, 1=on)

SparePictureOption = 0         # (0: no spare picture info, 1: spare picture available)
SparePictureDetectionThr = 6   # Threshold for spare reference pictures detection
SparePicturePercentageThr = 92    # Threshold for the spare macroblock percentage

PicOrderCntType = 0       # (0: POC mode 0, 1: POC mode 1, 2: POC mode 2)

##########################################################################################
# Loop filter parameters
##########################################################################################
LoopFilterParametersFlag = 0  # Configure loop filter (0=parameter below ingored, 1=parameters sent)
LoopFilterDisable        = 0  # Disable loop filter in slice header (0=Filter, 1=No Filter)
LoopFilterAlphaC0Offset  = -2  # Alpha & C0 offset div. 2, {-6, -5, ... 0, +1, .. +6}
LoopFilterBetaOffset     = -1  # Beta offset div. 2, {-6, -5, ... 0, +1, .. +6}



##########################################################################################
# CABAC context initialization
##########################################################################################
ContextInitMethod   = 0   # Context init (0: fixed, 1: adaptive)
FixedModelNumber    = 0   # model number for fixed decision for inter slices ( 0, 1, or 2 )


btw, setting RDOptimization = 1 , can decrease bitrate by few percents, and slow down at least twice ph34r.gif
Go to the top of the page
+Quote Post
JohnV
post Nov 26 2003, 18:51
Post #16





Group: Developer
Posts: 2797
Joined: 22-September 01
Member No.: 6



QUOTE (JohnV @ Nov 26 2003, 03:47 PM)
Someone might wonder why b-frames don't work. This is most probably because the encoder currently only supports baseline h264 profile, which means no b-frames.

Umm, according to new info I got this was wrong information. The encoder should be able to encode b-frames as well. For example encoding with 1 consequtive b-frame, edit the encoder.cfg values:
CODE
FrameSkip             =  1  # Number of frames to be skipped in input (e.g 2 will code every third frame)
NumberBFrames         =  1  # Number of B frames inserted (0=not used)

The skip parameter should be applicable for i/p frames only and "skipped" frame will be encoded as b-frame.
This is not 100% confirmed information, and I haven't yet tested this.
Also I don't know if any decoder supports b-frames yet. My dshow decoder doesn't support those yet.

ANyway, this is something which should be tested..


--------------------
Juha Laaksonheimo
Go to the top of the page
+Quote Post
idioteque
post Nov 26 2003, 18:56
Post #17





Group: Members
Posts: 120
Joined: 19-May 03
Member No.: 6712



QUOTE (JohnV @ Nov 26 2003, 09:51 AM)
Also I don't know if any decoder supports b-frames yet. My dshow decoder doesn't support those yet.

The JM7.3 decoder supports B Frames. B Frames have been supported in the JM encoder and decoder at least since 6.1d, if not longer. (6.1d is as far back as I've tested)

I'm curious if anyone has ever gotten the interlace options to work:

CODE
InterlaceCodingOption    =  0  # (0: frame coding, 1: adaptive frame/field coding, 2:field coding, 3:mb adaptive f/f)


This post has been edited by idioteque: Nov 26 2003, 18:57
Go to the top of the page
+Quote Post
JohnV
post Nov 26 2003, 19:09
Post #18





Group: Developer
Posts: 2797
Joined: 22-September 01
Member No.: 6



QUOTE (idioteque @ Nov 26 2003, 07:56 PM)
The JM7.3 decoder supports B Frames. B Frames have been supported in the JM encoder and decoder at least since 6.1d, if not longer. (6.1d is as far back as I've tested)

Right, I was more referring to some more "useful" decoders like libavcodec, which are used by players or dshow.


--------------------
Juha Laaksonheimo
Go to the top of the page
+Quote Post
slav!x
post Nov 26 2003, 19:43
Post #19





Group: Members
Posts: 16
Joined: 26-November 03
Member No.: 10049



JohnV can you test, if that your mystical cool.gif decoder supports cabac, it's one of best h264 features
Go to the top of the page
+Quote Post
JohnV
post Nov 26 2003, 20:22
Post #20





Group: Developer
Posts: 2797
Joined: 22-September 01
Member No.: 6



QUOTE (slav!x @ Nov 26 2003, 08:43 PM)
JohnV can you test, if that your mystical  cool.gif decoder supports cabac, it's one of best h264 features

Well.. it's a decoder in development. My version doesn't support h264 main profile features quite yet.


--------------------
Juha Laaksonheimo
Go to the top of the page
+Quote Post
JohnV
post Nov 28 2003, 02:24
Post #21





Group: Developer
Posts: 2797
Joined: 22-September 01
Member No.: 6



QUOTE
This package contains the official H.264 / AVC Reference Software
encoder (JM 7.5b) with some quick'n'dirty hacks in the input/output
modules so that it can use AVI files as input and output.

The input AVI file must be in YUV 420 format (FOURCC = IYUV, I420 or YV12).

For the output, the hack is very basic, it considers that each frame is
contained in a single slice and therefore embedded in a single nal unit.
This latter is put in a AVI sample.

The parameters nal units are preppended to each IDR frame and sent to the
AVI file in the same sample.

The FOURCC used for the output AVI is A264, since it is what we're using
for our decoder. Feel free to change it to whatever you want.

Please consider this modification as a very quick prototyping tweak and
should not be considered as a reference for carrying H.264/AVC stream in AVI
files. And of course, you're welcome to improve this stuff.


bobololo@h-cube.net

Source download here.


--------------------
Juha Laaksonheimo
Go to the top of the page
+Quote Post
plonk420
post Nov 30 2003, 01:50
Post #22





Group: Members
Posts: 312
Joined: 6-October 01
Member No.: 227



how does it compare to VP6? i've been mildly impressed with VP6 to say the least, not to mention On2 had some glowing things to say about their encoder on their site...

"In our internal testing, VP6 beat H.264, Windows Media 9 and Real Networks 9 in PSNR comparisons using the standard set of MPEG-2 test clips. The codec looks better than Windows Media 9, shows far fewer motion artifacts than Windows Media 9, and maintains more texture and detail than Real 9 or H.264."
Go to the top of the page
+Quote Post
JohnV
post Nov 30 2003, 02:05
Post #23





Group: Developer
Posts: 2797
Joined: 22-September 01
Member No.: 6



QUOTE (plonk420 @ Nov 30 2003, 02:50 AM)
how does it compare to VP6? i've been mildly impressed with VP6 to say the least, not to mention On2 had some glowing things to say about their encoder on their site...

"In our internal testing, VP6 beat H.264, Windows Media 9 and Real Networks 9 in PSNR comparisons using the standard set of MPEG-2 test clips. The codec looks better than Windows Media 9, shows far fewer motion artifacts than Windows Media 9, and maintains more texture and detail than Real 9 or H.264."

Umm.. first of all, I don't think they have had any really commercial quality h264 codec, mainly because those are just beginning to develope. So to say at this point already something about "h264-quality" is pretty much the same if someone talked about "mp3 quality" when Xing-old was new...
Further more PSNR comparison is pretty much unreliable..


--------------------
Juha Laaksonheimo
Go to the top of the page
+Quote Post
plonk420
post Nov 30 2003, 03:13
Post #24





Group: Members
Posts: 312
Joined: 6-October 01
Member No.: 227



i'm posting a few tests i did (didn't mess too much with the default settings, altho i finally figured out how to do multipass vbr) to alt.binaries.pictures.leek, if any of you are into newsgroups... vp6+aac/aac-he in the MKV container

i was pretty skeptical when i first downloaded it, but was pretty impressed as it put out better results than i ever got with XVID/Divx5 (or what little i knew of those technologies)

This post has been edited by plonk420: Nov 30 2003, 03:17
Go to the top of the page
+Quote Post
JohnV
post Nov 30 2003, 03:15
Post #25





Group: Developer
Posts: 2797
Joined: 22-September 01
Member No.: 6



I got permission to post some pics from the commercial h264 decoder output, so I will do so soon.

Also Milan Cutka (ffdshow developer) emailed me that he got h264 decoding working in ffdshow. smile.gif


--------------------
Juha Laaksonheimo
Go to the top of the page
+Quote Post

2 Pages V   1 2 >
Reply to this topicStart new topic
1 User(s) are reading this topic (1 Guests and 0 Anonymous Users)
0 Members:

 



RSS Lo-Fi Version Time is now: 29th August 2014 - 23:38