Форум: "KOL";
Текущий архив: 2004.12.26;
Скачать: [xml.tar.bz2];
ВнизKOL + Ogg Vorbis Найти похожие ветки
← →
Stargazer © (2004-05-13 14:32) [0]Я тут прикрутил Ogg Vorbis к своей проге, следуя рекомендациям
http://www.devmaster.net/articles/openal-tutorials/lesson8_delphi.zip
Чего-то захотелось мне переделать весь пример под КОЛ.
В примере используется TFileStream (в дистрибуте FPC как раз нашёлся такой компонент), и мне подумалось - можно ли использовать КОЛ-овский TStream для Vorbis"овской функции ov_read. Махнул не глядя, результат - жуткое зависание (если юзать TFileStream - то работает нормально, но с нюансами, в частности, иногда падает при вызове метода Free).
А вопрос мой как раз про это - что это за зверь, TFileStream и можно ли в КОЛ найти аналог ентому?
С уважением.
← →
SPeller © (2004-05-13 18:58) [1]NewReadFileStream, NewWriteFileStream, NewReadWriteFileStream.
← →
Stargazer © (2004-05-13 23:24) [2]Вот, вот, именно NewReadFileStream и делал. Получил зависание.
TFileStream проходит, а PStream - нет. Выходит, они не совместимы.
← →
Gandalf © (2004-05-13 23:53) [3]Код в студию или на мыло...
← →
Stargazer © (2004-05-14 01:18) [4]И было так...
if Assigned(OggFile) then OggFile.Free;
if NOT FileExists(pFileName) then begin
ShowMessage("File not found!");
Halt(0);
End;
OggFile := TFileStream.Create(pFileName, fmOpenRead); //
Потом стало так:
if Assigned(OggFile) then OggFile.Free;
if NOT FileExists(pFileName) then begin
ShowMessage("File not found!");
Halt(0);
End;
OggFile := NewReadFileStream(pFileName); // поменялось только здесь
Аж экран чернеет после такой замены...
С уважением.
← →
Stargazer © (2004-05-14 01:19) [5]А, ну и забыл упомянуть, что
OggFile : TFileStream
заменён наOggFile : PStream
Всё.
← →
SPeller © (2004-05-14 03:12) [6]А отладнкой не проходил, где зависает, на какой строке?
← →
Stargazer © (2004-05-14 20:01) [7]С ума сходит ogg-овская функция ov_read:
res := ov_read(OggStream, PByteArray(data)^[size], self._bufferSize - Size, 0, 2, 1, @Section);
Пишет, что неизвестная ошибка ogg. Такие дела. Пришлось возвернуть TFileStream. Такое ощущение, что для ogg КОЛ-овский PStream - чужеродное тело.
С уважением.
← →
Vladimir Kladov (2004-05-14 20:55) [8]Конечно чужеродное. Как описан тип параметра OggStream в декларации ov_read? Надо чтобы был именно KOL.PStream, и чтобы ov_read обращался к методам KOL.PStream. Если он будет обращаться к нему как к VCL.TStream, ерунда получится. Гарантированно.
← →
Stargazer © (2004-05-14 22:32) [9]Владимир, спасибо за ответ.
Я всё запутал! Извините, плизз.
Переменная OggFile типа TFileSTream используется в функции:
function ov_open_callbacks(const datasource; var vf: OggVorbis_File; initial: PChar; ibytes: long; callbacks: ov_callbacks): int; cdecl; external VorbisfileLib;
Первый параметр он и есть, datasource.
Как упомянуто автором примера для Delphi,
we can"t use ov_open in Delphi, as this function works with C-file handles.
So we use ov_open_callbacks instead which uses a filestream.
Всё что мне приходит в голову, так это поменять тип datasource, как вы и посоветовали. Не уверен, что это есть хорошо - но "попытка не пытка" :)
Страницы: 1 вся ветка
Форум: "KOL";
Текущий архив: 2004.12.26;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.036 c