![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
NwinIX |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 13.8.2005 Репутация: нет Всего: нет |
У меня вопрос вот по такому делу.
Пишу программу по работе с wav-файлом(не суть важно) в общем есть в нем такая функция DWORD get_wav_header(FILE *fp, WAVE_HEADER *wav_hdr), которая принимает указатель на сам файл и на его структуру(функция не моя, диктовали на лекциях). Сама функция делает проверку на корректность wav-файла(заголовка) и возращает код ошибки Структура самого файла что то в роде typedef struct { DWORD riffsize; BYTE riff[4]; BYTE wavefmt[8]; DWORD fmtsize; WORD wFormatTag; WORD nChannels; DWORD nSamplesPerSec; DWORD nAvgBytesPerSec; WORD nBlockAligh; WORD wBitsPerSample; BYTE data[4]; DWORD datasize; }WAVE_HEADER; Так у меня не получается передать в эту функцию саму структуру из wav-файла, вот в этом и заключается проблема, будь то даже работа с bmp, не могу передать структуру в функцию для какой-либо проверки. I NEED HELP/ |
|||
|
||||
Step |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
NwinIX, для начало надобы писать код ошибочки...
или хотябы сказать, какого типа ошибка компиляци, сборки или выполнения или ошибок нету, но не работает... а во вторых в этом случаи нужно поставить выравнивание равное 1 байту... -------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
NwinIX |
|
||||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 13.8.2005 Репутация: нет Всего: нет |
|
||||
|
|||||
Step |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
ошибка какая,
не получаеться передать - компилятор ругаеться, или уже ваша программа при выполнении??? -------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
NwinIX |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 13.8.2005 Репутация: нет Всего: нет |
Короче набрана программа(по лекции) В строке с функцией RedCode=get_wav_header(fin,&wav_hdr); /&wav_hdr----- undeclared identifier . Не знаю что делать. Может еще есть какие способы по проверке корректности wav-заголовка....
Это сообщение отредактировал(а) NwinIX - 20.8.2005, 01:19 |
|||
|
||||
Step |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
ошибка в строке 107
wav_hdr и так указатель так что & не нужен -------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
NwinIX |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 13.8.2005 Репутация: нет Всего: нет |
error C2065: 'wav_hdr' : undeclared identifier
|
|||
|
||||
Step |
|
||||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
тю блин, а я думал у меня глюки, или слепну, а оно в натури нету, думал может в глобале лежит
![]() ну да ладно вы конда считаете синус пишите вот так
так вот, вот такого
у вас нету, для вашего wav_hdr более того, оно должно быть в таком виде
где то так... -------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
||||||
|
|||||||
NwinIX |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 13.8.2005 Репутация: нет Всего: нет |
Вроде работает, хех а я и сам не заметил. Ну а если по смыслу так подумать, то мы передаем указатель на совершенно пустую структуру, которая у нас в хедаре висит, так как же тогда из совершенно пустой структуры мы сможем узнать формат или размер фактических данных? Или это у меня уже приступ паранои, или злостный лектор специально падлянку оставил
![]() |
|||
|
||||
Step |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
NwinIX, это параноя
![]() а что по вашему вы делаете когда из файл читаете данные в некое место.... и как раз на это место указывает указатель.. а теперь если почитать, или вспомнить что такое переменные структуры и как они распологаються в памяти то многое станет понятно, и даже станет понятно зачем необходимо делать выравнивание по 1 -------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
NwinIX |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 13.8.2005 Репутация: нет Всего: нет |
![]() |
|||
|
||||
NwinIX |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 13.8.2005 Репутация: нет Всего: нет |
На строку WAVE_HEADER * wav_hdr=new WAVE_HEADER;
выдает аж 5 ошибок: error C2018: unknown character '0xa0' Что это ваще значит ![]() |
|||
|
||||
Step |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
NwinIX, а это прикол для лентяев, вы ее удалите и ручками введите
![]() а не копируйте с форума -------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
NwinIX |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 13.8.2005 Репутация: нет Всего: нет |
}{ех, вот хохма, пробел чертов
![]() ![]() |
|||
|
||||
Step |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
ну и че, заработало
-------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
NwinIX |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 13.8.2005 Репутация: нет Всего: нет |
Почти, там еще кое-что доработать надо-это всего лишь костяк. А так да, теперь не ругается
![]() ![]() |
|||
|
||||
Step |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
С тебя бутылка
![]() -------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
NwinIX |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 13.8.2005 Репутация: нет Всего: нет |
Хех, вот еще вопросик тогда, связанный с эхо. Я в массив(указатель) samples писал данные из файла(кроме самого заголовка, его я формировал отдельно). В этом массиве я могу оперировать данными, повышая и понижая амплитуду-следовательно громкость. А как можно сделать, чтобы оперировать со временем? Ну например сдвинуть весь исходный сигнал на 1 или 0,1 секунды, и потом этот сдвинутый сигнал слить с исходным, чтобы как бы образовался сигнал со своим эхо(с небольшой задержкой)
![]() ![]() Это сообщение отредактировал(а) NwinIX - 21.8.2005, 02:43 |
|||
|
||||
Step |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
NwinIX, как сдвинуть берешь и делаешь копию сигнала в памяти со свдигом и потом накладЫваешь, правый лишний край удаляешь, или увеличиваешь длительность...
-------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
NwinIX |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 13.8.2005 Репутация: нет Всего: нет |
Со сдвигом разобрался но вот с наложением не очень. Ну вот есть у меня samples[]-оригинальный сигнал, samples_resize[]-все данные сдвинуты на 2 i-х позиции, размер такой же, следствие из этого, два последних значения не влезут..... Но вот как их слить не догоняю, это типа samples_resize[] вписать в samples[] или как, мож создать новый массив и в него все это записать, вот тока как
![]() |
|||
|
||||
Step |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
последнии два удаляете
да вписать через какуюто операцию попробуйте в тупую сплюсовать и откоректировать амплитуду что бы не фонило -------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
NwinIX |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 13.8.2005 Репутация: нет Всего: нет |
В тупую не получается, не могу выравнять, да и не катит этот вариант, мне нужен конечный сигнал с точностью до бита как оригинал слитый с своим эхо, просто пишу программу по стеганографии, так боюсь что потом при декодировании данных не те значения будут извлекаться....А как можно еще слить? Можно на небольшом примере?
![]() ![]() |
|||
|
||||
Step |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
что значит не получаеться, что значит с точностью до бита, такое понятие применять как то глупо в єтом случае, нужно с точностью до отсчета или чето в этом роде
что значит выровнять, что к чему ты выравниваешь -------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
NwinIX |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 13.8.2005 Репутация: нет Всего: нет |
Деху ступил.....
Где nsamples-колличество отсчетов в массиве samples. Создал еще два мас для записи этого же сигнала но с небольшой задержкой, а как теперь слить не знаю. NEED HELP(т.е. как слить samples_edit_3+samples или samples_edit_2+samples, чтоб сохранился и оригинал и его эхо?,то есть один равный сумме исходного и задержанного по времени. Если можно то примерчих хотя быб малюханький. ![]() ![]() Это сообщение отредактировал(а) NwinIX - 25.8.2005, 17:41 |
|||
|
||||
DrLazy |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 8.7.2005 Репутация: нет Всего: нет |
Если у тебя амплитуды знаковые, то
эхо правда обрежется по длине первого звука. Если надо по другому надеюсь сообразишь Если будет перегрузка ( short int overflow ) то подели на 3 перед записью в массив. Это сообщение отредактировал(а) DrLazy - 25.8.2005, 21:44 |
|||
|
||||
NwinIX |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 13.8.2005 Репутация: нет Всего: нет |
Я Впринципе так пробовал, тока складывал вот так
вот тока ничего хорошего не получилось, файл создает выходной а данными не заполняет Если записывать просто nsamples без всяких преобразований то все работает а так не пашет. А может стоит увеличить колличество памяти в выходной файл как минимум в двое, вот тока как вычесть эти восемь отсчетов на которые я сдвинул? Это сообщение отредактировал(а) NwinIX - 26.8.2005, 00:09 |
|||
|
||||
Guest |
|
|||
Unregistered |
Всем спасибо за советы, сам все сделал, во всем разобрался
![]() ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |