LINUX.ORG.RU

libvdpau-va-gl

 , , ,


33

20

https://github.com/i-rinat/libvdpau-va-gl/releases

В двух словах, это VDPAU драйвер, который использует OpenGL для рисования и VA-API для декодирования видео.

VDPAU это открытый интерфейс, который подразумевает единую точку входа (libvdpau) и подключаемые драйверы; API не замкнуто накоротко на nVidia. Выбор конкретного драйвера осуществляется либо через переменную окружения VDPAU_DRIVER, либо спрашивается у X-сервера. Если так или иначе получить имя не удалось, считается, что оно есть «nvidia». Драйвер представляет собой разделяемую библиотеку с именем вида libvdpau_<drivername>.so.1. Программы линкуются с libvdpau, а она в свою очередь загружает нужный драйвер.

Чтобы использовать, нужно собрать, положить библиотеку в директорию, где её сможет найти компоновщик, и добавить в окружение переменную VDPAU_DRIVER=va_gl. Проверить, что драйвер работает, можно запустив vdpauinfo. А vainfo покажет, работает ли драйвер VA-API.

На видеокартах AMD по чудаковатым причинам происходят падения внутри XCloseDisplay. Чтобы обойти проблему, нужно в переменную VDPAU_QUIRKS добавить строку XCloseDisplay. Элементы в VDPAU_QUIRKS перечисляются через запятую, слитно, без пробелов и служат для тонкой настройки поведения драйвера. Кроме XCloseDisplay, есть ещё параметр ShowWatermark, включающий отображение строки va_gl в правом нижнем углу. Полный список можно найти в README.md.

Начиная с версии 2.99.908 xf86-video-intel сообщает переходнику libvdpau.so имя VDPAU драйвера. Символьных ссылок
libvdpau_i965.so.1libvdpau_va_gl.so.1
libvdpau_i915.so.1libvdpau_va_gl.so.1
достаточно для загрузки, и необходимости в использовании VDPAU_DRIVER больше нет.

★★★★★

Последнее исправление: i-rinat (всего исправлений: 12)

В intel'овском драйвере (тот, что в user-space) творится просто какой-то ад. На 1200 декодированных кадров malloc был вызван более полутора миллиона раз. Каждую секунду в ядро улетает около 7000 ioctl (около 300 на кадр). На каждую операцию делается сброс очереди, причём по нескольку раз разными частями кода, 13 раз в среднем. Каждый сброс очереди вызывает какую-то перетряску объектов внутри libdrm_intel. Причём такое творится только для декодирования видео, в 3d всё прилично.

i-rinat ★★★★★
() автор топика
Последнее исправление: i-rinat (всего исправлений: 1)

Собрал и потестировал с mplayer -vc ffh264vdpau с роликами скачанными из ютуба. Нагрузка на процессор уменьшается. Пробовал так же на фильмах которые попались под руку. Все работает и заметно снижение нагрузки на процессор с ~ 20% до ~4. Попробую потестировать детальней.

Проверял на Radeon 7950 с блобом 13.1.

В исходниках не нашел об лицензии. Можешь уточнить под какой лицензией намерен распространять исходники?

Behem0th ★★★★★
()
Последнее исправление: Behem0th (всего исправлений: 1)
Ответ на: комментарий от Behem0th

Лучше б ты говнокодеров подтягивал, а сконпелять каждый лох сможет.

anonymous
()
Ответ на: комментарий от Behem0th

при проигрывании роликов напрямую с ютуба появились синие лица.

В файле

/etc/vdpau_wrapper.cfg
есть параметры
enable_flash_uv_swap=1
disable_flash_pq_bg_color=1
Попробуй их значения поменять, особенно первый.

i-rinat ★★★★★
() автор топика
Ответ на: комментарий от i-rinat

Синие лица были в rekonq, с этими же настройками в firefox все нормально. Но с лисой другая проблема. Плагин падает при попытке изменит размер видео, либо переводя в фулскрин либо нажав вторую справа кнопку(расширяет видео).

При закрытии окна mplayer'а выдает следующий текст в консоль:

MPlayer interrupted by signal 11 in module: uninit_vo
- MPlayer crashed by bad usage of CPU/FPU/RAM.
  Recompile MPlayer with --enable-debug and make a 'gdb' backtrace and
  disassembly. Details in DOCS/HTML/en/bugreports_what.html#bugreports_crash.
