Главная страница
    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
3-1101467614
WellSlava
2004-11-26 14:13
2004.12.26
установка формата даты


1-1102502874
mefisto
2004-12-08 13:47
2004.12.26
Вставка в ячейку DBGrid иконки 16х16 или Bitmap


14-1102265892
Piter
2004-12-05 19:58
2004.12.26
Что такое RSS?


9-1093097593
Колбасьев
2004-08-21 18:13
2004.12.26
Фон в 3D игре


1-1102856803
Павел
2004-12-12 16:06
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский