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. |
1st March 2015, 12:41 | #701 | Link |
Registered User
Join Date: May 2006
Posts: 3,997
|
I tested Pacific Rim with FRIMsource (plugin).
=> No glitches, but MPC-HC crashes when trying to seek. Tests with FRIMdecode: - H.264 3D to L/R.yuv => o.k. - H.264 3D into standard O/P and pipe to x264 SBS => o.k. No issues found so far. All test in SW only. Last edited by Sharc; 1st March 2015 at 15:10. |
2nd March 2015, 10:23 | #702 | Link |
PgcEdit daemon
Join Date: Jul 2003
Posts: 7,469
|
You cannot seek. Afaik, currently no MVC decoder plugin for avisynth support seeking. The crash is normal. Of course, it would be better if FRIMSource could issue a warning when it detects a seek operation instead of crashing, but it's not the most important improvement to do!
I know that Donald Graft has the intention to add seek support to its MVC decoders (including DGMVCSource), but that will probably require to create an index file, and it's still not implemented.
__________________
r0lZ PgcEdit homepage (hosted by VideoHelp) BD3D2MK3D A tool to convert 3D blu-rays to SBS, T&B or FS MKV Last edited by r0lZ; 2nd March 2015 at 10:25. |
2nd March 2015, 23:18 | #703 | Link |
Registered User
Join Date: Jun 2006
Posts: 452
|
I'm still looking for a solution to use FRIMencoder from STDin using a pipe from AVS2YUV (Avisynth) or VSPIPE (Vapoursynth).
This time I get at least an error code, so maybe this can somehow help to see why it's not working as it should. Code:
avs2yuv -raw "input.avs" -o - | FRIMEncode -i - -o::h264 "ffms_stdin.h264" -w 640 -h 360 -f 29.970 However this works brilliant : Code:
FRIMEncode -avi -i "input.avs" -o::h264 "ffms_stdin.h264" -w 640 -h 360 -f 29.970 Code:
>> vspipe "vyp.vpy" - | FRIMEncode -i - -o::h264 "4k_ffms_stdin.h264" -w 640 -h 360 -f 29.970 FRIM Encoder version 1.24 (build: Feb 27 2015) - based on Intel(R) Media SDK Media SDK impl HARDWARE (2) - D3D9 (C:\Program Files\Intel\Media SDK\libmfxhw32.dll) Media SDK version 1.11 Memory type System Async depth 4 Input format YUV420 Output video AVC Source picture: Resolution 640x368 Crop X,Y,W,H 0,0,640,360 Destination picture: Resolution 640x368 PAR 0:0 Crop X,Y,W,H 0,0,640,360 Frame rate 29.970 Bitrate control CBR bitrate 1711 GOP structure: GOP length 30 I-/P-frame distance 4 IDR-frame interval 0 GOP type Opened Num of slices 4 Target usage 4 (balanced) Processing started Frame number: 0 Processing finished in 0.00 seconds Error: fwrite() call failed when writing frame: 0, plane: 0, line: 32, errno: 22 Output 10 frames in 0.06 seconds (160.26 fps) >> Is this coming from the encoder or from VSPIPE ? Any idea what this errno 22 at line 32 means ? I was thinking about what you said about being sure that AVS2YUV or VSPIPE or outputting indeed YV12 video. Could the encoder maybe struggle with I420 video ? The only difference I know is that YV12 has the U and V channel swapped compared to I420 and it would cause bad colors in the encoded files. Could you please consider to add a yuv4mpeg-video demuxer to your encoder/decoder ? YUV4MPEG-video is also a raw uncompressed format mostly identical to raw uncompressed YV12, but it contains the video properties(colorspace, resolution, FPS, ..) in the headers. It's supported by FFMpeg, X264, X265 and a lot of other tools/encoders/decoders. Another thing I noticed is that reading AVI's is limited to 2GB (even on Win7 NTFS). When trying to encode larger AVI files, I get an error that frame X can not be read : Code:
FRIMEncode -avi -i "2K_ffms2.avi" -o::h264 Max_limit_AVI.h264" f 60 -w 1920 -h 1080 FRIM Encoder version 1.24 (build: Feb 27 2015) - based on Intel(R) Media SDK Media SDK impl HARDWARE (2) - D3D9 (C:\Program Files\Intel\Media SDK\libmfxhw32.dll) Media SDK version 1.11 Memory type System Async depth 4 Input format YUV420 Output video AVC Source picture: Resolution 1920x1088 Crop X,Y,W,H 0,0,1920,1080 Destination picture: Resolution 1920x1088 PAR 0:0 Crop X,Y,W,H 0,0,1920,1080 Frame rate 59.999 Bitrate control CBR bitrate 4717 GOP structure: GOP length 60 I-/P-frame distance 4 IDR-frame interval 0 GOP type Opened Num of slices 4 Target usage 4 (balanced) Processing started Frame number: 690 ERROR: Cannot get frame 691 from avi-file ERROR: undefined behavior (-16), src\pipeline_encode.cpp (1361) ERROR: the previous asynchrous operation is in execution (1), src\main_frim_encode.cpp (121) A last question : do you know a similar Intel HW based encoder/decoder called QSVEncC by Rigaya? If interested, it's open source (all sources are available) and works also very well : see http://rigaya34589.blog135.fc2.com/b...tegory-10.html for info, download binaries and sources. Direct download : https://onedrive.live.com/?cid=6bdd4...75AC8933C6!482 Has similar features as yours, and it works without any other tools (no FFDShow) + Avisynth/Vapoursynth/yuv4mpeg/AVI demuxer build in, but has no avisynth Source filter. As far as I can see in the sources (Cpp + highly optimised SIMD assembler SSE/AVX/FMA instructions), it's well written, but unfortunately I don't understand the comments as these are in has native far Eastern language (looks like chinese(?) like stuff for me ;-)) Last edited by Pat357; 3rd March 2015 at 00:08. |
4th March 2015, 15:08 | #704 | Link | |
Registered User
Join Date: Sep 2013
Location: Czech Republic
Posts: 321
|
Quote:
1. avs2yuv (or vspipe) I downloaded avs2yuv and tried it and faced the same issue. Format YU12 (assuming it is specified as output format in underlying .avs script) is correct, you can test it on some small file step-by-step: avs2yuv -raw input.avs -o test.yv12 FRIMEncode -i - -o::h264 -w 1920 -h 1080 -f 23.976 -cbr 24000 < test.yv12 and you will get it properly encoded. But when using direct stdio-pipe connection, it really fails. Interestingly, error message "Output error: wrote only %d of %d bytes" is coming from avs2yuv (!), not from FRIMEncode. avs2yuv somehow cannot write to stdout buffer. At this moment I have no clue why. 2. yuv4mpeg-video At this moment I don't plan to deal with other formats. Intel Media supports only 8-bit 4:2:0, and also all common sources (DVD, BluRay) are encoded in this way. I don't want to write format nor colorspace convertors - that's why we all use Avisynth (and it does it pretty well). 3. 2 GB limit This is probably limit of the VFW (Video for Windows) engine, which is old, coming from Windows 3.11 I guess... Try to wrap the .avi into simple .avs script AVISource("source.avi") ConvertToYV12() - maybe this will help. 4. QSVEncC by Rigaya No, I don't know this SW. Last edited by videofan3d; 4th March 2015 at 15:24. |
|
4th March 2015, 15:56 | #705 | Link | |
PgcEdit daemon
Join Date: Jul 2003
Posts: 7,469
|
Quote:
__________________
r0lZ PgcEdit homepage (hosted by VideoHelp) BD3D2MK3D A tool to convert 3D blu-rays to SBS, T&B or FS MKV |
|
4th March 2015, 18:35 | #706 | Link | ||
Registered User
Join Date: Jun 2006
Posts: 452
|
Quote:
I suspect that a work around might be in the way FRIMencoder reads from pipes. It is not something "inherent" to Intel Media Encoder, because the other Intel HW based encoder I mentioned (QSVencc) does succesfully read and can encode the output from AVS2YUV via the same method. Maybe if you would take a quick look in the QSVenc sources, this would bring some idea's how to handle this. (all sources are inluded with the program) Quote:
But what about the the newer and more powerfull VapourSynth ? In my opinion, Vapoursynth has already the potential to become the successor from Avisynth, because : 1. It been designed to run in both 32-bit and 64-bit, not like the 64bit-hack in avisynth. I mean a real 64 bit engine with real 64 bit plugins. 2. It has internal multithreading, not like the Avisynth MT-hack. 3. It has a very active development and the list of plugins & scripts is growing every day. The scripts are python based and to actually output or access the processed video, there is a incuded tool called VSPIPE.EXE I would like to use your FRIMencoder with VapourSynth, but to be able to do that, it must : 1. to be able to read from STDIN via a pipe OR 2. the read from a "virtual AVI" (now a problem due the 2GB limit) Tools like X264 / FFMpeg, Virtual dub, AVIsynth have no problems reading/encoding much larger than 2GB AVI's. (I 've used it already with over 2TB "virtual" AVI's!!) Further both Avisnth and Virtualdub are also based on VFW, but these use the OpenDML handler to open AVI's larger than 2GB. Do you use this OpenDML handler ? If not, would you please consider to implement it ? Do you see any plans to make the FRIMencoder to work with Vapoursynth ? Last edited by Pat357; 5th March 2015 at 02:43. |
||
4th March 2015, 23:23 | #707 | Link | |
Registered User
Join Date: Sep 2013
Location: Czech Republic
Posts: 321
|
Quote:
ad 2. I don't know Vapoursynth, I didn't have a reason to use it so far. Nevertheless, here is a report that it can be used with FRIMEncode. You can check it and report. ad 3. 2 GB limit - as pointed above, you can wrap the big (unlimited) .avi file by simple .avs script AVISource("source.avi") ConvertToYV12() Avisynth will do all necessary file manipulation for you and input will be processed by FRIMEncode without problems (I just tested in on 6 GB uncompressed AVI) Anyway, I don't expect that somebody will create such huge uncompressed files. I assume mostly avisynth preprocessing. Btw. Originally I used in the same way also DebugMode Frameserver for feeding FRIMEncode from Adobe Premiere CS3. This frameserver creates virtual .avi file (a stub), which I wrapped by simple .avs and then fed into FRIMEncode. Last edited by videofan3d; 5th March 2015 at 11:54. |
|
5th March 2015, 18:41 | #708 | Link | |||
Registered User
Join Date: Jun 2006
Posts: 452
|
My applogies for this, I don't want youto feel pushed by me.
Quote:
Code:
>FRIMEncode -avi -i "Nedi_rpow2.vpy" -o::h264 "Nedi_rpow2.vpy_direct.h264" -u 1 -icq 20 FRIM Encoder version 1.24 (build: Feb 27 2015) - based on Intel(R) Media SDK Media SDK impl HARDWARE (2) - D3D9 (C:\Program Files\Intel\Media SDK\libmfxhw32.dll) Media SDK version 1.11 Memory type System Async depth 4 Input format YUV420 Output video AVC Source picture: Resolution 2560x1440 Crop X,Y,W,H 0,0,2560,1440 Destination picture: Resolution 2560x1440 PAR 0:0 Crop X,Y,W,H 0,0,2560,1440 Frame rate 29.970 Bitrate control ICQ quality 20 GOP structure: GOP length 30 I-/P-frame distance 4 IDR-frame interval 0 GOP type Opened Num of slices 4 Target usage 1 (quality) Processing started Frame number: 2000 Processing finished in 49.67 seconds The clue is just using the .VPY as an .AVI and let the AVI parser do it job ! Thank you very much for providing me this info and also for your great encoder/decoder/Source ! I really do appreciate this ! Quote:
They were created by "Pismo File Mount Audit Package" : it created virtual AVIs using the proper plugins. AVIsynth has the ASFS plugin and also Vapoursynth has the VSFS plugin. If you need to serve a script to an app. (encoder,...) it's kind of the last resort to serve the scripts if nothing else works. Also these AVI don't take any real space on your system. It can become handy for some aps that won't take any other tricks (like MakeAVIS, Debug File Server, AVSProxy,...). Quote:
I don;t have any of the apps installed for the included plugins, so I guess I can only use it as a "network client" for getting data from a network port.. or am I missing something ? Last edited by Pat357; 5th March 2015 at 23:45. |
|||
6th March 2015, 10:16 | #709 | Link | |
Registered User
Join Date: Sep 2013
Location: Czech Republic
Posts: 321
|
Quote:
Debugmode Frameserver is a plugin to several NLE system for export to virtual .avi. It works also with Adobe Premiere CS3 and higher (i.e. 32-bit version for CS3, 64-bit version for CS4 and higher). I use it for export from Premiere and encoding either using x264, HCEnc, or FRIMEncode. In all cases I wrap this virtual .avi into .avs (the simple trick I mentioned above) – and all works perfectly. Later on I developed FRIMExport.prm, which is direct plugin to Premiere CS6 for export/encoding using FRIM technology - to be used mainly for Bluray 3D export. (Two reasons: 1. Premiere CS3 has bug and is not able to process more than Full HD (it crashes), while for 3D we need 2x Full HD 2. I wanted to simplify the export chain, and reduce task switching overheads = faster encoding) This plugin is not perfect, the process is slow and bit complicated, (Adobe Premiere has poor, practically zero, support for 3D stereoscopic editing), but once you get used to it, it leads to expected result. |
|
6th March 2015, 20:56 | #710 | Link |
Registered User
Join Date: Jun 2006
Posts: 452
|
While comparing FRIMencoder (v1.24) with QSVenc (v1.27 dd Nov 2014), I noticed that the one has some options for H264 encoding that the other has not, and the other way around.
For encoding to H264, it seems these are not yet implemented or just not shown : 1. Trelis : used to set to perform trelis on just I frames and also on P en B frames. Also looking for b-pyramid mode and an intra-refresh option (enables adaptive I frame insert) 2. Bframes : the number of sequential B-frames. 3. Video processing like de-noise, image detail enhancement, image stabilization,... (all done using Intel HW) 4. Setting encoded video properties like : fullrange or not, video-format (undef, ntsc, component, pal,..), the color-matrix, color primaries, used transfer curve. These are important for the decoder, but most for rendering. The renderer needs this info to ensure correct color rendering. If not available, the only thing the renderer can do is to guess these based on the resolution Further, using d3d9/d3d11 surface for FRIMenoder is slowing down the encoding to less than 5-10 fps on my system (=Haswell CPU i7-4770 @ 3.7 GHz) ... ? Is this a normal /to expect behavior ? Shouldn't it be an advantage to use d3d surfaces ? (for de-interlacing, video processing, ..) Maybe something to look into for the next releases ? There are a few more minor things that don't bother me. Just for completeness and because I thought you probably didn't have time/motivation to download QSVenc, I've included the complete option list from QSVenc. QSVenc --help gives : Code:
QSVEncC (x86) 1.27 by rigaya, build Nov 20 2014 21:06:30 based on Intel(R) Media SDK Encoding Sample 5,0,461,92695 avi reader: enabled avs reader: enabled vpy reader: enabled Usage: qsvencc [Options] -i <filename> -o <filename> input can be avi, avs, vpy, raw YUV or YUV4MPEG2(y4m) format. when raw(default), fps, input-res are also necessary. output format will be raw H.264/AVC ES. when output filename is set to "-", H.264/AVC ES output is thrown to stdout. Example: QSVEncC -i "<avsfilename>" -o "<outfilename>" avs2pipemod -y4mp "<avsfile>" | QSVEncC --y4m -i - -o "<outfilename>" Example for Benchmark: QSVEncC -i "<avsfilename>" --benchmark "<benchmark_result.txt>" Options: -h,-? --help show help -v,--version show version info -i,--input-file <filename> set input file name -o,--output-file <filename> set ouput file name Input formats (will be estimated from extension if not set.) --raw set input as raw format --y4m set input as y4m format --avi set input as avi format --avs set input as avs format --vpy set input as vpy format --vpy-mt set input as vpy format in multi-thread --nv12 set raw input as NV12 color format, if not specified YV12 is expected --tff set as interlaced, top field first --bff set as interlaced, bottom field first -f,--fps <int>/<int> or <float> video frame rate (frames per second) --input-res <int>x<int> input resolution --output-res <int>x<int> output resolution if different from input, uses vpp resizing if not set, output resolution will be same as input (no resize will be done). --crop <int>,<int>,<int>,<int> set crop pixels of left, up, right, bottom. --slices <int> number of slices, default 0 (auto) --sw use software encoding, instead of QSV (hw) --check-hw check if QuickSyncVideo is available --check-lib check lib API version installed --check-features check encode features --check-environment check environment info --disable-d3d disable using d3d surfaces --d3d use d3d9/d3d11 surfaces --d3d9 use d3d9 surfaces --d3d11 use d3d11 surfaces EncMode default: --cqp --cqp <int> or encode in Constant QP, default 24:26:27 <int>:<int>:<int> set qp value for i:p:b frame --vqp <int> or encode in Variable QP, default 24:26:27 <int>:<int>:<int> set qp value for i:p:b frame --la <int> set bitrate in Lookahead mode (kbps) --la-hrd <int> set bitrate in HRD-Lookahead mode (kbps) --icq <int> encode in Intelligent Const. Qualtiy mode default value: 23 --la-icq <int> encode in ICQ mode with Lookahead default value: 23 --cbr <int> set bitrate in CBR mode (kbps) --vbr <int> set bitrate in VBR mode (kbps) --avbr <int> set bitrate in AVBR mode (kbps) AVBR mode is only supported with API v1.3 --avbr-unitsize <int> avbr calculation period in x100 frames default 90 (= unit size 9000 frames) --qvbr <int> set bitrate in Quality VBR mode. --qvbr-q <int> or set quality used in qvbr mode. default: 23 --qvbr-quality <int> QVBR mode is only supported with API v1.11 --vcm <int> set bitrate in VCM mode (kbps) --la-depth <int> set Lookahead Depth, 10-100 --la-window-size <int> enables Lookahead Windowed Rate Control mode, and set the window size in frames. --max-bitrate <int> set max bitrate(kbps) -u,--quality <string> encode quality - best, higher, high, balanced(default) fast, faster, fastest --ref <int> reference frames for sw encoding default 0 (auto) -b,--bframes <int> number of sequential b frames default 3 (auto) --gop-len <int> (max) gop length, default 0 (auto) when auto, fps x 10 will be set. --(no-)open-gop enables open gop (default:off) --strict-gop force gop structure --(no-)scenechange enables scene change detection --level <string> set codec level, default auto --profile <string> set codec profile, default auto --sar <int>:<int> set Sample Aspect Ratio --bluray for H.264 bluray encoding --vpp-denoise <int> use vpp denoise, set strength --vpp-detail-enhance <int> use vpp detail enahancer, set strength --vpp-deinterlace <string> set vpp deinterlace mode enabled only when set --tff or --bff - none disable deinterlace - normal normal deinterlace - it inverse telecine - bob double framerate --vpp-image-stab <string> set image stabilizer mode - none, upscale, box --input-buf <int> buffer size for input (1-16) default hw: 3, sw: 1 --log <string> output log to file. settings below are only supported with API v1.3 --fullrange set stream as fullrange yuv --videoformat <string> undef, ntsc, component, pal, secam, mac default: undef --colormatrix <string> undef, auto, bt709, smpte170m, bt470bg smpte240m, YCgCo, fcc, GBR default: undef --colorprim <string> undef, auto, bt709, smpte170m, bt470m bt470bg, smpte240m, film default: undef --transfer <string> undef, auto, bt709, smpte170m, bt470m bt470bg, smpte240m, linear, log100, log316 default: undef settings below are only supported with API v1.6 --(no-)mbbrc enables per macro block rate control default: off --(no-)extbrc enables extended rate control default: off settings below are only supported with API v1.7 --trellis <string> set trellis mode used in encoding - auto(default), none, i, ip, all settings below are only supported with API v1.8 --(no-)i-adapt enables adaptive I frame insert (default:off) --(no-)b-adapt enables adaptive B frame insert (default:off) --(no-)b-pyramid enables B-frame pyramid reference (default:off) --lookahead-ds <string> set lookahead quality. - auto(default), fast, normal, slow settings below are only supported with API v1.9 --(no-)intra-refresh enables adaptive I frame insert --no-deblock disables H.264 deblock feature --qpmin <int> or set min QP, default 0 (= unset) <int>:<int>:<int> --qpmax <int> or set max QP, default 0 (= unset) <int>:<int>:<int> Settings below are available only for software ecoding. --cavlc use cavlc instead of cabac --rdo use rate distortion optmization --inter-pred <int> set minimum block size used for --intra-pred <int> inter/intra prediction 0: auto(default) 1: 16x16 2: 8x8 3: 4x4 --mv-search <int> set window size for mv search default: 0 (auto) --mv-precision <int> set precision of mv search 0: auto(default) 1: full-pell 2: half-pell 3: quater-pell --benchmark <string> run in benchmark mode and write result in txt file --(no-)timer-period-tuning enable(disable) timer period tuning default: enable Last edited by Pat357; 7th March 2015 at 12:48. |
28th March 2015, 21:18 | #711 | Link |
Registered User
Join Date: Sep 2013
Location: Czech Republic
Posts: 321
|
FRIM version 1.25
FRIM version 1.25 released.
Changes in FRIMEncode: - fixed reading from stdin - few new parameters added: -f 24000/1001 - frame rate as rational number, or -f 23.976 - frame rate as real number -Trellis IPB|off -Bpyramid on|off -RDO on|off -VPPbrightness factor - in range [-100.0,100.0] -VPPcontrast factor - in range [0.00,10.00] -VPPhue factor - in range [-180.0,180.0] -VPPsaturation factor - in range [0.00,10.00] -VPPdenoise factor - denoising, in range [0,100] -VPPdetail factor - detail/edge enhancement, in range [0,100] -VPPstabilize U|B - image stabilization, U=upscale, B=boxing -VPPdeinterlace - activate deinterlacing (setting parameters of output bitstream) -videoformat code -videofullrange -colormatrix code -colorprim code -colortransfer code Please read FRIM_release_notes.txt for more details. |
8th April 2015, 20:53 | #712 | Link |
Registered User
Join Date: Jun 2006
Posts: 452
|
Thanks a lot for this new release !!
I wondered how you solved the reading from Stdin problem ? As far as I could see, the basic problem was that FRIMencode already closed the pipe before any frames where produced by Avisynth/Vapoursynth. I think this is a great release and it should cover everyone's needs. A small question about VPPdeinterlace : what options does it have ? Can it output double frame rate (like bobbing) ? I didn't see it in the docs. Last edited by Pat357; 8th April 2015 at 20:59. Reason: VPPdeinterlace question |
13th April 2015, 16:05 | #713 | Link |
Registered User
Join Date: Sep 2013
Location: Czech Republic
Posts: 321
|
Re:
1. reading from stdin: there was a bug in the related routine :-) - fixed. 2. VPPdeinterlace: no options, it calls some basic routine in the Intel Media - probably some kind of field-blending. I didn't explore it too much deeply. (FRIM doesn't change the frame rate, thus all methods which use double frame rate cannot be used). I personally am not a friend of de-interlacing during encoding. De-interlacing should be used always on decoding side and only when displaying video (on progressive screen), while whole processing should keep the format (progressive vs. interlaced). And definitely, interlaced video as legacy from analog television should be avoided in all new recordings. Last edited by videofan3d; 14th April 2015 at 05:33. |
5th May 2015, 20:37 | #716 | Link | |
Registered User
Join Date: Jun 2007
Posts: 414
|
Quote:
|
|
7th May 2015, 20:30 | #717 | Link |
Registered User
Join Date: Sep 2013
Location: Czech Republic
Posts: 321
|
FRIMSource64 - for AviSynth+
Hi,
please find here beta version of FRIMSource64.dll for AviSynth+ (64-bit). It is the same source code as 32-bit version FRIMSource.dll version 1.25 hence it is identical from functionality perspective. Please test it. Once confirmed and approved, I will add it to regular distribution package. |
9th May 2015, 16:33 | #719 | Link | |
Registered User
Join Date: Sep 2013
Location: Czech Republic
Posts: 321
|
Quote:
Please download the synthetic sample project FRIM_Premiere_samples_1.23.zip, install plugins FRIMExport.prm and FRIMImport.frm into Premiere Pro 6(+) into its plugin directory (probably c:\Program Files\Adobe\Common\Plug-ins\CS6\MediaCore\) and follow the steps in FRIMPremiere_readme.pdf. I use it for all video projects recorded using my 3D camcorder. Remark: Keep on mind this plugin is suitable only for export of final project, not for its editing! Editing need to be performed before as standard 2D project. Only at the end you have to "turn it" into 3D "top-above-below" and export using this plugin. Last edited by videofan3d; 9th May 2015 at 16:35. |
|
9th May 2015, 18:23 | #720 | Link | ||
Registered User
Join Date: Jun 2007
Posts: 414
|
Quote:
Quote:
|
||
Tags |
encoders, mvc |
Thread Tools | Search this Thread |
Display Modes | |
|
|