Многопоточный декодер mp4 в Linux | Крымский форум

Многопоточный декодер mp4 в Linux

  • Добро пожаловать на форум! Рады видеть вас здесь! Зарегистрируйтесь или Войдите в аккаунт, чтобы иметь полный доступ к площадке!
A

alexk

Guest
Привет,

Недавно столкнулся с тем, что достаточно производительного Core2 Quad @ 3Gz не хватило в Linux для проигрывания mp4, сжатого h.264, это rip full hd в разрешении 1920 x 1080 (размер файла - около 12Гб). Так вот, при обычном проигрывании все идет более менее плавно, однако с нечастыми замираниями картинки (загрузка процессора где-то до 70%), но при включении постпроцессинга все становится очень плохо, загрузка процессора 106%, причем из 4 ядер загружено только одно (оставшиеся 6% идут потоку, декодирующему звук и так по-мелочи
smile.gif
).

Ситуация одинаковая в vlc и mplayer, попытка посмотреть отладчиком внутрь того процесса (точнее LWP, т.е. потока), который загружает процессор по полной выявила, что он использует функцию DecodeVideo из libavcodec, которая идет в составе проекта ffmpeg. Дальнеийше поиски в google по "libavcoded multithreaded" выявили вот такой faq:
http://ffdshow-tryout.sourceforge.net/html/en/faq.htm,
в котором неявно говорится о том, что декодирование MP4 идет только одним потоком, подтверждение этому я нашел и в других источниках.

По сути: кто-нибудь знает библиотеку, которая при декодировании (проигрывании) mp4 сжатых фильмов умеет использовать для декодирования видео несколько процессоров или процессорных ядер? Кто-нибудь сталкивался с тормозами в linux при проигрывании mp4 сжатого видео в full hd разрешении?

Спасибо.
 
В changelog мплейера упоминается для ffmpeg:
Цитата
* Slice-based parallel H.264 decoding (-lavdopts fast:threads=N)

Оно?
 
geoka

Да, спасибо, отчасти то, хотя вот пишут, что распараллеливание декодера будет зависеть от того, поддерживал ли кодек multiple-slice encoding:

http://lists.mplayerhq.hu/pipermail/ffmpeg...ber/035880.html

Вот еще более подробное описание:
http://archives.free.net.ph/message/200710...90f634a.en.html

Насколько я понимаю frame-based parallel decoding еще не реализовано
sad.gif
.
 
Назад
Сверху