Penulis Topik: cara compile lame.exe (paling cepet)  (Dibaca 28560 kali)

Offline descrates

  • Pro500
  • ******
  • Tulisan: 600
  • Reputation: 5073
    • Lihat Profil
cara compile lame.exe (paling cepet)
« pada: April 05, 2014, 03:45:43 PM »
cara compile lame.exe buat win64 ato win32

ada beberapa cara, tapi mungkin ini yang paling cepet menurut gw (butuh pemahaman dikit), meskipun lebih berguna kalo compile dengan mingw yang bisa buat bikin ffmpeg

cara ini bisa 32-bita & 64-bita (tergantung compilernya) dan lebih cepat daripada vc solution serta tanpa install

tapi kalau suka mingw juga tidak mengapa (karena bisa optimalisasi dr win98 sampai latest), ya cari praktisnya sih, karena perbedaan speed cukup lumayan dari segi optimasi compiler kalo msvc sse versi biasa = 17 detik, msvc sse2 = 15 detik, mingw atom sse2 sse3 sse4 = 13 detik+wuzz kalo jalan di intel atom

1. download source code LAME http://lame.sf.net/ kalo udah kelar extract ke  C:\lame-3.99.5 (pake extract here)
2. download dulu msvc compiler 2010 https://msvc.googlecode.com/ pilih terserah
3. kalo udah kelar langsung extract ke C:\lame-3.99.5 (folder bin, etc dalam C:\lame-3.99.5)
4. download nasm http://www.nasm.us/ kalo udah kelar unpack & rename jadi nasmw.exe taruh ke C:\lame-3.99.5\bin (biar minimal bentrok), atau nasm/yasm (-f win64) http://yasm.tortall.net/ (tp yg yasm blm testing sih), kalo masm/ml64.exe cari dimana ya skrg-_- ASM=ML64
5. udah gitu browse C:\lame-3.99.5
6. edit dikit makefile.msvc pake notepad, ilangin kata "/opt:nowin98" (kyknya gitu)
7. double click cmd.lnk (shortcut), pastikan read-only untuk mempermudah (dan baru ngeh klo di winxp hrs ketik cmd dulu, maaf lupa)
8. ketik nmake -f makefile.msvc
9. liat di C:\lame-3.99.5\output

eh lupa ngasih target build

#   targets <-> DOS filenames

T_LAME = nmake -f makefile.msvc lame.exe
T_MP3X = nmake -f makefile.msvc mp3x.exe
T_MP3RTP = nmake -f makefile.msvc mp3rtp.exe
T_DLL = nmake -f makefile.msvc libmp3lame.dll
T_LIB_DYNAMIC = nmake -f makefile.msvc libmp3lame.lib
T_LIB_STATIC = nmake -f makefile.msvc libmp3lame-static.lib
T_LEGACY_DLL = nmake -f makefile.msvc lame_enc.dll

 :D

nb: kalo mau bisa diganti dengan msvc 2012 ato 2013 juga bisa sih

kalo mau compile pake Clang yang ngga pake ribet (jangan lupa hapus dulu *obj yang udah jadi)

1. download dulu Clang-nya http://llvm.org/builds/ ya snapshot tapi cukuplah
2. backup dulu folder /bin/ & /include/ yang berisi file msvc dengan copy paste
3. open hasil download dengan 7-zip
4. cari cl.exe & libclang.dll dan copy ke /bin/ di C:\lame-3.99.5\
5. cari folder /lib/ & /include/ copy ke /lib/ & /include/ di C:\lame-3.99.5\
6. Clang emg rada-rada aneh, -o4 ngga bisa pdhl ada di doc

trik 1: gunakan linker msvc 2008 (link.exe), tinggal copas dari msvc 2008 express atau pro [untuk 64bita yg ingin model Win64 gunakanlah 'compiler x64'] (secara pribadi tidak suka 64bita karena kurang fleksibel) atau dengan cara compile ulang tanpa ganti linker dengan menambahkan perintah MSVCVER=Win64 (kecuali psymodel.c di compile scr normal) otomatis akan tercipta *.obj yang tak biasa, cara ini untuk mengurangi kode yang tidak terlalu penting (terutama untuk lame_enc.dll) karena ini msvc build bukan mingw ato icl yang bisa forcing optimasi scr bertingkat

trik 2: jika ingin agak combo, intinya dengan mengadakan fitur percepatan sse2 pada psymodel.c dengan cara compile scr terpisah dulu (biar gampang compile secara terpisah dengan model sse2, detil ada di vc solution, setelah itu psymodel.obj hasil compile itu direplacekan, hapus dulu lib mp3lame yg di /output/), hasil akhirnya bisa cepat pada sse2 dan stabil di sse/mmx tapi ini tidak begitu penting (bagian dari hack yang banyak digunakan ketika awal kemunculan lame sekitar tahun 2000/2001)

trik 3: compile to *.obj dengan Clang bwt mempercepat code execution dalam arti sepersekian detik atau gunakan Clang (clang.exe/clang-cl.exe) pada trik no. 4

