MCPcopy Create free account
hub / github.com/apohl79/audiogridder / initialize

Method initialize

Server/Source/ScreenRecorder.cpp:44–107  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

42}
43
44void ScreenRecorder::initialize(ScreenRecorder::EncoderMode encMode, EncoderQuality quality) {
45 setLogTagStatic("screenrec");
46 traceScope();
47
48 SharedInstance<ScreenRecorder>::initialize();
49
50 av_log_set_callback(avLog);
51
52 m_encMode = encMode;
53 const char* encName = "unset";
54 switch (m_encMode) {
55 case WEBP:
56 encName = "libwebp";
57 m_quality = WEBP_QUALITY[quality];
58 break;
59 case MJPEG:
60 encName = "mjpeg";
61 m_quality = MJPEG_QUALITY[quality];
62 break;
63 }
64 m_outputCodec = avcodec_find_encoder_by_name(encName);
65 if (nullptr == m_outputCodec) {
66 logln("unable to find output codec " << encName);
67 return;
68 }
69
70#ifdef JUCE_MAC
71 m_downScale = quality != ENC_QUALITY_HIGH;
72#endif
73
74 if (m_initialized) {
75 return;
76 }
77
78 if (auto disp = Desktop::getInstance().getDisplays().getPrimaryDisplay()) {
79 m_scale = disp->scale;
80 } else {
81 m_scale = 1.0;
82 }
83
84 avdevice_register_all();
85
86#ifdef JUCE_MAC
87 askForScreenRecordingPermission();
88 m_inputFmtName = "avfoundation";
89 m_inputStreamUrl = String(getCaptureDeviceIndex()) + ":none";
90#elif defined JUCE_LINUX
91 m_inputFmtName = "x11grab";
92 m_inputStreamUrl = ":0.0";
93#else
94 m_inputFmtName = "gdigrab";
95 m_inputStreamUrl = "desktop";
96#endif
97
98 logln("using device " << m_inputFmtName << " with stream URL '" << m_inputStreamUrl << "'");
99
100 m_inputFmt = av_find_input_format(m_inputFmtName.getCharPointer());
101 if (nullptr == m_inputFmt) {

Callers

nothing calls this directly

Calls 1

initializeFunction · 0.50

Tested by

no test coverage detected