Перейти к публикации
  • Сейчас на странице   Всего пользователей: 0   (0 пользователей, 0 гостей)

Hed-kun

Программирование, т. 6

Рекомендованные сообщения

Вы знаете, Зося.. . на каждого человека, даже партийного, давит атмосферный столб весом в двести четырнадцать кило или шесть турбопаскалей

реквестирую 5 звезд великому комбинатору

Поделиться сообщением


Ссылка на сообщение
(изменено)

del


Изменено пользователем P0JIT0H

Поделиться сообщением


Ссылка на сообщение

Привет, не получается считать wav файл, в чём тут ошибка

#include <stdio.h>
#include <tchar.h>
#include <conio.h>
#include <math.h>
#include <iostream>
#include <fstream>
using namespace std;
struct WAVHEADER
{
// WAV-формат начинается с RIFF-заголовка:
// Содержит символы "RIFF" в ASCII кодировке
// (0x52494646 в big-endian представлении)
char chunkId[4];
// 36 + subchunk2Size, или более точно:
// 4 + (8 + subchunk1Size) + (8 + subchunk2Size)
// Это оставшийся размер цепочки, начиная с этой позиции.
// Иначе говоря, это размер файла - 8, то есть,
// исключены поля chunkId и chunkSize.
unsigned long chunkSize;
// Содержит символы "WAVE"
// (0x57415645 в big-endian представлении)
char format[4];
// Формат "WAVE" состоит из двух подцепочек: "fmt " и "data":
// Подцепочка "fmt " описывает формат звуковых данных:
// Содержит символы "fmt "
// (0x666d7420 в big-endian представлении)
char subchunk1Id[4];
// 16 для формата PCM.
// Это оставшийся размер подцепочки, начиная с этой позиции.
unsigned long subchunk1Size;
// Аудио формат, полный список можно получить здесь http://audiocoding.ru/wav_formats.txt
// Для PCM = 1 (то есть, Линейное квантование).
// Значения, отличающиеся от 1, обозначают некоторый формат сжатия.
unsigned short audioFormat;
// Количество каналов. Моно = 1, Стерео = 2 и т.д.
unsigned short numChannels;
// Частота дискретизации. 8000 Гц, 44100 Гц и т.д.
unsigned long sampleRate;
// sampleRate * numChannels * bitsPerSample/8
unsigned long byteRate;
// numChannels * bitsPerSample/8
// Количество байт для одного сэмпла, включая все каналы.
unsigned short blockAlign;
// Так называемая "глубиная" или точность звучания. 8 бит, 16 бит и т.д.
unsigned short bitsPerSample;
// Подцепочка "data" содержит аудио-данные и их размер.
// Содержит символы "data"
// (0x64617461 в big-endian представлении)
char subchunk2Id[4];
// numSamples * numChannels * bitsPerSample/8
// Количество байт в области данных.
unsigned long subchunk2Size;
// Далее следуют непосредственно Wav данные.
};
int main()
{
FILE *file;
fopen_s(&file, "E:\\bloc_party.wav", "rb");
WAVHEADER header;
fread(&header, sizeof(WAVHEADER), sizeof(WAVHEADER), file);//в этой строчке скорее всего ошибка, т.к дальше он не дебажится
cout<<header.sampleRate;
cout<< header.numChannels;
cout<<header.bitsPerSample;
fclose(file);
return 0;
}

Да, ты прав, ошибка именно в этой строчке :)

Поделиться сообщением


Ссылка на сообщение

я мудак немног)

Поделиться сообщением


Ссылка на сообщение

зачем ты читаешь столько заголовков, сколько байт в структуре заголовка, а не только 1?


Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.
Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью.

Поделиться сообщением


Ссылка на сообщение
(изменено)

зачем ты читаешь столько заголовков, сколько байт в структуре заголовка, а не только 1?

я мудак немног)

 

Я до сих пор не могу на что влияет параметр count, в функции fread(),

count - Максимальное количество элементов, которые требуется прочитать.

Что это значит, я меняю это значение оно ни на что не влияет, зачем вообще он нужен, (файл откуда берём информацию есть, обьект куда записываем то же,размер записываемого блока так же, что ещё нужно?)?


Изменено пользователем P0JIT0H

Поделиться сообщением


Ссылка на сообщение

зачем ты читаешь столько заголовков, сколько байт в структуре заголовка, а не только 1?

я мудак немног)

 

Я до сих пор не могу на что влияет параметр count, в функции fread(),

count - Максимальное количество элементов, которые требуется прочитать.

Что это значит, я меняю это значение оно ни на что не влияет, зачем вообще он нужен, (файл откуда берём информацию есть, обьект куда записываем то же,размер записываемого блока так же, что ещё нужно?)?

clarity

Поделиться сообщением


Ссылка на сообщение

типа ты читаешь размер объекта WAVHEADER, хотя физически количество байт хидера может быть другое. тк объект это программная оболочка для абстрактного вавхидер и они могут быть совершенно разными по размеру

это было бы справедливо если бы в файл записывалась сериализация объекта вавхидер

