WAVEFORMATEX
От: Аноним  
Дата: 05.11.03 10:02
Оценка:
Добрый День!

Может кто — нибудь сможет объяснить какой параметр отвечает за квантование сигнала (разрядность АЦП).
А то я новичок пока:

typedef struct {
WORD wFormatTag;
WORD nChannels;
DWORD nSamplesPerSec;
DWORD nAvgBytesPerSec;
WORD nBlockAlign;
WORD wBitsPerSample;
WORD cbSize;
} WAVEFORMATEX;

Спасибо.
Re: WAVEFORMATEX
От: AndreyFedotov Россия  
Дата: 05.11.03 10:09
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Добрый День!


А>Может кто — нибудь сможет объяснить какой параметр отвечает за квантование сигнала (разрядность АЦП).

А>А то я новичок пока:

А>typedef struct {

А> WORD wFormatTag;
А> WORD nChannels;
А> DWORD nSamplesPerSec;
А> DWORD nAvgBytesPerSec;
А> WORD nBlockAlign;
А> WORD wBitsPerSample;
А> WORD cbSize;
А>} WAVEFORMATEX;

А>Спасибо.


wBitsPerSample — бит на квант (сампл)

С Уважением, Андрей
Re[2]: WAVEFORMATEX
От: Аноним  
Дата: 05.11.03 14:13
Оценка:
Здравствуйте, AndreyFedotov, Вы писали:

AF>wBitsPerSample — бит на квант (сампл)


AF>С Уважением, Андрей


Почему я когда этот параметр уменьшаю например до 7, то звук не воспроизводится.
Re[3]: WAVEFORMATEX
От: AndreyFedotov Россия  
Дата: 05.11.03 14:50
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, AndreyFedotov, Вы писали:


AF>>wBitsPerSample — бит на квант (сампл)


AF>>С Уважением, Андрей


А>Почему я когда этот параметр уменьшаю например до 7, то звук не воспроизводится.


А параметр наверное был 8 или 16?

Насколько мне известно Windows умеет работать только с этими значениями. Если нужны другие — например 7, 6, 3, то нужно пересчитать сами самплы...

С Уважением, Андрей
Re[4]: WAVEFORMATEX
От: preview  
Дата: 05.11.03 21:07
Оценка:
Здравствуйте, AndreyFedotov, Вы писали:

AF>Насколько мне известно Windows умеет работать только с этими значениями. Если нужны другие — например 7, 6, 3, то нужно пересчитать сами самплы...


А как это можно сделать? Где про это почитать? Куда рыть?

Еще раз спасибо.
Re[5]: WAVEFORMATEX
От: AndreyFedotov Россия  
Дата: 06.11.03 07:33
Оценка:
Здравствуйте, preview, Вы писали:

P>Здравствуйте, AndreyFedotov, Вы писали:


AF>>Насколько мне известно Windows умеет работать только с этими значениями. Если нужны другие — например 7, 6, 3, то нужно пересчитать сами самплы...


P>А как это можно сделать? Где про это почитать? Куда рыть?


P>Еще раз спасибо.


Посмотри насчёт кодеков звука. Некоторые кодеки позволяют кодировать звук с разным разрешением.
Но я бы сделел по-другому. В своё время я довольно просто научился читать и писать Wav файлы, с помощью пересчёта значений легко можно понизить качество звука, то есть превратить N отсчётов в M, где M < N. (Например 65536 отсчётов, в 128 отсчётов, <=> 16 бит в 7), это простейший способ. Дальше любым проигрывателем проигрываешь звук. Если тебе нужно попробовать — как влияет дискретезация на качество звука — способо по моему наиболее простой.
Более сложный — использовать DirectSound (часть DirctX Audio) — это если хочешь наиболее развитых возможностей, например работы с кодеками, или, что несколько проще — использовать Waveform Audio (Platform SDK: Windows Multimedia). Обе технологии позволяют тебе при загрузке аудио данных пересчитывать их на лету и грузить их в буффер звуковой карты.

С Уважением, Андрей
Re[6]: WAVEFORMATEX
От: Аноним  
Дата: 06.11.03 08:11
Оценка:
Здравствуйте, AndreyFedotov, Вы писали:

AF>Посмотри насчёт кодеков звука. Некоторые кодеки позволяют кодировать звук с разным разрешением.

