Интернет магазин музыки, mp3 почтой, заказать mp3 диски

баннер интернет-магазина ножей nifovka.ru

RSS - RSS,
Карта сайта

Rambler's Top100

Написать на e-mail © 2007-2012 г.

Столешницы ! Искусственный камень - монтаж искусственного камня. Искусственный камень KAMROCK.



Теги страницы:

После того как вы создали вторичный буфер, вы должны заполнить его данными. Для того чтобы это сделать, прежде всего, надо «запереть» буфер вызовом Lock метода из Lock сообщает, что вы готовы начать модифицировать содержимое буфера. Когда вы вызываете Lock, вы получаете указатель на сам буфер. Если bitspersample равен восьми, вы должны привести указатель, который вам выдаст DirectSound, к unsigned char. Теперь можете заполнять буфер байтами. После того как вы это сделаете, вы должны будете «открыть» буфер (посредством вызова Unlock).

Код начинается с замыкания буфера посредством вызова Lock метода из IdiectSotrndBnffer Он передает первый байт, который он хочет модифицировать (zero), и общее число байт, которое он хочет модифицировать (т. е. buftersize, потому что он воздействует на весь буфер). Возможно, вас удивит, что, когда вы запираете что-то с помощью Lock, вы получаете не один, а целых два указателя. Это должно помочь вам при семплинге. Задаете начальный байт и длину таким образом, чтобы она превысила длину вашего буфера. Например, вы вполне можете определить I 00- байтовый буфер, а потом запросить 50 байт, начиная с 75. Вы, должно быть, думаете, что это что-то неправильное, потому что, если мы начнем с 75 байта, у нас остается только 25, но, вместо этого, DirectSound «прокручивает» буфер.

Если вы запрашиваете 50 байт, начиная с 75 байта в 100-байтовом буфере, вы получите от DirectSound два указателя. Первый указатель указывает на область с 75 по 99 байт. Второй указатель указывает на область с 0 до 39 байта. Не правда ли, замечательно? Автоматически прокручивая для вас буфер, DirectSound освобождает вас от необходимости создавать два цикла замыкание/заполнение/размыкание. Если то, что вы запираете, не будет прокручиваться, вы можете просто обнулить второй указатель и использовать только первый. Именно это и делает пример программы генератора звуков. Как бы там ни было, когда вы будете это использовать, вы захотите передать Lock методу два буфера и два размера. Обращайте внимание на то, что вам возвращается, чтобы вы легко могли управлять ситуацией с прокручиванием.

Метод Lock допускает использование пары полезных флагов. DSBLOCK ENTJRE-BOF говорит, что нужно запереть целый буфер. Я не имел ввиду тот флаг в примере программы, потому что хотел подробно показать вам, как запирать байты но в обычном приложении вам нужно будет его использовать вместо выставления в ноль первого байта и размера буфера в качестве длины. Второй флаг - это DSBLOCK_FROMWRITECURSOR, который сообщает DirectSound, что вы хотите начать писать с того места, где в прошлый раз закончили. Это похоже на запись в файл и очень практично.