Showing posts with label FFMPEG. Show all posts
Showing posts with label FFMPEG. Show all posts

Thursday, July 30, 2020

modify GDIGRAB (FFMPEG) to select windows by HWND id

if (!strncmp(filename, "title=", 6)) {
        name = filename + 6;
        hwnd = FindWindow(NULL, name);
        if (!hwnd) {
            av_log(s1, AV_LOG_ERROR,
                "Can't find window '%s', aborting.\n", name);
            ret = AVERROR(EIO);
            goto error;
        }
        if (gdigrab->show_region) {
            av_log(s1, AV_LOG_WARNING,
                "Can't show region when grabbing a window.\n");
            gdigrab->show_region = 0;
        }
    } else if (!strncmp(filename, "hwnd=", 5)) {
        name = filename + 5;
        hwnd = strtol(name, NULL, 16);
        //hwnd = 0x21230;

        if (!hwnd) {
            av_log(s1, AV_LOG_ERROR,
                "Can't find HWND window '%s', aborting.\n", name);
            ret = AVERROR(EIO);
            goto error;
        }
        if (gdigrab->show_region) {
            av_log(s1, AV_LOG_WARNING,
                "Can't show region when grabbing a window.\n");
            gdigrab->show_region = 0;
        }
    } else if (!strcmp(filename, "desktop")) {
        hwnd = NULL;
    } else {
        av_log(s1, AV_LOG_ERROR,
               "Please use \"desktop\" or \"title=\" to specify your target.\n");
        ret = AVERROR(EIO);
        goto error;
    }