С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

Побитная запись в контейнер wav - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как исполльзовать оператор goto? http://www.cyberforum.ru/cpp-beginners/thread1104039.html
Как его юзать?
C++ Классы и объем ОЗУ Помогите пожалуйста с задачей... Создать класс таким образом, чтобы он отслеживал количество существующих в данный момент объектов и объем оперативной памяти, который они занимают. Указание:... http://www.cyberforum.ru/cpp-beginners/thread1104010.html
ПРограмма определяет цвет пикселя по координатам C++
В dev c++ пишу программу, которая определяет координаты, где сейчас находится мышь и цвет пикселя, находящегося в этих координатах. Что надо дописать, чтобы третьей строчкой выводился на экран цвет...
Задача про комплексные числа(закрытые переменные) C++
Нужна срочно ваша помощь, помогите не смыслящему человеку:cry:, модифицировать программу таким образом, чтобы класс содержал закрытые переменные. Код готов. И еще проблема в программе есть когда...
C++ Ввести несколько структур типа «Зачетка студента» http://www.cyberforum.ru/cpp-beginners/thread1103965.html
Вот условие задачи: Ввести несколько структур типа «Зачетка студента» с полями {Фамилия студента Номер зачетки Массив из 4 оценок } Написать программу, выполняющую следующие действия:...
C++ Посоветуйте, как найти мёртвый код Интересуют целые мёртвые функции. подробнее

Показать сообщение отдельно
THE--MASTER
Заблокирован
24.02.2014, 17:56
так и быть, ща потрачу время ... всё равно работать сегодня мне влом )))

Добавлено через 30 минут
Да прибудет со мной сила

C++
1
2
3
4
5
6
7
8
9
10
#include <tchar.h>
#include "WavProcessor.h"
 
int _tmain(int argc, _TCHAR* argv[])
{
    WavProcessor wp;
    if(wp.ReadWav(L"C:\\1.wav"))
        wp.SaveWav(L"C:\\out.wav");
    return 0;
}
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
#pragma once
#include <string>
#include <fstream>
 
struct WAVHEADER
{   
    char chunkId[4];
    unsigned long chunkSize;    
    char format[4]; 
    char subchunk1Id[4];    
    unsigned long subchunk1Size;    
    unsigned short audioFormat; 
    unsigned short numChannels; 
    unsigned long sampleRate;   
    unsigned long byteRate; 
    unsigned short blockAlign;  
    unsigned short bitsPerSample;   
    char subchunk2Id[4];    
    unsigned long subchunk2Size;    
};
 
class WavProcessor
{
public:
    WavProcessor();
    ~WavProcessor();
 
    bool ReadWav(std::wstring fileName);
    bool SaveWav(std::wstring targetFileName);
 
private:    
    WAVHEADER *wh;
    short *waveData;
    size_t dataLen;
};
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
#include "WavProcessor.h"
 
 
WavProcessor::WavProcessor() : wh(0), waveData(0)
{
}
 
 
WavProcessor::~WavProcessor()
{
    if(wh)
        delete wh;
    if(waveData)
        delete waveData;
}
 
bool WavProcessor::ReadWav( std::wstring fileName )
{   
    if(wh)
        delete wh;
    if(waveData)
        delete waveData;
 
    std::fstream fs(fileName.c_str(), std::ios::in | std::ios::binary);
    if(!fs.is_open())
        return false;
 
    wh = new WAVHEADER;
    fs.read((char*)wh, sizeof(WAVHEADER));      
    dataLen = wh->subchunk2Size;
    waveData = new short[dataLen];
    fs.read((char*)waveData, dataLen);
    //ЭЙ Sonance, в общем смари. В 16 bit каждое значение signed short
    //В стерео режиме данные идут так: 2 байта лево, 2 байта право, 2 байта лево, 2 байта право
    //Ну это на тот случай, если ты захочешь что - то с этими данными делать ....
    //Не забудь мне плюсиков под моим ником поставить и записать мне "лучший ответ" :-))))))))))
    fs.close();
    
    return true;
}
 
bool WavProcessor::SaveWav( std::wstring targetFileName )
{
    if(!waveData || !wh)
        return false;
 
    std::fstream fs(targetFileName.c_str(), std::ios::out | std::ios::binary);
    if(!fs.is_open())
        return false;
 
    fs.write((char*)wh, sizeof(WAVHEADER));
    fs.write((char*)waveData, dataLen);
    fs.close();
 
    return true;
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.