¾Èµå·ÎÀ̵å NDK


¾Èµå·ÎÀ̵å NDK´Â Native Development KitÀÇ ¾àÀÚ·Î ÀÚ¹Ù ÇÁ·Î±×·¡¹Ö ¾ð¾î·Î ÀÛ¼ºµÈ ¾Èµå·ÎÀÌµå ¾ÖÇø®ÄÉÀ̼ǿ¡¼ »ç¿ëÀÌ °¡´ÉÇÑ °³¹ß Åø üÀÎÀÔ´Ï´Ù. ¾ËÁö¿À ¾Èµå·ÎÀ̵å NDK °Á¸¦ ÅëÇØ NDK °³¹ß ȯ°æ ±¸ÃàÀ» ½ÃÀÛÀ¸·Î JNI¸¦ ÀÌ¿ëÇÑ ÀÚ¹Ù¿Í C ÀÎÅÍÆäÀ̽º, ³×ÀÌÆ¼ºê Äڵ忡¼ ÀÚ¹Ù Äݹé È£Ãâ, OpenGL ES¸¦ ÀÌ¿ëÇÑ ±×·¡ÇÈ ·£´õ¸µ, ÀÔ·Â ±â±â ó¸®, ±âÁ¸ ¶óÀ̺귯¸® Æ÷ÆÃ, ¹°¸® ½Ã¹Ä·¹À̼Ç, 3D ±×·¡ÇÈ ·£´õ¸µ, ¸ÖƼ¹Ìµð¾î Àç»ý µîÀ» ¹è¿ï ¼ö ÀÖ½À´Ï´Ù.
-
01.50ºÐ JNI¸¦ ÀÌ¿ëÇÑ ÀÚ¹Ù¿Í C ÀÎÅÍÆäÀ̽º part1
JNI ÀÎÅÍÆäÀ̽º¸¦ »ç¿ëÇØ¼ ÀÚ¹Ù ÄÚµå¿Í ³×ÀÌÆ¼ºê C ÄÚµå »çÀÌ¿¡ ÀڷḦ ÁÖ°í ¹Þ±â
Ã¥°¥ÇÇ[00:15] ºó ÇÁ·ÎÁ§Æ® »ý¼º/[00:22] MainActivity.java ÄÚµå ¿±â/[07:29] ÇØ´çÆÄÀÏ Ãß°¡ »ý¼º/[15:43] activity_main.xml ÆÄÀÏ ¼öÁ¤/[21:32] º¯¼ö ¼±¾ð/[30:37] ¾Èµå·ÎÀÌµå ÆÄÀÏ »ý¼º/[37:52] GetStringUTFChars ÇÔ¼ö/[43:34] ¹öưÀ» ´·¶À» ¶§ µ¿ÀÛ ÄÚµå Ãß°¡/[47:45] ¿¡¹Ä·¹ÀÌÅÍ È®ÀÎ -
02.51ºÐ JNI¸¦ ÀÌ¿ëÇÑ ÀÚ¹Ù¿Í C ÀÎÅÍÆäÀ̽º part2
JNI ÀÎÅÍÆäÀ̽º¸¦ »ç¿ëÇØ¼ ÀÚ¹Ù ÄÚµå¿Í ³×ÀÌÆ¼ºê C ÄÚµå »çÀÌ¿¡ °´Ã¼ ¹× ¹è¿ Çü½ÄÀÇ ÀڷḦ ÁÖ°í ¹ÞÀ¸¸ç ¿À·ù¸¦ ó¸®
Ã¥°¥ÇÇ[00:09] °´Ã¼ Á¤º¸ ±³È¯ ¹æ¹ý/[05:30] 4°³ÀÇ °ø¿ë ÇÔ¼ö-¸Þ¼Òµå¿¡¼ µ¿ÀÏÇÑ ±â´É/[11:05] ¿¡·¯ ¸Þ½ÃÁö ±¸¹® Ãß°¡/[20:41] ndk-build/[28:51] Store.java ÆÄÀÏ ¿±â/[34:00] Store.c ¿¡¼ ¿À·ù ÇÔ¼ö Ãß°¡/[42:07] refresh-¶óÀ̺귯¸® ÀÚµ¿ »ý¼º/[49:45] ¿À·ù ÇØ°á ÈÄ ndk-build -
03.51ºÐ ³×ÀÌÆ¼ºê Äڵ忡¼ ÀÚ¹Ù Äݹé È£Ãâ
JNI ÀÎÅÍÆäÀ̽º¸¦ »ç¿ëÇØ¼ ³×ÀÌÆ¼ºê Äڵ忡¼ ÀÚ¹Ù ÄÚµåÀÇ ¸Å¼Òµå È£Ãâ
Ã¥°¥ÇÇ[00:09] ÀÚ¹Ù¿Í ³×ÀÌÆ¼ºê thread µ¿±âÈ/[05:27] 3°³ÀÇ »ó¼ö define/[11:54] MonitorEnter/[18:59] processEntry ¸Þ¼Òµå ±¸Çö/[22:32] Çì´õ ÆÄÀÏ Ãß°¡/[26:37] ÀÎÅÍÆäÀ̽º »ó¼Ó/[32:00] runWatcher/[38:22] ÄݹéÇÏ´Â ¸Þ¼Òµå Á¤º¸ ¿¬µ¿/[42:37] °¢°¢ÀÇ ÀÚ·áÇü¿¡ ¸Â´Â ´ëÇ¥ ½Éº¼/[49:14] processEntry ¼öÁ¤/[51:15] Äݹé/Äݹé Áß´Ü È®ÀÎ -
04.50ºÐ ¿ÏÀüÇÑ ³×ÀÌÆ¼ºê ¾îÇø®ÄÉÀÌ¼Ç ÀÛ¼º
ÀÚ¹Ù ÄÚµå ¾øÀÌ ¼ø¼ö ³×ÀÌÆ¼ºê C/C++ Äڵ常À» »ç¿ëÇØ¼ ±âº»ÀûÀÎ À̺¥Æ®¸¦ ó¸®ÇÏ´Â ¾Èµå·ÎÀÌµå ¾îÇø®ÄÉÀÌ¼Ç Á¦ÀÛ
Ã¥°¥ÇÇ[00:12] c³×ÀÌÆ¼ºê Äڵ常À» »ç¿ëÇØ ¾îÇø®ÄÉÀÌ¼Ç »ý¼º/[00:17] »õ ÇÁ·ÎÁ§Æ® »ý¼º/[05:15] Apply ÇöÀç¼³Á¤ ¼öÁ¤/[10:39] µÎ¹øÂ° Header File Ãß°¡/[17:18] µ¿ÀÏÇÑ À̸§ÀÇ c++ ÆÄÀÏ Ãß°¡/[23:29] module À̸§À¸·Î ¶óÀ̺귯¸® »ý¼º/[30:52] ÄݹéÇÔ¼ö ¼±¾ð/[35:49] Ãß°¡ÀûÀ¸·Î ÄÚµå »ðÀÔ/[39:43] ÇÔ¼ö ¼öÁ¤/[44:15] ¸Þ½ÃÁö log·Î Ãâ·Â/[48:20] log ¸Þ½ÃÁö È®ÀÎ -
05.42ºÐ OpenGL ES·Î ±×·¡ÇÈ ·£´õ¸µ part1
OpenGL ES ±×·¡ÇÈ ¶óÀ̺귯¸®¸¦ »ç¿ëÇØ¼ ¾Èµå·ÎÀÌµå ¾îÇø®ÄÉÀ̼ÇÀ» Á¦ÀÛ
Ã¥°¥ÇÇ[00:11] ŸÀ̸Ӹ¦ ÅëÇØ ¹°Ã¼¸¦ À̵¿½ÃŰ´Â ¾îÇø®ÄÉÀ̼Ç/[04:55] blaster.hpp ÆÄÀÏ ¿±â/[08:22] TimeService-reset/[16:15] ¿À·ù ó¸®/[18:59] GraphicsService class ¼±¾ð/[24:32] OpenGLÀ» »ç¿ëÇϱâ À§ÇØ ÃʱâÈ ÇÏ´Â start ¸Þ¼Òµå/[28:37] paths and symbols/[33:45] ±âÁ¸ ÄÚµå »èÁ¦Çϰí update ¸Þ¼Òµå È£Ãâ/[38:00] scripts/[41:30] obj-libpng.a¶óÀ̺귯¸® »ý¼º È®ÀÎ -
06.50ºÐ OpenGL ES·Î ±×·¡ÇÈ ·£´õ¸µ part2
OpenGL ES ±×·¡ÇÈ ¶óÀ̺귯¸®¸¦ »ç¿ëÇØ¼ ÅØ½ºÃÄ ¹× ½ºÇÁ¶óÀÌÆ®¸¦ Ç¥ÇöÇϱâ
Ã¥°¥ÇÇ[00:08] OpenGS ES·Î ÅØ½ºÃÄ ·Îµù ½Ç½À/[05:45] ÅØ½ºÃĸ¦ »ç¿ëÇϴµ¥ °ü·ÃµÈ class ¸¸µé±â/[10:31] ÄݹéÇÔ¼ö µî·Ï/[16:26] png_read_image/[22:51] Ãß°¡·Î ¸¸µç ¼Ò¸êÀÚ ±¸Çö/[28:11] LogCat È®ÀÎ/[33:15] header file Ãß°¡/[38:44] ÇØ´ç x,y À妽º °ª ±¸Çϱâ/[42:20] ½ºÇÁ¶óÀÌÆ® °ü·Ã º¯¼ö ÃʱâÈ/[46:57] class ±¸Çö/[49:38] ¿¡¹Ä·¹ÀÌÅÍ ½ÇÇà ÈÄ ¾Ö´Ï¸ÞÀÌ¼Ç È®ÀÎ -
07.46ºÐ OpenGL ES·Î ±×·¡ÇÈ ·£´õ¸µ part3
OpenGL ES ±×·¡ÇÈ ¶óÀ̺귯¸®¸¦ »ç¿ëÇØ¼ ŸÀÏ¸Ê ·£´õ¸µ ÀÛ¾÷ ¼öÇàÇϱâ
Ã¥°¥ÇÇ[00:08] ŸÀÏ¸Ê ·£´õ¸µ/[05:45] ŸÀÏ¸Ê class ¼±¾ð/[10:30] xmlDocument ÀνºÅϽº »ç¿ë/[15:43] Tiles/[23:29] ÇÊ¿äÇÑ vertex ÁÂÇ¥°ª ÀúÀå/[31:40] ±×¸²À» Àß¶ó ŸÀÏ·Î ºÙ¿©³Ö±â/[37:52] BlasterÄڵ忡¼ background class »ý¼º/[42:07] º¯¼ö »ç¿ë/[45:59] ¶óÀ̺귯¸® »ç¿ë ±âº» ÀÛ¾÷ ¿Ï·á -
08.42ºÐ OpenSL ES·Î »ç¿îµå Àç»ý
OpenSL ES »ç¿îµå ¶óÀ̺귯¸®¸¦ »ç¿ëÇØ¼ »ç¿îµå¸¦ Àç»ý ¹× ³ìÀ½ ÀÛ¾÷ ¼öÇàÇϱâ
Ã¥°¥ÇÇ[00:18] À½¾Ç Àç»ý ½Ç½À/[05:00] descript¿¡¼ À½¾ÇÆÄÀÏ È®ÀÎ/[10:03] À½¾ÇÀ» ¸ØÃß´Â ¸Þ¼Òµå ±¸Çö/[16:48] unload¸Þ¼Òµå/[23:03] »ç¿îµå ¼ºñ½º°¡ ¸ØÃèÀ» ¶§ÀÇ µ¿ÀÛ Ãß°¡/[27:18] assetsÆú´õ¿¡ È¿°úÀ½ ³Ö±â/[34:07] ³ìÀ½À» ÃʱâÈ ÇÏ´Â ¸Þ¼Òµå È£Ãâ/[39:19] blasterÄÚµå ¿±â -
09.38ºÐ ÀÔ·Â ±â±â ó¸®
¾Èµå·ÎÀ̵å NDK¸¦ »ç¿ëÇØ¼ ÀÔ·Â ±â±â¿¡¼ ¹ß»ýÇÏ´Â À̺¥Æ® ó¸®Çϱâ
Ã¥°¥ÇÇ[00:10] ÀÔ·ÂÀåÄ¡ ó¸® ½Ç½À/[05:46] inputÇڵ鷯¸¦ »ç¿ëÇϱâ À§ÇØ ÀÚ·á Ãß°¡/[12:20] ontouchevent¸Þ¼Òµå ±¸Çö/[19:07] update¸Þ¼Òµå Ãß°¡/[24:40] Űº¸µå,µðÆÐµå,Æ®·¢º¼ ÀÔ·Âó¸® ½Ç½À/[31:02] Æ®·¢º¼ À̺¥Æ® ¸Þ¼Òµå ±¸Çö/[36:21] ¼³Á¤ Á¤º¸ Áß dPad¸¦ yes·Î º¯°æ -
10.50ºÐ ¼¾¼ ó¸®
¾Èµå·ÎÀ̵å NDK¸¦ »ç¿ëÇØ¼ ¼¾¼¿¡¼ ¹ß»ýÇÏ´Â À̺¥Æ®¸¦ ó¸®Çϱâ
Ã¥°¥ÇÇ[00:06] °¡»óŰº¸µå Á¦¾î ¹æ¹ý ±¸Çö/[05:46] °¡»óŰº¸µå¸¦ º¸¿©ÁÖ´Â ¸Þ¼Òµå/[12:31] Űº¸µå Ŭ·¡½º¸¦ ÀԷ¼ºñ½º¸¦ ó¸®ÇÏ´Â input¼ºñ½º¿¡¼ °¡Á®¿Í »ç¿ë/[31:26] ¸â¹öº¯¼ö ¼öÁ¤/[43:42] findrotation¸Þ¼Òµå ½ÇÇà/[48:20] ȸé ȸÀü¿¡ °ü·ÃµÈ ¸â¹öº¯¼ö Ãß°¡/[50:04] °¡¼Óµµ ¼¾¼ÃàÀ» Àüȯ -
11.47ºÐ ±âÁ¸ ¶óÀ̺귯¸® Æ÷ÆÃ part1
¾Èµå·ÎÀ̵å NDK¸¦ ÅëÇØ ±âÁ¸ÀÇ C++ °ü·Ã ¹ü¿ë ¶óÀ̺귯¸®¸¦ °¡Á®¿Í¼ Àû¿ëÇϱâ
Ã¥°¥ÇÇ[00:07] c++ ¶óÀ̺귯¸® Æ÷ÆÃ/[06:12] close¸Þ¼Òµå ÄÚµå ¼öÁ¤/[13:20] sdÄ«µå¸¦ »ç¿ëÇÒ ¼ö ÀÖµµ·Ï ±ÇÇÑ Ãß°¡/[19:18] shipÆÄÀÏ ¿¾î °æ·Î ¼öÁ¤/[24:14] Àå¾Ö¹° Ŭ·¡½º ±¸Çö//[31:33] onactivate°¡ È£ÃâµÇ¾úÀ» ¶§ ÄÚµå ÀÔ·Â/[39:29] ºôµå ¼³Á¤ ÆÄÀÏ ¼öÁ¤/[41:49] try/catch¹®À¸·Î º¯°æ/[45:58] ¼Ò¸êÀÚ »èÁ¦ -
12.45ºÐ ±âÁ¸ ¶óÀ̺귯¸® Æ÷ÆÃ part2
¾Èµå·ÎÀ̵å NDK¸¦ ÅëÇØ ±âÁ¸ÀÇ ±×·¡ÇȰü·Ã ¶óÀ̺귯¸®¸¦ °¡Á®¿Í¼ Àû¿ëÇϱâ
Ã¥°¥ÇÇ[00:06] ºÎ½ºÆ® ¶óÀ̺귯¸® ¿À·ù ¼öÁ¤/[05:14] lthread»ý¼º/[13:24] box2d¿¡ ÀÖ´Â ¸ðµç ¼Ò½ºÆÄÀÏ ¼±ÅÃ/[19:30] box2d_staticÃß°¡/[26:26] 3°³ÀÇ °æ·Î Ãß°¡/[31:07] properties for jni¿¡¼ °æ·Î Ãß°¡/[39:45] Çì´õÆÄÀÏ Ãß°¡ ÈÄ »ý¼ºÀÚ ±¸Çö/[44:28] createbody¸Þ¼Òµå -
13.41ºÐ ¹°¸® ½Ã¹Ä·¹À̼Ç
¾Èµå·ÎÀ̵å NDK¸¦ ÅëÇØ Box2D ¶óÀ̺귯¸®¸¦ »ç¿ëÇØ¼ ¹°¸® ½Ã¹Ä·¹ÀÌ¼Ç ¼öÇàÇϱâ
Ã¥°¥ÇÇ[00:08] createtarget¸Þ¼Òµå/[05:55] Çì´õÆÄÀϰú ¼Ò½ºÆÄÀÏ »ý¼º/[10:35] joint¶ó´Â ¹°¸®È¿°ú¸¦ ³»±âÀ§ÇÑ ¼Ó¼º°ª/[15:28] update¸Þ¼Òµå/[22:21] °á°ú update/[26:14] ¹°¸®È¿°ú Ãß°¡/[32:22] ¿ìÁÖ¼±¿¡ ¹°¸®È¿°ú Ãß°¡/[37:45] ºí¶ó½ºÅÍ ÄÚµå ¿±â/[40:44] ¿¡¹Ä·¹ÀÌÅÍ ½ÇÇà µ¿ÀÛ È®ÀÎ -
14.41ºÐ 3D ±×·¡ÇÈ ·£´õ¸µ
¾Èµå·ÎÀ̵å NDK¸¦ ÅëÇØ Irrlicht ¶óÀ̺귯¸®¸¦ »ç¿ëÇØ¼ 3D ±×·¡ÇÈ ·£´õ¸µ ¼öÇàÇϱâ
Ã¥°¥ÇÇ[00:09] 3d±×·¡ÇÈ ·£´õ¸µ ½Ç½À/[05:46] Çì´õÆÄÀÏ °æ·Î Ãß°¡/[12:20] graphicsserviceŬ·¡½º ¼öÁ¤/[17:52] stop¸Þ¼Òµå ¼öÁ¤/[23:45] ¹è°æ ¸¸µé±â/[32:04] Àå¾Ö¹°°ú ¿ìÁÖ¼± °´Ã¼¿¡ º¯°æµÈ »çÇ× Àû¿ë/[36:00] background Çì´õÆÄÀϰú ¼Ò½ºÆÄÀÏ Á¦°Å/[41:07] 3d±×·¡ÇÈ Ç¥Çö°ú ¾Ö´Ï¸ÞÀÌ¼Ç ±¸Çö È®ÀÎ -
15.45ºÐ µð¹ö±ë°ú ¹®Á¦Çذá
¾Èµå·ÎÀ̵å NDK¸¦ ÅëÇØ µð¹ö±ë ¹× ¼º´É ºÐ¼® ÀÛ¾÷ ¼öÇàÇϱâ
Ã¥°¥ÇÇ[00:07] ¾îÇø®ÄÉÀÌ¼Ç µð¹ö±ë°ú ¹®Á¦ÇØ°á ¹æ¹ý ½Ç½À/[06:46] °æ°í ÇØ°á ¹æ¹ý/[13:43] acroedit½ÇÇà/[21:26] cygwinÀÔ·Ââ¿¡ ndk-gdb2½ÇÇà/[29:45] profÇì´õÆÄÀÏ ºôµå ¼³Á¤ º¯°æ/[35:15] ºôµå ¼³Á¤ÆÄÀÏ android·Î º¯°æ/[38:44] cmdâ ¿°í adb pull¸í·É¾î ÀÔ·Â/[43:52] gprof´Â °£´ÜÇÑ °á°ú¸¦ º¸¿©ÁÖ´Â ÇÁ·ÎÆÄÀÏ·¯ -
16.43ºÐ ¸ÖƼ¹Ìµð¾î Àç»ý part1
¾Èµå·ÎÀ̵å NDK¸¦ ÅëÇØ ¸ÖƼ¹Ìµð¾î µ¥ÀÌÅÍ Ã³¸®Çϱâ
Ã¥°¥ÇÇ[00:09] ¸ÖƼ¹Ìµð¾î Àç»ý ½Ç½À/[05:39] value°ª º¯°æ/[05:46] ÀúÀå ÈÄ graphical laoutÀ¸·Î È®ÀÎ/[13:09] Å©±â Á¶Á¤/[21:00] logÃâ·Â/[29:03] 2°³ÀÇ ¸Þ¼Òµå ±¸Çö/[37:15] ¹öư ±¸Çö/[42:22] jniÀÎÅÍÆäÀ̽º¸¦ ÅëÇØ ¸Þ¼Òµå¸¦ ±¸µ¿ÇÒ ¼ö ÀÖµµ·Ï ¼±¾ð -
17.46ºÐ ¸ÖƼ¹Ìµð¾î Àç»ý part2
¾Èµå·ÎÀ̵å NDK¸¦ ÅëÇØ ¸ÖƼ¹Ìµð¾î µ¥ÀÌÅÍ Ã³¸®Çϱâ
Ã¥°¥ÇÇ[00:00] ¿ÀǸƽº ¶óÀ̺귯¸®¸¦ ÀÌ¿ëÇÑ ¸ÖƼ¹Ìµð¾î Àç»ý/[05:01] datacache ¹è¿·Î ÀúÀåµÇµµ·Ï ¼±¾ð/[12:23] rewind ÇÔ¼ö È£Ãâ/[21:00] streamchangecallback ÇÔ¼ö/[29:10] ¹Ýȯ°ªÀÇ Á¤º¸¸¦ ´ã°íÀÖ´Â º¯¼ö ¼±¾ð/[36:35] player¿¡ ´ëÇÑ ÀÎÅÍÆäÀ̽º Ãß°¡/[41:42] shutdown/[45:06] ºôµå ¼³Á¤ ÄÚµå »ðÀÔ -
18.45ºÐ FFMPEG Ȱ¿ë
¾Èµå·ÎÀ̵å NDK¸¦ ÅëÇØ FFMPEG ¶óÀ̺귯¸®¸¦ °¡Á®¿Í ºñµð¿À, ¿Àµð¿À µ¥ÀÌÅÍ µðÄÚµù ÀÛ¾÷ ¼öÇàÇϱâ
Ã¥°¥ÇÇ[00:10] FFMPEGÀû¿ë ½Ç½À/[06:12] pkt_queue_getÇÔ¼ö ±¸Çö/[17:18] ½ÇÁ¦·Î video µðÄÚµùÇÏ´Â ºÎºÐ ±¸Çö/[25:03] audioflinger_device¸¦ ¼¼ÆÃÇÏ´Â ·¡ÇÎÇÔ¼ö/[32:07] jni°ü·Ã ¸Þ¼Òµå ±¸Çö/[38:34] »ý¼ºµÈ ui°³Ã¼¸¦ ÀÚ¹ÙÄڵ忡 °¡Á®´Ù Ȱ¿ë/[43:27] surfaceholder¼±¾ð/[45:04] button±îÁö import -
19.47ºÐ PDK ±â¹Ý ¾îÇø®ÄÉÀÌ¼Ç °³¹ß
¾Èµå·ÎÀ̵å Àüü ¼Ò½º¸¦ ÀÌ¿ëÇØ¼ PDK ±â¹ÝÀ¸·Î ¾îÇø®ÄÉÀ̼ÇÀ» °³¹ßÇÏ´Â ¹æ¹ý ¾Ë¾Æº¸±â
Ã¥°¥ÇÇ[00:13] PDK ±â¹Ý ¾îÇø®ÄÉÀÌ¼Ç °³¹ß/[01:23] PDK ¼³¸í/[07:00] Å͹̳ÎÀ» ¿¬ »óÅ¿¡¼ downloadsµð·ºÅ丮·Î À̵¿[/14:39] ¾Èµå·ÎÀÌµå ¸í·É¼Â ÀÔ·Â/[24:03] pdk ±â¹Ý ¾îÇø®ÄÉÀÌ¼Ç »ý¼º/[33:30] apkÆÄÀÏÀÌ »ý¼ºµÈ ºÎºÐ È®ÀÎ/[43:30] ¾Èµå·ÎÀ̵å Àüü ¼Ò½º°¡ ºôµåµÈ °á°ú/[46:45] pathÁöÁ¤ -
20.1½Ã°£ 4ºÐ SDL ¶óÀ̺귯¸® ±â¹Ý ¾îÇø®ÄÉÀÌ¼Ç °³¹ß
¾Èµå·ÎÀ̵å·Î Æ÷ÆÃµÈ SDL ¶óÀ̺귯¸®¸¦ NDK¸¦ »ç¿ëÇØ¼ JAVA ÄÚµå¿Í ¿¬µ¿ÇÏ´Â ½Ç½ÀÀ» ¼öÇàÇϱâ
Ã¥°¥ÇÇ[00:47] Android application¸¸µé±â/[12:49] Maudiobuffer ÇÔ¼ö/[21:22] SDLlibraries ¼Ò½ºÄÚµå È®ÀÎ/[26:07] »ç°¢Çü ¿ÀºêÁ§Æ®¿¡ ÁÂÇ¥°ª ÁöÁ¤/[33:31] SDL_mutexP(audiomutex);/[39:48] ÇÁ·ÎÁ§Æ®¿¡¼ È®ÀÎÇϴ¹æ¹ý/[58:12] ºñµð¿À¼³Á¤/[01:00:20] ¼³Á¤¿¡ hw.dpad¸¦ yes·Î º¯°æ/[01:03:51] ±âÁ¸¼Ò½º¿Í ºñ±³