бля я посмотрел там struct. неибу как там это. но вообще говоря в вав файле все должно быть стандартно расписано, а в программе int может быть 4 или 8 байт в зависимости от разрядности машины под которую компилируется

а блять там нету инт есть лонг/шорт

тогда вообще хз

 

я кстати не понял в чем проблема продебажить каждый шаг и посмотреть что в исходном файле и что в полученной структуре и сравнить побайтово ?

 

и что значит "дальше не дебажится"?


 

очень крутые котейки

RqvSzvr.png


Кому-то пизды дал - нужно сделать скрин обязательно. (с) Solo

Поделиться сообщением


Ссылка на сообщение

блять что он несет

Поделиться сообщением


Ссылка на сообщение

блять что он несет

я несу то что программная структура WAVHEADER не факт что 1в1 соответствует структуре последовательности байт в файле

 

очень крутые котейки

RqvSzvr.png


Кому-то пизды дал - нужно сделать скрин обязательно. (с) Solo

Поделиться сообщением


Ссылка на сообщение
(изменено)

зачем ты читаешь столько заголовков, сколько байт в структуре заголовка, а не только 1?

я мудак немног)

 

Я до сих пор не могу на что влияет параметр count, в функции fread(),

count - Максимальное количество элементов, которые требуется прочитать.

Что это значит, я меняю это значение оно ни на что не влияет, зачем вообще он нужен, (файл откуда берём информацию есть, обьект куда записываем то же,размер записываемого блока так же, что ещё нужно?)?

Хз как в С++, но в С определенние функции такое

 

Declaration:

size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);

Reads data from the given stream into the array pointed to by ptr. It reads nmemb number of elements of size size. The total number of bytes read is (size*nmemb).

On success the number of elements read is returned. On error or end-of-file the total number of elements successfully read (which may be zero) is returned.

 

 

Т.е. эта штука читает из файла nmemb блоков, каждый из которых размером size. Допустим sizeof(header)=50байт, Кант те сказал, нахуй ты читаешь 50 блоков по 50 байт, когда блок у тебя всего один. Ну и nmemb естественно вляет на результат

Эта штука запишет в header условно 50 байт

fread(&header, sizeof(WAVHEADER), 1, file);

 

А эта запишет 50 байт в хедер и еще 2450 байт в память, следующую за header, т.к. С не проверяет границы массивов и структур. Если конечно в файле столько есть.

fread(&header, sizeof(WAVHEADER), sizeof(WAVHEADER), file);


Изменено пользователем .felix

Поделиться сообщением


Ссылка на сообщение

програмеры D

мб код кто поправит на приложении продоты под андройд?

двапой закинул туда кучу юзеров, хуевых и не очень теперь они вообще там не отображаются, приложение скрывает их

мб кто займется?


MjbDYgI.jpg

Поделиться сообщением


Ссылка на сообщение

програмеры D

мб код кто поправит на приложении продоты под андройд?

двапой закинул туда кучу юзеров, хуевых и не очень теперь они вообще там не отображаются, приложение скрывает их

мб кто займется?

ну если двапой закинул,может они и правда хуевые

 

и не очень


Публикация отключена

Поделиться сообщением


Ссылка на сообщение
(изменено)

.


Изменено пользователем Tvsjkeee

Здравствуйте, мы тут навеселе, а у вас такие лица будто вы посетили музей

Поделиться сообщением


Ссылка на сообщение
(изменено)

Кстати, чуточку оффтопа поцаны. До этого я вам пилил кулстори про свой ахуенный город и кидал ссылки на блог варламова. Но там был лютый софткор для детей. Полез гуглить весенние фотки и там восьмой в выдаче фото моего двора весной (мой дом - 9этажка справа) :pray: :pray: :pray: Я когда в веб-студии работал каждый день через эту хуйню пробирался до работы (иногда уходило по несколько минут на то чтобы ебанутыми путями пройти все это). Да и когда на учебу ходил тоже через подобную хуйню плавал :buba:

 

Шок-контент

DktJzt3RY_g.jpg

 


Изменено пользователем suez

userbar-53933.png

http://codepen.io/suez/ - they see me bydlocoding, they hatin.

Поделиться сообщением


Ссылка на сообщение

что-то пиздец мусорка. сейчас не поменялось что-либо?


 

4Ht5T.jpg

 

8FegEdj.jpg

Поделиться сообщением


Ссылка на сообщение

норм тема

зато можно вместо походов в бассейн прям во дворе плавать, охуенно же

Поделиться сообщением


Ссылка на сообщение

что-то пиздец мусорка. сейчас не поменялось что-либо?

Я думаю скинутое мной фото этого или прошлого года от силы. Сколько тут живу, тут всегда одно и тоже. Разве что некоторые лужи с каждым годом все больше становятся :nate:


userbar-53933.png

http://codepen.io/suez/ - they see me bydlocoding, they hatin.

Поделиться сообщением


Ссылка на сообщение

норм тема

зато можно вместо походов в бассейн прям во дворе плавать, охуенно же

главное хлор добавить :buba:


 

4Ht5T.jpg

 

8FegEdj.jpg

Поделиться сообщением


Ссылка на сообщение
Гость
Эта тема закрыта для публикации сообщений.

×
×
  • Создать...