FFmpeg - на пути к HDTV (проблемы и решения)



  • а вот и первый Frame-based multithreading patch для ffmpeg от Alexander Strange



    code.google.com/p/google-summer-of-code-2008-ffmpeg/downloads/list



    кстати, ffplay в отличие от МПлеер вполне сносно может проигрывать записанные на vdr h.264 pes файлы. Дело в том, что vdr не пишет в них PMT/PAT из-за чего мплеер не может проиграть видео. А вот ffplay неплохо справляется с этой напастью.

  • Цитата


    I rarely used VDR for quiete a long time, and I wanted to try some other
    way : I compiled ffmpeg with icc using "-O3 -xT -gcc -mtune=core2" and
    that make a difference : now my CPU is almost enough for ARTE HD which
    wasn't the case with gcc ;-)


    есть смысл поиграться опциями gcc при компиляции ffmpeg - "-O3 -xT -gcc -mtune=core2"

  • Цитата

    Со слов пользователя Goga777
    есть смысл поиграться опциями gcc при компиляции ffmpeg - "-O3 -xT -gcc -mtune=core2"


    И куда это вставить и как? В " ./configure --help " ничего подобного не нашёл, есть правда опция " --cpu=CPU selects the minimum cpu required ".

  • CFLAGS='-O3 -xT -gcc -mtune=core2' ./configure --arch=i686 --cpu=pentium4 --enable-pthreads --enable-shared --enable-gpl --enable-postproc --disable-stripping --enable-liba52 --enable-libvorbis


    теоретически вот так, сам еще не проверил.

  • Разобрался, нужноделать так:
    1.

    Исходный код
    export CFLAGS=" -march=x86-64 -O3 -msse3 -pipe -ffast-math -fomit-frame-pointer -ftree-vectorize "


    потом

    Исходный код
    ./configure --prefix=/usr --disable-stripping --arch=i686 --enable-shared --enable-pthreads --enable-postproc --enable-swscale --enable-avfilter --enable-avfilter-lavf --enable-gpl --enable-x11grab --enable-liba52 --enable-liba52bin --enable-libfaac --enable-libfaad --enable-libgsm --enable-libmp3lame --enable-libtheora --enable-libx264


    и компилируем

    Исходный код
    make -j3


    в процессе компиляции видно что компайлер использует заданные параметры

    Исходный код
    gcc -fPIC -DHAVE_AV_CONFIG_H -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -I. -I"/usr/local/src/ffmpeg-svn" -march=x86-64 -O3 -msse3 -pipe -ffast-math -fomit-frame-pointer -ftree-vectorize -D_ISOC99_SOURCE -D_POSIX_C_SOURCE=200112 -fasm -std=c99 -fomit-frame-pointer -pthread -g -Wdeclaration-after-statement -Wall -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wno-pointer-sign -Wcast-qual -Wwrite-strings -Wtype-limits -O3 -fno-math-errno -fno-signed-zeros `imlib2-config --cflags` `freetype-config --cflags`
  • В одном месте-march=x86-64 ( я раньше писал k8 ), в другом --arch=i686.
    А как надо писать для amd64 именно для 32-битной среды ?

    Сообщение было отредактировано 1 раз, последнее редактирование пользователем 1455 ().

  • Что самое интересное, так это то что процессор при воспроизведении HDTV файла действительно грузит намного меньше. Загрузка моего Х2 5200+@2920 составляет в среднем 50%, а вот оперативку грузит конкретно, из 4-х Гб осталяет лишь порядка 200Мб свободных. Но это всё пока предварительные выводы.

  • Цитата

    Со слов пользователя Goga777


    есть смысл поиграться опциями gcc при компиляции ffmpeg - "-O3 -xT -gcc -mtune=core2"


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

  • Сделал для наглядности снимок. Но!!!!!! При переключении на HDTV -канал пропадает звук, возвращаюсь на обычный - звук появляется. Да, ещё OSD-меню на ХД-каналах становится маленьким.










    Пожалуйста зарегистрируйся для просмотра данного изображения.

    Сообщение было отредактировано 2 раз, последнее редактирование пользователем warp ().

  • Цитата

    Со слов пользователя free-x


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


    я обратил на это внимание и подумал, что Favre описАлся - gcc заменил на icc. Т.е. основная идея - использовать icc вместо gcc ?


    Intel C++ Compiler
    Пожалуйста зарегистрируйся для просмотра данной ссылки на страницу.

  • Цитата

    При переключении на HDTV -канал пропадает звук...


    Об этом уже писал в Пожалуйста зарегистрируйся для просмотра данной ссылки на страницу.
    Значит, диагноз тов. Саахова подтвердился. При увеличении нагрузки на CPU просто игнорируется часть работы. Но весь прикол в том, что нагрузка-то около 50%. Чуть выше - звук пропадает. Неужели это зависит от CFLAGS при сборке ?


    Цитата

    OSD-меню на ХД-каналах становится маленьким.


    Это регулируется в config vdr-xine
    gui.osd_use_unscaled:1(или 0)
    а для xineliboutput в config.conf самого ведра в соотв. секции
    xineliboutput.OSD.Scaling = 1(или 0)
    Наложение x11 лучше не использовать, т.к. в момент вывода OSD возрастает нагрузка на CPU.

  • Цитата


    я обратил на это внимание и подумал, что Favre описАлся - gcc заменил на icc. Т.е. основная идея - использовать icc вместо gcc ?


    нет конечно же, это не опечатка. В этом собсно весь прикол. Самое прикольное что с опцией -gcc он его заставляет "мимикрировать". Конечно же на Инетеле сидят серьезные ребята, которые могут оптимировать код компилятора для своих платформ

  • Цитата

    Со слов пользователя 1455
    а для xineliboutput в config.conf самого ведра в соотв. секции
    xineliboutput.OSD.Scaling = 1(или 0)


    Может тебя это и удивит, но ВДР-картинку смотрю через софтдевайс. Ксайн-библиотеки не использую, ну не хочет ксайн правильно работать с моей HD 2600XT ..., хоть тресни. Софтдевайс, между прочим юзает наш ffmpeg на прямую. В принципе, выше изложенные поблемки решаемы. Ну и последнее: - параметры компиляции действительно приносят пользу, нужно просто подобрать их правильно для имеющегося железа. "солить и перчить" разумеется каждый должен сам. Искать нужно у Gentoo-водов, или переходить на gentoo, что к стати очень проблематично для не очень опытных пользователей линукса. Ну и последнее: в принципе последней сборкой ВДР-а с дровами от Игоря (мультипрото) удовлетворён, DVB-S2 параметр и дайсек идет на "ура" . Есть смысл опробовать эту кухню на более мощном процессоре и видеокарте от NVIDIA. И если всё, включая HDTV будет бегать то....... можно уже наверное попробовать определиться в минимальных потребностях для системы. К сожалению Core2Duo систем у меня в наличии нет и могу только дать описание для AMD X2.

  • Цитата

    Со слов пользователя warp


    Может тебя это и удивит, но ВДР-картинку смотрю через софтдевайс. Ксайн-библиотеки не использую, ну не хочет ксайн правильно работать с моей HD 2600XT ..., хоть тресни. Софтдевайс, между прочим юзает наш ffmpeg на прямую.


    я удивлен :)
    поделись , пожалуйста, своими впечатлениями от просмотра hdtv на softdevice тут Пожалуйста зарегистрируйся для просмотра данной ссылки на страницу.


    какую версию используешь ?


    Цитата


    В принципе, выше изложенные проблемки решаемы. Ну и последнее: - параметры компиляции действительно приносят пользу, нужно просто подобрать их правильно для имеющегося железа. "солить и перчить" разумеется каждый должен сам.


    как уже указал free-x - ты обратил внимание, что разговор начался с компилятора от Интел - icc, а не gcc как у всех у нас стоит ?


    Цитата


    Искать нужно у Gentoo-водов, или переходить на gentoo, что к стати очень проблематично для не очень опытных пользователей линукса.


    зачем надо переходить на гентоо ? мы же про gcc/icc говорим - без привязки к дистру.


    Цитата


    Ну и последнее: в принципе последней сборкой ВДР-а с дровами от Игоря (мультипрото) удовлетворён, DVB-S2 параметр и дайсек идет на "ура" .


    то ли еще будет, ой-ой-ой (С) Alla Pugachova

  • Исходный код
    как уже указал free-x - ты обратил внимание, что разговор начался с компилятора от Интел - icc, а не gcc как у всех у нас стоит ?


    Да! Конечно обратил, но не надо придираться к буквам. Опечатка - не опечатка, роли не играет. Главное - идея! Я именно об этом речь и веду, что используя этот принцип можно выжать из компа максимум. Что касается Генту, то это был изначально концепт для их оси но это вполне приминимо и для нашего Дебиана. Есть повод для открытия нового раздела и туда слить всё и графику, и др. примочки.

  • Исходный код
    как уже указал free-x - ты обратил внимание, что разговор начался с компилятора от Интел - icc, а не gcc как у всех у нас стоит ?


    Вынужден продолжить. Опираясь на перепалку юзеров Archlinux можно сделать вывод, что не так уж и радужно дела обстоят с интелом, с атлоном у последнего компайлера куда меньше проблем. Они пишут, что будет лучше добавить в компайлер недостающие опции для АМД- процессоров и именно на это я и опирался.

  • Michael Niedermayer продолжил работу над фиксами в коде h.264.c


    Пожалуйста зарегистрируйся для просмотра данной ссылки на страницу.

  • я уже докладывал о том, что у меня при переключении с 720р канала на 1080i канал и обратно на Астре 19е у меня происходил креш vdr. Сегодня логах увидел еще одну запись, которая свидетельствует на наличие проблем


    Цитата


    Oct 30 17:38:06 localhost kernel: [19905.900711] Local decoder/d[19851]: segfault at 0 ip aa0bea4a sp b07e9404 error 4 in li
    bavcodec.so.52.1.0[a9fbe000+47b000]


    разработчикам ффмпег мало это записи, они просят показать что gdb покажет. Но я не понимаю как моем случае им пользоваться - я использую vdr 170 + xineliboutput + xine-lib-1.2 + ffmpeg - в списке процессов только vdr. Получается gdb надо на vdr натравливать ? кто-то может подсказать - как ?

  • Попробуй как здесь стоит:
    Пожалуйста зарегистрируйся для просмотра данной ссылки на страницу.
    если не сможешь скинь runvdr.