trik 4: aktifkan vector, kalo tdk salah ingat Clang punya fitur *vector* ini yang katanya native (ngga tahu jg sih, pas dicobain ngga ada bedanya *cepetan sse2*, yang jelas Clang 3.3 altivec ppc ato sederajat gcc -fmath sudah masuk kok, kalo pake gcc/mingw tambah mantap deh), cuman jadi catetan kenapa ngga ada turbo sse2 di Clang, makanya ya vectorization paksa, ambil diff dari sini http://tmkk.undo.jp/lame/lame-3.99.5-sse-20120229.diff (untuk optimalisasi doang sih) taruh di C:\lame-3.99.5 dan lakukan patching diff dengan patch.py (biar cepet aja, gw udah nyoba "patcher" yg lain dari gnu patch cuman gw rasa agak ugly gitu klo jalan di win32/64 ato gw yg kurang update ya?) https://code.google.com/p/python-patch/ kalo ada yg salah patching plg cuma 1 character, caranya hampir sama kyk gnu patch C:\lame-3.99.5\patch-1.13.py -p0 lame-3.99.5-sse-20120229.diff

trik 5: masih lanjutan dari trik 4 buat yang mau, intel c++ hack ya tapi harus punya libmmt.lib (untuk akselerasi biar peak cpu sampai 24.000), ini memakai MSVCVER=8.0 untuk linking, pertama ganti /O2 jadi /O3 (speed biar bisa tembus peak 23.000 lebih, /O4 ato /O5 soalnya error kalo tdk error ya pakai, kalo pakai intel bisa 24.500 lebih) lalu ganti "Win64" pada bagian ADD_OBJ jadi "8.0" dan terakhir ganti bufferoverflowu.lib jadi libmmt.lib pada makefile.msvc (svml_dispmt.lib belum cobain)

trik 6: lanjutan dari trik no. 5 dengan menambahkan asmlib seperti trik libmmt.lib http://www.agner.org/optimize/ tetapi ini kita force sedikit: unpack & ambil libacof32o.lib 32-bita rename jadi asmlib.lib setelah itu kita modif *.obj di folder libmp3lame dengan mengganti string libcmt.lib dengan asmlib.lib (fungsinya supaya linker mengambil jalan ke asmlib dulu baru ke libcmt seperti teknik /MD, efek yang terjadi selain jadi stabil, peak bisa mendekati 25.000), clang kelupaan dikit aktifkan -fmsc-version=1600 bwt yang pakai msvc 2010
« Edit Terakhir: Mei 12, 2014, 12:02:36 PM oleh descrates »
TASKKILL /F /IM SMΔRTP.exe /T

Win7 32bit [kernel patch] --- 2x2,8GHz Intel --- 8GB RAM DDR3 --- 512MB 9600M GT NVidia --- Iron 15 beta --- Opera Mini Proxies

other OS: Lucid Puppy, XP SP2 [custom], XP SP3, Win7 64bit, Tails

Offline descrates

  • Pro500
  • ******
  • Tulisan: 600
  • Reputation: 5073
    • Lihat Profil
Re: cara compile lame.exe (paling cepet)
« Jawab #1 pada: November 11, 2014, 08:07:17 PM »
lanjutannya

trik 5: tweak openmp* pada frontend (clang-omp untuk msvc belum siap sejauh ini), jadi intinya pada bagian frontend (console/.dll) kita compile pakai icl (efeknya kecil dibandingkan clang-omp), sedangkan libmp3lame kita pakai clang

instal icl dulu, yang versi 10 aja (yang tidak begitu rumit), kadang cara ini agak ugly, dimana cmd.bat kurang oke

1. setelah terinstal, copy paste ke folder lame, /bin /lib dan /include (kalau mau clang compile jangan lupa replacing /include punya clang)
2. kita edit icl.cfg di folder /bin tambahi perintah /QxN /Qopenmp /O3 (lainnya terserah)
3. untuk libmmt.lib ada baiknya pakai v11 atau v12 bisa juga pakai v14
4. mulai compile nmake -f makefile.msvc COMP=INTEL MSVCVER=8.0 lame.exe
5. ukuran frontend jadi bengkak
6. ukuran dll tidak terlalu bengkak
« Edit Terakhir: November 11, 2014, 08:14:23 PM oleh descrates »
TASKKILL /F /IM SMΔRTP.exe /T

Win7 32bit [kernel patch] --- 2x2,8GHz Intel --- 8GB RAM DDR3 --- 512MB 9600M GT NVidia --- Iron 15 beta --- Opera Mini Proxies

other OS: Lucid Puppy, XP SP2 [custom], XP SP3, Win7 64bit, Tails

Offline thomasdj

  • Pro10
  • ***
  • Tulisan: 11
  • Reputation: 32
  • Jenis kelamin: Pria
    • Lihat Profil
    • silabus rpp
Re:cara compile lame.exe (paling cepet)
« Jawab #2 pada: Maret 08, 2016, 04:11:45 PM »
wah mantabs nich..
saya juga sedang belajar C++
ada lagi lanajutannya gan
perangkat pembelajaran berupa SilabusRPP.Com  Kesehatanbayi.Com dan selalu melihat berita di Pabloal.Com