информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Портрет посетителяСетевые кракеры и правда о деле Левина
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
 Умер Никлаус Вирт 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
[C++] Direct to disk recorder 20.10.03 11:12  Число просмотров: 1589
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> Стоит задача записать в файл звук от микрафона. Я
> определил ID Devis'a (звуковухи), заполнил все необходимые
> структуры отвечающие за качество звука, открыл устройство
> waveInOpen(...) затем его запустил waveInStart(). Теперь
> нужно считать данные в файл. Как я понимаю это нужно делать
> посредством сообщения MM_WIM_DATA... Если нет, прошу меня
Все верно :-)

> поправить и подсказать как надо потаму, что ничего у меня
> не получается!!!! Если есть какие исходнячки или где в сети
> информация, прошу поделитесь...
Сабж в KB от микрософты: http://download.microsoft.com/download/platformsdk/sample9/3.1/W31/EN-US/Ddrec.exe

Есть чтение/запись wav файла в/из произвольного звукового устройства с произвольным кодеком.

Если нужно больше инфы, советую посмотреть архивы форума. Здесь пролетало довольно детальное обсуждение этого вопроса. Правда в контексте voice-modem-а, что не меняет сути, т.к. там нужно найти звуковое устройство этого самого модема и работать с ним самым обычным образом.

http://download.microsoft.com/download/platformsdk/sample9/3.1/W31/EN-US/Ddrec.exe
<programming>
[C++] Обработка сообщений звуковой карты... 19.10.03 18:12  
Автор: CrazyPitbull Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Стоит задача записать в файл звук от микрафона. Я определил ID Devis'a (звуковухи), заполнил все необходимые структуры отвечающие за качество звука, открыл устройство waveInOpen(...) затем его запустил waveInStart(). Теперь нужно считать данные в файл. Как я понимаю это нужно делать посредством сообщения MM_WIM_DATA... Если нет, прошу меня поправить и подсказать как надо потаму, что ничего у меня не получается!!!! Если есть какие исходнячки или где в сети информация, прошу поделитесь...
[C++] Direct to disk recorder 20.10.03 11:12  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> Стоит задача записать в файл звук от микрафона. Я
> определил ID Devis'a (звуковухи), заполнил все необходимые
> структуры отвечающие за качество звука, открыл устройство
> waveInOpen(...) затем его запустил waveInStart(). Теперь
> нужно считать данные в файл. Как я понимаю это нужно делать
> посредством сообщения MM_WIM_DATA... Если нет, прошу меня
Все верно :-)

> поправить и подсказать как надо потаму, что ничего у меня
> не получается!!!! Если есть какие исходнячки или где в сети
> информация, прошу поделитесь...
Сабж в KB от микрософты: http://download.microsoft.com/download/platformsdk/sample9/3.1/W31/EN-US/Ddrec.exe

Есть чтение/запись wav файла в/из произвольного звукового устройства с произвольным кодеком.

Если нужно больше инфы, советую посмотреть архивы форума. Здесь пролетало довольно детальное обсуждение этого вопроса. Правда в контексте voice-modem-а, что не меняет сути, т.к. там нужно найти звуковое устройство этого самого модема и работать с ним самым обычным образом.

http://download.microsoft.com/download/platformsdk/sample9/3.1/W31/EN-US/Ddrec.exe
Вопрос по заголовкам wav файла 20.10.03 23:27  
Автор: CrazyPitbull Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Создаю wav файл, проблемм с данными нет, проблемма в заполнении заголовков. Непонятны некоторые пункты:
typedef struct {
char id[4]; - идентификатор файла = "RIFF" = 0x46464952
long len; - длина файла без этого заголовка
} IDRiff;
Что есть len? как я понял это = длинна файла - sizeof(данная структуры).
typedef struct {
char id[4]; - идентификатор = "WAVE" = 0x45564157
char fmt[4]; - идентификатор = "fmt " = 0x20746D66
long len; - длина этого куска WAV - файла,
} IDChuckWave;
Что есть len здесь? Как я понял это длинна файла без предыдущих двух структур.
typedef struct {
int type; - тип звуковых данных, бывает - !!!
1 - просто выборка;
0x101 - IBM mu-law;
0x102 - IBM a-law;
0x103 - ADPCM.
int channels; - число каналов 1/2 - !!!
long SamplesPerSec; - частота выборки - !!!
long AvgBytesPerSec; - частота выдачи байтов
int align; - выравнивание
int bits; - число бит на выборку - !!!
} IDWave;
Что есть AvgBytesPerSec и откуда берётся, зависит ли она от SamplesPerSec?
Непонятно, что align должен содержать?