- MPlayer crashed. This shouldn't happen.
  It can be a bug in the MPlayer code _or_ in your drivers _or_ in your
  gcc version. If you think it's MPlayer's fault, please read
  DOCS/HTML/en/bugreports.html and follow the instructions there. We can't and
  won't help unless you provide this information when reporting a possible bug.

Behem0th ★★★★★
()
Последнее исправление: Behem0th (всего исправлений: 1)
Ответ на: комментарий от Behem0th

Можешь уточнить под какой лицензией намерен распространять исходники?

Выдавил в master-ветку на github. LGPLv3.

i-rinat ★★★★★
() автор топика
Ответ на: комментарий от Behem0th

могу пересобрать с --enable-debug

В данном случае нет необходимости пересобирать mplayer. Надо только пересобрать libvdpau-va-gl с 'cmake -DCMAKE_BUILD_TYPE=Debug ..' (или просто 'cmake ..'). И запустить потом mplayer под gdb:

$ VDPAU_LOG=0 gdb --args mplayer -vc ffh264vdpau /path/to/video/file.mkv

Когда упадёт, gdb покажет свой prompt. В его строке набираешь bt и он выдаёт backtrace. Вот его хотелось бы посмотреть.

VDPAU_LOG=0 нужно, чтобы не вываливались тонны трассировочных сообщений.

i-rinat ★★★★★
() автор топика
Ответ на: комментарий от i-rinat
(gdb) bt
#0  0x00000000 in ?? ()
#1  0xb3af71bc in ?? () from /usr/lib/libatiadlxx.so
#2  0xb72f1103 in XCloseDisplay () from /usr/lib/libX11.so.6
#3  0xb616ec95 in softVdpDeviceDestroy (device=device@entry=1) at /home/behem0th/AUR/mm/libvdpau-va-gl-git/src/libvdpau-va-gl-build/vdpau-soft.c:1918
#4  0xb617420b in lockedVdpDeviceDestroy (device=1) at /home/behem0th/AUR/mm/libvdpau-va-gl-git/src/libvdpau-va-gl-build/vdpau-locking.c:625
#5  0x080e7736 in ?? ()
#6  0x080b3f7d in ?? ()
#7  0x080b4059 in ?? ()
#8  0x080ae079 in ?? ()
#9  0x080a45fe in ?? ()
#10 0xb6ceb7c3 in __libc_start_main () from /usr/lib/libc.so.6
#11 0x080a72bd in ?? ()
Behem0th ★★★★★
()
Ответ на: комментарий от Behem0th

Мда не информативненько. в арче макепкдж по умолчанию удаляет отладочную информацию. Это вывод с пересобранным мплеером с --enable-debug и без стрипа.

(gdb) bt
#0  0x00000000 in ?? ()
#1  0xb3a291bc in ?? () from /usr/lib/libatiadlxx.so
#2  0xb7295103 in XCloseDisplay () from /usr/lib/libX11.so.6
#3  0xb606bc95 in softVdpDeviceDestroy (device=device@entry=1) at /home/behem0th/AUR/mm/libvdpau-va-gl-git/src/libvdpau-va-gl-build/vdpau-soft.c:1918
#4  0xb607120b in lockedVdpDeviceDestroy (device=1) at /home/behem0th/AUR/mm/libvdpau-va-gl-git/src/libvdpau-va-gl-build/vdpau-locking.c:625
#5  0x080de906 in DestroyVdpauObjects () at libvo/vo_vdpau.c:1147
#6  uninit () at libvo/vo_vdpau.c:1166
#7  0x080b120d in uninit_player (mask=7883, mask@entry=65535) at mplayer.c:606
#8  0x080b12a9 in exit_player_with_rc (how=how@entry=EXIT_QUIT, rc=0) at mplayer.c:698
#9  0x080abd91 in run_command (mpctx=mpctx@entry=0x8b57c60 <mpctx_s>, cmd=cmd@entry=0xac36cf0) at command.c:2759
#10 0x080a3003 in main (argc=4, argv=0xbffff604) at mplayer.c:3932

Behem0th ★★★★★
()

