1. Куча / Говнокод #3689

    +89

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    ## dup_hq - merge ##
     dup     = opos!=pos || abs(dm)<2 || abs(dm)==3 ? 0 : dcn*5<dbc && dnn*5<dbc && 
    (dcn<1.25*thr || bn<bc && pos==lpos) || (dcn*dcn<dbc || dcn*5<dbc) && bn<bc && pos==lpos 
    && dnn<.9*dbc || dnn*9<dbc && dcn*3<dbc ? 1 : (dbc*dbc<dcn || dbc*5<dcn) && 
    bb<bc && pos==lpos && dbb<.9*dcn || dbb*9<dcn && dbc*3<dcn ||  dbb*5<dcn && 
    dbc*5<dcn &&  (dbc<1.25*thr || bb<bc && pos==lpos) ? -1 : 0
    mer = bom==false && opos==pos && dup==0 && abs(dm)>2 && 
          (dbc*8<dcn || dbc*8<dbb || dcn*8<dbc || dcn*8<dnn || dbc*2<thr ||
           dcn*2<thr || dnn*9<dbc && dcn*3<dbc || dbb*9<dcn && dbc*3<dcn)
    
    
    add  = bp1*cn2>bn2*cp1*(1+thr*.01) && bn0*cn2>bn2*cn0*(1+thr*.01) && 
              cn2*bn1>cn1*n2*(1+thr*.01)
    dup  = bom ? (bn0>bp2 && bn0>=bp1 && bn0>bn1 && bn0>bn2 && cn0<125 ? 
             (d12*d12<d10 || d12*9<d10) ? 1 :  (d10*d10<d12 || d10*9<d12) ? 
             0 : 4 : bp1>bp3 && bp1>=bp2 && bp1>bn0 && bp1>bn1 ? 1 : 0) : dup!=0 ? 
             dup : om>0 && om<5 ? (bbool==false ? 0 : om==4 && bp1*cn1<bn1*cp1 ||
             om==3 && d10<d01 || om==1 ? -1 : 1) : om==5 ? (bp1*cp2>bp2*cp1*(1+thr*.01) && 
             bn0*cp2>bp2*cn0*(1+thr*.01) && cp2*bn1>cn1*bp2*(1+thr*.01) &&
             (add==false || cp2*bn2>cn2*bp2) ? -2 : add ? 2 : bn0*cp1>bp1*cn0 && 
             (bn0*cn1<bn1*cn0 || cp1*bn1>cn1*bp1) ? -1 : bn0*cn1>bn1*cn0 ? 1 : 0) : 0

    это называется AviSynth - и это вполне нормальный скрипт, ибо другого пути там просто нет, да и альтернатив AviSynthy пока нет

    Запостил: 3.14159265, 12 Июля 2010

    Комментарии (18) RSS

    • кстати скрипт, небольшой кусок которого приведен здесь делает очень полезное дело и написан весьма умным человеком. Работал у меня в энкодах стопицот раз .
      До тех пор пока мне не понадобилось немного доработать его
      И вот тогда возникли реальные траблы.....
      Ответить
      • А что за дело, если не секрет?
        Ответить
        • восстановление из blended кадров - ну то есть когда 1 кадра наложены на другой с некоторой прозрачностью (возникает при деинтерлейсинге telecine (29.97 fps) видео, а на дрянных двд идет уже в комплекте) нормальных.
          Ответить
    • Другого пути нет?
      Тоесть там нет констант, имена переменных не могут превышать трех символов и длина строки не может быть меньше 200 символов?

      Какой право неудобный язык
      Ответить
      • "opos", "lpos" - четыре

        Штуковина - видео постпродакшн фреймсервер. Говорят, что даже продвинуто нелинейный.

        Цитата из оф вики "Поскольку текстовые скрипты являются вполне читаемыми (по-английски), проекты естественным образом само-документируются" "замечательно мощно" иллюстрирует данный кодесампл.
        Ответить
      • нет, просто реализация любой сколь-либо сложной логики исключительно на тернарных операторах - требует огромного мастерства.
        Ответить
        • мастерство - это писать код, который будет понятен даже ежу.
          написать программу, понятную компутеру - несложно. сложно написать программу понятную человеку.

          и да, я не верю что даже используя исключительно тернарные операторы нельзя написать на порядок понятнее
          Ответить
          • один может написать код который будет понятен всем, но чего-то серъезного и полезного написать он не сможет, поскольку будет пытатся написать это понятно....

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

            ИМХО разные весовые категории...

            >>>>и да, я не верю что даже используя исключительно тернарные операторы нельзя написать на порядок понятнее

            можно, но обычно такое пишется как скрипт для себя, и уже потом может выложено для комьюнити.
            Ответить
            • писать непонятные скрипты для себя? так что бы через неделю было проще написать заново чем разобраться? месье знает толк в изращениях
              Ответить
              • да ладно, писавший точно понимает что там и как... и уже 3 года как улучшает скрипт.
                Одно дело придумать что-то концептуально новое и тут важен сам принцип,функциональность, отсутсвие багов, а не что все сходу смогут это читать. Главное не красивая коробка, а чтоб работало.

                Другое дело - взять с инета кучу исходников или использовать готовые библиотеки и красиво это скомпоновать.

                Вот пример, перед тем как математика Галуа подстрелили на дуэли, за ночь до дуэли он изложил свою теорию на 13 страницах.
                Пока Лагранж не расписал на !700 страницах своей книги, что имел ввиду Галуа никто не мог понять, что же значили эти 13 страниц.
                Галуа придумал концепт, а Лагранж красиво его изложил.
                Ответить
                • если бы галуа выжил на дуэли, то расписал бы подробнее свой концепт. а не стал вносить исправления в 13 страниц.

                  чем хуже напишешь код, тем дольше придется его исправлять/улучшать. три года исправлений тока подтверждают это
                  Ответить
                  • >>>.три года исправлений тока подтверждают
                    неа, просто там концептуально новые вещи вроде double-blendoв добавлены и утечки перидически фиксились - он же не каждый день его делал.
                    не спорю мне понять этот код сложно именно поэтому он здесь
                    Ответить
    • Это технологический шаг назад
      Ответить
      • >>>Это технологический шаг назад

        там есть функции, globalsы, evalы, importы, есть плагины для, только не смейтесь - массивов, хитрой многопоточности и рекурсии
        циклов и ifов нет - только тернарные операторы.

        есть огромная куча фильтров идущих прямо в core, даже такие наворочение вещи как motion detection уже вроде положили в core-filters
        с помощью него к примеру можно делать видео плавным - он может создавать с помощью компенсации движения промежуточные кадры.

        есть даже такая экзотика как tcp-сервер, то есть запросто можно создать свой широковещательный video-streaming сервер в сети и можно применять к видео runtime компрессию, причем это гораздо серъезнее всяких радминов...

        и конечно главная фича - плагины, которые можно писать самому к примеру на всеми тут так любмом с++
        Ответить
    • Ааа, я помню эту программу. Я как-то записал, как я шёл задом, сказав какую-то фразу задом наперёд, а потом ависинтом всё обратил, видео обратилось, а со звуком не удалось.
      Ответить
      • >>>а со звуком не удалось.
        т.к. это фреймсервер - он крайне продвинут именно в области видео.
        кстати

        Reverse (clip)
        This filter makes a clip play in reverse. This is useful for watching people walk backwards while listening to hidden satanic messages.
        Ответить
        • >>>>сказав какую-то фразу задом наперёд
          reverse звука делает задом наперед не слова, а звуковой поток
          Ответить
          • > reverse звука делает задом наперед не слова, а звуковой поток
            Спасибо, кэп!
            Ответить

    Добавить комментарий