![]() |
|
Модераторы: bsa |
![]()
|
|
| ChinaUA |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 12.4.2012 Репутация: нет Всего: нет |
Доброго времени суток!
Есть задача считать заголовок WAV файла и представить данные в читабельной форме. У меня есть вот такой вод код:
В результате данные получаю частично корректные: File is 260028 bytes. RIFF header :RIFF WAVE header : FMT : Data size (based on bits used) :2338614392529502551 Sampling Rate :259984 Number of bits used :1 Number of channels :1 Number of bytes per second :0 Data length :562958543421441 Подскажите, что не так в коде. Программирую под Mac OS в Xcode... |
|||
|
||||
| feodorv |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 12 Всего: 45 |
Даже не знаю, что сказать. Или в Mac OS тоже нужно fopen(...,"rb"); (что вряд ли))), либо файл какой-то неправильный ;) Вы его каким-нибудь HEX-viewer'ом смотрели? Откомпилил программу в виндах (с учётом исправления), запустил, получил:
-------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
| volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 16 Всего: 85 |
В таких вещах обязательно нужно прагма пак выставлять.
|
|||
|
||||
| feodorv |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 12 Всего: 45 |
А ведь верно -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
| volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 16 Всего: 85 |
||||
|
||||
| ChinaUA |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 12.4.2012 Репутация: нет Всего: нет |
Спасибо за ответы, честно говоря в программировании новичек. Код взял готовый, пытаюсь в нем разобраться. Подскажите, если long 64 битный, как быть в данном ситуации? Прописать другой тип данных?
|
|||
|
||||
| feodorv |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 12 Всего: 45 |
Да уж! А я даже не посмотрел((( Можно попробовать простой int. Но, главное, распечатать sizeof(wav_hdr), должно быть 44 -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
| ChinaUA |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 12.4.2012 Репутация: нет Всего: нет |
А как собственно распечатать sizeof(wav_hdr), если использовать printf() - ругается....
Поменял все переменные кроме char на int. Результат лучше, но еще не идеальный)) File is 260028 bytes. RIFF header :RIFF WAVE header :WAVE FMT :fmt Data size (based on bits used) :260020 Sampling Rate :176400 Number of bits used :259984 Number of channels :259984 Number of bytes per second :1048580 Data length :0 |
|||
|
||||
| feodorv |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 12 Всего: 45 |
Ну, эээ.
А печать идёт всё так же, через %ld? Это сообщение отредактировал(а) feodorv - 22.4.2012, 19:57 -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
||||
|
|||||
| ChinaUA |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 12.4.2012 Репутация: нет Всего: нет |
Спасибо, распечатал - 52... В чем же загвоздка...
Печать идет через %d |
||||
|
|||||
| feodorv |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 12 Всего: 45 |
Разница - 8 байт. Могу предположить, что виноваты short: либо sizeof(short) есть 4, либо каждое short (волевым решением компилятора) занимает 4 байта. Как указывал volatile: Проверить можно так:
Для правильной работы нужно 2 и 4 байта соответственно. Как в МакОС выставлять прагма пак, я не знаю (возможно, что также как и в винде). -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
| ChinaUA |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 12.4.2012 Репутация: нет Всего: нет |
Спасибо тебе огромное! Немного вроде наладилось. Хотел тебе плюсик поставить, постов не хватает...
Теперь результат вроде корректный File is 260028 bytes. RIFF header :RIFF WAVE header :WAVE FMT :fmt Data size (based on bits used) :260020 Sampling Rate :44100 Number of bits used :16 Number of channels :16 Number of bytes per second :176400 Data length :259984 Вот только смущает Number of channels :16, насколько я понимаю тут должно быть либо 1 либо 2... Добавлено через 9 минут и 59 секунд Ой, тупанул, с Number of channels разобрался, продублировалась строка... Теперь еще небольшой вопрос. Может сталкивался с проигрывание WAV с помощью PortAudio API? |
|||
|
||||
| feodorv |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 12 Всего: 45 |
)))) Спасибо, volatile уже компенсировал На самом деле, плюсик нужно отнести нему ;) Я рад)))
А вот тут, увы, нечем помочь не могу... -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
| ChinaUA |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 12.4.2012 Репутация: нет Всего: нет |
Спасибо и на этом!
Друзья, может кто-нибудь подскажет, как модно воспроизвести WAV под Mac OS? |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |