Задать вопрос
  • Как проще в VIsual C/C++ заменить "//" на "/" в переданном аргументе командной строки?

    @DWZ Автор вопроса
    дело не в этом. Есть коктейль из CMake/MinGW/xsltproc/tar/nasm и т.д. И вся эта солянка формирует пути для Patch и формирует неправильно. В результате имеем что-то вроде
    G:/Dev/MinGW/bin/Patch.exe -p0 -i G:/avidemux_2.7.4/avidemux_core/../avidemux_core/ffmpeg_package/patches//libavcodec_ac3_h.patch 
    G:/Dev/MinGW/bin/Patch.exe -p0 -i G:/avidemux_2.7.4/avidemux_core/../avidemux_core/ffmpeg_package/patches//libavcodec_avcodec.h.patch 
    G:/Dev/MinGW/bin/Patch.exe -p0 -i G:/avidemux_2.7.4/avidemux_core/../avidemux_core/ffmpeg_package/patches//libavcodec_ff_spsinfo.h.patch 
    G:/Dev/MinGW/bin/Patch.exe -p0 -i G:/avidemux_2.7.4/avidemux_core/../avidemux_core/ffmpeg_package/patches//libavcodec_golomb.h.patch 
    G:/Dev/MinGW/bin/Patch.exe -p0 -i G:/avidemux_2.7.4/avidemux_core/../avidemux_core/ffmpeg_package/patches//libavcodec_h264_parser.c.patch 
    G:/Dev/MinGW/bin/Patch.exe -p0 -i G:/avidemux_2.7.4/avidemux_core/../avidemux_core/ffmpeg_package/patches//libavcodec_hevc_parser.c.patch 
    G:/Dev/MinGW/bin/Patch.exe -p0 -i G:/avidemux_2.7.4/avidemux_core/../avidemux_core/ffmpeg_package/patches//libavcodec_internal_h_msvc.patch 
    G:/Dev/MinGW/bin/Patch.exe -p0 -i G:/avidemux_2.7.4/avidemux_core/../avidemux_core/ffmpeg_package/patches//libavcodec_libavcodec.v.patch 
    G:/Dev/MinGW/bin/Patch.exe -p0 -i G:/avidemux_2.7.4/avidemux_core/../avidemux_core/ffmpeg_package/patches//libavcodec_mathops.h.patch 
    G:/Dev/MinGW/bin/Patch.exe -p0 -i G:/avidemux_2.7.4/avidemux_core/../avidemux_core/ffmpeg_package/patches//libavcodec_mpeg12enc.c.patch 
    G:/Dev/MinGW/bin/Patch.exe -p0 -i G:/avidemux_2.7.4/avidemux_core/../avidemux_core/ffmpeg_package/patches//libavcodec_mpegvideo_enc.c.patch 
    G:/Dev/MinGW/bin/Patch.exe -p0 -i G:/avidemux_2.7.4/avidemux_core/../avidemux_core/ffmpeg_package/patches//libavcodec_nvenc.c.patch 
    G:/Dev/MinGW/bin/Patch.exe -p0 -i G:/avidemux_2.7.4/avidemux_core/../avidemux_core/ffmpeg_package/patches//libavcodec_nvenc.patch 
    G:/Dev/MinGW/bin/Patch.exe -p0 -i G:/avidemux_2.7.4/avidemux_core/../avidemux_core/ffmpeg_package/patches//libavformat_isom.c.patch


    и если
    avidemux_core/../avidemux_core
    ещё можно как-то пережить, то
    patches//libavformat
    приводит к сбою. Конечно, кошернее было бы настроить формирование нормального пути, но в этом хламе я буду до пенсии ковыряться. Поэтому мне проще завернуть patch в свою обёртку и исправить путь уже там.
  • Как под Windows обнаружить запущенные программы захвата экрана?

    @DWZ Автор вопроса
    Тут скорее библиотека нужна для подключения к своей программе (дельфийский компонент ;)))) ). Теоретически такое возможно, но не практично.
  • Как под Windows обнаружить запущенные программы захвата экрана?

    @DWZ Автор вопроса
    #,

    > че вопросы тогда задаем то?

    см. выше ответ Hemul GM

    > (они у вас есть кстати? у меня нет, если вот так с ходу)

    Мне и не надо, главное, чтобы у автора они были, если вообще он использует именно этот метод. Если бы оболочка работала - я бы попробовал малоизвестную или самопальную грабилку, просто из интереса, обнаружит он её или нет. И смотрит ли за флагом HDCP на DVI? Но автор уже не торгует курсами, а из видео слова не выкинешь.
  • Как под Windows обнаружить запущенные программы захвата экрана?

    @DWZ Автор вопроса
    Hemul GM,

    > ты боишься захвата экрана 3D приложений или раб. стола?

    Я-то нет. Просто мне попались видеокурсы аж 2016 г, где автор говорит, что его оболочка (судя по всему, Дельфийская) не будет работать при запущенных грабилках экрана. Вот я и задумался, как такое можно было бы реализовать и не бравада ли это вроде защиты курса английского языка на кассетах.
  • Как под Windows обнаружить запущенные программы захвата экрана?

    @DWZ Автор вопроса
    Ну, сетевую и дисковую активность может не только захват генерить, но гипотеза интересная. Хотя лично я предпочёл бы поиск по БД известных программ захвата, благо их не так и много.

    Я о другом - есть ли действительно метод перехватить именно незнакомую программу именно захвата экрана? Скажем, какую-нибудь цепочку DirectX отслеживать?
  • Программа-детектор "оквадраченных" кадров в видео?

    @DWZ Автор вопроса
    Битые кадры будут иметь 2-3 характерных пика на кратных частотах.


    Скорее, на высоких частотах будет провал. Ведь квадраты потому и образуются, что кодер что-то выкинул. Но это надо смотреть.

    Можно и второй вариант, попроще - считать среднюю по кадру контрастность между соседними ячейками сетки 8x8, 16x16


    У меня была похожая идея - кадр бьётся на блоки 8x8 и попиксельно сравнивается с аналогичным кадром из "эталона" *) и, если больше взятого с потолка числа пикселов отличаются более чем на другое взятое с потолка значение, объявлять тревогу. Проблема в том, как правильно найти эти значения.

    Особо не изучал вопрос, просто проходил мимо и рассуждал логически,


    Можно также границу искать, чтобы был резкий перепад между соседними блоками И по вертикали И по горизонтали. Главное, чтобы не придумали рисовать орнамент точно по границам блоков для лучшей компрессии.

    Только вот пиксел другого цвета в уголке квадратика меня смутил.

    Задача-то интересная.


    Я тоже надеялся, что народ подключится к этому челленджу. Неужели, кроме меня, никому в мире это не надо?

    *) "Эталон" в кавычках потому, что у него тоже бывают сбои, но, как правило, на другом месте. Если оба сбойнут одинаково, тогда ой. Для этого мне и нужно ловить квадраты, чтобы знать, не нужна ли третья, четвёртая и т. д. последовательность, пока всё, наконец, не соберётся без помех.
  • Как отвязать внешний диск от системы так, чтобы это было легитимно?

    @DWZ
    АртемЪ,
    Ну под дисковый кэш постоянно несколько гигов занято.


    И эти данные четыре часа в кэше "висят" так на диск и не попадая? Что-то меня сомнения гложут.
  • Как отвязать внешний диск от системы так, чтобы это было легитимно?

    @DWZ
    АртемЪ,
    Логично - все что в кэше то и пропадет.


    Несколько гигов пропало - для кеша многовато.
  • Как отвязать внешний диск от системы так, чтобы это было легитимно?

    @DWZ
    У меня лично при таком извлечении куча файлов пропала. Думал - раз NTFS, так можно выдёргивать безнаказанно, лишь бы на диск не писалось. Оказалось, что нет. :(

    Поэтому присоединяюсь к автору вопроса.
  • VC++ 2010 не даёт описать переменную в середине блока - ограничение Express-версии?

    @DWZ Автор вопроса
    Армянское Радио, Параллельным запуском под отладчиками двух исходников. Даже вопрос хотел написать про автоматизацию этого дела. Думал, что макросы какие-то не так раскрылись, а оказалось, что

    for (i=0; i<import.nb_tracks; i++) {
            import.trackID = import.tk_info[i].track_num;


    какой-то диверсант заменил на
    nb_tracks = gf_isom_get_track_count(dest);
        for (i=0; i<nb_tracks; i++) {
            import.trackID = import.tk_info[i].track_num;


    а gf_isom_get_track_count() возвращает 0, в результате в цикл не заходит и почти ничего в выходной файл не пишется. Сейчас уже откатили.
  • VC++ 2010 не даёт описать переменную в середине блока - ограничение Express-версии?

    @DWZ Автор вопроса
    DWZ,
    К тому же 32-битная версия отказалась обрабатывать файл > 4 Гб.


    Была ошибка в исходнике. Теперь файл > 4 Гб можно обрабатывать и 32-битной версией
  • VC++ 2010 не даёт описать переменную в середине блока - ограничение Express-версии?

    @DWZ Автор вопроса
    Армянское Радио, что-то линкер в "x64" на unresolved external symbol стал ругаться и на свои и на системные и все с префиксом __imp_. Для платформы win32 всё нормально.

    1>main.obj : error LNK2019: unresolved external symbol __imp_SetConsoleOutputCP referenced in function wmain
    1>compositor_2d.obj : error LNK2019: unresolved external symbol __imp_glEnd referenced in function c2d_gl_fill_no_alpha
    1>visual_manager_3d_gl.obj : error LNK2001: unresolved external symbol __imp_glEnd
    1>compositor_2d.obj : error LNK2019: unresolved external symbol __imp_glVertex2i referenced in function c2d_gl_fill_no_alpha
    1>compositor_2d.obj : error LNK2019: unresolved external symbol __imp_glColor3ub referenced in function c2d_gl_fill_no_alpha
    1>compositor_2d.obj : error LNK2019: unresolved external symbol __imp_glBegin referenced in function c2d_gl_fill_no_alpha


    Как избавиться от этого "__imp_"?
  • VC++ 2010 не даёт описать переменную в середине блока - ограничение Express-версии?

    @DWZ Автор вопроса
    Армянское Радио, Спасибо, платформа "x64" появилась. Правда, ошибка с описанием переменной посреди блока так и осталась. Хорошо, что уже есть исправленные исходники.
  • VC++ 2010 не даёт описать переменную в середине блока - ограничение Express-версии?

    @DWZ Автор вопроса
    Армянское Радио,
    к нему можно поставить PlatformSDK 7.1, в котором есть 64 битный компилятор.


    Спасибо, посмотрю.

    Но лучше просто перейти на современный инструмент.


    Можно-то оно можно, но у меня вопрос - как сами GPAC'овцы это под VC 2010 скомпилировали? Или они выложили это для отвода глаз?
  • VC++ 2010 не даёт описать переменную в середине блока - ограничение Express-версии?

    @DWZ Автор вопроса
    res2001, Самое смешное, что сами авторы, если верить Dependence Walker, использовали VC 2010. Получается, что у них в Гитхабе либо не тот проект, либо не те исходники.
  • VC++ 2010 не даёт описать переменную в середине блока - ограничение Express-версии?

    @DWZ Автор вопроса
    При переключении в режим "Компилировать как С++ (/TP)" куча ошибок по приведению типов

    >c:\distrib\gpac-master\applications\mp4box\fileimport.c(86): error C2440: =: невозможно преобразовать "void *" в "char *"
    1>          Для преобразования "void*" к указателю на тип, не являющемуся "void", требуется явное приведение
    1>c:\distrib\gpac-master\applications\mp4box\fileimport.c(142): error C2440: =: невозможно преобразовать "int" в "Bool"
    1>          Для преобразования в перечисляемый тип требуется явное приведение (static_cast, приведение в стиле С или приведение в стиле функции)


    К тому же 32-битная версия отказалась обрабатывать файл > 4 Гб.

    Вывод: Express 2010 - не катит.
  • VC++ 2010 не даёт описать переменную в середине блока - ограничение Express-версии?

    @DWZ Автор вопроса
    Армянское Радио, Возможно. Но настройки тоже не мои. Говорят - бери 2010-й VC++, взял 2010-й, правда Express. Ничего нигде не менял - и на вот тебе.
  • VC++ 2010 не даёт описать переменную в середине блока - ограничение Express-версии?

    @DWZ Автор вопроса
    Посмотрите в настройках проекта какая версия языка используется


    А не подскажете, где именно?

    В VC2017 эта опция находится в Configuration Properties -> C/C++ -> Language -> C++ Language Standard


    У меня только
    5dc945111a35a421762533.png

    PS: номер и текст ошибки то же было бы не плохо сюда запостить.


    // очень много всего
    if (do_all)
            import.flags |= GF_IMPORT_KEEP_REFS;
        u32 nb_tracks = gf_isom_get_track_count(dest);


    ругается на строчку с u32

    c:\users\user\documents\visual studio 2010\projects\gpac-master\applications\mp4box\fileimport.c(797): error C2275: u32: недопустимое использование этого типа в качестве выражения


    убираем "u32", оставляем только

    nb_tracks = gf_isom_get_track_count(dest);

    идём наверх, где описываются переменные и ставим там
    u32 nb_tracks;

    главное поставить до первого оператора присваивания - и ошибка исчезает.

    Пример ошибки со встроенным типом сразу не найду, там всё аналогично, только ругается на ";"