Сообщения MEDIA IO¶
Различные сообщения, касающиеся работы медиа устройств. Включается: Отладочные логи\Опции\Media обработка.
Открытие, запуск, остановка, закрытие устройств¶
В режиме детализации лога = 0 (Только ошибки) пишутся сведения об открытии, запуске, остановке и закрытии устройств:
00001C10 @ 04-07-2013, 20:24:15.492 @ @ MEDIA_IO @ ADEV_STREAM::Open @ this=9452058 name=MEDIA:Divider:hdmi @ Main
00001C10 @ 04-07-2013, 20:24:15.726 @ @ MEDIA_IO @ ADEV_STREAM::Start @ this=9452058 name=MEDIA:Divider:hdmi @ Main
00001C10 @ 04-07-2013, 20:25:42.679 @ @ MEDIA_IO @ ADEV_STREAM::Stop @ this=9452358 name=MEDIA:Divider:hdmi @ Main
00001C10 @ 04-07-2013, 20:25:42.679 @ @ MEDIA_IO @ ADEV_STREAM::Close @ this=9452358 name=MEDIA:Divider:hdmi @ Main
00001E48 @ 22-05-2013, 18:10:00.000 @ @ MEDIA_IO @ DirectDrawVideoPlayer::Start @ this=F1CB3B8 @ ADEV_MEDIA
00001E48 @ 22-05-2013, 18:50:00.000 @ @ MEDIA_IO @ DirectDrawVideoPlayer::Stop @ this=F1CB3B8 @ ADEV_MEDIA
00001FA4 @ 03-07-2013, 19:02:41.966 @ @ MEDIA_IO @ DirectDrawVideoPlayer @ Open @ Main
00001FA4 @ 03-07-2013, 19:03:50.794 @ @ MEDIA_IO @ DirectDrawVideoPlayer @ Close @ Main
00001C10 @ 04-07-2013, 20:24:05.883 @ @ MEDIA_IO @ ADEV_MULTI_CHAN::Open @ 110 : Name=MEDIA:Divider:hdmi
00001274 @ 04-07-2013, 20:25:42.679 @ @ MEDIA_IO @ ADEV_MULTI_CHAN::Close @ ID=1 Name=MEDIA:Divider:hdmi @ ADEV_MULTI_CHAN
Состояние очереди устройств воспроизведения¶
Сведения о состоянии очереди пишутся раз в минуту в момент перехода на новую минуту.
В режиме детализации лога = 2 (Полсекунды операций чтения после открытия ресурса) в лог пишется информация о заполненности очереди воспроизведения устройств.
00001E48 @ 22-05-2013, 18:40:00.031 @ @ MEDIA_IO @ DirectDrawVideoPlayer::Status @ this=F1CB3B8 empty_frames=11 total_frames=20 @ ADEV_MEDIA
00001E48 @ 22-05-2013, 18:40:00.031 @ @ MEDIA_IO @ MediaDeviceWave::Status @ this=EF85720 empty_frames=0 total_frames=10 @ ADEV_MEDIA
00001E48 @ 22-05-2013, 18:40:00.031 @ @ MEDIA_IO @ MediaDeviceDivider::Status @ this=647DBD0 empty_frames=0 total_frames=10 @ ADEV_MEDIA
где:
- this - идентификатор устройства (адрес)
- empty_frames - не заполненных буферов
- total_frames - всего буферов в очереди
Опустошение очереди не обязательно является проблемой. Например, перед завершением воспроизведения очередь может быть пустой.
Данный вид логов может пригодиться при детальном разборе поведения программы.
Статистика воспроизведения¶
00002380 @ 23-05-2013, 00:03:50.584 @ @ MEDIA_IO @ DirectDrawVideoPlayer @ Drops=4679 Avg(BeginDraw,1067)=0.0 Avg(YuYvToRGB,1067)=2.8 Avg(EndDraw,1067)=0.6 Avg(OnPlayerRenderFrame,5746)=0.1 TotalMs=4399.0 @ DirectDrawPlayerSet
где:
- Drops - количество не прорисованных фреймов
- Avg - среднее значение, потраченное на прорисовку 1 фрейма (в мс)
- BeginDraw - ожидание доступа
- YuYvToRGB - конверсия формата
- EndDraw - перенос сформированного кадра в видео память
- OnPlayerRenderFrame - рендеринг
- TotalMs - суммарное время, потраченное на прорисовку всех фреймов
Статистика воспроизведения пишется в лог в процессе воспроизведения с заданной периодичностью.
Частота вывода статистики в лог настраивается в Сервис\Аппаратное обеспечение\Настройка медиа\DirectDraw\Частота логирования статистики воспроизведения (мин) (по умолчанию - 10).
После записи в лог все параметры сбрасываются. Расчет начинается с нуля.
Опустошение буфера воспроизведения¶
При опустошении вторичного буфера воспроизведения в логе появляются записи вида.
00000DD4 @ 30-05-2013, 09:04:56.654 @ @ MEDIA_IO @ ADEV_STREAM @ GetData error. Seconadry buffer empty. sbuf_l=7140672 sbuf_r=7186536 b_pos=7186536 e_pos=7188300 @ ADEV_MEDIA
00000DD4 @ 30-05-2013, 09:04:56.704 @ @ MEDIA_IO @ ADEV_STREAM @ GetData error. Seconadry buffer empty. sbuf_l=7140672 sbuf_r=7186536 b_pos=7186536 e_pos=7188300 @ ADEV_MEDIA
Это говорит о том, что в воспроизведении была дырка из-за отсутствия данных которые не успели подгрузиться.
sbuf_l, sbuf_r - позиции на таймлайне левой и правой границы текущего состояния буфера (samples)
b_pos, e_pos - позиции на таймлайне левой и правой границы буфера который пытались заполнить для воспроизведения (samples)
Наиболее вероятной причиной данной проблемы может быть длительное время получения данных из источника, которое отмечается в логе записью вида
00000C28 @ 30-05-2013, 09:04:56.324 @ @ Get_AudioData @ @ 281 : MEDIA:Divider:hdmi @ ADEV_STREAM