Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Мультимедиа
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 06.07.2012, 14:57
JekaDefer JekaDefer вне форума
Прохожий
 
Регистрация: 05.07.2012
Сообщения: 5
Версия Delphi: 7
Репутация: 10
По умолчанию Проблема с указателем на буфер...

Задача вообще всего этого: есть одномерный массив AllSamples, в котором сэмплы на всю звуковую дорожку(т.е. не на одну секунду а на все) и вот нужно теперь чередуя массив Second[0, 0..7999] и Second[1, 0..7999] отыграть все сэмплы массива AllSamples. Попробовал так:
Код:
Код:
type
  int16 = smallint;
Var
  hdr: array[0..1] of WAVEHDR;
  AllSamples: array of Int16;
  Second: array[0..1, 0..7999] of int16;
  CheckSec: Boolean;                 
  CurSec: Byte;                      
...

WaveOutOpen(@wout, cardinal(-1), @fmt, 0, 0, 0);
  if (0 <> wout) then
  begin
    CheckSec:= False;
    For i:= 0 to nBlocks-1 do
    Begin
      if CheckSec then CurSec:= 1 else CurSec:= 0;

      For j:= 0 to SPS-1 do
      Begin
        if (i = nBlocks-1) and (j+SPS*i > Length(AllSamples)-1) then Second[CurSec, j]:= 0 else Second[CurSec, j]:= AllSamples[j+(SPS)*i];
      End;

      fillChar(hdr[0], sizeof(hdr[CurSec]), #0);
      hdr[CurSec].lpData := @second[CurSec];
      hdr[CurSec].dwBufferLength := sizeof(second[CurSec]);

      waveOutPrepareHeader(wout, @hdr[CurSec], sizeof(hdr[CurSec]));
      WaveOutWrite(wout, @hdr[CurSec], sizeof(hdr[CurSec]));
      CheckSec:= NOT CheckSec;
    End;
    waveOutUnprepareHeader(wout, @hdr, sizeof(TWAVEHDR));
    WaveOutClose(wout);
  end;
Сам массив Second заполняется весь как надо и и если на последней секунде дорожка кончилась то остаток заполняется нулями. то есть все как надо, но вот как теперь правильно указать на этот чередующийся массив головке?
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 21:00.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter