Форум программистов, компьютерный форум CyberForum.ru

Какой тип данных использовать для хранения сэмплов? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Программа с используванием структуры http://www.cyberforum.ru/cpp-beginners/thread684410.html
Я в С++ новичок. Помогите с заданием пожалуйста: Разработать текст программы с использованием структуры, содержащей строковые, цели и дробные данные. В программе выполняется заполнения строк (с клавиатуры или из файла). Сортировка строк в направлении увеличения или уменьшения Третий символ в срочных данных и вывода на экран группы строк таблицы с одинаковыми третьего символа. Заранее...
C++ массив строк Создать массив строк и без перестановки строк вывести их в отсортированном порядке. Кто сможет объяснить как делать или показать пример, буду благодарен. на с++ http://www.cyberforum.ru/cpp-beginners/thread684403.html
Вычислить сумму заштрихованных элементов матрицы показанных на рисунке. C++
Вычислить сумму заштрихованных элементов матрицы показанных на рисунке. помогите написать прогу очень нужно!!! искал на форуме точно такой нигде нету(( рисунок вот. http://www.cyberforum.ru/attachment.php?attachmentid=191420&stc=1&d=1350393908
C++ как написать данную программу через функцию?
#include <stdio.h> #include <conio.h> #include <math.h> main() { int i,a=0; float k=0,M; for(i=0;i<=19;i++) { printf("Vvedite %d-i elemment",i);
C++ Программа удаляющая комментарии из листинга программы С++ http://www.cyberforum.ru/cpp-beginners/thread684390.html
помогите пожайлуста , никак не могу разобраться. Создать програму, какая будет удалять с кода програмы языка С++ (файл *.cpp) коментарии вида /* блаблабла */. Для работы с файлами использовать cstdio
C++ Объясните почему так Когда я ввожу следующие числа: x = 2222222222 n = 3333333333 И x = 2222222221 (один знак поменяли) n = 3333333333 То ответы выходя одинаковые. С чем это связано? подробнее

Показать сообщение отдельно
Niaden
0 / 0 / 0
Регистрация: 05.10.2012
Сообщений: 15
30.10.2012, 18:59     Какой тип данных использовать для хранения сэмплов?
Добрый день. Начал изучать формат .wav. Хочу прочитать его заголовок, ну и, собсно, данные. С заголовками все ясно.
А какой тип данных мне использовать для сэмплов, чтобы был доступ к каждому сэмплу?
или доступ к каждому сэмплу не нужен? и достаточно будет двухбайтового short int?
Начал юзать прогу 010 Editor - реадер двоичных файлов. там представляется структура читаемого файла. Эта прога написана на Си и вот там для хранения сэмплов используется short.


Вот прога для считывания данных с файла .wav. Считываю данные и проверяю, правильно ли считалось методом вывода прочитанного на консоль и сверки с байтами файла аааа.wav в проге 010 Editor. В конце проги динамически выделяю массив short. Прога работает, но насчет типа данных для сэмплов я не уверен. нужен ли доступ к 1му сэмплу? или можно обойтись к доступу к паре сэмплов?

В дальнейшем планирую считанные дата закодировать хаффманом и перегнать в другой формат аудио. мб lossless.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include <iostream>
 
using namespace std;
 
struct Wav_Header
{
    char Wav_ChunkId[4];
    int Wav_ChunkSize;
    char Wav_Format[4];
    char Wav_SubChunkId[4];
    int Wav_SubChunkSize;
    short int Wav_AudioFormat;
    short int Wav_NumChannels;
    int Wav_SampleRate;
    int Wav_ByteRate;
    short int Wav_BlockAlign;
    short int Wav_BitPerSample;
    char Wav_SubChunk2Id[4];
    int Wav_SubChunk2Size;
};
 
int main()
{
    FILE *rd_wav;
    Wav_Header ob1;
    cout<<sizeof(short)<<endl;
    if ((rd_wav=fopen("c:\\aaaa.wav","rb"))==NULL)
        {
        fprintf(stderr,"owibka otkritiya faila dlya 4teniya");
        return 1;
        }
 
    fread(&ob1,sizeof(ob1),1,rd_wav);
    cout<<ob1.Wav_ChunkSize<<endl;
    for (int i=0; i<4; i++)
        cout<<ob1.Wav_ChunkId[i];
    cout<<'\n';
    for (int i=0; i<4; i++)
        cout<<ob1.Wav_Format[i];
    cout<<'\n';
    for (int i=0; i<4; i++)
        cout<<ob1.Wav_SubChunkId[i];
    cout<<'\n';
    cout<<ob1.Wav_SubChunkSize<<endl;
    cout<<ob1.Wav_AudioFormat<<endl;
    cout<<ob1.Wav_NumChannels<<endl;
    cout<<ob1.Wav_SampleRate<<endl;
    cout<<ob1.Wav_ByteRate<<endl;
    cout<<ob1.Wav_BlockAlign<<endl;
    cout<<ob1.Wav_BitPerSample<<endl;
    for (int i=0; i<4; i++)
        cout<<ob1.Wav_SubChunk2Id[i];
    cout<<'\n';
    cout<<ob1.Wav_SubChunk2Size<<endl;
    short* buffer=new short [ob1.Wav_SubChunk2Size/2];
    fread(buffer, 2, ob1.Wav_SubChunk2Size/2, rd_wav);
    cout<<"buffer1="<<buffer[0]<<endl;
    cout<<"buffer2="<<buffer[1]<<endl;
    delete [] buffer;
    fclose(rd_wav);
    return 0;
}
Добавлено через 41 минуту
тупанул)
дело в поле BitPerSample и в том, что в базовых кодерах-декодерах идет 16 бит на сэмпл) поэтому и юзают везде short.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 00:17. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru