C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
MediaPlayer, Непонятная особенность работы MediaPlaye
tsl
Отправлено: 22.12.2003, 15:26


Дежурный стрелочник

Группа: Участник
Сообщений: 65



Следующий код поглощает память 1 мегабайт в две минуты на Duron1000.
while (true)
{
MediaPlayer->FileName = "Cinema.avi";
MediaPlayer->Enabled = true;
MediaPlayer->Open();
MediaPlayer->Play();
MediaPlayer->Stop();
MediaPlayer->Close();
}
Объясните в чем дело. Эта осоденность в некоторых приложениях приводит к зависанию.
pasha
Отправлено: 22.12.2003, 18:26


Дежурный стрелочник

Группа: Участник
Сообщений: 62



А если создавать его динамически, а потом грохать ?

CODE

TMediaPlayer* tm = new TMediaPlayer(Form1);
    ....
   
delete tm;
tsl
Отправлено: 23.12.2003, 03:17


Дежурный стрелочник

Группа: Участник
Сообщений: 65



"Создавать динамически а потом грохать" не помогло. Т.е. совсем не улучшило ситуацию. Более того определил код меньшего размера, который хоть и медленее, но тоже ест память.
while(true)
{
MediaPlayer->Rewind();
MediaPlayer->Play();
}
tsl
Отправлено: 27.12.2003, 00:28


Дежурный стрелочник

Группа: Участник
Сообщений: 65



Сам разгадал загадку. В MediaPlayer есть глюк, который проявляет себя при некоторых способах сжатия. Я определил, что глюк есть при сжатии с помощью кодека DivX. Глюк отсутствует, если сжатие не использавать или использовать MS-MPEG4 V2.

Интересно, что DivX не воспроизводится TAnimate без MediaPlayer. Возможно корни глюка лежат именно в этом.
fellow
Отправлено: 27.12.2003, 07:11


Не зарегистрирован







Наверное, DivX лучше воспроизводить через DirectShow, чем с помощью MCI, как делает медиаплэйер.

Вернуться в Вопросы программирования в C++Builder