Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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.037 c
10-1074661134
user
2004-01-21 07:58
2004.12.26
Про DCOM


3-1101899105
ksa2002
2004-12-01 14:05
2004.12.26
Редактирование DBGrid


1-1102737612
Dema-X
2004-12-11 07:00
2004.12.26
XPManifest как применить свою тему?


11-1084318593
Dilma
2004-05-12 03:36
2004.12.26
Как сделать табуляцию у элементов контейнеров?


14-1101983506
Ega23
2004-12-02 13:31
2004.12.26
Сахарный диабет





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский