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, как делает медиаплэйер. |
|