Описание формата взято с http://codenet.ru/progr/formt/rawsam.php
Не трогай их и будет тебе счастье :-) 21.10.03 07:49  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> Создаю wav файл, проблемм с данными нет, проблемма в
> заполнении заголовков. Непонятны некоторые пункты:
> typedef struct {
> char id[4]; - идентификатор файла = "RIFF" =
> 0x46464952
> long len; - длина файла без этого заголовка
> } IDRiff;
> Что есть len? как я понял это = длинна файла -
> sizeof(данная структуры).
Length - длина данных для данного chunk-f. В чанке RIFF содержится весь файл.

> typedef struct {
> char id[4]; - идентификатор = "WAVE" = 0x45564157
> char fmt[4]; - идентификатор = "fmt " = 0x20746D66
> long len; - длина этого куска WAV - файла,
> } IDChuckWave;
> Что есть len здесь? Как я понял это длинна файла без
> предыдущих двух структур.
А в чанке WAVE/fmt - звуковой формат (WAVEFORMAT/WAVEFORMATEX) и его длина будет равна полю cbSize из этой структуры.

> typedef struct {
> int type; - тип звуковых данных, бывает - !!!
> 1 - просто выборка;
> 0x101 - IBM mu-law;
> 0x102 - IBM a-law;
> 0x103 - ADPCM.
> int channels; - число каналов 1/2 - !!!
> long SamplesPerSec; - частота выборки - !!!
> long AvgBytesPerSec; - частота выдачи байтов
> int align; - выравнивание
> int bits; - число бит на выборку - !!!
> } IDWave;
Не смотри сюда смотри в MSDN. На самом деле эта структура WAVEFORMAT как я уже написал. Сохраняется в файл один к одному как была получена из ACM. Как получить нужный формат или смотри пример или догадайся сам (MSDN в помощь).

> Что есть AvgBytesPerSec и откуда берётся, зависит ли она от
> SamplesPerSec?
> Непонятно, что align должен содержать?
Читай MSDN.

> Описание формата взято с
> http://codenet.ru/progr/formt/rawsam.php
А потому как не фиг :-)
Похоже, ты очень невнимательно читал пример, который я тебе дал. Там есть работа с wav файлами.

Вкратце это выглядит так: заходишь в chunk (mmioDescend), делаешь в нем всю необходимую работу (например создаешь другие chunk-и или записываешь данные), выходишь из chunk-а (mmioAscend) - поле Length заполняется автоматически.

И не надо изобретать велосипедов и работать с wav форматом напрямую. Иначе я предложу работать напрямую и с файловой системой или еще ниже - с дисковым контроллером, а также похерить ACM и написать свой кодек mp3.
Вопрос на отвлечённую тему (про модем) 21.10.03 21:40  
Автор: CrazyPitbull Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Слушай, ты подкинул мне классный пример для работы со звуковухой, а нет такого же только по работе с модемом? Если есть подкинь линку, буду очень благодарен. Как я понимаю отличеие в них немного, работа с устройством осуществляется подобным образом, только используются TAPI функции(аналоги работы со звуковым устройством).
Нету :-( 21.10.03 22:30  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> Слушай, ты подкинул мне классный пример для работы со
> звуковухой, а нет такого же только по работе с модемом?
В свое время долго и нудно разбирался по юзнетовским архивам (groups.google.com). Советую для начала поискать в форуме - там я довольно подробно расписал все. А если будут вопросы - обращайся, может чего и вспомню (было это года два назад).

> Если есть подкинь линку, буду очень благодарен. Как я
> понимаю отличеие в них немного, работа с устройством
> осуществляется подобным образом, только используются TAPI
> функции(аналоги работы со звуковым устройством).
Не совсем. Тапи действительно используется, но только для инициализации войс-режима и получения хендла звукового устройства. А дальше в ход идут совершенно те же методы и функции, что и для обычных звуковых устройств.
ТО, что надо!!! 20.10.03 11:41  
Автор: CrazyPitbull Статус: Незарегистрированный пользователь
<"чистая" ссылка>
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach