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.

 

Go Back   Doom9's Forum > Capturing and Editing Video > Avisynth Development

Closed Thread
 
Thread Tools Search this Thread Display Modes
Old 26th November 2019, 12:49   #4961  |  Link
StainlessS
HeartlessS Usurer
 
StainlessS's Avatar
 
Join Date: Dec 2009
Location: Over the rainbow
Posts: 10,980
Code:
BITS=10
colorbars(pixel_type="YV12")
ConvertBits(BITS)
ConverttoYUV444                     # When loaded in VD2, Bits 10,12,14,16 YUV444, Access Violation in Avisynth
StackVertical(Last,Last)
#ConvertBits(8)                     # OK


EDIT: Play OK in PotPlayer, but avisynth access violation when loaded into Vd2.
When 8 bit, or not converted to 444, then OK loaded in Vd2.

EDIT: Same
Code:
BITS=10
colorbars(pixel_type="YV24")
ConvertBits(BITS)
#ConvertBits(8)                     # OK
__________________
I sometimes post sober.
StainlessS@MediaFire ::: AND/OR ::: StainlessS@SendSpace

"Some infinities are bigger than other infinities", but how many of them are infinitely bigger ???

Last edited by StainlessS; 26th November 2019 at 13:07.
StainlessS is offline  
Old 26th November 2019, 13:23   #4962  |  Link
pinterf
Registered User
 
Join Date: Jan 2014
Posts: 2,309
Checking. Something wrong happens in my YUV444Y16 to Y416 conversion which is used when feeding vdub with this format.

EDIT: fixed in my repo, there are other things under work, PM if a build is needed for someone with this fix. (no immediate release yet).

Last edited by pinterf; 26th November 2019 at 13:42.
pinterf is offline  
Old 27th November 2019, 00:38   #4963  |  Link
wonkey_monkey
Formerly davidh*****
 
wonkey_monkey's Avatar
 
Join Date: Jan 2004
Posts: 2,493
Here's my latest terrible/brilliant idea for AviSynth:

I write a lot of complicated scripts, and possibly the biggest hindrance is the fact that AviSynth doesn't automatically parse multi-line statements. I would absolutely love it if AviSynth had an alternative parsing mode (triggered by a first-line comment or something, like a shebang in a Bash script) where statements had to be ended with a semi-colon (, like C, PHP, Javascript etc, to avoid needing backslashes to write multi-line statements. It'd make commenting out lines in the middle of statements simpler, too.

Anyway, on the basis that if you don't ask you won't get, that is my ask More of a suggestion, really, that it may percolate inside pinterf's brain until one fateful day when it leaks out into the code.
__________________
My AviSynth filters / I'm the Doctor
wonkey_monkey is offline  
Old 27th November 2019, 00:58   #4964  |  Link
StainlessS
HeartlessS Usurer
 
StainlessS's Avatar
 
Join Date: Dec 2009
Location: Over the rainbow
Posts: 10,980
If the choices are "brilliant" or "terrible", I'll go with terrible.
Would be 100.0% for sure non backwards compatible, lots of exciting new bugs to contend with, and not really necessary.

Dont string gazillions of oop style whatsits together [just because you can, dont make it a good idea].
Suggest break your complicated lines into multiple lines, perhaps assigning temp value to temp variable, then can comment out entire lines.

EDIT: You might like to string lots of oop stuff together when all debugged and stuff, but whilst developing better to have separate lines of code.
In runtime code [eg scriptclip] separate lines may be a little slower [due to temp vars or implicit Last], but in non runtime, then should
have only small consequence [milliseconds] prior to first frame delivered [ie during graph building].

EDIT: By the way, VDub2 has multiline comment/uncomment, cant say I've ever used it. [CTRL/ALT/SHFT/C --- CTRL/ALT/SHFT/U]
__________________
I sometimes post sober.
StainlessS@MediaFire ::: AND/OR ::: StainlessS@SendSpace

"Some infinities are bigger than other infinities", but how many of them are infinitely bigger ???

Last edited by StainlessS; 27th November 2019 at 01:58.
StainlessS is offline  
Old 27th November 2019, 01:31   #4965  |  Link
wonkey_monkey
Formerly davidh*****
 
wonkey_monkey's Avatar
 
