ºñµð¿À´Â ´ëÃæ µÈ °Å °°À¸´Ï ÀÌÁ¦ ¼Ò¸®¸¦ ³» º¸ÀÚ. ¾Õ ¿¹Á¦¿¡¼ ¿Àµð¿À
½ºÆ®¸²À» öÀúÈ÷ ¹«½ÃÇß¾ú´Âµ¥ ÀÌÁ¦ ¿µ»ó¿¡ ¸ÂÃç ¼Ò¸®¸¦ ³» º¼ °ÍÀÌ´Ù. µ¿¿µ»óÀÇ »ç¿îµå´Â ´Ù¾çÇÑ ÄÚµ¦À¸·Î
¾ÐÃàµÇ¾î ÀÖ¾î ÀÌ´ë·Î´Â Ãâ·ÂÇÒ ¼ö ¾ø´Ù.
½ºÆ®¸²¿¡¼ ÆÐŶÀ» ²¨³» ÄÚµ¦¿¡°Ô Àü´ÞÇÏ¸é ¾ÐÃàÀ» Ç®¾î ÁÖÁö¸¸ ÀÌ Æ÷¸Ëµµ ´Ù¾çÇÏ´Ù. ÃÖÁ¾ Ãâ·Â ÀåÄ¡°¡ Á÷Á¢ Áö¿øÇÏÁö ¸øÇϸé Æ÷¸ËÀ» ¹Ù²ã¾ß ÇÑ´Ù. ÀÌ
ÇÁ·ÎÁ§Æ®¿¡¼ »ç¿ëÇÏ´Â Waveform ¶óÀ̺귯¸®´Â Á¤¼öÇüÀÇ »ùÇø¸ ´Ù·ê ¼ö ÀÖ¾î µ¿¿µ»óÀÇ ¿Àµð¿À Æ÷¸ËÀ»
Á÷Á¢ Ãâ·ÂÇϱ⠾î·Æ´Ù. È®Àå ±â´ÉÀ» ¾²¸é °¡´ÉÀº ÇÏÁö¸¸ º¹Àâµµ°¡ Áõ°¡ÇÑ´Ù.
Æ÷¸ËÀ» ¹Ù²Ù¸é¼ À½Áúµµ Ãâ·Â ÀåÄ¡¿¡ ¸Â°Ô ¹Ù²ã¾ß ÇÑ´Ù. ¼Ò½º°¡ ¾Æ¹«¸® 5.1 ä³Î·Î µÇ¾î À־ Ãâ·Â ÀåÄ¡°¡ 2ä³Î¹Û¿¡ Áö¿øÇÏÁö ¾ÊÀ¸¸é
¼Ò¿ë ¾ø´Ù. Æ÷¸Ë°ú À½ÁúÀ» ¿øÇÏ´Â ÇüÅ·Π¹Ù²Ù´Â °ÍÀ» ¸®»ùÇøµÀ̶ó°í Çϸç FFmpegÀº ¼ÒÇÁÆ®¿þ¾î ¸®»ùÇøµ(swr) ±â´ÉÀ» Á¦°øÇÑ´Ù. ´ÙÀ½ ÇÔ¼ö·Î º¯È¯ ¹æ½ÄÀ» ÁöÁ¤ÇÏ¿© ¸®»ùÇøµ ÄÁÅؽºÆ®¸¦ »ý¼ºÇÑ´Ù.
struct SwrContext
*swr_alloc_set_opts(struct SwrContext *s, int64_t out_ch_layout, enum
AVSampleFormat out_sample_fmt, int out_sample_rate, int64_t in_ch_layout, enum AVSampleFormat in_sample_fmt, int in_sample_rate, int log_offset, void
*log_ctx)
Àμö°¡ ¾ÆÁÖ ¸¹´Ù. ù
¹ø° Àμö s´Â ÀÌ¹Ì ¸¸µé¾î ³õÀº ÄÁÅؽºÆ®°¡ ÀÖÀ¸¸é ¿É¼ÇÀ» ÂüÁ¶Ç쵂 ¾øÀ¸¸é NULL·Î ÁöÁ¤ÇÑ´Ù. out Á¢µÎ°¡ ºÙÀº 2, 3, 4¹ø° Àμö´Â ä³Î ·¹À̾ƿô, »ùÇà Æ÷¸Ë, »ùÇà ·¹ÀÌÆ®À̸ç Ãâ·Â Æ÷¸ËÀÌ´Ù. Ãâ·Â ÀåÄ¡°¡ Áö¿øÇÑ´Ù¸é ¿øÇÏ´Â Çü½ÄÀ»
¸¶À½´ë·Î ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù.
in Á¢µÎ°¡ ºÙÀº 5, 6, 7¹ø° Àμö´Â ÀÔ·Â Æ÷¸ËÀ» ÁöÁ¤ÇÑ´Ù. ÇÁ·¹ÀÓÀ¸·ÎºÎÅÍ ¾òÀº Æ÷¸Ë, »ùÇ÷¹ÀÌÆ®¸¦ ³Ñ°Ü ÁÖµÇ Ã¤³Î ·¹À̾ƿôÀº
ä³Î ¼ö·ÎºÎÅÍ ¼±ÅÃÇÑ´Ù. ä³ÎÀº ¼Ò¸®ÀÇ °³¼öÀÌ°í ä³Î ·¹À̾ƿôÀº °¢ ¼Ò¸®¸¦ ¾î¶² ½ºÇÇÄ¿¿¡ Ãâ·ÂÇÒ °ÍÀΰ¡¸¦
ÁöÁ¤ÇÑ´Ù. ½ºÇÇÄ¿º°·Î Àü¸é ¿ÞÂÊÀº 1, Àü¸é ¿À¸¥ÂÊÀº 2, Àü¸é Áß¾ÓÀº 4, ¿ìÆÛ´Â 8 ½ÄÀ¸·Î
ºñÆ®°¡ ÇÒ´çµÇ¾î ÀÖÀ¸¸ç Èĸé°ú Áß¾Ó ½ºÇÇÄ¿ÀÇ Á¿쿡µµ º¸Á¶ ½ºÇÇÄ¿¸¦ µÑ ¼ö ÀÖ´Ù. ä³Î ¼ö¿¡ ¾î¿ï¸®´Â
·¹À̾ƿôÀº ´ÙÀ½ ÇÔ¼ö·Î ±¸ÇÑ´Ù.
int64_t av_get_default_channel_layout(int
nb_channels)
ä³ÎÀÌ Çϳª ¹Û¿¡ ¾ø´Ù¸é Áß¾Ó ½ºÇÇÄ¿¿¡¼ ¼Ò¸®°¡ ³ª¾ß
ÇÏ´Ï ·¹À̾ƿôÀº 4°¡ µÈ´Ù. ½ºÅ×·¹¿À¶ó¸é ÁÂ¿ì ½ºÇÇÄ¿·Î ¼Ò¸®¸¦
ºÐ¹èÇϹǷΠ·¹À̾ƿôÀº 1, 2 µÑÀ» ºñÆ® ORÇÑ 3ÀÌ µÈ´Ù. ä³Î ¼ö°¡ ´õ ³ôÀ¸¸é ÈĸéÀ̳ª Áß¾Ó ½ºÇÇÄ¿ Á¿쿡µµ º¸Á¶
½ºÇÇÄ¿¸¦ ¹èÄ¡ÇÒ ¼ö ÀÖ´Ù. µ¿¿µ»ó ¿øº»¿¡´Â ä³Î¼ö Á¤º¸¸¸ ÀÖÀ» »ÓÀÌ¸ç ¾îµð´Ù ¼Ò¸®¸¦ Ãâ·ÂÇÒ °ÍÀÎÁö, ä³Î ·¹À̾ƿôÀº »ç¿ëÀÚ°¡ ¼±ÅÃÇÏ´Â °ÍÀÌ´Ù.
ÀÌ ÇÔ¼ö´Â ä³Î ¼ö¿¡ µû¶ó ¹«³ÇÑ ·¹À̾ƿôÀ» ¸®ÅÏÇÑ´Ù. ÀÌ °ªÀ» ±¸ÇØ »ç¿ëÇÏ¸é µÈ´Ù. µÚÂÊ Àμö µÑÀº ·Î±×¸¦ ³²±æ Àåºñ¿Í
·Î±× ·¹º§ÀÌµÇ ÇÊ¿ä ¾øÀ¸¸é 0, NULL·Î ÁöÁ¤ÇÑ´Ù. Àü´ÞÇÑ
¿É¼Ç´ë·Î ¸®»ùÇ÷¯¸¦ »ý¼ºÇÏ°í ¿É¼ÇÀ» ¼³Á¤ÇÏ¿© ¸®ÅÏÇÏ¸ç ¿¡·¯ ¹ß»ý½Ã NULLÀ» ¸®ÅÏÇÑ´Ù. ¿É¼ÇÀ» ¼³Á¤ÇÑ ÈÄ ´ÙÀ½ ÇÔ¼ö·Î ÃʱâÈ ÇÏ°í ´Ù »ç¿ëÇÑ ÈÄ ÇØÁ¦ÇÑ´Ù.
int swr_init(struct
SwrContext *s)
void swr_free(struct
SwrContext ** s)
ÀÌÁß Æ÷ÀÎÅ͸¦ ³Ñ±â¸é
NULL±îÁö ´ëÀÔÇØ ÁØ´Ù. ¸®»ùÇ÷¯¸¦ ÁغñÇÑ ÈÄ ´ÙÀ½ ÇÔ¼ö·Î ¸®»ùÇøµÇÑ´Ù.
int swr_convert (struct SwrContext *s, uint8_t
**out, int out_count, const uint8_t ** in, int in_count )
ù¹ø° Àμö·Î º¯È¯ ÄÁÅؽºÆ®¸¦ ÁÖ¸é ÁöÁ¤ÇÑ ¿É¼Ç´ë·Î º¯È¯ÇØ
ÁØ´Ù. out´Â Ãâ·Â¿ë ¹öÆÛÀ̸ç out_count´Â Ãâ·Â
¹öÆÛÀÇ Å©±âÀÌµÇ ¹ÙÀÌÆ® ´ÜÀ§°¡ ¾Æ´Ï¶ó »ùÇà °³¼öÀÌ´Ù. Æò¸é Æ÷¸ËÀÎ °æ¿ì¸¦ À§ÇØ Ãâ·Â ¹öÆÛ´Â 2Â÷ ¹è¿À» Àü´Þ¹ÞÁö¸¸ ÆÑ »ùÇ÷ΠÃâ·ÂÇÏ´Â °æ¿ì´Â ù ¹ø° ¹è¿¸¸ »ç¿ëÇÑ´Ù. inÀº ÀÔ·Â¿ë ¹öÆÛÀ̸ç ÆÑ »ùÇÃÀÎ °æ¿ì´Â ù ¹ø° ¹è¿¸¸ »ç¿ëÇÑ´Ù. in_count´Â ÀÔ·Â ¹öÆÛÀÇ »ùÇà °³¼öÀÌ´Ù.
ÀÔ·ÂµÈ »ùÇú¸´Ù Ãâ·Â ¹öÆÛ°¡ ´õ ÀÛÀ¸¸é º¯È¯ÇÏÁö ¸øÇÑ
ÀÔ·ÂÀº ¹öÆÛ¿¡ ³²°Ü µÐ´Ù. in°ú in_count¸¦ ¸ðµÎ 0À¸·Î Àü´ÞÇÏ¸é ¹öÆÛ¿¡ ³²Àº »ùÇÃÀ» ´Ù º¯È¯ÇÏ¿© ºñ¿î´Ù. ´Ù ÀÐÀ»
¶§±îÁö ·çÇÁ¸¦ µ¹¾Æ¾ß ÇÏ´Â ¹ø°Å·Î¿òÀÌ ÀÖ´Ù. ¹öÆÛ¸µÀ» ÇÇÇÏ·Á¸é swr_get_out_samples()
ÇÔ¼ö·Î Ãâ·Â ¹öÆÛÀÇ ÃæºÐÇÑ Å©±â¸¦ ±¸ÇØ ¹Ì¸® ÇÒ´çÇÏ´Â °ÍÀÌ ÁÁ´Ù. ¾Æ´Ï¸é ¹Ì¸® ³Ë³ËÈ÷ ÇÒ´çÇØ
³õ´Â °Íµµ ±¦Âú´Ù. 20K¸é 5000°³ÀÇ »ùÇÃÀ» ÀúÀåÇÒ ¼ö
ÀÖÀ¸¸ç ´ëºÎºÐÀÇ ÆÐŶÀº 2048°³ ÀÌÇÏÀÇ »ùÇÃÀ» °¡Áø´Ù.
º¯È¯µÈ »ùÇÃÀÇ °³¼ö¸¦ ¸®ÅÏÇÏ¸ç ¿¡·¯ ¹ß»ý½Ã À½¼ö¸¦ ¸®ÅÏÇÑ´Ù. »ùÇÃÀÇ °³¼ö¸¦ ¸®ÅÏÇÏ´Â °ÍÀÌÁö ¹ÙÀÌÆ® ´ÜÀ§°¡ ¾Æ´Ï¹Ç·Î °³¼ö¿¡ »ùÇÃÀÇ Å©±â¸¦ °öÇØ¾ß Á¤È®ÇÑ ¹ÙÀÌÆ®¼ö¸¦ ¾Ë ¼ö
ÀÖ´Ù.