■ AcmDriver 클래스의 EnumerateAcmDrivers 정적 메소드를 사용해 ACM 드라이버를 열거하는 방법을 보여준다.
▶ Program.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
using System; using System.Text; using NAudio.Wave; using NAudio.Wave.Compression; namespace TestProject { /// <summary> /// 프로그램 /// </summary> class Program { //////////////////////////////////////////////////////////////////////////////////////////////////// Method ////////////////////////////////////////////////////////////////////////////////////////// Static //////////////////////////////////////////////////////////////////////////////// Private #region 프로그램 시작하기 - Main() /// <summary> /// 프로그램 시작하기 /// </summary> private static void Main() { foreach(AcmDriver driver in AcmDriver.EnumerateAcmDrivers()) { StringBuilder stringBuilder = new StringBuilder(); stringBuilder.AppendFormat("긴 명칭 : {0}\r\n", driver.LongName ); stringBuilder.AppendFormat("짧은 명칭 : {0}\r\n", driver.ShortName); stringBuilder.AppendFormat("드라이버 ID : {0}\r\n", driver.DriverId ); driver.Open(); stringBuilder.AppendFormat("포맷 태그 목록 :\r\n"); foreach(AcmFormatTag formatTag in driver.FormatTags) { stringBuilder.AppendFormat("--------------------------------------------------\r\n"); stringBuilder.AppendFormat("포맷 태그 {0} : {1}\r\n" , formatTag.FormatTagIndex, formatTag.FormatDescription); stringBuilder.AppendFormat(" 표준 포맷 수 : {0}\r\n", formatTag.StandardFormatsCount); stringBuilder.AppendFormat(" 지원 플래그 : {0}\r\n", formatTag.SupportFlags); stringBuilder.AppendFormat(" 포맷 태그 : {0}, 포맷 크기 : {1}\r\n", formatTag.FormatTag, formatTag.FormatSize); stringBuilder.AppendFormat(" 포맷 목록 :\r\n"); foreach(AcmFormat format in driver.GetFormats(formatTag)) { stringBuilder.AppendFormat(" --------------------------------------------------\r\n"); stringBuilder.AppendFormat(" 포맷 {0} : {1}\r\n", format.FormatIndex, format.FormatDescription); stringBuilder.AppendFormat(" 포맷 태그 : {0}\r\n" , format.FormatTag); stringBuilder.AppendFormat(" 지원 플래그 : {0}\r\n" , format.SupportFlags); stringBuilder.AppendFormat(" 웨이브 포맷 : {0}\r\n" , format.WaveFormat.Encoding); stringBuilder.AppendFormat(" 샘플 비율 : {0}Hz\r\n", format.WaveFormat.SampleRate); stringBuilder.AppendFormat(" 채널 수 : {0}\r\n" , format.WaveFormat.Channels); stringBuilder.AppendFormat(" 비트 : {0}\r\n" , format.WaveFormat.BitsPerSample); stringBuilder.AppendFormat(" 블럭 정렬 : {0}\r\n" , format.WaveFormat.BlockAlign); stringBuilder.AppendFormat ( " 초당평균바이트수 : {0} ({1:0.0} kbps)\r\n", format.WaveFormat.AverageBytesPerSecond, (format.WaveFormat.AverageBytesPerSecond * 8) / 1000.0 ); stringBuilder.AppendFormat(" 추가 크기 : {0}\r\n" , format.WaveFormat.ExtraSize); if(format.WaveFormat is WaveFormatExtraData && format.WaveFormat.ExtraSize > 0) { WaveFormatExtraData extraData = (WaveFormatExtraData)format.WaveFormat; stringBuilder.Append(" 추가 바이트 :\r\n "); for(int i = 0; i < format.WaveFormat.ExtraSize; i++) { stringBuilder.AppendFormat("{0:X2} ", extraData.ExtraData[i]); } stringBuilder.Append("\r\n"); } } } driver.Close(); Console.WriteLine(stringBuilder.ToString()); } } #endregion } } |