1. Си / Говнокод #27753

    0

    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
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    // https://github.com/x42/darc.lv2/blob/7f1f42b879777e570c83fd566ac28cbfdd51e6fc/src/lv2.c#L508
    static void
    create_pattern (Darc* self, const double w)
    {
    	const int x0 = floor (w * 0.05);
    	const int x1 = ceil (w * 0.95);
    	const int wd = x1 - x0;
    
    #define DEF(x) ((x0 + wd * ((x) + 20.) / 60.) / w)
    
    	cairo_pattern_t* pat = cairo_pattern_create_linear (0.0, 0.0, w, 0);
    	/* clang-format off */
    	cairo_pattern_add_color_stop_rgba (pat, 1.0,       .0, .5, .0, 0);
    	cairo_pattern_add_color_stop_rgba (pat, DEF (40),  .0, .5, .0, 0.5);
    	cairo_pattern_add_color_stop_rgba (pat, DEF (5),   .0, .5, .0, 0.5);
    	cairo_pattern_add_color_stop_rgba (pat, DEF (-5),  .5, .0, .0, 0.5);
    	cairo_pattern_add_color_stop_rgba (pat, DEF (-20), .5, .0, .0, 0.5);
    	cairo_pattern_add_color_stop_rgba (pat, 0.0,       .5, .0, .0, 0);
    	/* clang-format on */
    	self->mpat = pat;
    
    	pat = cairo_pattern_create_linear (0.0, 0.0, w, 0);
    	/* clang-format off */
    	cairo_pattern_add_color_stop_rgba (pat, 1.0,       .1, .9, .1, 0);
    	cairo_pattern_add_color_stop_rgba (pat, DEF (40),  .1, .9, .1, 1);
    	cairo_pattern_add_color_stop_rgba (pat, DEF (5),   .1, .9, .1, 1);
    	cairo_pattern_add_color_stop_rgba (pat, DEF (-5),  .9, .9, .1, 1);
    	cairo_pattern_add_color_stop_rgba (pat, DEF (-20), .9, .9, .1, 1);
    	cairo_pattern_add_color_stop_rgba (pat, 0.0,       .9, .9, .1, 0);
    	/* clang-format on */
    	self->cpat = pat;
    
    #undef DEF
    }

    Отключаем и включаем clang-формат, чтобы отступы красиво были. Да еще и такой вот локальный дефайн!

    Запостил: j123123, 17 Октября 2021

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

    • Тарасоформатирование!
      Ответить
    • self->cpat

      Approved.
      Ответить
    • Ведь floor или ceil могут вернуть 0.9999999999999999? И тут тунца соснете.
      Ответить
      • Что-то мне нямекает, что для градиентиков вообще насрать.
        Ответить
    • > cpat
      > mpat

      Настоящий сишник никогда не раскроет свои секреты врагу... Локалки я бы простила, но блин поля огромного объекта?

      З.Ы. Почему не cp и mp?
      Ответить
    • Вообще это интересный "паттерн", некую макросню задефайнить внутри самой функции, чтобы короче какую-то питушню записывать, а потом #undef дня нее сделать в конце скоупа. Только он не везде делает #undef.
      https://github.com/x42/darc.lv2/blob/7f1f42b879777e570c83fd566ac28cbfdd51e6fc/gui/darc.c#L640
      ...
      #define YPOS(y) (top + yscale * (y))
      #define HGHT(y) (yscale * (y))
      
      #define DEF(x) MAX (0, MIN (1., ((20. + (x)) / 60.)))
      #define DEFLECT(x) (rint (disp_w * DEF (x)) - .5)
      
      	if (!ui->m_fg) {
      		cairo_pattern_t* pat = cairo_pattern_create_linear (10, 0.0, disp_w, 0.0);
      		/* clang-format off */
      		cairo_pattern_add_color_stop_rgb (pat, DEF (40),  .1, .9, .1);
      		cairo_pattern_add_color_stop_rgb (pat, DEF (5),   .1, .9, .1);
      		cairo_pattern_add_color_stop_rgb (pat, DEF (-5),  .9, .9, .1);
      		cairo_pattern_add_color_stop_rgb (pat, DEF (-20), .9, .9, .1);
      		/* clang-format on */
      		ui->m_fg = pat;
      	}
      
      	if (!ui->m_bg) {
      		const float      alpha = 0.5;
      		cairo_pattern_t* pat   = cairo_pattern_create_linear (10, 0.0, disp_w, 0.0);
      		/* clang-format off */
      		cairo_pattern_add_color_stop_rgba (pat, DEF (40),  .0, .5, .0, alpha);
      		cairo_pattern_add_color_stop_rgba (pat, DEF (5),   .0, .5, .0, alpha);
      		cairo_pattern_add_color_stop_rgba (pat, DEF (-5),  .5, .0, .0, alpha);
      		cairo_pattern_add_color_stop_rgba (pat, DEF (-20), .5, .0, .0, alpha);
      		/* clang-format on */
      		ui->m_bg = pat;
      	}
      
      	if (!ui->m0bg) {
      		ui->m0bg     = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, ui->m0_width, ui->m0_height);
      		cairo_t* icr = cairo_create (ui->m0bg);
      		m0_render_faceplate (ui, icr);
      		cairo_destroy (icr);
      	}
      
      	cairo_set_source_surface (cr, ui->m0bg, 0, 0);
      	cairo_paint (cr);
      
      	/* current reduction */
      	float v0 = DEFLECT (ui->_gmin);
      	float v1 = DEFLECT (ui->_gmax);
      	cairo_rectangle (cr, 7.5 + v0, YPOS (4), 5 + v1 - v0, HGHT (12));
      	cairo_set_source (cr, ui->m_fg);
      	cairo_fill (cr);
      
      	return TRUE;
      }
      Ответить
      • Да, там еще макросы MAX и MIN хуёво сделаны
        #ifndef MAX
        #define MAX(A, B) ((A) > (B)) ? (A) : (B)
        #endif
        
        #ifndef MIN
        #define MIN(A, B) ((A) < (B)) ? (A) : (B)
        #endif

        если такой макрос попробовать вот так заюзать
        int a = 1;
        int b = 2;
        int c = MAX(a++, b--);

        будет хуйня какая-то
        Ответить
        • А как правильно?
          Ответить
          • #define MAX(a,b) ({typeof(a) _a = (a), _b = (b); _a > _b ? _a : _b; })
            Ответить
            • А за пределами gcc решения нет?
              Ответить
              • Эту хуйню умеет еще как минимум Clang, ICC и вероятно lcc(эльбрусовский компилятор, там фронтэнд от Edison Design Group(EDG) юзается, он GCC-совместимый, такую хуйню они почти наверняка поддерживают http://www.mcst.ru/files/5fe5d1/99dece/61aa69/33a144/a.l._markin_obzor_kompilyatora_lcc_dlya_ mikroprotsessora_elbrus.pdf ).

                Можно наверное что-то такое изобрести, например насрать кучу функций сравнения int с int, float с float, double с double и прочие вореанты, а потом через "_Generic" вызывать нужную говнофункцию из возможных вореантов, но это какой-то пиздец будет
                Пример использования "_Generic": https://wandbox.org/permlink/EH5I1XUQrtisSEnR
                Ответить
            • Хотя тут еще можно дополнительно проверить, что тип "a" и "b" тот же самый. "int __builtin_types_compatible_p (type1, type2)" из https://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html можно взять
              Ответить
        • Мне бы и в голову не пришло совать в качестве аргументов чего-нибудь выражения с постинкементом. Фу так делать. Ломай голову потом, в какой момент вычислится инкремент и что сделает оптимизатор.

          В чём смысл всё стараться уместить в одну строку? Я могу понять K&R, у них исходник мог на перфокарту не влезть (или на чём там они писали), но в XXI веке зачем экономить на спичках?

          Я бы написал так:
          int a = 1;
          int b = 2;
          int c = MAX(a, b);
          a++;
          b--;

          Так хотя бы не похоже на типичную порнуху с ioccc.org.

          Хотя претензию понимаю. Если аргументами макроса будут функции, они вычислятся дважды, что может быть нежелательным.
          Ответить
          • А я бы написал
            *dest++ = max(*p++, *q++);
            и ниипет.
            (при условии, что max - не макрос, конечно)
            Ответить
      • Вообще, эти вот "/* clang-format off */" и "/* clang-format on */" вокруг красиво-отформатированного кода выглядят весьма забавно. Лично я б такой хренью не занимался.

        Автор к тому же является одним из разрабов опенсорсной DAW "Ardour" - https://gareus.org/
        Да и сам походу всяким там мастерингом и сведением дорожек занимается https://gareus.org/_media/blog/robin_mpc4d1200.jpg?cache=

        Творческая личность явно.
        Ответить
        • > Лично я б такой хренью не занимался.

          Ага, я тоже шланг формат выключила няхер. То ли у меня лапки, то ли это неюзаюбельное говнище, которым только унылую опердень на джаве можно форматировать.

          Вообще не даёт что-то выразить отступами.
          Ответить
          • Больной, примите 300 кубиков языка "Go" перорально.

            но меня за выебоны с макросами clang тоже чморил
            Ответить
            • > Больной, примите 300 кубиков языка "Go" перорально.

              Это какой-то фанфик на "Норму"?
              Ответить
            • // ну блин, я иногда вот так хочу:
              const char* x[] = {"foo", "bar"};
              
              // а иногда вот так
              const char* x[] = {
                  "foo-key", "foo-val",
                  "bar-key", "bar-val",
              };
              
              // а иногда вот так
              const char* x[] = {
                  "foo",
                  "bar"
              };
              Как мне объяснить это шланг-формату? Он ведь один хер всё разберёт на токены и пересоберёт с нуля по какому-то одному из стилей, проебав всю сёмантику.
              Ответить
              • А ещё он тарасоформатирование ломает.
                Ответить
                • Ну да, он или ломает или форсит его везде. Третьего не дано.
                  Ответить
            • Вот у него параметры называются "AllowXXX". Но они ведь няхуя не "Allow", они "Force"...

              Нельзя выразить стиль, в котором можно и так и так. Или я что-то не понимаю?
              Ответить
              • это на работе форматтер или дома?
                Ответить
                • Дома пыталась настроить...

                  На работе тоже дальше разговоров дела не зашли. Как раз по описанным выше причинам -- уродует нормально написанный код.
                  Ответить
                  • я на работе хер забил на форматтеры

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

                    а дома я и ручками могу красиво написать
                    Ответить
        • Лол, он еще какие-то протоколы от специальных железок для музыкантов реверсит https://gareus.org/blog/digi003r https://gareus.org/wiki/digi003
          https://m.media-amazon.com/images/I/51ZTOaS3bhL._AC_SL1154_.jpg - это вот такая хрень.
          Интересно было б попробовать прошивку под такую хрень понаписать
          Ответить
          • > прошивку

            Именно в плане DSP и эффектов?
            Ответить
            • Да, интересно было б позадрачивать всякую там цифровую обработку сигналов.
              Ответить
          • напиши. или "нахуй нужно" опять?
            Ответить
            • Для этого надо еще такую вакансию найти. А под готовую кем-то сделанную железку прошивка уже готова, да и документации там наверняка нет нихуя, чтобы было понятно, как под такую железку что-либо написать свое кастомное. И наверняка там еще всякие NDA подписывать надо будет
              Ответить
              • Ну или самому заниматься музыкой и пилить эту железку для себя.
                Ответить
                • Самому все это делать под себя - малость проблематично. Тут не только программирование контроллеров, тут инженер-схемотехник нужен, чтобы спроектировать печатную плату, потом надо еще эту железку тестировать, несколько всяких ревизий плат еще будет... в общем это будет стоить довольно-таки дохуя, и если это делается в единственном экземпляре чисто для себя, то особого смысла в этом нет. Да и один человек вряд ли такое сам осилит.
                  Ответить
                  • > печатную плату

                    Это да, аналоговый тракт очень сложно будет запилить без опыта...

                    С другой стороны, если готовую цап-царапку по I2S к какой-нибудь циклоняшке зацепить, то выглядит вполне реально.
                    Ответить
                  • > Да и один человек вряд ли такое сам осилит.

                    Ты переоцениваешь затраты, имхо...

                    Чуваки вон лифт на ардуине делали. Что мешает тебе точно так же взять макетку, прицепить к ней I2S цап-царапки и какую-нибудь USB'шную хреновину с энкодерами и кнопочками с али. Даже паять ничего не надо будет, если аппаратная часть тебя не интересует.

                    Уже можно будет какую-то примочку для гитары сделать или с генерацией сигналов поиграться.

                    Тут главное чтобы интерес был всё это юзать потом...
                    Ответить
                    • > Чуваки вон лифт на ардуине делали. Что мешает тебе точно так же взять макетку, прицепить к ней I2S цап-царапки и какую-нибудь USB'шную хреновину с энкодерами и кнопочками с али.

                      Не, ну что-то наколенное сделать конечно можно, но аналогов той железки ты так не соберешь, посмотри какие там inputs и outputs, midi-интерфейсы, IEEE 1394, S/PDIF, оптический вход-выход: https://images.reverb.com/image/upload/s--lE3Lj2rJ--/f_auto,t_supersize/v1560707469/myu7zhddxccitw0aura4.jpg - ты правда думаешь, что один человек все это может осилить, разработать схему, написать прошивку и отладить аппаратную и программную часть такой хреновины?
                      Ответить
                      • > наколенное

                        А тебе шашечки или ехать? Я не спорю, что серийную железку такого уровня в одного не сделать.

                        Но мы ведь не про стартап для кикстартера, а просто про интересную хреновину для себя?
                        Ответить
                        • > Но мы ведь не про стартап для кикстартера, а просто про интересную хреновину для себя?

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

                          https://habr.com/ru/post/551752/ вот кстати нашел, что-то такое запилить уже вполне реально.
                          Ответить
                          • > именно с цифровой обработкой сигналов поразбираться

                            Х.з., мне обработка без конкретной области не особо интересна была бы...

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

                а потом с такой строчкой в резюме и вакансию найти будет проще
                Ответить
          • > Firewire

            С тех пор, как появился USB3, на поддержку Firewire производители техники почему-то положили прибор.
            Ответить
            • а что это вообще? вроде раньше какие-то видеокамеры по нему подключались или не?
              Ответить
              • Да, у DV/miniDV-камер обычно был выход Firewire. Его использовали из-за скорости (старые версии USB были совсем медленными).

                google: IEEE1394
                Ответить
                • MiniDV это ж кассета по сути? там по идее перегонять надо было в цифру в реальном времени воспроизведения, сильно умудрялось в скорость интерфейса упираться?
                  Ответить
                  • Это и есть цифровой формат. Аналоговыми были VHS и Video8.

                    Упирались в полосу пропускания, потому что DV не был зожатым.
                    Ответить
                    • и скока в DV весил кадр? там же небось было 640x480?
                      Ответить
                      • 720x576 у нас и 720x480 в США. Его же делали для совместимости с телевизором.

                        Сейчас погуглил. Внутрикадровое зожатие было (алгоритм, похожий на JPEG), межкадрового не было. За это его и любили: можно было резать запись по кадрам и склеивать без потери качества.
                        Ответить
                        • я запутался

                          помню, что вроде NES рисовал картинку в два раза меньше, чем разрешение тогдашних телеков, потом апскейлил

                          читаю:

                          NES games had a resolution of 256x224 pixels (NTSC) and 256x240 pixels (PAL).

                          а откуда 720?
                          Ответить
                          • Ну ты ведь понимаешь, что в аналоговом ТВ нет пикселей...
                            Ответить
                            • поясните мысль
                              Ответить
                              • Луч движется плавно, он не разбит на какие-то там пиксели.
                                Ответить
                                • Да, я как-то забыл напомнить, что аналоговые форматы разрабатывали под кинескопы. У чёрно-белых даже не было маски, там были мелкие зёрна, хаотично раскиданные, как кристаллы на фотоплёнке.
                                  Ответить
                                  • > маски

                                    Дык она тоже "пикселям" не соответствует...
                                    Ответить
                                    • Угу. Пик яркости сигнала может быть размазан по нескольким отверстиям.
                                      Ответить
                                      • Кстати, а генератор кадровой развёртки ведь тоже плавно работает...

                                        В итоге строки ещё и наклонены немного. Но это, видимо, как-то корректировалось в том самом блоке с кучей крутилок (y_out = y - x * k какое-нибудь).
                                        Ответить
                                        • В телевидении строки были наклонными. Поскольку у телекамеры и у телевизора наклон был одинаковым, это не считалось проблемой.

                                          И на мониторах вроде тоже регулировок не было. Для горизонтирования строк нужно кадровую развёртку делать не плавной, а лесенкой. Либо отклоняющие катушки приклеить под углом, но такая коррекция будет работать только для одного разрешения.
                                          Ответить
                                        • Увидел твоё предложение подмешать строчную развёртку к кадровой. Интересно, но я не знаю, делали ли так на практике.

                                          Может быть, на синкмастерах с цифровой настройкой было?
                                          Ответить
                              • Аналоговый сигнал разбит только на кадры и на строки. По горизонтали можешь брать, сколько хочешь. Главное, чтобы усилитель сигнала не мылил на такой частоте.
                                Ответить
                                • > По горизонтали можешь брать, сколько хочешь

                                  – кто это контролирует?
                                  Ответить
                                  • А зачем это контролировать?

                                    Кинескопный телевизор мог сожрать произвольное количество (больше 800 брать бессмысленно, потому что замылит).

                                    ЖК/плазма/OLED с аналоговым входом, конечно, оцифруют сигнал, разбив его на пиксели, как они хотят, а не как хочет источник сигнала. Да, немножко размажет, потому что границы некоторых пикселей входного сигнала не совпадут с границами, которые нарежет АЦП, но картинку телевизор всё равно покажет.
                                    Ответить
                                    • ок, перефразирую: как мне указать, сколько я хочу взять по горизонтали? что в данном случае означает, что у nes в ширину 256 пикселов, и как это переводится на уровне кинескопа?
                                      Ответить
                                      • > что в данном случае означает, что у nes в ширину 256 пикселов

                                        То, что NES за один период строчной развёртки меняет сигналы яркости/цветности на выходе 256 раз. А телеку насрать на то, сколько там раз сигнал поменялся, он плавно двигает лучом, сила которого управляется сигналом от NES.

                                        Т.е. на экране ты увидишь 256 пикселей. Но можно и 320 и 512 и даже 720, если хочется.
                                        Ответить
                                        • то есть на гипотетическом широкоформатнике с кинескопом картинку с приставки красиво распидарасит, потому что оно возьмёт "ширину" экрана и условно поделит её на 256?
                                          Ответить
                                          • > распидарасит

                                            Именно так. Но они обычно позволяют включить эмуляцию 4:3 с полями по бокам (и для аналогового входа она обычно включена по-умолчанию).
                                            Ответить
                                        • В теории можно было в каждой строке делать разное количество пикселей, оно бы всё равно на полную ширину растянулось. Лучу пофигу, где будет переход уровня сигнала.
                                          Ответить
                                          • норм, можно задать один условный пиксель и получить прямую линию

                                            возможно, что старые консоли что-то такое и делали
                                            Ответить
                                            • Для телевизора существовала только длительность сигнала. Если высокий уровень сигнала держится ровно столько времени, сколько длится прямой ход луча, будет горизонтальная линия на весь экран. Если уровень поднимается позже начала строки и падает раньше окончания строки, будет короткий горизонтальный отрезок.
                                              Ответить
                                            • > возможно, что старые консоли что-то такое и делали

                                              Ну да, первые игры для телека ("понг" и т.п.) тупо рисовали прямоугольнички по таймингам. Без всяких там пикселей.
                                              Ответить
                                        • потому что аналоговый и телек и вга

                                          нет цифры нет и пикселец
                                          Ответить
                                      • 256 пикселей растянутся на всю ширину экрана (возможно, по бокам будут небольшие чёрные поля).

                                        224 и 240 — это слишком мало. Видеоадаптер сделает апскейл до 448 и 480 соответственно и добавит сверху и снизу чёрные поля до 480 и 576 соответственно.

                                        Вообще пиксели не обязаны быть квадратными.

                                        Да, ЖК-телевизор эти 256 разобьёт на столько, на сколько посчитает нужным (например, 1920 минус чёрные поля, чтобы пропорции не нарушались). Он ещё и второй апскейл сделает.
                                        Ответить
                                        • > ЖК-телевизор
                                          – получается, что любой телевизор

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

                                          если я правильно понял
                                          Ответить
                                        • > Вообще пиксели не обязаны быть квадратными.

                                          Это да. Главное тайминги правильные соблюсти.

                                          В общем-то даже у VGA pixel clock никак не выражен. Строчки есть, кадры есть, пикселей нету.
                                          Ответить
                                          • надо, чтобы пиксели были гексами
                                            Ответить
                                            • Можно взять индикатор кругового обзора от РЛС. Тогда пиксели будут отрезками дуг окружности.
                                              Ответить
                                              • посмотрел бы на таком экране своё любимое онимэ?
                                                Ответить
                                                • > посмотрел бы на таком экране своё любимое онимэ?

                                                  На таком экране надо в Azur Lane играть. Корабле-няшки там будет аутентичненько смотреться.
                                                  Ответить
                                                  • > Azur Lane

                                                    https://play.google.com/store/apps/details?id=com.YoStarEN.AzurLane

                                                    помоги Даше понять из "скриншотов", о чём эта игра
                                                    Ответить
                                                    • Про сиськи няшек, очевидно же!
                                                      Ответить
                                                    • Я вот тоже не смог нагуглить ничего, что было бы похоже на скриншот игры. Находятся только рекламные плакаты.
                                                      Ответить
                                                    • Хм, а что там непонятно из скриншотов?
                                                      Ответить
                                                      • ну, без шуток: ничего не понятно

                                                        игровая область на скринах очень маленькая, основная часть это няшки

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

                                                          Ну да, он и есть. Гоняешь няшек в рейды чтобы заработать ресурсы на рулетку, которая выдаёт новых няшек.
                                                          Ответить
                                                        • > ну, без шуток: ничего не понятно

                                                          > игровая область на скринах очень маленькая, основная часть это няшки

                                                          Да что там непонятного-то? Типичнейшая мобильная гача-дрочильня с аниме-девочками, которых надо коллекционировать и прокачивать, собирать всякие медальки-хуяльки. Таких продуктов очень и очень дохрена
                                                          Ответить
                                                          • > коллекционировать

                                                            А на деле 99% времени ты будешь чистить казарму вилкой, если не задонатишь на сотню-другую дополнительных слотов. Ибо в отличие от того же аркнайта тут нету автоматической дедупликации няшек.
                                                            Ответить
                                                            • м-да. лучше я дальше в tsw
                                                              Ответить
                                                            • > А на деле 99% времени ты будешь чистить казарму вилкой, если не задонатишь на сотню-другую дополнительных слотов.

                                                              А ты в это реально играла? Может ты еще и в "IDOLM@STER" играешь?
                                                              Ответить
                                                              • > А ты в это реально играла?

                                                                Ну да, пока они не переусложнили меню... Я блин туда деградировать пришла, а не десяток новых механик разом изучать и гайды читать.
                                                                Ответить
                                              • Хотя я немного наврал: не отрезками дуг, а отрезками радиусов. Там же частота развёртки по радиусу больше частоты развёртки по углу.

                                                И по углу нет обратного хода, что круто.
                                                Ответить
                                                • Значит такой дизайн неравномерно поганит люминифор
                                                  Ответить
                              • ЭЛТ ни о каких пикселях не знает.

                                Есть два стула: один гоняет луч по экрану слева направо, сверху вниз. Второй этот луч включает/выключает, расстреливая три зерна (RGB).

                                В зависимости от скорости движения луча и частоты включения/выключения можно получать разные разрешения.

                                Сигнал полностью аналоговый.

                                Классический VGA монитор тоже ничего не знает, но "цифровой" (aka multisync) имел чип, который умел понять частоту (скорость луча) и сообщить, что скорость слишком большая, если мон ее не поддерживает.

                                В цифровых протоколах (TMDS) может быть уже есть пиксели
                                Ответить
                                • > может быть

                                  Ну цифровой без пикселей уже не сделать, как не крути... Хотя в остальном развёртка там точно такая же.
                                  Ответить
                                  • ну да, там тоже есть "обратный ход луча" который по правильному называется вроде VSync
                                    Ответить
                                • А что если соединить компы, в серавно эти 15 пиновые порты никто не использует и гонять ppp чи slip
                                  Ответить
                          • 576 видимых строк — требование телевизионных стандартов (D, K и ещё каких-то) для развёртки на 625 строк (включая обьратный ход).

                            480 видимых строк — требование телевизионного стандарта M с развёрткой на 525 строк (включая обратный ход).

                            По горизонтали в аналоговом телевидении изображение не разбито, можно брать произвольное значение (главное уложиться в предельную частоту сигнала, которую пропускает усилитель). Обычно количество строк умножали на 4/3.

                            720 в этом стандарте взяли для простоты. И в DVD, кстати, этот размер повторили.
                            Ответить
                    • > есть цифровой формат
                      чтобы считать с кассеты нужно же её прокрутить полностью или там какое-то карате?
                      Ответить
                      • У DV нет межкадрового сжатия, т. е. каждый кадр является опорным. Кассету можно начинать читать с любого места. Блок вращающихся головок за оборот будет захватывать кадр, если не ошибаюсь, поэтому начало кадра он не прозевает.
                        Ответить
                        • но, чтобы начать читать кассету с какого-то места, до него нужно же домотать?
                          Ответить
                          • Да. Некоторые производители (Sony, Panasonic) вставляли в кассету чип, который запоминал границы видеозаписей. Тогда камера могла сама перемотать кассету на N-й фрагмент. Но эти чипы были несовместимыми: Panasonic проигнорирует чип в кассете Sony, и перематывать придётся вручную.
                            Ответить
                            • а как он интересно их определял? по резкой смене кадра?

                              в аудиокассетах тоже такая фишка была вроде, только у меня кассет таких не было, да и магнитола моя в детстве кажется такое колдунство не умела
                              Ответить
                              • Там было тупо: идентификатор фрагмента записывался, когда при съёмке нажимаешь Большую красную кнопку™.
                                Ответить
                                • > идентификатор фрагмента

                                  Просто какая-то частотная метка?
                                  Ответить
                                  • На кассетах без чипа, видимо, частотная метка.

                                    Кассеты с чипом ещё на чипе сохраняли значение счётчика ленты для быстрого поиска.
                                    Ответить
                              • Аудиокассет с чипом не было.

                                Была техника, которая искала N-ю запись по паузам. Но так вроде умели только навороченные музыкальные центры. В магнитолах попроще считали это ненужным, там был только ручной поиск.
                                Ответить
                                • хм, то есть оно ожидаемо наёбывалось, если в композиции была предусмотренная пауза?
                                  Ответить
                                  • Ага. Короткие паузы эта штука могла игнорировать, но если в композиции была длинная, она считалась за конец трека.
                                    Ответить
            • > почему-то

              Потому что нинужно? Полосы и латенси у USB3 с запасом хватает, да и проблем с патентами нету.
              Ответить
              • зато название чёткое

                фаевае

                от создателей уоки-токи, хайфай, вайфай, фаевол
                Ответить
                • https://youtu.be/C4u1xwT3_AA

                  Если хочешь, ты меня полюби;
                  Просто так или с USB;
                  И может быть, мы сразу друг друга поймем –
                  Если у нас один и тот же разъем.
                  
                  Как тебя услышать, если я без ушей?
                  В компьютере полно летучих мышей;
                  А желтая луна встает в камышах.
                  Есть такое чувство, будто всем нам шах.
                  
                  Минус на минус не всегда дает плюс.
                  Где-то в сети лежит языческий блюз;
                  А желтая луна уже на уровне крыш –
                  Я тебя не слышу, неужели ты спишь…
                  
                  Солнце на закат, значит
                  Луна на восход.
                  Как обидно быть умным –
                  Знаешь все наперед.
                  Все мои прямые
                  Свернулись в кольцо –
                  Как мне увидеть тебя,
                  Когда прожекторы прямо в лицо?
                  
                  Ты будешь небом, где
                  Нежатся облака;
                  Я буду морем, морем
                  Без рыбака;
                  Все мои прямые
                  Свернулись в кольцо;
                  Как я узнаю тебя, когда
                  Прожекторы прямо в лицо?
                  
                  Так что если хочешь, ты меня полюби.
                  Firewire или USB.
                  Может быть, мы сразу друг друга поймем –
                  Видит Бог, у нас один и тот же разъем.
                  Ответить
    • ггг )))
      https://pbs.twimg.com/media/FB6YfJBWYAAZVjj?format=jpg&name=900x900
      Ответить

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