Join Date: Jan 2004
Posts: 2,493
It'd be backwards compatible if it's only enabled by a specific string at the start of the script, e.g. #!multiline or something equally unlikely.

I was thinking more of individual calls with many parameters, which can't be broken up, but assigning to temp variables again and again for long strings of calls seems equally messy to me.

How much neater to be able to write like this and quickly comment out/rejoin single lines without having to worry about all the backslahes (which, I'd argue, only make it harder to read):

Code:
processed = source.
qtgmc.
flipvertical.
filter_with_many_parameters(
  10,
  20,
  "mode",         # you can even put a comment here if you want to
  reverse = true
).
trim(50, 99).
selecteven;
__________________
My AviSynth filters / I'm the Doctor

Last edited by wonkey_monkey; 27th November 2019 at 01:33.
wonkey_monkey is offline  
Old 27th November 2019, 01:46   #4966  |  Link
StainlessS
HeartlessS Usurer
 
StainlessS's Avatar
 
Join Date: Dec 2009
Location: Over the rainbow
Posts: 10,980
Code:
source
qtgmc
flipvertical
filter_with_many_parameters(
  \ 10,
  \ 20,
  \ "mode",         [* you can even put a comment here if you want to *]
  \ reverse = true
  \ )
trim(50, 99)
selecteven
processed=Last    # Or processed=selecteven

OK, but there are many issues of greater importance, leave this for when dev has a couple of weeks spare, nuttin' to do, and is a bit bored.

EDIT:
Further to above,
I get the impression that some apps parse the Avs script [at least to some degree], and if so then changes might break lots of apps,
not sure the devs of those apps would be over-the-moon bout it, eg AvsPMod, PotPlayer, VD2 ++.
[Maybe I is totally wrong]
__________________
I sometimes post sober.
StainlessS@MediaFire ::: AND/OR ::: StainlessS@SendSpace

"Some infinities are bigger than other infinities", but how many of them are infinitely bigger ???

Last edited by StainlessS; 27th November 2019 at 11:42.
StainlessS is offline  
Old 29th November 2019, 23:41   #4967  |  Link
wonkey_monkey
Formerly davidh*****
 
wonkey_monkey's Avatar
 
Join Date: Jan 2004
Posts: 2,493
Bug report: it seems that the standard resizers (spline16, bicubic, and bilinear, at least) don't process the alpha planes of YUVA clips.

Reduceby2 does, though.

Edit: also, not a bug report as such, but addborders really should have the option not to convert the background to TV Range when adding borders to a YUV clip. Maybe it could be updated to adopt the color_yuv parameter of blankclip?
__________________
My AviSynth filters / I'm the Doctor

Last edited by wonkey_monkey; 30th November 2019 at 01:28.
wonkey_monkey is offline  
Old 30th November 2019, 09:25   #4968  |  Link
pinterf
Registered User
 
Join Date: Jan 2014
Posts: 2,309
I've added them as issues in order not to forget them
https://github.com/pinterf/AviSynthPlus/issues/43 and
https://github.com/pinterf/AviSynthPlus/issues/44
pinterf is offline  
Old 30th November 2019, 20:55   #4969  |  Link
wonkey_monkey
Formerly davidh*****
 
wonkey_monkey's Avatar
 
Join Date: Jan 2004
Posts: 2,493
Thanks pinterf.
__________________
My AviSynth filters / I'm the Doctor

Last edited by wonkey_monkey; 30th November 2019 at 21:12.
wonkey_monkey is offline  
Old 4th December 2019, 14:00   #4970  |  Link
StainlessS
HeartlessS Usurer
 
StainlessS's Avatar
 
Join Date: Dec 2009
Location: Over the rainbow
Posts: 10,980
This seems not to be true:- http://avisynth.nl/index.php/Layer
Quote:
int level = (maximum)

The strength of the performed operation:

0 – no effect: base_clip is returned unchanged
257 (256 for YUY2) – maximum strength

AVS+ autoscaled – works without changes at all bit depths.
ie MAX at 8 bit RGB requires eg 257, $101, at 16 bit req 65537, $10001.


Question, how do you add the secret Opacity arg to Layer ? [AddFunction]
It dont seem to exist in the code.
Code:
extern const AVSFunction Layer_filters[] = {
  { "Mask",         BUILTIN_FUNC_PREFIX, "cc", Mask::Create },     // clip, mask
  { "ColorKeyMask", BUILTIN_FUNC_PREFIX, "ci[]i[]i[]i", ColorKeyMask::Create },    // clip, color, tolerance[B, toleranceG, toleranceR]
  { "ResetMask",    BUILTIN_FUNC_PREFIX, "c[mask]f", ResetMask::Create },
  { "Invert",       BUILTIN_FUNC_PREFIX, "c[channels]s", Invert::Create },
  { "ShowAlpha",    BUILTIN_FUNC_PREFIX, "c[pixel_type]s", ShowChannel::Create, (void*)3 }, // AVS+ also for YUVA, PRGBA
  { "ShowRed",      BUILTIN_FUNC_PREFIX, "c[pixel_type]s", ShowChannel::Create, (void*)2 },
  { "ShowGreen",    BUILTIN_FUNC_PREFIX, "c[pixel_type]s", ShowChannel::Create, (void*)1 },
  { "ShowBlue",     BUILTIN_FUNC_PREFIX, "c[pixel_type]s", ShowChannel::Create, (void*)0 },
  { "ShowY",        BUILTIN_FUNC_PREFIX, "c[pixel_type]s", ShowChannel::Create, (void*)4 }, // AVS+
  { "ShowU",        BUILTIN_FUNC_PREFIX, "c[pixel_type]s", ShowChannel::Create, (void*)5 }, // AVS+
  { "ShowV",        BUILTIN_FUNC_PREFIX, "c[pixel_type]s", ShowChannel::Create, (void*)6 }, // AVS+
  { "MergeRGB",     BUILTIN_FUNC_PREFIX, "ccc[pixel_type]s", MergeRGB::Create, (void*)0 },
  { "MergeARGB",    BUILTIN_FUNC_PREFIX, "cccc",             MergeRGB::Create, (void*)1 },
  { "Layer",        BUILTIN_FUNC_PREFIX, "cc[op]s[level]i[x]i[y]i[threshold]i[use_chroma]b", Layer::Create },
  /**
    * Layer(clip, overlayclip, operation, amount, xpos, ypos, [threshold=0], [use_chroma=true])
   **/
  { "Subtract", BUILTIN_FUNC_PREFIX, "cc", Subtract::Create },
  { NULL }
};
Any chance that there could be a means of accessing the multiple alternative plugin Parameter Lists ?
"$PluginFunctions$" or "$InternalFunctions$" extract same function name multiple times [for eg AssumeFPS] where multiple alternatvie parameter lists, but can
only extract a single parameter list for any one function name.
Need some way to 'get at' parameter lists using "$Plugin!" + "function name" + "!Param$".
Any chance ?

EDIT: Here v3.4.0 Layer param list with secret Opacity arg [and placement]
Code:
Layer  "cc[op]s[level]i[x]i[y]i[threshold]i[use_chroma]b[opacity]f[placement]s"
__________________
I sometimes post sober.
StainlessS@MediaFire ::: AND/OR ::: StainlessS@SendSpace

"Some infinities are bigger than other infinities", but how many of them are infinitely bigger ???

Last edited by StainlessS; 4th December 2019 at 15:32.
StainlessS is offline  
Old 4th December 2019, 14:06   #4971  |  Link
pinterf
Registered User
 
Join Date: Jan 2014
Posts: 2,309
Quote:
Originally Posted by StainlessS View Post
This seems not to be true:- http://avisynth.nl/index.php/Layer
You are right, not true.

Quote:
Originally Posted by StainlessS View Post
Question, how do you add the secret Opacity arg to Layer ? [AddFunction]
It dont seem to exist in the code.
It exists
Code:
  { "Layer",        BUILTIN_FUNC_PREFIX, "cc[op]s[level]i[x]i[y]i[threshold]i[use_chroma]b[opacity]f[placement]s", Layer::Create },
You have to check the master branch.
Either at my repo or the central avs+ repo (which is now a bit behind my repo, since I have some open work on my side)

I have to edit Layer wiki pages.
pinterf is offline  
Old 4th December 2019, 14:12   #4972  |  Link
pinterf
Registered User
 
Join Date: Jan 2014
Posts: 2,309
O.K. here are the changes of 3.4 since my last public 2772 release

Code:
20191127 (dev 3.4.?)
--------------------------
- Fix: crash when outputting VfW (e.g. VirtualDub) for YUV444P16, other fixes for r210 and R10k formats
- WavSource: really use "utf8" parameter, fix some debug asserts
- TimeStrech: pass internal errors as Avisynth exception text (e.g. proper "Excessive sample rate!" instead of "unhandled C++ error")

20191021 3.4.0
--------------

- Merges in the MT branch, the current state of pinterf/MT, and packaging fixes
- Development HEAD is the master repo again in https://github.com/AviSynth/AviSynthPlus
- Bumps version to 3.4

20190829 r2915
--------------
- Changed: Trim, FreezeFrame, DeleteFrame, DuplicateFrame, Reverse and Loop are using frame cache again (similar to classic Avs 2.6)
- Enhanced: Expr: faster exp, log, pow for AVX2 (sekrit-twc)
- ConditionalReader: allow empty value in text file when TYPE string
- Fix: Expr: fix non-mod-8 issues for forced RGB output and YUV inputs
- New: AviSource support v308 and v408 format (packed 8 bit 444 and 4444)
- Fix: AviSource v410 source garbage (YUV444P10)
- Fix: Expr: when using parameter "scale_inputs" and the source bit depth conversion occured, predefined constants
  (ymin/max, cmin/max, range_min/max/half) would not follow the new bit depth
- Fix: ConvertToRGB from 32bit float YUV w/ full scale matrixes (pc.601, pc.709, average)
- Fix: FlipHorizontal RGB48/64 artifacts
- Enhanced: a bit quicker FlipHorizontal
- Fix: RGB64 Blur leftmost column artifact
- Enhanced: quicker RGB24/48 to Planar RGB for AVX2 capable processors
- Fix: Strip alpha channel when origin is YUVA and using ConvertToYV12/ConvertToYV16/ConvertToYV24 funtions
- Fix: garbage with ConvertToYUY2 from 8 bit YUVA colorspaces
- Enhanced: Colorbars to accept RGB24, RGB48, YV411 and 4:2:2 formats for pixel_type (now all colorspaces are supported)
- Fix: shifted chroma in ColorBars and ColorBarsHD for YUV444PS
- Fix: ConvertToY8, ConvertToYV12, ConvertToYV16, ConvertToYV24 are now allowed only for 8 bit inputs.
  Formerly these functions were allowed for 10+ bit colorspaces but were not converted to real 8 bit Y8/YV12/16/24.
  Use ConvertToY, ConvertToYUV420, ConvertToYUV422, ConvertToYUV444 instead which are bit depth independent
- New parameter in ColorYUV, RGBAdjust, Overlay, ConditionalReader: string "condvarsuffix"
  Allows multiple filter instances to use differently named conditional parameters.
- Fix: ColorBars: pixel_type planar RGB will set alpha to 0 instead of 255, consistent with RGB32 Alpha channel
- Fix: text colors for YUV422PS - regression since r2728 (zero-centered chroma)
- New: VirtualDub2 to display 8 bit planar RGB (needs up-to-date VirtualDub2 as well)
  VfW interface to negotiate 8 bit Planar RGB(A) with FourCCs: G3[0][8] and G4[0][8], similar to the 10-16 bit logic
- Fix: planar RGBA Alpha on VfW was uninitialized because it wasn't filled.
- Layer: big update
  - Support for all 8-32 bit Y and planar YUV/YUVA and planar RGB/RGBA formats
  - New parameter: float "opacity" (0.0 .. 1.0) optionally replaces the previous "level". Similar to "opacity" in "Overlay"
  - threshold parameter (used for lighten/darken) is autoscaled. Keep it between 0 and 255, same as it was used for 8 bit videos.
  - new parameter: string "placement" default "mpeg2". Possible values: "mpeg2" (default), "mpeg1".
    Used in "mul", "darken" and "lighten", "add" and "subtract" modes with planar YUV 4:2:0 or 4:2:2 color spaces (not available for YUY2)
    in order to properly apply luma/overlay mask on U and V chroma channels.
  - Fix some out-of-frame memory access in YUY2 C code
  - Fix: Add proper rounding for add/subtract/lighten/darken calculations. (YUY2, RGB32, 8 bit YUV and 8 bit Planar RGB)
  - Fix: "lighten" and "darken" gave different results between yuy2 and rgb32 when Threshold<>0
    Fixed "darken" for RGB32 when Threshold<>0
    Fixed "lighten" and "darken" for YUY2 when Threshold<>0
- Avisynth C interface header (avisynth_c.h): 
  - cosmetics: functions regrouped to mix less AVSC_API and AVSC_INLINE, put together Avisynth+ specific stuff
  - cosmetics: remove unused form of avs_get_rowsize and avs_get_height (kept earlier for reference)
  - use #ifndef AVSC_NO_DECLSPEC for AVSC_INLINE functions which are calling API functions
  - define alias AVS_FRAME_ALIGN as FRAME_ALIGN (keep the AVS_xxxx naming convention)
  - dynamic loader (avs_load_library) uses fallback mechanism for non-existant Avisynth+ specific functions, functions are usable for classic avisynth
- filter "Version": update year, removed avs-plus.net link
- Updated: TimeStretch plugin with SoundTouch 2.1.3 (as of 07.Jan 2019)
- Source/Build system 
  - rst documentation update (qyot27) in distrib\docs\english\source\avisynthdoc\contributing\compiling_avsplus.rst
  - GCC-MinGW build, GCC 8.3 support
  - CMake: Visual Studio 2019 generator support
  - Clang (LLVM) support
pinterf is offline  
Old 4th December 2019, 14:13   #4973  |  Link
StainlessS
HeartlessS Usurer
 
StainlessS's Avatar
 
Join Date: Dec 2009
Location: Over the rainbow
Posts: 10,980
Thanks P, was driving me nuts trying to find it in the v3.4.0 posted source.

EDIT:
Quote:
filter "Version": update year, removed avs-plus.net link
Gonna need update year again soooon.
__________________
I sometimes post sober.
StainlessS@MediaFire ::: AND/OR ::: StainlessS@SendSpace

"Some infinities are bigger than other infinities", but how many of them are infinitely bigger ???

Last edited by StainlessS; 4th December 2019 at 14:17.
StainlessS is offline  
Old 4th December 2019, 14:21   #4974  |  Link
pinterf
Registered User
 
Join Date: Jan 2014
Posts: 2,309
Specifically for Layer:
See on github "distrib" folder: readme.txt and readme_history.txt (latter is a bit more verbose)
Code:
- Layer: big update
  Previously Layer was working only for RGB32 and YUY2. Overlay was used primarily for YUV. Now Layer accepts practically all formats (no RGB24).
  Note that some modes can be similar to Overlay, but the two filters are still different. 
  Overlay accepts mask clip, Layer would use existing A plane.
  Overlay "blend" is Layer "add", Overlay "add" is different.
  Lighten and darken is a bit different in Overlay.
  Layer has "placement" parameter for proper mask positioning over chroma.

  - Support for all 8-32 bit Y and planar YUV/YUVA and planar RGB/RGBA formats
    When overlay clip is YUVA and RGBA, then alpha channels of overlay clip are used (similarly to RGB32 and RGB64 formats)
    Non-alpha plane YUV/planar RGB color spaces act as having a fully transparent alpha channel (like the former YUY2 only working mode)
  
    Note: now if destination is YUVA/RGBA, the overlay clip also has to be Alpha-aware type.
    Now A channel is not updated for YUVA targets, but RGBA targets do get the Alpha updated (like the old RGB32 mode did)
    Todo: allow non-Alpha destination and Alpha-Overlay
  - New parameter: float "opacity" (0.0 .. 1.0) optionally replaces the previous "level". Similar to "opacity" in "Overlay"
    For usage of "level" see http://avisynth.nl/index.php/Layer
    "opacity" parameter is bit depth independent, one does not have to fiddle with it like had to with level (which was maxed with level=257 when RGB32 but level=256 for YUY2/YUV)
  - threshold parameter (used for lighten/darken) is autoscaled.
    Keep it between 0 and 255, same as it was used for 8 bit videos.
  - new parameter: string "placement" default "mpeg2".
    Possible values: "mpeg2" (default), "mpeg1".
    Used in "mul", "darken" and "lighten", "add" and "subtract" modes with planar YUV 4:2:0 or 4:2:2 color spaces (not available for YUY2)
    in order to properly apply luma/overlay mask on U and V chroma channels.
  - Fix some out-of-frame memory access in YUY2 C code
  - Fix: Add proper rounding for add/subtract/lighten/darken calculations. (YUY2, RGB32, 8 bit YUV and 8 bit Planar RGB)
  - Fix: "lighten" and "darken" gave different results between yuy2 and rgb32 when Threshold<>0
    Fixed "darken" for RGB32 when Threshold<>0
    Fixed "lighten" and "darken" for YUY2 when Threshold<>0
    All the above was done by specification:
    Add: "Where overlay is brigher by threshold" => e.g. Where overlay is brigther by 10 => Where overlay > src + 10
    Calculation: alpha_mask = ovr > (src + thresh) ? level : 0;
    Add: "Where overlay is darker by threshold" => e.g. Where overlay is darker by 10 => Where overlay < src - 10
    Calculation: alpha_mask = ovr < (src - thresh) ? level : 0;
    The only correct case of the above was "lighten" for RGB32, even in Classic Avisynth. Note: Threshold=0 was O.K.
  - (Just an info: existing lighten/darken code for YUY2 is still not correct, messing up chroma a bit, 
     since it uses weights from even luma positions (0,2,4,...) for U, and odd luma positions (1,3,5,...) for V)
pinterf is offline  
Old 4th December 2019, 14:30   #4975  |  Link
Atak_Snajpera
RipBot264 author
 
Atak_Snajpera's Avatar
 
Join Date: May 2006
Location: Poland
Posts: 7,806
I have a question about multithreading. Why avisynth plus does not support tiled based Mt like old avisynth.
If i'm not mistaken there was a MT function which was dividing frame in tiles and each tile was processed simultanously.

Last edited by Atak_Snajpera; 4th December 2019 at 14:33.
Atak_Snajpera is offline  
Old 4th December 2019, 14:49   #4976  |  Link
pinterf
Registered User
 
Join Date: Jan 2014
Posts: 2,309
I'm not aware that classic avisynth did such things. It's like what avstp used for mvtools and like jpsdr's _MT resizer and other plugin variants work.
pinterf is offline  
Old 4th December 2019, 15:57   #4977  |  Link
Atak_Snajpera
RipBot264 author
 
Atak_Snajpera's Avatar
 
Join Date: May 2006
Location: Poland
Posts: 7,806
Quote:
Originally Posted by pinterf View Post
I'm not aware that classic avisynth did such things. It's like what avstp used for mvtools and like jpsdr's _MT resizer and other plugin variants work.
I mean this http://avisynth.nl/index.php/MT
Atak_Snajpera is offline  
Old 4th December 2019, 15:59   #4978  |  Link
pinterf
Registered User
 
Join Date: Jan 2014
Posts: 2,309
Meanwhile Layer wiki is updated. I hope I included everything I have done with this filter.
http://avisynth.nl/index.php/Layer#Layer
pinterf is offline  
Old 4th December 2019, 16:13   #4979  |  Link
real.finder
Registered User
 
Join Date: Jan 2012
Location: Mesopotamia
Posts: 2,587
Quote:
Originally Posted by Atak_Snajpera View Post
I have a question about multithreading. Why avisynth plus does not support tiled based Mt like old avisynth.
If i'm not mistaken there was a MT function which was dividing frame in tiles and each tile was processed simultanously.
cuz avs+ mt base on SEt changes, which see dividing frame for mt is bad idea, avstp and jpsdr's _MT in other hand did same thing as pinterf said but better and work in any avs, there are other method for MT that used in sorathread and ThreadRequest but IIRC it's not work with avs+ well
__________________
See My Avisynth Stuff
real.finder is offline  
Old 4th December 2019, 16:23   #4980  |  Link
StainlessS
HeartlessS Usurer
 
StainlessS's Avatar
 
Join Date: Dec 2009
Location: Over the rainbow
Posts: 10,980
All looks good to me, thanks muchly P.
__________________
I sometimes post sober.
StainlessS@MediaFire ::: AND/OR ::: StainlessS@SendSpace

"Some infinities are bigger than other infinities", but how many of them are infinitely bigger ???
StainlessS is offline  
Closed Thread

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +1. The time now is 10:55.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.