Project

General

Profile

Сообщения 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

Add picture from clipboard (Maximum size: 742 MB)