AF>Но я бы сделел по-другому. В своё время я довольно просто научился читать и писать Wav файлы, с помощью пересчёта значений легко можно понизить качество звука, то есть превратить N отсчётов в M, где M < N. (Например 65536 отсчётов, в 128 отсчётов, <=> 16 бит в 7), это простейший способ. Дальше любым проигрывателем проигрываешь звук. Если тебе нужно попробовать — как влияет дискретезация на качество звука — способо по моему наиболее простой.
AF> Более сложный — использовать DirectSound (часть DirctX Audio) — это если хочешь наиболее развитых возможностей, например работы с кодеками, или, что несколько проще — использовать Waveform Audio (Platform SDK: Windows Multimedia). Обе технологии позволяют тебе при загрузке аудио данных пересчитывать их на лету и грузить их в буффер звуковой карты.

AF>С Уважением, Андрей


Мне более удобен именно второй пункт, то есть использовать функции Waveform Audio. Можете сказать название нескольких таких функций, чтобы производить "при загрузке аудио данных пересчитывать их на лету и грузить их в буффер звуковой карты"
Re[7]: WAVEFORMATEX
От: AndreyFedotov Россия  
Дата: 06.11.03 11:48
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, AndreyFedotov, Вы писали:


AF>>Посмотри насчёт кодеков звука. Некоторые кодеки позволяют кодировать звук с разным разрешением.

AF>>Но я бы сделел по-другому. В своё время я довольно просто научился читать и писать Wav файлы, с помощью пересчёта значений легко можно понизить качество звука, то есть превратить N отсчётов в M, где M < N. (Например 65536 отсчётов, в 128 отсчётов, <=> 16 бит в 7), это простейший способ. Дальше любым проигрывателем проигрываешь звук. Если тебе нужно попробовать — как влияет дискретезация на качество звука — способо по моему наиболее простой.
AF>> Более сложный — использовать DirectSound (часть DirctX Audio) — это если хочешь наиболее развитых возможностей, например работы с кодеками, или, что несколько проще — использовать Waveform Audio (Platform SDK: Windows Multimedia). Обе технологии позволяют тебе при загрузке аудио данных пересчитывать их на лету и грузить их в буффер звуковой карты.

AF>>С Уважением, Андрей


А>Мне более удобен именно второй пункт, то есть использовать функции Waveform Audio. Можете сказать название нескольких таких функций, чтобы производить "при загрузке аудио данных пересчитывать их на лету и грузить их в буффер звуковой карты"


waveOutOpen, waveOutWrite например

С Уважением, Андрей
Re[8]: WAVEFORMATEX
От: preview  
Дата: 06.11.03 20:19
Оценка:
Здравствуйте, AndreyFedotov, Вы писали:

AF>waveOutOpen, waveOutWrite например


То есть вы хотите сказать что я должен указать wBitsPerSample необходимое мне значение и самому пересчитать все буфер содержащий сам сигнал?
Re[9]: WAVEFORMATEX
От: Аноним  
Дата: 09.11.03 08:24
Оценка:
Здравствуйте, preview, Вы писали:

PP>То есть вы хотите сказать что я должен указать wBitsPerSample необходимое мне значение и самому пересчитать все буфер содержащий сам сигнал?


Правильно то я хоть думаю или нет? скажите...
Re[4]: WAVEFORMATEX
От: preview  
Дата: 09.11.03 14:58
Оценка:
Здравствуйте, AndreyFedotov, Вы писали:


AF>Насколько мне известно Windows умеет работать только с этими значениями. Если нужны другие — например 7, 6, 3, то нужно пересчитать сами самплы...

AF>С Уважением, Андрей

Можете привести конкретный пример плз.
Re[10]: WAVEFORMATEX
От: AndreyFedotov Россия  
Дата: 10.11.03 08:33
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, preview, Вы писали:


PP>>То есть вы хотите сказать что я должен указать wBitsPerSample необходимое мне значение и самому пересчитать все буфер содержащий сам сигнал?


А>Правильно то я хоть думаю или нет? скажите...


Да, всё правильно. Действительно:
Грузим звуковой файл в буфер памяти, пересчитывая разрешение самплов.
Передаём указатель на начала буфера в функцию проигрывания waveOutWrite

С Уважением, Андрей
Re[5]: WAVEFORMATEX
От: AndreyFedotov Россия  
Дата: 10.11.03 08:35
Оценка:
Здравствуйте, preview, Вы писали:

P>Здравствуйте, AndreyFedotov, Вы писали:



AF>>Насколько мне известно Windows умеет работать только с этими значениями. Если нужны другие — например 7, 6, 3, то нужно пересчитать сами самплы...

AF>>С Уважением, Андрей

P>Можете привести конкретный пример плз.


Хорошо, посмотрю в загашнике.. Можно посмотреть так же в примерах MSDN.
С Уважением, Андрей
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.