Что то мне не нравится что у меня профилей маловато. Или так и должно быть?

behem0th@ArchLinux ~ :( $ vainfo 
libva info: VA-API version 0.33.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib/dri/fglrx_drv_video.so
libva info: Found init function __vaDriverInit_0_32
libva info: va_openDriver() returns 0
vainfo: VA-API version: 0.33 (libva 1.1.0)
vainfo: Driver version: Splitted-Desktop Systems XvBA backend for VA-API - 0.7.8
vainfo: Supported profile and entrypoints
      VAProfileH264High               : VAEntrypointVLD
      VAProfileVC1Advanced            : VAEntrypointVLD

vdpauinfo

http://paste.kde.org/718604/

При переключении мплеера в фулскрин темные полосы сверху и с низу экрана заполняются артефактами.

http://www.youtube.com/watch?v=96GAOiQIOV0

Если за контент ютуб не порежет.

Behem0th ★★★★★
()
Ответ на: комментарий от Behem0th

Мда не информативненько

Проверил я на amd с каталистом. Рушится после того как вызывается XCloseDisplay при закрытии vdp устройства. Это явно глюк драйвера, он не должен падать вообще ни от чего. Я ещё понимаю, если бы я внутрь NULL передавал, так нет, корректный указатель. Таких случаев гуглится много, но нигде не понятно, что надо сделать, чтобы исправить. Похоже, придётся workaround добавлять. Наверняка к утечкам приведёт :(

i-rinat ★★★★★
() автор топика
Ответ на: комментарий от Behem0th

Что то мне не нравится что у меня профилей маловато. Или так и

должно быть?

Это потому что VA-API работает через переходник. Кстати, есть более новая версия xvba-va-driver, 0.8.0. Хотя если h.264 разных профилей проигрываются, то всё ok.

vdpauinfo

Большинство этих функций я не реализовывал ещё.

При переключении мплеера в фулскрин темные полосы сверху и с низу экрана заполняются артефактами.

Ага, спасибо, поправлю.

i-rinat ★★★★★
() автор топика
Ответ на: комментарий от i-rinat

но нигде не понятно, что надо сделать, чтобы исправить

Может ckotinko поможет?

Behem0th ★★★★★
()
Ответ на: комментарий от i-rinat

Кстати, есть более новая версия xvba-va-driver, 0.8.0

Что то неясность какая то с этим драйвером.

https://aur.archlinux.org/packages/xvba-video/

Комментарии от Huulivoide. Страничка закачки вообще не активна. Нашел в репах дебиана исходники попытаюсь собрать.

Хотя если h.264 разных профилей проигрываются, то всё ok.

Я не совсем еще разобрался с этими профилями, Всегда смотрел на цпу и не заморачивался.

Behem0th ★★★★★
()
Ответ на: комментарий от Behem0th

Страничка закачки вообще не активна.

Проект переехал на площадку freedesktop.org, а конкретно сюда: http://cgit.freedesktop.org/vaapi/xvba-driver/

с этими профилями

Похоже, разницы между ними нет.

i-rinat ★★★★★
() автор топика
Ответ на: комментарий от Behem0th

попытаюсь собрать

Совсем я заигрался( Оказывается он уже собранный в репах есть:-) На новой версии без изменений. За ссылку спасибо.

Behem0th ★★★★★
()
Последнее исправление: Behem0th (всего исправлений: 1)
Ответ на: комментарий от Behem0th

Я тут пока обходной код писал, нашёл у себя в двух местах use-after-free. На всякий случай, проверь, не перестало ли падать. (У меня кончился доступ к компу с AMD видеокартой).

i-rinat ★★★★★
() автор топика
Ответ на: комментарий от Behem0th

Ещё одна идея. Если у тебя libvdpau1 версии ниже 0.6, попробуй обновить. Они там исправляли похожее падение.

i-rinat ★★★★★
() автор топика
Ответ на: комментарий от Behem0th

Запушил в master поддержку quirks. Если добавить в переменные окружения

VDPAU_QUIRKS=XCloseDisplay
и та функция, от которой сегфолтилось, вызываться не будет.

i-rinat ★★★★★
() автор топика
Ответ на: комментарий от i-rinat

Да ты волшебник! :-)

С VDPAU_QUIRKS=XCloseDisplay мплеер как и плагин контейнер перестали падать.

Осталось пару косяков: мусор в черных областях в фулскрине(писал выше). И мусор в окне видео на ютубе на несколько секунд при начале воспроизведении, изменении масштаба видео и переходе в фулскрин.

http://ompldr.org/vaTE3bA/VDPAU1.png

версии ниже 0.6, попробуй обновить

У меня версия 0.6

У меня кончился доступ к компу с AMD видеокартой

Надеюсь временно а не на совсем.

Нубский вопрос: куда можно прописать всю эту кучу переменных чтобы при старте системы они применялись и не было необходимости запускать программы из консоли с ними?

Behem0th ★★★★★
()
Последнее исправление: Behem0th (всего исправлений: 1)
Ответ на: комментарий от Behem0th

И мусор в окне видео на ютубе на несколько секунд при начале воспроизведении, изменении масштаба видео и переходе в фулскрин.

http://ompldr.org/vaTE3bA/VDPAU1.png

А потом не появляются сами собой?

У меня версия 0.6

Да, я уже успел проверить (эпизодически меня за комп пускают), с ней тоже так же глючит. Тут действительно нужен кто-то с доступом к исходникам Catalyst'а, не понятно, что там внутри творится.

куда можно прописать всю эту кучу переменных чтобы при старте системы они применялись

Допиши в конец ~/.profile, в формате

export VDPAU_DRIVER=va_gl
export VDPAU_QUIRKS=XCloseDisplay

i-rinat ★★★★★
() автор топика
Ответ на: комментарий от i-rinat

А потом не появляются сами собой?

Ничего толком не смотрел, влючал на пол минуты максимум чтобы потестить.

~/.profile

Прописал не помогло :-(

Уронил иксы, пытаюсь повторить.

Behem0th ★★★★★
()
Ответ на: комментарий от Behem0th

Уронил иксы, пытаюсь повторить.

Если раскомментировать строку EnableLinuxHWVideoDecode=1 в /etc/adobe/mms.cfg то при попытки выйти из полноэкранного режима на ютубе иксы падают.

Нашел еще один баг: в полноэкранном режиме не показывается меню флешплеера при клике ПКМ. Экран мигает и меню не появляется.

А потом не появляются сами собой?

Посмотрел ролик длительностью примерно 30 минут, артефактов не появлялось.

Behem0th ★★★★★
()
Ответ на: комментарий от Behem0th

мусор в черных областях в фулскрине(писал выше)

Проверь последнюю версию из master-ветки.

i-rinat ★★★★★
() автор топика
Ответ на: комментарий от Behem0th

иксы падают

Это просто киллер-фича. Похоже, не зря я писал код для разбора строки quirk'ов.

в полноэкранном режиме не показывается меню флешплеера при клике ПКМ. Экран мигает и меню не появляется.

Какой браузер? И версию тоже, пожалуйста.

i-rinat ★★★★★
() автор топика
Ответ на: комментарий от i-rinat

а можно немного уточнить, после какой последовательности вызовов падает? если что - xvba не готов к тому, что дисплей грохнут раньше, чем его.

ckotinko ☆☆☆
()
Ответ на: комментарий от i-rinat

или даже так- что и где качать чтоб протестировать?

ко мне обращаться будет быстрее, чем багрепорты писать, ибо багрепорты, что я вижу на сайте amd к нам вообще не доходят.

ckotinko ☆☆☆
()
Ответ на: комментарий от Behem0th

http://ompldr.org/vaTE4cA/VDPAU2.png

В фулскрине тоже самое. Но зато мусор из черных областей пропал.

Я конечно извиняюсь но у меня чудеса какие то происходят. Сегодня показанное на скриншоте не происходит, разворачивается в полный экран и играет без шумов.

Behem0th ★★★★★
()
Ответ на: комментарий от ckotinko

после какой последовательности вызовов падает?

Я тут вот до такой последовательности уменьшил:

#include <X11/Xlib.h>
#include <GL/gl.h>
#include <GL/glx.h>
#include <va/va.h>
#include <va/va_x11.h>
#include <va/va_glx.h>
#include <stdio.h>

int main(void)
{
  Display *dpy = XOpenDisplay(NULL);
  Window root = DefaultRootWindow(dpy);
  GLint att[] = { GLX_RGBA, GLX_DEPTH_SIZE, 24, GLX_DOUBLEBUFFER, None };
  XVisualInfo *vi = glXChooseVisual(dpy, 0, att);
  if (NULL == vi) {
    printf("glXChooseVisual failed\n");
    return 2;
  }

  GLXContext glc = glXCreateContext(dpy, vi, NULL, GL_TRUE);
  glXMakeCurrent(dpy, root, glc);

  VADisplay va_dpy = vaGetDisplay(dpy);
  int va_version_major, va_version_minor;
  VAStatus status = vaInitialize(va_dpy, &va_version_major, &va_version_minor);
  if (VA_STATUS_SUCCESS != status) {
    printf("vaInitialize failed\n");
    return 2;
  }


  vaTerminate(va_dpy);

  glXDestroyContext(dpy, glc);
  XCloseDisplay(dpy);
  return 0;
}

Чтобы запустить, понадобится xvba-va-driver (ну ты в курсе). В общем-то можно даже убрать все glX кроме glXChooseVisual, всё равно падает в нутре XCloseDisplay. У меня используется vaGetDisplayGLX вместо vaGetDisplay, но падает и с тем и с другим.

i-rinat ★★★★★
() автор топика
Ответ на: комментарий от ckotinko

ко мне обращаться будет быстрее, чем багрепорты писать, ибо багрепорты, что я вижу на сайте amd к нам вообще не доходят.

Это здорово, конечно, но как бы тебя не начали кошмарить вообще по любому поводу. Так что в этом есть определённый смысл.

i-rinat ★★★★★
() автор топика
Ответ на: комментарий от Behem0th

чудеса какие то происходят. Сегодня показанное на скриншоте не происходит, разворачивается в полный экран и играет без шумов.

Видать, падения в XCloseDisplay даром не проходят.

i-rinat ★★★★★
() автор топика

обновил drm,

Думал, запостить проблему, но оказалось что просто кто-то на null не проверил в mesa:

https://bugzilla.redhat.com/show_bug.cgi?id=918661

на последней сборке пропали артефакты при разворачивании на полный экран.

ihanick
()

Добавил watermark (строка «va_gl» в правом нижнем углу окна), чтобы можно было видеть, выводится изображение через драйвер или нет. По умолчанию выключено, включается добавлением параметра showwatermark в VDPAU_QUIRKS. Параметры перечисляются через запятую.

i-rinat ★★★★★
() автор топика

Задрали падения иксов. Падают при переходе в фулскрин или выходе из него в роликах на ютубе. Мплеер не роняет иксы. Заметил закономерность, если запустить ролик и переводить воспроизведение в фулскрин выводить из него то есть шанс нарваться на падение иксов. Если запустить воспроизведение в фулскрине то через какое то время выход из фуллскрина 100% приведет к падению иксов. Неужели настолько плох амдешный блоб?(

Behem0th ★★★★★
()
Ответ на: комментарий от Behem0th

Пока что ещё не было возможности проверить на AMD.

i-rinat ★★★★★
() автор топика
Ответ на: комментарий от Behem0th

если запустить ролик и переводить воспроизведение в фулскрин выводить из него то есть шанс нарваться на падение иксов. Если запустить воспроизведение в фулскрине то через какое то время выход из фуллскрина 100% приведет к падению иксов.

Не получается воспроизвести. Пробовал под сотню раз переключать из окна в полный экран и обратно. Пробовал оставлять ролик (20-60 минут) на полный экран до конца и потом выводить из полноэкранного. Не падает.

Зато нашёл, с чем связан мусор на экране при старте видео. Почему-то глючит создание текстуры, которая используется для отрисовки элементов управления youtube'овским плеером. У тебя в консоль не валятся ошибки вида

[VS] error (VdpBitmapSurfaceCreate): texture failure, gl error (1282, invalid operation)
?

i-rinat ★★★★★
() автор топика

Вообще какаято странная ситуация с флешем и ускорением. Если при воспроизведении видео через mplayer все логично, при использовании ускорения нагрузка на проессор снижается то с ютубовским флешем вообще странная картина.

1080

При включенном ускорении нагрузка на процессор в среднем 50% со скачками от 40% до 70%.

http://ompldr.org/vaTFyMA/VDPAU_1080_on.png

При выключенном ускорении нагрузка на процессор в среднем 50% +/- 5%.

http://ompldr.org/vaTFyMg/VDPAU_1080_off.png

480

При включенном ускорении нагрузка на процессор в среднем 75% +/- 5%.

http://ompldr.org/vaTFyMw/VDPAU_480_on.png

При выключенном ускорении нагрузка на процессор в среднем 18% +/- 5%.

http://ompldr.org/vaTFyNQ/VDPAU_480_off.png

240

При включенном ускорении нагрузка на процессор в среднем 73% +/- 5%.

http://ompldr.org/vaTFyNg/VDPAU_240_on.png

При выключенном ускорении нагрузка на процессор в среднем 15% +/- 5%.

http://ompldr.org/vaTFyNw/VDPAU_240_off.png

Behem0th ★★★★★
()
Ответ на: комментарий от i-rinat

У тебя в консоль не валятся ошибки вида

Весь вывод. Мусор есть только во флеше, в mplayer'е нет мусора.

[VS] Software VDPAU backend library initialized
libva info: VA-API version 0.33.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib/dri/fglrx_drv_video.so
libva info: Found init function __vaDriverInit_0_32
libva info: va_openDriver() returns 0

Behem0th ★★★★★
()
Ответ на: комментарий от Behem0th

Судя по картинкам, флеш продолжает есть столько же CPU, сколько ел. Похоже, те функции, что я дёргаю, заставляют fglrx_dri что-то интенсивно обсчитывать. Возможно, он там меняет формат текстур на лету.

Запусти, пожалуйста, браузер с установленной переменной окружения VDPAU_LOG=1 и собери stdout в файл. Там будет трейс всех вызовов. В этот файл быстро набегают десятки мегабайт, но мне только нужно посмотреть на последние пару сотен строк. Есть подозрение, что флеш декодирует видео сам, а VDPAU использует только для рисования декодированных кадров.

А, ещё. У меня таки вывалился флеш-плагин. Из-за какой-то пока непонятной ошибки глючит создание битмап поверхности, после чего флеш пересоздаёт устройство заново. И на каждое такое пересоздание утекает одно соединение к X серверу, ведь XCloseDisplay не вызывается. Они кончаются и плагин падает. Вот думаю, как решить вопрос с кэшированием соединений и не грохнется ли это при многопоточном использовании.

i-rinat ★★★★★
() автор топика
Ответ на: комментарий от i-rinat

но мне только нужно посмотреть на последние пару сотен строк

Последние 2 сотни строк

http://paste.kde.org/720746/

На всякий случай весь вывод.

http://ompldr.org/vaTFybw/out.txt (3.3 Мб)

Я запускал видео, менял качество, расширял окно плеера.

Выше я нагнал что нет такой ошибки. вот что осталось в консоли после VDPAU_LOG=1 firefox > out.txt

libva info: VA-API version 0.33.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib/dri/fglrx_drv_video.so
libva info: Found init function __vaDriverInit_0_32
libva info: va_openDriver() returns 0
[VS] error (VdpBitmapSurfaceCreate): texture failure, gl error (1282, invalid operation)
Behem0th ★★★★★
()
Последнее исправление: Behem0th (всего исправлений: 1)

Я хз с чем связаны изменения но падает теперь в 100% случаях при попытки выйти из фулскрина. Даже если развернуть и тут же свернуть. Пробовал на konqueror 4.10 и firefox с чистым профилем.

Behem0th ★★★★★
()
Ответ на: комментарий от Behem0th

На всякий случай весь вывод.

Хорошо, что целиком выложил, маленькой части не хватило.

В общем, флешплеер капризный. Ошибка при создании битмап поверхности приводит к тому, что он начинает декодировать видео сам, поставляя только декодированные кадры YUV. Это ест процессорное время, ибо надо перевести в RGB, потом закачать в текстуру (синхронно), а уже только потом показывать.

В общем, мне надо сейчас исправить утечку от не вызывания XCloseDisplay, затем разобраться, почему проваливается создание bitmap'а. Я считаю, что после этого флеш снова начнёт декодировать на GPU, и нагрузка снизится.

i-rinat ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.