diff --git a/api_level_2/cli/rtsp_fps_test.py b/api_level_2/cli/rtsp_fps_test.py index d064c8e..5af62b6 100644 --- a/api_level_2/cli/rtsp_fps_test.py +++ b/api_level_2/cli/rtsp_fps_test.py @@ -8,8 +8,9 @@ For the exact format of the .yaml file, please see below """ -import os, yaml, time +import os, yaml, time, sys from valkka.core import * +from valkka.api2.logging import setFFmpegLogLevel, setValkkaLogLevel """We can express a filterchain as a hierarchical list as well! (no need for ascii art): :: @@ -31,7 +32,7 @@ class Filterchain: def __init__(self, livethread = None, address = None, slot = 1, interval = 10, sws = None, verbose = False, n_stack = None, - affinity = None, n_threads = None, ms_pass = None + affinity = None, n_threads = None, ms_pass = None, vaapi = False, tcp = False ): self.livethread = livethread self.interval = int(interval*1000) # sec to msec @@ -40,6 +41,8 @@ def __init__(self, livethread = None, address = None, self.sws = sws # None or tuple: (width, height) self.verbose = verbose self.n_stack = n_stack # not used + self.vaapi = vaapi + self.tcp = tcp # *** DECODE BRANCH *** # Create the FPSCountFrameFilter @@ -76,10 +79,17 @@ def __init__(self, livethread = None, address = None, #if self.n_stack is not None: # ffc.n_basic = dic["n_stack_live"] - self.avthread = AVThread( - "avthread-" + str(self.slot), - self.fork2) # feeds the bitmap fork & decoding branch - # self.framefifo_ctx) + if self.vaapi: + print("using vaapi for stream", address) + self.avthread = VAAPIThread( + "avthread-" + str(self.slot), + self.fork2) # feeds the bitmap fork & decoding branch + # self.framefifo_ctx) + else: + self.avthread = AVThread( + "avthread-" + str(self.slot), + self.fork2) # feeds the bitmap fork & decoding branch + # self.framefifo_ctx) if n_threads: print("setting", n_threads,"threads per libav decoder") @@ -95,7 +105,11 @@ def __init__(self, livethread = None, address = None, self.ctx =\ LiveConnectionContext(LiveConnectionType_rtsp, self.address, self.slot, self.fork1) - + if self.tcp: + print("USING TCP") + self.ctx.request_tcp = True + else: + print("USING UDP") def __call__(self): # start decoding thread @@ -117,7 +131,7 @@ def waitStop(self): self.avthread.waitStopCall() -def makeChains(): +def makeChains(yaml_file = "streams.yaml"): """Create filterchains based on a yaml file that looks like this: :: @@ -129,6 +143,7 @@ def makeChains(): use: true # optional bind: 1 # optional ms_pass: 100 # optional (see below) + vaapi: true # optional - name: that other camera address: rtsp://user:passwd@192.168.1.13 interpolate: [300,300] # optional @@ -142,6 +157,7 @@ def makeChains(): bind: 0 # bind livethread to a core # optional decoder_threads: 2 # how many libav(ffmpeg) threads per decoder ms_pass: 100 # after decoding to YUV, pass each frame only every 100 ms # optional + vaapi: true # use vaapi for streams # optional If the top-level "interpolate" is present, then all YUVs are interpolated into that RGB dimensions @@ -172,13 +188,16 @@ def makeChains(): ..can just use buffers that overflow (& should shut up the overflow warning) """ - with open('streams.yaml','r') as f: + with open(yaml_file,'r') as f: dic=yaml.safe_load(f) itp = dic.get("interpolate", None) - verbose = False - if ("verbose" in dic) and (dic["verbose"]): - verbose = True + verbose = dic.get("verbose", False) + core_verbose = dic.get("core-verbose", False) + + if core_verbose: + setFFmpegLogLevel(3) + setValkkaLogLevel(4) assert "streams" in dic, "needs streams" assert "duration" in dic, "needs test duration" @@ -193,10 +212,11 @@ def makeChains(): print("binding livethread to", dic["bind"]) livethread.setAffinity(dic["bind"]) - n_stack_decoder = dic.get("n_stack_decoder", None) - # --> not used + n_stack_decoder = dic.get("n_stack_decoder", None) # not used n_threads = dic.get("decoder_threads", None) ms_pass = dic.get("ms_pass", None) + vaapi = dic.get("vaapi", False) + tcp = dic.get("tcp", False) chains = [] cc = 1 @@ -210,6 +230,8 @@ def makeChains(): bind = stream.get("bind", None) ms_pass_ = stream.get("ms_pass", ms_pass) + vaapi_ = stream.get("vaapi", vaapi) + tcp_ = stream.get("tcp", tcp) fc = Filterchain( livethread = livethread, @@ -221,7 +243,9 @@ def makeChains(): n_stack = n_stack_decoder, affinity = bind, n_threads = n_threads, - ms_pass = ms_pass_ + ms_pass = ms_pass_, + vaapi = vaapi_, + tcp = tcp_ ) chains.append(fc) cc+=1 @@ -231,8 +255,13 @@ def makeChains(): # start live connections and decoders print("USING", len(chains), "STREAM(S)") + print("all addresses:") + for i, chain in enumerate(chains): + print(i+1, chain.address) + print("") for chain in chains: chain() + # time.sleep(0.1) print("all cams started, running test for", dic["duration"], "seconds") time.sleep(dic["duration"]) @@ -248,6 +277,8 @@ def makeChains(): if __name__ == "__main__": - from valkka.api2.logging import setFFmpegLogLevel - setFFmpegLogLevel(0) - makeChains() + if len(sys.argv) < 2: + makeChains() + else: + print("using input file", sys.argv[1]) + makeChains(sys.argv[1]) diff --git a/api_level_2/cli/single_stream_rtsp.py b/api_level_2/cli/single_stream_rtsp.py index 70ea969..c41b090 100644 --- a/api_level_2/cli/single_stream_rtsp.py +++ b/api_level_2/cli/single_stream_rtsp.py @@ -37,8 +37,8 @@ def main(): chain = BasicFilterchain( livethread=livethread, openglthread=openglthread, address=address, slot=1, - # vaapi = True - vaapi = False + vaapi = True + # vaapi = False ) chain.decodingOn() # tell the decoding thread to start its job diff --git a/api_level_2/cli/streams.yaml b/api_level_2/cli/streams.yaml index db11e29..3466d35 100644 --- a/api_level_2/cli/streams.yaml +++ b/api_level_2/cli/streams.yaml @@ -1,19 +1,19 @@ streams: - name: mummocamera - # address: rtsp://admin:vittuhikki@192.168.1.100 - address: rtsp://admin:12345@10.0.0.7 + address: rtsp://admin:123456@10.0.0.4 use: true bind: 1 ms_pass: 100 - name: mummocamera - # address: rtsp://admin:vittuhikki@192.168.1.100 - address: rtsp://admin:12345@10.0.0.7 + address: rtsp://admin:123456@10.0.0.4 use: false bind: 2 interpolate: [300,300] interval: 5 -duration: 20 -verbose: true +duration: 10 +# verbose: true +verbose: false bind: 0 decoder_threads: 2 # ms_pass: 100 +vaapi: true diff --git a/docs/_build/doctrees/hardware.doctree b/docs/_build/doctrees/hardware.doctree index 2404f7d..7ed8266 100644 Binary files a/docs/_build/doctrees/hardware.doctree and b/docs/_build/doctrees/hardware.doctree differ diff --git a/docs/_build/doctrees/requirements.doctree b/docs/_build/doctrees/requirements.doctree index 4f4938f..5539d5d 100644 Binary files a/docs/_build/doctrees/requirements.doctree and b/docs/_build/doctrees/requirements.doctree differ diff --git a/docs/_build/html/_sources/hardware.rst.txt b/docs/_build/html/_sources/hardware.rst.txt index 64d4f87..c0b0f69 100644 --- a/docs/_build/html/_sources/hardware.rst.txt +++ b/docs/_build/html/_sources/hardware.rst.txt @@ -56,6 +56,15 @@ Please first read this :ref:`word of warning `. Comes in the basic libValkka installation (and uses ffmpeg/libav infrastructure) - no additional packages needed. +First of all, the user using VAAPI, must belong to the "video" user group: + +.. code:: bash + + groups $USER + # run the following command if the user does not appear in the video group + sudo usermod -a -G video $USER + # after that you still need to logout & login + In order to use the VAAPI acceleration, just replace `AVThread` with `VAAPIThread`, i.e. instead of .. code:: python @@ -68,6 +77,7 @@ use this: avthread = VAAPIThread("avthread", target_filter) + For more details about VAAPI, you can read `this `_, `this `_ and `this `_. @@ -92,6 +102,13 @@ If you wish to use VAAPI in a docker environment, you should start docker with And be sure that the host machine has all required vaapi-related libraries installed (the easiest way: install libValkka on the host as well). +Finally, you can follow the GPU usage in realtime with: + +.. code:: bash + + sudo intel_gpu_top + + *NVidia / CUDA* Provided as a separate package that installs into the `valkka.nv` namespace and is used like this: diff --git a/docs/_build/html/_sources/requirements.rst.txt b/docs/_build/html/_sources/requirements.rst.txt index 32d7f94..69ae203 100644 --- a/docs/_build/html/_sources/requirements.rst.txt +++ b/docs/_build/html/_sources/requirements.rst.txt @@ -4,8 +4,15 @@ Installing ========== -Install valkka-core -------------------- +The debian package includes the core library, its python bindings and some API level 2 python code. The python part is installed "globally" into */usr/lib/python3/dist-packages/* + +.. note:: LibValkka comes precompiled and packaged for a certain ubuntu distribution version. This means that the compilation and it's dependencies assume the default + python version of that distribution. Using custom-installed python versions, anacondas and whatnot might cause dependency problems. + +A. Install using PPA +-------------------- + +*the preferred way* For recent ubuntu distributions, the core library binary packages and python bindings are provided by a PPA repository. Subscribe to the PPA repo (do this only once) with: @@ -20,13 +27,6 @@ Install with: sudo apt-get update sudo apt-get install valkka -Test the installation with: - -:: - - curl https://raw.githubusercontent.com/elsampsa/valkka-examples/master/quicktest.py - python3 quicktest.py - When you need to update valkka, do: :: @@ -34,13 +34,43 @@ When you need to update valkka, do: sudo apt-get update sudo apt-get install --only-upgrade valkka + +B. Install using releases +------------------------- + +*if you don't like PPAs* + +You can download and install the required .deb packages "manually" from the +`releases page `_ + +:: + + sudo dpkg -i Valkka-*.deb + sudo apt-get install -fy + +The last line pulls the dependencies. + +Repeat the process when you need to update. + +C. Compile yourself +------------------- + +*the last resort* + If you're not using a recent Ubuntu distro and need to build libValkka and it's python bindings yourself, please refer to the `valkka-core github page `_. -The debian package includes the core library, its python bindings and some API level 2 python code. The python part is installed "globally" into */usr/lib/python3/dist-packages/* -.. note:: LibValkka comes precompiled and packaged for a certain ubuntu distribution version. This means that the compilation and it's dependencies assume the default - python version of that distribution. Using custom-installed python versions, anacondas and whatnot might cause dependency problems. +Test your installation +---------------------- + +Test the installation with: + +:: + + curl https://raw.githubusercontent.com/elsampsa/valkka-examples/master/quicktest.py -o quicktest.py + python3 quicktest.py + Numpy ----- diff --git a/docs/_build/html/hardware.html b/docs/_build/html/hardware.html index 6db4494..abb9977 100644 --- a/docs/_build/html/hardware.html +++ b/docs/_build/html/hardware.html @@ -71,6 +71,13 @@

Linux clientsword of warning.

VAAPI

Comes in the basic libValkka installation (and uses ffmpeg/libav infrastructure) - no additional packages needed.

+

First of all, the user using VAAPI, must belong to the “video” user group:

+
groups $USER
+# run the following command if the user does not appear in the video group
+sudo usermod -a -G video $USER
+# after that you still need to logout & login
+
+

In order to use the VAAPI acceleration, just replace AVThread with VAAPIThread, i.e. instead of

avthread = AVThread("avthread", target_filter)
 
@@ -95,6 +102,10 @@

Linux clients
sudo intel_gpu_top
+
+

NVidia / CUDA

Provided as a separate package that installs into the valkka.nv namespace and is used like this:

from valkka.nv import NVThread
diff --git a/docs/_build/html/index.html b/docs/_build/html/index.html
index c26a404..51118af 100644
--- a/docs/_build/html/index.html
+++ b/docs/_build/html/index.html
@@ -79,7 +79,10 @@ 

ValkkaInstalling
    -
  • Install valkka-core
  • +
  • A. Install using PPA
  • +
  • B. Install using releases
  • +
  • C. Compile yourself
  • +
  • Test your installation
  • Numpy
  • Install the testsuite
  • GTK
  • diff --git a/docs/_build/html/requirements.html b/docs/_build/html/requirements.html index 886d638..9d9cc7e 100644 --- a/docs/_build/html/requirements.html +++ b/docs/_build/html/requirements.html @@ -34,8 +34,15 @@

    Installing

    -
    -

    Install valkka-core

    +

    The debian package includes the core library, its python bindings and some API level 2 python code. The python part is installed “globally” into /usr/lib/python3/dist-packages/

    +
    +

    Note

    +

    LibValkka comes precompiled and packaged for a certain ubuntu distribution version. This means that the compilation and it’s dependencies assume the default +python version of that distribution. Using custom-installed python versions, anacondas and whatnot might cause dependency problems.

    +
    +
    +

    A. Install using PPA

    +

    the preferred way

    For recent ubuntu distributions, the core library binary packages and python bindings are provided by a PPA repository. Subscribe to the PPA repo (do this only once) with:

    sudo apt-add-repository ppa:sampsa-riikonen/valkka
     
    @@ -45,23 +52,36 @@

    Install valkka-coresudo apt-get install valkka

-

Test the installation with:

-
curl https://raw.githubusercontent.com/elsampsa/valkka-examples/master/quicktest.py
-python3 quicktest.py
-
-

When you need to update valkka, do:

sudo apt-get update
 sudo apt-get install --only-upgrade valkka
 
+ +
+

B. Install using releases

+

if you don’t like PPAs

+

You can download and install the required .deb packages “manually” from the +releases page

+
sudo dpkg -i Valkka-*.deb
+sudo apt-get install -fy
+
+
+

The last line pulls the dependencies.

+

Repeat the process when you need to update.

+
+
+

C. Compile yourself

+

the last resort

If you’re not using a recent Ubuntu distro and need to build libValkka and it’s python bindings yourself, please refer to the valkka-core github page.

-

The debian package includes the core library, its python bindings and some API level 2 python code. The python part is installed “globally” into /usr/lib/python3/dist-packages/

-
-

Note

-

LibValkka comes precompiled and packaged for a certain ubuntu distribution version. This means that the compilation and it’s dependencies assume the default -python version of that distribution. Using custom-installed python versions, anacondas and whatnot might cause dependency problems.

+
+
+

Test your installation

+

Test the installation with:

+
curl https://raw.githubusercontent.com/elsampsa/valkka-examples/master/quicktest.py -o quicktest.py
+python3 quicktest.py
+
@@ -176,7 +196,10 @@

Table of Contents

  • About Valkka
  • Supported hardware
  • Installing
      -
    • Install valkka-core
    • +
    • A. Install using PPA
    • +
    • B. Install using releases
    • +
    • C. Compile yourself
    • +
    • Test your installation
    • Numpy
    • Install the testsuite
    • GTK
    • diff --git a/docs/_build/html/searchindex.js b/docs/_build/html/searchindex.js index a23552a..f98a102 100644 --- a/docs/_build/html/searchindex.js +++ b/docs/_build/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({docnames:["authors","benchmarking","cloud","debugging","decoding","hardware","index","intro","knowledge","lesson_1","lesson_10","lesson_11","lesson_2","lesson_3","lesson_4","lesson_5","lesson_6","lesson_7","lesson_8","lesson_9","lesson_pre","license","modules","multi_gpu","onvif","pitfalls","qt_notes","repos","requirements","submodules","testsuite","tutorial","tutorial_temp","valkkafs"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":2,"sphinx.domains.rst":2,"sphinx.domains.std":2,"sphinx.ext.todo":2,"sphinx.ext.viewcode":1,sphinx:56},filenames:["authors.rst","benchmarking.rst","cloud.rst","debugging.rst","decoding.rst","hardware.rst","index.rst","intro.rst","knowledge.rst","lesson_1.rst","lesson_10.rst","lesson_11.rst","lesson_2.rst","lesson_3.rst","lesson_4.rst","lesson_5.rst","lesson_6.rst","lesson_7.rst","lesson_8.rst","lesson_9.rst","lesson_pre.rst","license.rst","modules.rst","multi_gpu.rst","onvif.rst","pitfalls.rst","qt_notes.rst","repos.rst","requirements.rst","submodules.rst","testsuite.rst","tutorial.rst","tutorial_temp.rst","valkkafs.rst"],objects:{},objnames:{},objtypes:{},terms:{"100":[9,11,14,15,18,25],"1000":[11,13,14,17,25],"10000":18,"101":11,"1024":[11,14,33],"1024kbit":11,"103":[9,11],"104":[9,11],"1080":[10,12,14,17],"1080p":[4,30],"114":11,"117":11,"12345":[11,13,24],"123456":14,"127":[11,15,30],"128":11,"129":11,"132":9,"134":14,"136":11,"142":11,"1525870759898":12,"1525870759938":12,"1525870891068":9,"154":11,"1543314164986":11,"1543314165135":11,"1543314165215":11,"1543314165335":11,"157":[11,13],"160":11,"168":[9,11,12,13,14,15,16,18,19,24,25],"172":11,"173":9,"176":11,"178":9,"180":11,"181":11,"186":11,"191":11,"192":[9,11,12,13,14,15,16,18,19,24,25],"1920":[10,12,14,17],"1920p":1,"193":11,"19408":11,"19460":11,"200":[11,30],"2000":16,"2017":21,"2020":[2,21],"2048":[11,25,33],"2048kbit":[],"206":11,"208":11,"2097152":25,"223":11,"224":15,"23370":[],"238":[9,11],"255":11,"256":11,"2560":11,"2560p":1,"256kb":11,"2979":[],"2ac1":33,"300":[13,30],"37c591e3":33,"400":1,"4000x3000":4,"4096kbp":25,"43d818fb0ffe":[],"4548":33,"465":33,"4770":1,"4928":11,"4ef5":33,"500":[1,4,11,14],"50000":15,"512":[],"5120":[],"512kb":[],"554":25,"568":8,"600":1,"600x600":4,"626c5523":[],"720p":[4,10,13,30],"7700hq":1,"81add9da8a58":33,"8554":[15,30],"8xi7":1,"90000":15,"925412":11,"95000":15,"960":12,"976771087":33,"976773134":33,"break":14,"byte":[9,11,14,30,33],"case":[2,8,9,13,14,18,23,25,28,32,33],"catch":26,"class":[4,6,9,10,11,12,13,14,18,25,26,32,33],"default":[4,8,10,15,18,25,28,30],"export":[5,13,25,31,32],"final":[3,7,8,9,11,12,13,14,16,19,23,26,28,30,33],"float":30,"function":[7,11],"import":[4,5,9,10,11,13,14,15,16,18,19,24,26,28,32],"int":[11,26],"long":[1,24,25,30],"machine vis":6,"new":[7,11,13,14,17,32],"return":[11,14,26],"short":24,"static":32,"switch":[3,25,30],"throw":3,"true":[2,8,11,14,25],"try":[7,11,18,24,25,26,28,30,32,33],"video analysi":6,"video manag":6,"video surveil":6,"while":[2,4,6,8,9,11,13,14,15,22,28,33],Adding:25,And:[4,5,7,14,25,26],Are:25,But:14,For:[2,4,5,6,7,8,11,12,13,14,16,22,23,25,28,30,31,33],HLS:2,LTS:[1,8],Near:7,Not:11,One:[24,30,31],Such:[7,14],THE:30,That:[4,8,9,11,12,24,26,28],The:[3,4,5,6,8,9,10,11,12,13,14,15,16,17,18,21,22,23,24,25,26,28,32,33],Then:[3,9,14,15,25,32,33],There:[8,11,12,13,17,26,32,33],These:[11,12,13,14,22],Use:[3,11,23,25],Used:11,Using:[6,25,26,28,32],VMS:[6,11],With:[7,13,14,23,25],__init__:[13,32],__pycache__:32,_at_:0,_branch_sub:17,_build:32,a10:[],a15:[],a169:[],a1eb:33,a20:[],a54c1880e300:[],abbrevi:1,abil:23,abl:[2,8,24,30],about:[2,4,5,6,9,10,11,14,24,27,28,33],abov:[4,11,14,24,25,28,30,32],absolut:23,acceler:[6,12],accept:[9,30],access:[18,30,32,33],accordingli:32,accumul:4,achiev:[2,11,13,25],across:6,activ:[5,9,11,14,16,32],actual:[11,14,23,32],add:[8,11,13,19,28,29,30,32],added:[],addit:[5,30],addrectanglecal:19,address:[5,11,13,14,15,17,18,24],adequ:3,adjust:[13,14,25,33],admin:[9,11,12,13,14,15,16,18,19,24,25],advanc:31,advantag:[14,23,33],affin:[1,18,30],afford:30,afraid:[],after:[2,3,8,9,11,14,25,28,30,32,33],again:[2,6,9,11,14,16,25,28,33],against:[5,25,30],agnost:6,agpl:27,ahead:32,aka:[2,13,23],algorithm:[7,8],aliv:14,all:[2,3,4,5,6,7,8,9,10,11,12,13,14,15,23,24,25,26,28,30,32,33],allow:[11,25],alltogeth:[],almost:[24,25],alon:[26,32],along:[],alpha:7,alreadi:6,also:[2,3,4,7,9,10,11,13,14,15,16,18,19,23,24,25,26,28,30,32,33],alt:25,altern:[11,25,26],alwai:[28,32],ambiti:13,among:[30,33],amount:[7,33],amp:[],anaconda:28,analysi:[7,14,26],analyt:24,analyz:[4,6,7,26,31],ancient:23,ani:[2,3,4,8,9,11,14,15,24,26,30,32,33],anoth:[7,9,11,12,13,14,15,23,30],anyth:[24,28],api2:[4,9,11,14,18,22,27],api:[2,4,6,9,11,12,13,22,23,25,27,28,31,32,33],api_level_1:[26,31],api_level_2:[18,23,26,30],app:6,appear:[7,8,33],append:[13,14],applet:23,appli:[14,26,30,33],applic:[3,4,6,7,11,13,25,26],approach:[2,6,26,33],approx:4,approxim:[],apt:[3,8,23,24,25,28],arbitrari:11,architectur:[6,7,8,13,28],archiv:[],arg:3,argument:[13,18],aris:11,arm:[],around:[13,31,32],arp:24,arrai:14,arrang:14,arriv:[4,11,13,24,25,30],articl:6,asap:[11,32],ask:4,aspect:31,associ:25,assum:[4,28,32,33],assur:11,asterix:11,ati:5,author:[6,32],auto:32,autodoc:32,autogener:[29,32],automag:32,automat:[28,32,33],aux:3,auxiliari:32,av3_in_filt:17,av_in_filt:[10,12,13,14,16,19],avail:[4,5,7,8,9,13,18,22,25,30,33],avbitmapfram:12,avoid:[7,32,33],avp:15,avthread:[4,5,7,10,12,13,14,16,17,18,19,25],avthread_3:17,awar:[28,30,33],axi:[5,24],b16:[],b17:[],b33b:33,b8af:33,back:[14,32],backend:[26,32],background:[6,11,26],backtrac:3,balanc:30,bandwith:25,base:[6,7,12,13,14,24,25,32],baselin:30,bash:[3,8,25,32],basi:[11,16,30],basic:[2,5,24,31],basicfilterchain:18,basicfram:[9,11],bbox:19,bdist_wheel:8,beast:[4,11],becaus:4,becom:24,been:[7,8,13,14,16,23,24,25,26,28,32],befor:[4,8,9,11,12,14,15,24,25,30,31,32],begin:[2,9,11,12,13,14,15,16,18,24],behaviour:[11,14,30],behind:[2,32],being:[11,14,30,33],belong:22,below:[14,25],benchmark:[25,28,30],benefit:6,best:32,better:[4,24,25],between:[3,6,7,12,14,18,23,24],beyond:7,big:32,bigger:[15,30],biggest:4,bin:[8,32],binari:[8,28,33],bind:[7,27,28,30,31],bit:[12,13,24,26,32],bitmap:[12,13,14,17,25],bitrat:33,black:4,blame:25,blkid:33,bloat:24,block:[9,11,16,33],block_indic:11,blockdev:33,blockfil:[11,33],blocksiz:[11,33],blocktabl:11,blown:26,blur:14,boil:[],bonu:24,book:[11,33],both:[9,12,14,25,26,30,33],bother:32,bottleneck:[6,23,24],bottom:19,bound:[4,30,31],box:[2,4,25,31],bracket:9,branch:[7,9,11,14,17,18,32],brand:13,briefinfoframefilt:14,broken:[5,25],brows:8,browser:[2,14],bsf:30,buffer:[4,7,13,14,15,25,30,33],bug:[5,8,23],buggi:25,bugreport:8,build:[3,6,8,23,28],build_exampl:8,build_opencv_python2:8,build_opencv_python3:8,build_perf_test:8,build_test:8,bunch:[],burn:7,burst:[4,11,16,25],busi:[6,19],button:[30,32],bye:[9,10,11,12,13,14,15,16,18,19],c18:[],c2763e639a67:33,c920:[5,10],cach:[2,11,33],cacher:11,cacherthread:11,cairo:28,calcul:[],call:[4,6,9,11,12,16,19,25,32],callback:[9,11],cam:30,camera:[1,2,4,6,7,11,12,14,15,17,24,25,30,31,33],can:[2,3,4,5,6,7,8,9,10,11,13,14,15,17,18,22,23,24,25,26,28,30,31,32,33],cann:5,cap:24,capabilitycategori:24,capabl:[5,33],capac:25,card:23,careful:14,carri:11,cascad:9,cat:25,categori:[22,24],caus:28,celebr:[],cellsiz:14,certain:[4,11,13,24,28,30,32],chain:[18,31],challeng:11,chang:[11,32],changelog:32,changestr:32,channel:3,chapter:14,charact:32,check:[3,5,6,7,8,11,23,25,28,32],checkout:8,childpip:26,chmod:24,choic:[2,6],choke:25,choos:[25,33],choppi:25,chunk:[2,33],churn:12,clang:8,clariti:14,classic:26,clean:32,cleanpi:32,clear:[3,14,19],clearobjectscal:19,click:[30,32],client:[2,3,6,7,17,24,26,31],clientpullpi:14,clock:25,clog:4,clone:[8,28,32],close:[4,9,13,16,18,25,26],closer:32,cloud:[6,14],clusterfuck:32,cmake:8,cmake_build_typ:8,cmake_install_prefix:8,cmakelist:8,code:[2,7,8,9,11,14,17,18,24,26,27,28,31],codebas:7,codec:[2,6,9],codec_id:9,collect:32,column:[11,24,33],com:[8,28,32],combin:[2,3,26],come:[5,8,13,24,26,28],comfort:7,command:[5,8,10,13,15,24,25,33],comment:[1,8],commerci:25,commit:32,common:[6,14,18,30],commun:[7,14,23,26],compact:[14,18,32],compar:13,compat:8,compil:[8,25,28,32],complet:[7,11,14,32],complex:[6,7,9,12,13,18,24,33],compliant:[5,6,31],complic:26,compon:[21,26,33],composit:[23,25],compositor:[23,25],comput:[7,24],concern:12,concret:26,concurr:11,condit:11,conf:[25,32],config:[8,25],configur:[5,6,25,30,32],confirm:5,conflict:28,confus:9,connect:[5,7,9,11,12,13,14,17,18,23,25,26,30,31,33],consecut:[4,19],consid:[3,9,12,13,23,25,26,30,32,33],consist:[9,22,25,28,30,32],constitut:[],construct:[9,11,12,13,14,15,16,18,24,26],constructor:[26,32],consult:[11,33],consumpt:[3,30],contact:27,contain:[2,9,14,30,32],content:11,contex:[13,23],context:[9,12,13],context_id1:13,context_id2:13,context_id:[10,13,14,16,19,26],continu:[4,7,9,11,14,16,30,33],continui:13,contrari:23,contrast:33,contrib:6,control:[15,24,26,31],conveni:[2,14,26,32],convent:17,convert:[11,26,30],convinc:[],convolut:4,cool:[6,32],coordin:19,copi:[9,12,14,30,32],copyright:[6,32],core:[4,5,6,7,9,10,11,14,15,16,18,19,21,22,25,27,30,33],correct:[9,11,14,23,25,26,30],correctli:[3,11,25,26,32],correspond:[11,12,28],could:[4,8,11,12,13,14,16,19,25],count:3,cours:[3,14],cpack_binary_deb:8,cpack_debian_package_shlibdep:8,cpackconfig:8,cpp:[3,6,7,8,9,11,12,13,14,18,26,27],cpp_thread_demo:26,cpu:[4,7,12,14,17,25],crashi:26,creat:[2,3,6,7,8,9,11,12,13,14,16,18,22,23,24,26,27,32,33],createwindow:[10,13,14,16,18,19],createwindowcontain:26,credenti:24,cross:[2,23],crossov:12,ctl:10,ctor:[],ctrl:25,ctx:[9,10,11,12,13,14,15,16,19,25],cuda:5,culprit:25,cumbersom:32,curl:28,curli:9,current:[5,11,22,26,28,30,33],current_time_callback:11,current_time_limit:11,custom:[3,6,7,11,26,28,32],cut:24,cv2:[14,25],cycl:32,d11:[],d12:[],d1a:1,dai:4,dangl:[],darknet:27,data:[11,14,23,32,33],date:[1,32],db572185:33,dbg:3,dbu:25,deactiv:[9,14,16,32],deal:[8,9,13],deb:8,debian:[8,22,28],debug:[6,7,11,14,25,30],debug_log_al:16,dec:30,decent:[4,5,24,31],decid:32,declar:24,declin:7,decod:[1,6,7,11,14,16,18,23,25,26,30,31,33],decoderthread:33,decodingoffcal:[10,12,13,14,19],decodingon:18,decodingoncal:[10,12,13,14,16,19],dedic:[4,11,23,26,33],deep:[4,6],deeper:[23,26],deepli:14,def:[11,13,26],defin:[8,9,10,11,12,13,14,15,23,24,30,32],definit:[11,32],degrad:30,deinstal:28,delet:32,delrendercontextcal:[10,13,14,16,19],delrendergroupcal:[10,13,14,16,19],demand:[7,15],demo:[6,14,23,27,28],demo_multiprocess:[],demonstr:[7,30],depenc:32,depend:[4,5,7,8,11,13,14,25,28],deprec:23,deregisteroutboundcal:15,deregisterstreamcal:15,deriv:[26,32],describ:[2,9,24,28],descriptor:14,design:[6,7,11,13,25],desktop:[2,6,23,25,31],desper:7,detail:[4,5,7,9,11,12,13,24,26,32,33],detect:30,detector:[14,30],dev:[3,5,6,8,10,33],develop:[6,7,24,30,32,33],devic:[2,5,9,11,24,33],device_nam:25,device_s:[11,33],device_servic:24,devicebind:24,deviceio:24,devicemanag:24,devicemgmt:24,diagram:12,did:[26,32],differ:[10,13,14,17,23],dig:26,dimens:14,dir:8,direct:26,directli:[11,14,24,25,30,32,33],directori:[3,8,10,11,30,32,33],dirnam:[11,33],dirti:32,disabl:[8,13,25],disadvantag:23,discard:25,disconnect:11,discov:24,discoveri:[6,27],discuss:[5,9,11,23,25,26],disk:[6,7,9,11,16,17,33],disk_writ:11,displai:[3,6,25],dist:[8,22,28,32],distribut:[8,28,32],distro:[25,28,31],divis:11,dna:1,doc:[9,32],docker:[5,25],document:[2,6,9,11,12,13,14,26,32],doe:[9,10,11,12,14,18,26,30,32],doesn:2,doing:[11,26],don:[4,14,23,24,30,32],done:[5,12,13,14,15,16,17,24,26,32],dongl:25,doubl:32,down:[26,33],download:[5,8,9,10,11,12,13,14,15,16,17,18,19,28,32],downstream:11,dpkg:8,draw:[6,31],dri:5,drive:33,driver:[5,13,23,25],drop:25,due:[7,25],dummi:[26,32],dump:[2,9,11,12,30,33],dumpblock:11,dumpfil:[11,33],durat:24,dure:[7,9,16,32],dynam:2,each:[11,13,14,17,23,24,25,30,32,33],earlier:11,easi:7,easier:[11,33],easiest:5,easili:[3,18,26],easy_build:[],echo:25,econom:6,edg:9,edit:[8,29,32],editor:[25,32],effect:[],effici:[11,14,25,33],either:[6,8,25,30,32],element:14,els:[14,24],elsampsa:[28,32],email:8,emb:26,emit:33,emphasi:[7,9,26],emploi:8,enabl:[3,11,23,25],encapsul:[13,18,33],encount:33,end:[9,11,12,13,14,15,16,18,32,33],enforc:5,enhanc:4,enough:[9,11,25],entir:[6,11],entiti:[23,32,33],entri:[3,9,32],environ:[5,23,25],environment:23,equal:16,error:[25,28,32],especi:[3,5,12],essenti:8,establish:[14,15],etc:[3,4,6,7,8,9,11,12,13,14,16,18,25,26,30,31,32],even:[4,7,11,13,14,25,30,33],event:[24,26],ever:[4,6],everi:[3,11],everybodi:32,everyth:[6,7,14,25,30,32],evil:32,evok:11,exact:33,exactli:[4,14,25],exagger:25,exampl:[3,4,6,7,8,9,11,13,14,17,19,23,26,27,28,30,31,33],example_project:[],except:[11,32],excercis:15,excess:30,exclude_list:24,execut:[9,16,24,26],exist:[13,24,26],exit:[9,11,13,14,16,19,32],expect:25,experi:25,experiment:[5,10,28,30,33],explain:[17,32],explan:[12,22,30],explor:5,ext4:[],extens:[2,3,5,7,27],extent:14,extern:[7,33],extra:[14,18,24],extrem:13,eye:[4,7],f12:25,fact:25,factori:24,fail:11,fals:[14,18],fanci:[9,12,32],faq:6,far:[11,25],fast:[7,32],favorit:[7,8,9],fd4d:[],fdisk:33,featur:[5,7,8,9,14,28,32],fed:9,feed:[9,12,14,26],feel:15,few:[9,11,24],ffmpeg:[5,7,28,30],ffplai:[15,25,30,31],fiddl:32,field:[30,32],fifo:[12,17],file:[2,3,6,8,9,11,14,15,16,24,30],file_ctx:16,file_filt:[9,11,16],file_filter_2:17,file_input_framefilt:11,filecacherthread:33,filecachethread:11,filecontext:16,fileframefilt:[9,11,16,17],filenam:[16,30],filestreamcontext:11,filesystem:[6,7,11],filethread:16,fill:11,filter:[12,17,26],filter_2:9,filter_3:9,filterchain:[11,12,13,14,15,18,26,33],filtergraph:[6,7,9,11,12,13,14,15,16,17,18,26],find:[1,3,8,24,26,32],finish:11,finit:33,firefox:[24,32],firewal:25,first:[1,3,5,8,9,11,12,13,14,18,19,24,28,30,32,33],fish:7,fishey:7,fix:25,flavor:[8,11,28],flexibl:13,flow:[9,33],fly:14,fmp4:2,fmtp:15,folder:32,follow:[3,7,9,10,11,12,13,14,16,23,25,26,28,30,32,33],forc:11,foreign:26,foreign_widget:26,foreign_window:26,forev:4,forget:[14,26,32],fork:[3,11,14,24,26,31],fork_3:17,fork_filt:[7,11,14,17],fork_filter_3:17,forkframefilt:[7,9,14,17],forkframefilter3:17,forkframefiltern:11,form:23,form_snippet:32,format:[2,9,10,14,23,32,33],former:[3,11],forward:11,found:[10,14,17,22,23,24,25,26,33],four:[4,23],fps:[1,4,11,13,14,25],frag:[2,31],fragment:[2,14,33],fragmp4mux:14,fragmp4muxframefilt:14,fragmp4shmem:14,fragmp4shmemcli:14,fragmp4shmemframefilt:14,frame:[3,6,7,12,13,15,16,17,18,23,25,26,30,31,33],framecacherthread:11,framefifo:[12,26],framefilt:[11,12,13,16,18,25,31],framer:[4,13,23],framework:[6,26],free:[8,15],freeglut3:8,freez:25,freq:11,frequent:[11,25],fresh:28,from:[2,3,4,5,6,7,8,10,11,12,13,14,15,16,17,18,19,23,24,25,26,27,28,30,31,32,33],fromwinid:26,frontend:[26,32],frustrat:23,fs_directori:30,fs_directory_:30,fsgroup:33,ftyp:2,full:[14,17,18,25,26],fulli:7,further:[9,14,33],futur:7,gate:9,gate_filt:9,gateframefilt:9,gaussian:14,gaussianblur:14,gdb:3,gener:[1,2,6,25,26,31,32],gestur:26,get:[3,4,7,8,9,11,14,23,24,25,28,30,32,33],getblockingframefilt:16,getblockt:11,getcap:24,getframefilt:[10,11,12,13,14,15,16,17,19],getind:11,getindneigh:11,getnumpyshmem:14,getsize64:33,gettimerang:11,getvari:24,getwsdlpath:24,gf_driver:1,gigabit:25,gir1:28,git:[8,28,31,32],github:[2,7,8,28,32],githubusercont:28,gitlab:32,give:[3,14,24,30],given:[9,11,19],gl_ctx:[4,13],gl_in_filt:[10,13,14,16,19],gl_in_filter_3_1:17,gla:1,global:[11,22,28],glthread:[4,7,10,13,14,16,17,18,19,26],glthread_3_1:17,glx:7,glxgear:[13,23,25],glxinfo:5,gmtime:11,goal:[7,14],goe:[6,7,11,14,16,18],going:[10,11,13,14,26],gold:30,good:[2,4,5,7,8,13,28,32],gori:[7,12],got:[7,14,24,32],gpart:33,gpt:33,gpu1:23,gpu2:23,gpu:[6,7,13,14,25,30],gpu_index:5,grant:33,graph:9,graphic:[6,23,26,28],greater:[5,23],greeter:32,grid:25,group:[10,13,19,30],grow:[7,29],grrp:2,gtk:[6,26],guarante:5,gui:[6,11,14,26,33],guidelin:26,h264:[2,4,5,9,10,11,12,13,14,15,30,31,33],h264_mp4toannexb:30,h265:2,h26:[],hack:32,had:9,half:[5,25],hand:[5,11],handi:8,handl:[3,4,10,11,14,23,32],handlefifo:25,happen:[3,5,18,23],hard:[13,25,33],hardwar:[4,6,8,12,25,30],has:[5,7,9,10,11,12,13,14,16,24,25,26,28,32],have:[2,3,4,5,7,8,11,12,13,14,18,23,24,25,26,28,30,31,32,33],haven:4,hdd:33,head:33,header:8,headless:25,heavi:[4,12],heavili:14,height:[10,14,17],hello:32,help:30,helper:32,here:[1,2,3,4,5,7,8,9,10,11,12,13,14,15,16,17,18,19,22,23,24,25,26,27,28,30,31,33],hidden:[6,7],hide:[3,32],hierarch:33,high:14,highli:[6,26],highlight:6,hold:11,home:[32,33],hood:[12,13],hopefulli:[],host:[5,23],hour:[],how:[1,2,4,7,11,14,18,22,24,25,26,30,31,32,33],howev:[3,4,7,8,9,11,12,13,14,24,25,26],hrs:8,html:32,htop:3,http:[8,24,28,32],huawei:5,huge:33,human:4,hundr:13,hurdl:5,i915:[1,5],i965:5,iOS:2,id_list:13,idea:[4,7,8,11,13,24,32],ideal:33,ident:[23,28,33],identif:33,identifi:[11,14,16,17,33],idl:11,ids:[13,26],iki:0,imag:[4,6,12,14,24,25],image_interv:[14,17],imagin:[2,24,30,32],img2:14,img:14,immedi:11,implement:[4,5,7,9,14,24,25],impress:25,imshow:14,imutil:[14,28],includ:[8,9,11,24,25,26,28,32],incom:[12,15,26],inconveni:32,incorrectli:25,increas:25,indent:18,independ:[9,12],index:[6,8,14,30,32],indic:[11,22,30,33],individu:[9,11,13],infer:4,info:[9,11],info_filt:[4,9,12,15],infoframefilt:[9,11,12,15],inform:[2,7,8,9,10,11,14,25],infrastructur:[5,11,14,26],inherit:[12,32],init:32,init_filt:11,init_stream:11,initi:[5,11,32],initstreamframefilt:11,input:[11,13,16],inspect:11,instabl:30,instal:[3,5,6,8,14,22,23,24,25,26,30,31,32],install_requir:32,instanc:[4,9,11,18],instant:[11,33],instanti:[9,11,12,13,14,15,18,24,26,33],instead:[3,4,5,11,12,14,23,25,26,30,32],instruct:[8,22,28,30,31,32],integ:[9,11],integr:[6,7],intel:[5,13,25],intellig:[],intend:30,interact:[6,30,33],interest:[7,27,32],interfac:[5,6,14,18,22,25,28,30,32],intern:[5,9,12,33],internet:[2,5,25],interpol:[13,14,17,25],interpret:[26,30],interprocess:[14,26],interserv:7,interst:[],interv:[11,14,33],interval_filt:[7,14,17],interval_filter_3_2:17,intervalframefilt:[7,14,17],intra:4,intro:[6,7,32],introduc:11,introduct:[6,32],invent:11,investor:6,involv:6,ip4:15,ip_address:31,iphon:2,ips2:24,ips:24,ipython3:32,ipython:32,isiz:14,isod:24,isol:32,issu:[4,5,25],its:[7,8,13,26,28,31],itself:[6,9,12],jackd2:8,jann:32,jantunen:32,javascript:5,jetson:6,jetsonnano:8,jitter:[25,30],joggl:14,json:[11,33],just:[2,3,4,5,7,8,9,11,13,14,18,19,22,23,24,25,26,27,28,30,32,33],kate:25,kbit:11,kbp:[11,25],kbyte:11,kde:[23,25],keep:[11,13,18,23,25,32,33],kei:[9,11,33],kept:11,kernel:[1,30],keyfram:[10,25,33],keyint:30,kilobit:11,kinda:[],knee:6,know:[12,25],knowledg:[6,31],known:14,kokk:[11,16],ksysguard:25,kwin:[23,25],lack:2,lag:30,lan:[2,4,25],languag:13,laptop:[1,31],larg:[4,6,7,11,25,30,33],last:[9,25,26,30,33],late:[4,25],latenc:2,later:[9,11],latest:25,latter:[8,11,25],launch:[3,8,15,23,25,26,30,32],layout:26,ld_library_path:[],lead:26,leaf:9,leak:[3,4,5],leaki:26,learn:[4,6,7,9,11,14,18,23,24,26,28,30],least:[7,8,10,25,31],leav:17,left:[12,13,15,19,30],lesson:[4,6,26],lesson_1_a:31,lesson_4:[14,17],lesson_4_c:14,lesson_8_a:18,let:[4,9,11,12,13,14,15,16,19,23,24,26,30,32,33],letter:[],level:[3,4,6,7,9,11,13,22,27,28,31],lgpl3:32,lgpl:[7,21,27],lib:[22,28,32],libasound2:8,libav:[5,7],libavcodec:8,libavformat:[8,15],libc6:[],libclang:8,libdc1394:8,libglew:[],libgtk2:8,libjack:8,libjasp:8,libjpeg:8,libpng:8,libqt5svg5:8,libqt5webkit5:8,libqt5xmlpatterns5:8,librari:[4,5,6,8,9,13,14,24,26,28],libsdl2:8,libssl:8,libstdc:[],libswscal:8,libtbb2:8,libtbb:8,libtiff:8,libv4l:8,libva:5,libva_driver_nam:5,libvalkka:[1,2,3,4,5,6,8,9,11,13,14,21,24,25,26,27,28],libx264:8,libxi:8,libxmu:8,libxrandr:8,libxvidcor:8,licenc:6,licens:[7,21,27,28,32],life:33,lift:12,light:4,like:[2,4,5,8,9,11,12,13,14,15,16,17,18,19,24,25,26,30,31,32,33],limit:[7,11,13],line:[8,10,13,24,25,30,32],link:[2,8,24],linux:[2,3,4,6,23,25,28,30,31,33],list:[2,10,12,14],listen:[14,26],liva:1,live2_in_filt:17,live555:[7,15,18],live:[1,2,3,4,6,13,14,16,18,22,25,27,30,32],live_in_filt:15,live_out_filt:[9,14,25],live_thread:18,liveconnectioncontext:[9,11,12,13,14,15,16,19,25],liveconnectiontype_rtsp:[9,11,12,13,14,15,16,19,25],liveconnectiontype_sdp:15,liveoutboundcontext:15,livestream:13,livethread2:15,livethread2_1:17,livethread:[7,9,11,12,13,14,15,16,17,18,19,25,26,30],livethread_1:17,load:[11,25,30],loadfromdirectori:11,local:[8,15,24,28,30,32],localhost:15,locat:33,log:9,logger:[9,11],logic:23,login:[25,33],logitech:5,loglevel_crazi:11,loglevel_debug:11,loglevel_norm:[9,11],loglevel_sil:9,logout:[25,33],look:[2,4,6,8,9,11,13,14,15,17,24,26,32,33],loop:26,loopback:7,lot:[7,9,14,17],low:2,lower:25,lowest:14,ltd:21,luck:7,luxuri:30,mac:2,machin:[5,6,7,14,22,26],machine_learn:32,macro:23,macro_project:32,made:13,magic:26,mai:[4,28],main:[7,9,11,14,17,24,26,32],mainstream:25,maintain:[1,25,32],major:2,make:[3,8,11,14,15,23,25,27,33],manag:[7,9,13,23,25,32,33],mani:[4,5,7,13,23,25,30],manifest:32,manipul:[24,33],manner:28,manual:[7,8],manufactur:5,map:[11,13,14,16,18,26],mark:[9,11,12],markdown:32,market:31,massiv:[6,25],master:[14,28,32],match:33,materia:30,math:[13,25],matroska:[9,16,30,31],matter:33,max:[4,11,14],maximum:[11,25],mayb:[4,25,32],mbp:25,mbyte:[],mean:28,media:[2,6,7,9,13,24,31,33],media_servic:24,media_source_extensions_api:[],media_typ:9,mediaplay:9,mediasourc:[],medium:[],member:9,memleak:[3,4],memori:[3,4,5,6,7,11,13,14,17,18,26,30,31,33],memwatch:3,mention:[1,3,33],menu:30,mesa:[5,13,25,28],mess:[3,30],messag:[24,26],messageprocess:26,meta:14,metadata:[11,14,33],method:[9,11,12,16,25,26],might:[4,6,7,8,11,14,15,25,28,30,32],millisec:30,millisecond:[4,11,13,14,17,30,33],min:[11,14,25,30],mind:[13,18,32],minim:[25,33],minimum:[11,24],mint:32,minut:10,mirror:27,mismatch:28,miss:[25,33],mit:[7,27,32],mix:[3,26],mkv:[9,11,16,30],mod:[24,32],mode:15,model:26,modern:[4,31],modif:33,modifi:[4,14,24,25,32],modul:[3,6,7,8,14,24,25,27,32],moment:[5,9,11,32],monitor:[3,13,23,25],moov:2,more:[2,3,4,5,6,7,8,9,11,12,13,14,19,25,26,29,30,32,33],most:[2,8,14,25,31],mous:[23,26,30],move:[9,17,23],movement:30,movementdetectorprocess:26,movi:8,mozilla:[],mp4:[2,31],msbuftim:[1,4,18,30],mse:2,msreconnect:18,mstime1:33,mstime2:33,mstime:11,mstimeout:14,mstimestamp:[11,14],much:[4,9],multi:[6,30],multicast:[6,7,16,17,30,31],multipl:[6,11,14,23,30,31],multiplex:[10,14],multiprocess:[3,6,14,27],multiprocess_1:26,multiprocess_2:26,multiprocess_3:26,multiprocessing_demo:26,multiprocessing_demo_sign:[],multithread:[3,6,14],muscl:4,must:[4,6,8,11,14,16,17,24,28,32],mutex:[7,12],mux:14,mux_filt:14,muxer:11,mvision:[22,27],myself:5,mysteri:[],n1080p:30,n1440p:30,n4k:30,n720p:30,n_1080p:[1,4,13,18],n_1440p:[1,4,13,18],n_4k:[1,4,13,18],n_720p:[1,4,13,18],n_audio:1,n_block:11,n_ringbuff:14,n_size:14,name:[3,4,5,6,8,9,11,14,15,17,18,24,28,30,32],namespac:[5,11,22,24,27],nano:6,nasti:33,naudio:30,navig:30,necessari:[11,30,32],need:[4,5,6,7,8,9,11,12,13,14,15,23,24,26,27,28,30,31,32,33],negoti:25,neighborhood:11,nest:24,net:[7,16,25],network:[4,25],neural:4,never:18,newest:1,newfromdirectori:[11,33],newli:32,newrendercontextcal:[10,13,14,16,19,26],newrendergroupcal:[10,13,14,16,19],next:[8,9,11,12,13,14,16,18,28,32,33],nic:25,nice:[13,14,23,24,25,30,32],nojekyl:32,non:[8,11],none:[11,14,25],nordic12345:[9,12,13,14,15,16,18,19,25],normal:[8,9,11,14,22,24,30,33],notat:[9,11],note:[2,6,9,11,16,26],noth:[7,9,14,25,32],notion:11,nouveau:[13,25],now:[3,11,12,13,14,18,24,30,32,33],nowadai:25,nowher:[],ntp:25,number:[4,6,9,10,11,13,14,15,16,18,23,25,26,30,32,33],numer:28,numpi:[6,8,14],nvidia:[1,5,13,23,25],nvthread:5,object:[3,7,11,12,14,24,33],oblig:26,obmalloc:3,obscur:24,observ:[14,23,25],obsess:4,obsolet:[24,27],obtain:2,occur:14,off:[8,9,18,23,25],offer:[23,25],often:10,old:25,oldest:33,onc:[5,7,11,13,14,17,25,28,30,31,32,33],one:[2,3,8,11,14,18,23,25,28,30,31,33],ones:25,onli:[2,4,5,7,8,9,10,11,12,13,14,15,16,17,22,24,25,26,28,30,33],onto:9,onvif:[5,6,27,31],open:[16,24,30,32],opencv:[6,7,17,25,26,30,31],opencv_contrib:8,opencv_enable_nonfre:8,opencv_extra_modules_path:8,openfilestreamcal:16,opengl:[1,5,7,13,23,25,30],opengl_tim:25,openglframefifo:13,openglframefifocontext:[4,13],openglthread:[4,7,10,13,14,16,17,18,19,23,25,26],opensourc:[5,6,7],openspec:24,oper:[7,30],opt:[13,32],option:[3,23,25,32],orchestr:26,order:[1,5,7,11,12,13,14,15,16,18,19,26,30,32,33],ordinari:8,org:[8,13,24,25],organ:[7,11,13,22,33],origin:[11,32],other:[4,5,7,8,11,14,25,26,28,30],otherwis:[1,14,30,32],our:[6,9,11,14,26],ourselv:8,out:[5,6,7,8,9,12,13,14,23,28,30,31,32,33],out_ctx:15,out_filt:11,outdat:5,outer:[9,17],outfil:30,outgo:[15,26],output:[3,9,11,12,15],over:[2,3,4,11,16,23,25,30,33],overcom:[],overflow:2,overlai:19,overview:33,overwrit:[],overwritten:33,own:[7,13,14,23,24,26,27,30,32],packag:[5,8,13,22,26,28,29],packagenam:8,packet:[2,12,15,25],page:[6,7,13,22,23,25,28,32],pair:[14,30],pan:24,param:30,paramet:[1,9,11,12,14,23,24,26,32],parameter:19,parent:26,parenthesi:9,part:[8,9,12,13,14,16,18,22,25,28],particularli:25,partit:[6,11],partition_uuid:33,partuuid:33,pass:[9,11,12,13,14,17,24,26,30,33],passslotframefilt:11,passwd:31,password:[5,24,30],pastabl:32,patent:8,path:32,patienc:10,paus:16,payload:[9,11,12,14],pcmu:9,peek:11,peopl:[24,32],per:[4,6,11,13,25,30],perform:[1,11,12,14,23,25,30],perhap:6,period:30,permit:24,persist:25,person:32,physic:23,pick:[],ping:26,pip3:[8,22,23,24,25,28,32],pip:[8,28,32],pipe:[7,16,26],pipelin:[2,7,25],pitfal:[6,26],pixel:[4,7],pkg:8,place:[12,13,14,26,30,33],plai:[2,9,13,14,15,16,19,30,31,32,33],plain:14,plan:30,platform:[2,25],playback:[11,30,33],playcamerastreamcal:10,player:[7,9,30,31],playfilestreamcal:16,playlist:2,playstreamcal:[9,11,12,13,14,15,16,19],playstreamscal:11,pleas:[2,4,5,6,8,11,14,26,27,28,33],plu:11,plug:6,pluggin:7,plugin:25,point:[3,7,9,11,18,33],pointer:23,poison:4,polish:32,pong:26,pong_:[],pong__:26,poorli:4,popular:[14,30],port:[15,24,25],posit:23,posix:[14,17,18,30],possibl:[11,12,14,32],post:[2,32],power:[7,25],ppa:28,pps:[],pre:[4,7,12,13,23,25,30,33],precompil:28,predefin:33,prefer:[3,25,30],prepar:23,prepare_build:[],prerequisit:6,present:[4,6,7,11,13,16,18,25,30,33],preset:30,press:[30,32,33],pretti:27,previou:[9,11,12,13,14],price:7,prima:30,primer:24,print:[9,10,11,12,13,14,15,16,18,19,24],privat:8,pro:[5,10],probabl:[4,23],problem:[4,6,7,14,28,30,32,33],proce:[11,12,32],process:[3,6,7,14,18,25,26,30],processor:[25,30],produc:[2,32],product:32,profil:30,profile_tim:25,program:[1,4,6,7,9,13,14,17,22,23,25,26,27,28,30,32],programmat:9,progress:[],project:[6,14],promis:7,pronounc:4,proper:32,proprietari:[4,5,13,23,25],protect:12,protocol:[2,5,9,24,31],provid:[5,11,13,14,18,24,25,26,28],ptz:24,pull:[3,7,14,25,28],pullblockspycal:11,pullfram:14,pure:6,purpos:[13,14],push:[2,11,14,32],put:[8,32],pwd:32,pyapi:[9,12],pyc:32,pygobject:28,pypi:8,pyqt5:[3,23,28],pyqt:[1,6,7,8,11,18,23,25,26,28,33],pysid:8,pyside2:[3,6,8,23,28],pyside_setup:8,python3:[3,6,7,8,14,18,22,25,26,27,28,30,31,32],python3_packag:32,python:[2,3,6,7,9,11,15,25,27,28,30,31],python_program:3,pythonpath:32,pytorch:6,qhandlerthread:26,qmake:8,qopengltimemonitor_wrapp:8,qopengltimerquery_wrapp:8,qpa:25,qt5:8,qt_for_python:8,qtbase5:8,qtdeclarative5:8,qtgui:[8,26],qtgui_gen_dir:8,qthread:26,qtmultimedia5:8,qtscript5:8,qttools5:8,qtwebengine5:8,qtwidget:26,qualiti:25,quarter:14,queri:[],queu:30,queue:[6,7,12,13],quickli:32,quickstart:6,quicktest:[25,28],quit:13,qvalkkaopencvprocess:[],qvalkkaprocess:[],qvalkkathread:[],qwidget:26,qwindow:26,ramp:25,rang:[11,13,14],rapidli:7,rate:[13,14,25],rather:[23,24],raw:28,reach:[],read:[2,4,5,6,8,9,10,12,13,14,15,17,25,26,30,31,33],readabl:3,reader:11,reader_out_filt:11,readerthread:11,readi:[13,14,25],readili:[],readm:32,readthedoc:8,real:25,realli:[4,5,25],recal:11,recast:[6,7,15,17,30],receiv:[2,11,15,25,26,31],recent:[24,28,32],recommend:[6,7,13,26,33],recompil:32,reconnect:18,record:[7,11,30,33],recov:11,recreat:32,redirect:[11,32],ref:[],refer:[2,3,8,11,18,25,26,28,31,32,33],refresh:[13,25],refus:30,regist:[11,13],registeroutboundcal:15,registerstreamcal:[9,11,12,13,14,15,16,19],regular:[14,33],reinit:32,reiniti:32,rel:[19,23],relat:5,releas:[8,14],relev:18,reli:14,rememb:[2,3,4,8,14,25,32],remot:[24,25,32],remov:[3,8,28,30,32],render:[10,13,19,25],replac:5,replic:[1,13,30],repo:[28,32],report:[13,23,25],repositori:[2,6,7,28,32],repres:33,req:11,request:[11,12,13,16,33],request_tcp:25,requir:[5,7,8,17,30,31,32,33],reserv:[4,7,12,13,18,23,25,30,33],reshap:14,resiz:14,resolut:[4,10,13,14,18,24,25,30],resolv:[14,32],resourc:23,respect:11,respons:[11,13,24],restamp:30,restart:25,restrict:4,result:[9,26],resum:33,revert:[],revis:32,rewind:33,rewindcal:11,rgb24:14,rgb:[13,14,17],rgbsharedmemframefilt:[7,14,17],rgbshmemframefilt:[14,17],rid:32,right:[12,13,19,25,30,32],rigor:3,riikonen:[0,21,28],ring:14,ringbuff:[14,17],risk:14,rmem_max:25,robust:[5,23],root:[],router:31,routin:14,row:[11,33],rst:32,rtp:[15,31],rtpmap:15,rtsp:[5,9,11,12,13,14,16,18,19,25,30,31],rtsp_address:11,rule:9,run:[1,3,4,6,7,8,9,11,12,13,14,15,18,23,24,25,26,30,31,32],run_cmak:[8,25],runarpscan:24,runwsdiscoveri:24,safe:[7,12],sai:[5,7,9,11,14,25,26,30,31,32],said:32,same:[1,2,3,7,11,12,13,14,18,24,25,26,30,32,33],sampl:[7,26],sampsa:[0,21,28,33],satur:25,save:[4,11,13,15,30,31,32,33],saw:11,sbin:24,scaffold:[22,32],scale:7,scan:24,scenario:[],schema:24,scheme:[14,22,25,33],score:[],scratch:7,scream:[4,25],screen:[4,6,7,9,12,13,14,16,18,23,30],script:[3,14,15,32],sdb1:33,sdb:33,sdist:32,sdp:[15,30,31],search:[6,11],sec:[9,11,13,16,18],second:[4,8,11,13,14,16,18,19,24,25,28,30,33],section:[11,25,32],sector:33,secur:21,see:[2,3,4,5,6,7,8,9,10,11,12,13,14,22,23,24,25,26,27,30,32,33],seek:[11,16,33],seekfilestreamcal:16,seekpoint:16,seekstreamscal:11,seektime_:16,seem:[5,25,32],segfault:3,segment:33,select:14,self:13,semaphor:[3,6,7,14,30],send:[2,6,8,10,11,13,14,16,23,24,25,26,31],sendsign:26,sendsignal_:[],sendsignal__:26,sens:[23,33],sent:[2,15,23,30],separ:[5,14,18,23,24,26,32],septemb:2,sequenc:[],seri:12,seriou:[14,30],serv:[15,18,32],server:[7,23,25,30,31,32],servic:[6,8,18,32],set:[3,5,8,9,10,11,13,23,24,25,28,30,32,33],setauthor:32,setliveoutpacketbuffermaxs:15,setloglevel_filelogg:11,setloglevel_livelogg:9,setloglevel_valkkafslogg:11,setnumberofthread:4,setproctitl:[3,28],setpycallback2:11,setpycallback:11,setrtspserv:15,setslotidcal:11,setup:[3,8,9,11,16,23,32],setupfram:9,setvalkkaloglevel:9,setver:32,sever:[4,11,12,14,15,23,25,26,30,31,33],shader:13,shadow:28,shape:14,share:[3,6,7,14,15,17,18,23,26,30],sharedmemringbufferrgb:14,shm:3,shmem:[14,17],shmem_buff:[14,17],shmem_filt:[7,14],shmem_filter_3_2:17,shmem_list:14,shmem_nam:[14,17],shmemrgbclient:14,shot:11,should:[2,3,4,5,7,8,9,11,12,13,14,16,25,30,32,33],show:[7,14],shown:[11,13],shut:9,side:[23,26,31],signal:[6,7,11,26,30],significantli:3,silent:9,silopassword:[],similar:[11,13,14,16,30],simpl:[11,13,23,30,31,32,33],simpler:33,simpli:[8,9,11,14,23,30],simultan:[4,6,7,11,13,14,15,17,18,25,30,33],sinc:[8,14,24],singl:[6,11,14,15,17,18,19,23,26,30,31,32,33],single_stream_rtsp:26,single_stream_rtsp_1:[],sink:[9,15],site:32,situat:[5,11,13,25],size:[9,11,12,14,15,17,25,30,33],skeleton:27,skip:11,slang:26,sleep:[9,10,11,12,13,14,15,16,18,19],slice_typ:[9,11],slot:[6,7,9,10,11,12,13,14,15,16,18,19,26,30,33],slot_filt:11,slow:25,slowli:4,small:[7,9,12,14,15,17,25,32,33],smaller:[2,32],smart:30,smem:3,snippet:[15,32],soap:24,socket:[25,30],softwar:[23,32],sole:4,solut:[2,6,7,14,23,33],solv:[4,6,7,26,33],some:[1,2,5,6,9,11,14,18,19,24,25,28,30,32,33],some_widget:26,someth:[4,7,11,23,26,33],sometim:4,sort:[5,32],sound:7,sourc:[2,4,8,9,13,15,24,25,26,28,30,32],space:[26,33],span:[14,23],spawn:14,special:[7,11],specif:24,specifi:[24,30],speed:[11,25,33],sphinx:32,sps:[],stabl:[3,5,8,28],stack:[2,7,12,13,18,25,26],stage:[7,12,33],stai:30,stall:25,stamp:25,stand:[22,26,32],standard:[3,5,7,25,30,31],stare:32,start:[1,4,5,6,7,9,11,12,13,14,15,16,17,18,24,25,26,30,31,33],startcal:[9,10,11,12,13,14,15,16,19],startup:25,state:[23,26],still:[2,4,13,25,32,33],stock:[5,6,7,25],stop:[1,11,12,13,14,15,16,30],stopcal:[9,10,11,12,13,14,15,16,19],stopcamerastreamcal:10,stopfilestreamcal:16,stopstreamcal:15,store:33,str:11,strategi:[25,26],stream1:[13,15],stream2:13,stream:[4,5,6,7,8,9,10,11,12,14,17,18,19,25,30,31],streamer:6,streamid:15,streamn:30,string:[23,32],strip:26,struct_tim:11,structur:[2,8,10,32],studi:32,stuff:[7,9,11,14,17],stutter:25,sub:[24,25],sub_xaddr:24,subaddress:24,subclass:[24,26],subject:[2,23,30],submodul:32,submodule1:32,submodule2:32,subprogram:7,subroutin:7,subscrib:28,subsession_index:[9,11,12],subset:12,substitut:12,substream:[15,25],succes:23,succesful:5,suck:25,sud:24,sudo:[3,8,23,24,25,28,33],suffer:4,suggest:[25,32],suit:28,suitabl:14,summar:14,support:[2,6,7,10,16,31],suppos:[4,6,11,33],sure:[5,11,25,32,33],surpris:[3,5],surprisingli:33,surround:11,surveil:[6,7,13,14,25,27],suspend:25,swap:[25,33],swappi:25,swig:[3,14,26],sws_filter:[7,14,17],sws_filter_3_2:17,swscaleframefilt:[7,14,17],symbol:[3,12],symlink:32,sync:[25,33],synchron:[7,11,13,25,33],synonym:[],sys:[10,11,25],syscntl:25,sysctl:25,system:[6,7,8,9,14,26,30,31,32,33],systemat:32,tabl:[11,24,33],tabul:1,tag:[9,12,13,14,15,16,17,32],take:[2,4,6,8,11,13,14,18,23,24,25,26,30,31,32,33],taken:[12,14],talk:4,tar:32,target:[9,11,33],target_filt:5,tcp:25,tear:33,technic:7,technolog:7,tell:[25,32],templat:32,tempor:33,ten:[14,18,30,33],tensorflow:[6,7],term:[7,28],termin:[4,9,11],test:[1,4,5,13,15,17,23,25,27,28,30,33],test_studio_1:[1,4,6],test_studio_2:30,test_studio_3:[23,30],test_studio_4:30,test_studio_5:30,test_studio_6:[11,30],test_studio_:[],test_studio_detector:[6,26],test_studio_fil:30,test_studio_multicast:30,test_studio_rtsp:30,testsuit:[1,4,6,7,11,18,23,25,26,33],testthread:26,testvalkkaf:[11,33],text:32,textur:[5,7,13],than:[3,4,8,24,28,30],thei:[9,11,15,23,25,28,30,33],them:[2,3,4,7,9,11,12,13,14,23,24,26,28,32,33],therein:[8,26],thi:[2,3,4,5,6,8,9,10,11,12,13,14,15,16,17,18,22,23,24,25,26,28,29,30,31,32,33],thing:[3,7,11,12,14,24,26,30,32,33],think:7,third:24,those:[2,5,7,14,15,32],though:[25,32],thousand:9,thread:[3,6,7,9,10,11,12,13,14,15,17,18,23,26,30,33],throttl:[],through:[2,12,14,25],throughput:[],thumb:9,ticket:[],tilt:24,time:[4,7,8,9,10,11,12,13,14,15,16,18,19,25,30,32,33],time_limits_callback:11,timediff:[9,12],timeintervalframefilt:[14,17],timelin:30,timeout:[14,24],timestamp:[9,11,12,25,30,33],tip:[8,25,32],tmp:[11,33],todo:11,togeth:[7,9,26,30,33],token:18,told:25,too:[7,9,10,13,15,25],tool:[3,8,11,15,25,33],top:[19,24,26],topic:31,total:[4,11,13,31,33],touch:[30,32],toward:[9,17],trace:[3,25],translat:26,translate:[],transmiss:11,transmit:31,transport:25,treat:16,tree:[9,17,32],tri:25,trick:[8,24],tricki:3,trivial:[9,13],truli:32,tune:6,tup:14,tupl:[11,14],turk:27,turn:[9,14,23,25],tutori:[2,4,6,7,9,14,18,19,23,25,26,28,30,33],tweak:[23,25,32],two:[8,9,11,12,13,14,17,18,23,28,30,33],txt:[8,32],type:[9,22,33],type_factori:24,typic:[2,4,5,6,7,11,12,13,22,25,26,33],uberfancyhelloworld:32,ubuntu:[1,8,28,31],udp:25,ultim:[14,30],ultrafast:30,unbound:30,uncheck:[23,25],uncom:[10,32],undefin:14,under:[7,10,11,12,13,21,22,32,33],underli:[4,18,33],understand:[9,13,26],understood:2,unfortun:[23,25],unicast:[6,30],uninstal:[25,28],uniqu:[14,17],unset:9,unstabl:28,until:[12,13],updat:[7,28,32],updatet:11,upgrad:[8,28,32],upload:25,upon:30,uppercas:[],uptim:1,url:22,usabl:26,usag:25,usb:[6,25,31,33],usbcameraconnectioncontext:10,usbdevicethread:10,usbthread:10,use:[2,4,5,7,10,11,12,13,14,23,24,25,26,28,30,32,33],use_build:[],used:[1,5,7,9,10,11,12,13,14,24,25,26,28,30,32,33],useful:[11,25],user:[5,6,7,8,11,12,13,18,22,23,24,25,28,30,32,33],user_guid:8,userland:3,usermod:33,usernam:[30,31,33],uses:[4,5,13,23,30,31,32,33],using:[2,3,4,5,6,7,8,9,11,12,13,14,15,18,22,24,25,26,27,28,30,32,33],usr:[8,22,24,28],usual:[12,13,14,16,17,19],utf:14,util:[13,28],uuid:33,v4l2:10,vaapi:5,vaapithread:[5,12],valgrind:3,valkka:[3,4,5,9,10,11,12,14,15,16,18,19,21,22,23,24,25,26,27,30,31,33],valkka_cor:18,valkka_exampl:[18,23,26,30,31,32],valkka_examples_exampl:32,valkka_libva_driver_nam:5,valkka_opencv_demo:14,valkkaf:[6,7,30,31],valkkafs2:33,valkkafsmanag:[31,33],valkkafsread:11,valkkafsreaderthread:[11,33],valkkafstool:11,valkkafswrit:[],valkkafswriterthread:[11,33],valkkamultif:[11,30,33],valkkasinglef:[11,30,33],valu:[25,30],variabl:[5,11,23,24],variant:33,variou:[13,18,25],vblank_mod:[13,25],ver10:24,ver20:24,verbos:[11,14,18,30,31,32],veri:[4,5,11,14,25,30,33],verifi:33,version:[5,6,8,14,23,24,25,32],vertic:[13,25],via:[6,26],video2:10,video4linux:10,video:[2,4,6,7,9,10,11,13,14,15,18,19,22,23,25,27,30,31,33],view:[4,6,13,14],virtual:26,virtualenv:[28,32],visibl:9,vision:[6,7,14,22,26],visual:[2,11,14,24,26,31],vlc:[7,25,28,30,31],vsync:[13,25],wai:[3,5,8,13,14,23,25,26,32,33],waitkei:14,wall:23,wan:[2,11,28,33],want:[4,5,6,7,10,11,13,14,23,24,25,30,32,33],warn:[5,33],watch:26,wear:33,web:[2,5,14,25,32],webcam:[5,10],websocket:2,week:4,weird:32,well:[4,5,14,23,26,32,33],went:14,were:11,what:[4,7,9,13,14,23,25,26,30,31,32,33],whatnot:28,wheel:[8,30],when:[4,5,8,9,11,12,13,14,23,24,25,28,30,32,33],where:[2,9,10,11,12,13,14,23,26,30,32,33],which:[4,5,7,9,11,24,25,26,33],whitepap:6,whl:8,who:[13,32],whole:[25,32],why:[6,33],widget:[6,7,30],width:[10,14,17],wifi:25,wiki:[8,32],win_id:[18,26],window:[2,7,14,16,17,18,19,23,25,26,30,31],window_id1:13,window_id2:13,window_id:[10,13,14,16,18,19,26],winid:26,wish:5,with_cuda:8,with_gstream:8,with_libv4l:8,within:[8,11,14],without:[26,30],wmem_max:25,won:[7,8],wonder:6,word:[5,12,32],work:[2,5,6,8,14,24,25,26,31,32,33],world:32,worst:[],worth:11,would:[4,11,13,14,24,25,28,32,33],wrap:[9,14,18,26,33],wrapper:8,write:[2,7,9,12,13,14,25,26,31,32,33],writer:11,writerthread:11,written:[7,9,11,14,15,22,26,33],ws_client:24,wsdl:24,wsdl_file:24,www:24,x11:25,x11r6:[],x264:30,x86:28,xcb:25,xcfe:[23,25],xdg_session_typ:25,xinerama:23,xml:24,xsignal:26,xubuntu:23,yasm:[],yes:30,yet:[7,11,14],yolo:[4,8,14,27],you:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,18,19,23,24,25,26,27,28,30,31,32,33],your:[2,3,4,5,6,7,8,9,10,11,13,14,23,24,25,26,27,28,29,30,31,32,33],your_blocks:33,your_directori:8,your_ip:30,your_list_of_block:11,your_video_fil:30,yourself:[4,8,10,23,24,28],yuv:[13,14,17,18],zeep:6,zeep_client:24,zoom:24},titles:["Authors","Benchmarking","Cloud Streaming","Debugging","Decoding","Supported hardware","Valkka","About Valkka","Knowledge Base","Lesson 1 : Receiving frames from an IP camera","Lesson 10 : USB Cameras","Lesson 11 : ValkkaFS","Lesson 2 : Decoding","Lesson 3 : Streaming to the X-window system","Lesson 4 : Receiving Frames at Python","Lesson 5 : Transmitting stream","Lesson 6 : Writing / reading stream","Lesson 7 : Decode, save, visualize, analyze and re-transmit","Lesson 8: API level 2","Lesson 9 : Drawing Bounding Boxes","<no title>","Licence & Copyright","Modules","Multi-GPU systems","OnVif & Discovery","Common problems","Integrating with Qt and multiprocessing","Repository Index","Installing","Submodule documentation","The PyQt testsuite","Tutorial","Tutorial - start here","ValkkaFS"],titleterms:{"class":24,"export":11,For:32,One:13,The:[7,30],Using:[15,31,33],VMS:33,about:7,acceler:[4,5],advanc:14,analyz:17,api:[7,14,18,26],approach:23,architectur:33,aspect:18,author:0,autodocument:32,base:8,benchmark:1,bind:8,bottleneck:25,bound:19,box:19,call:24,camera:[5,9,10,13],chain:9,client:[5,14],cloud:2,code:32,codec:5,common:25,configur:23,contrib:8,control:9,copyright:21,core:28,cpp:22,debug:3,decod:[4,12,13,17],depend:32,develop:28,discoveri:24,displai:23,document:29,draw:[19,26],entir:33,exampl:[18,24,32],faq:25,file:[32,33],filesystem:33,fork:9,frag:14,frame:[4,9,11,14],framefilt:9,from:9,gener:[8,18],gpu:[4,23],gtk:28,hardwar:5,here:32,impati:32,index:27,instal:28,instead:[],integr:26,intern:32,intro:24,introduct:23,jetson:8,just:[],knowledg:8,larg:32,lesson:[9,10,11,12,13,14,15,16,17,18,19,31],level:[14,18],librari:7,licenc:21,licens:[],link:32,linux:5,list:22,matroska:11,miscellan:32,modul:22,mp4:14,multi:23,multicast:15,multipl:[13,33],multiprocess:26,multithread:4,nano:8,note:[23,24],numpi:28,one:13,onlin:32,onvif:24,opencv:[8,14,28],organ:32,our:23,packag:32,partit:33,per:33,pitfal:25,plai:11,prerequisit:31,problem:25,project:[7,32],pure:22,pyqt:30,python:[8,14,22,24,26,32],queue:4,quick:32,read:[11,16],receiv:[9,14],refer:9,repositori:27,rtsp:15,save:17,send:15,server:[14,15],servic:24,sever:13,side:14,simpl:18,singl:[4,9],start:32,stream:[2,13,15,16,33],submodul:29,support:5,system:[13,23,25],test:32,test_studio_1:30,test_studio_detector:30,testsuit:[28,30],thi:7,thread:4,topic:14,transmit:[15,17],tune:25,tutori:[31,32],usb:[5,10],use:[],valkka:[6,7,28],valkkaf:[11,33],valkkafsmanag:11,verbos:9,version:28,video:26,visual:17,warn:[],why:7,widget:26,window:13,write:[11,16],zeep:24}}) \ No newline at end of file +Search.setIndex({docnames:["authors","benchmarking","cloud","debugging","decoding","hardware","index","intro","knowledge","lesson_1","lesson_10","lesson_11","lesson_2","lesson_3","lesson_4","lesson_5","lesson_6","lesson_7","lesson_8","lesson_9","lesson_pre","license","modules","multi_gpu","onvif","pitfalls","qt_notes","repos","requirements","submodules","testsuite","tutorial","tutorial_temp","valkkafs"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":2,"sphinx.domains.rst":2,"sphinx.domains.std":2,"sphinx.ext.todo":2,"sphinx.ext.viewcode":1,sphinx:56},filenames:["authors.rst","benchmarking.rst","cloud.rst","debugging.rst","decoding.rst","hardware.rst","index.rst","intro.rst","knowledge.rst","lesson_1.rst","lesson_10.rst","lesson_11.rst","lesson_2.rst","lesson_3.rst","lesson_4.rst","lesson_5.rst","lesson_6.rst","lesson_7.rst","lesson_8.rst","lesson_9.rst","lesson_pre.rst","license.rst","modules.rst","multi_gpu.rst","onvif.rst","pitfalls.rst","qt_notes.rst","repos.rst","requirements.rst","submodules.rst","testsuite.rst","tutorial.rst","tutorial_temp.rst","valkkafs.rst"],objects:{},objnames:{},objtypes:{},terms:{"100":[9,11,14,15,18,25],"1000":[11,13,14,17,25],"10000":18,"101":11,"1024":[11,14,33],"1024kbit":11,"103":[9,11],"104":[9,11],"1080":[10,12,14,17],"1080p":[4,30],"114":11,"117":11,"12345":[11,13,24],"123456":14,"127":[11,15,30],"128":11,"129":11,"132":9,"134":14,"136":11,"142":11,"1525870759898":12,"1525870759938":12,"1525870891068":9,"154":11,"1543314164986":11,"1543314165135":11,"1543314165215":11,"1543314165335":11,"157":[11,13],"160":11,"168":[9,11,12,13,14,15,16,18,19,24,25],"172":11,"173":9,"176":11,"178":9,"180":11,"181":11,"186":11,"191":11,"192":[9,11,12,13,14,15,16,18,19,24,25],"1920":[10,12,14,17],"1920p":1,"193":11,"19408":11,"19460":11,"200":[11,30],"2000":16,"2017":21,"2020":[2,21],"2048":[11,25,33],"2048kbit":[],"206":11,"208":11,"2097152":25,"223":11,"224":15,"23370":[],"238":[9,11],"255":11,"256":11,"2560":11,"2560p":1,"256kb":11,"2979":[],"2ac1":33,"300":[13,30],"37c591e3":33,"400":1,"4000x3000":4,"4096kbp":25,"43d818fb0ffe":[],"4548":33,"465":33,"4770":1,"4928":11,"4ef5":33,"500":[1,4,11,14],"50000":15,"512":[],"5120":[],"512kb":[],"554":25,"568":8,"600":1,"600x600":4,"626c5523":[],"720p":[4,10,13,30],"7700hq":1,"81add9da8a58":33,"8554":[15,30],"8xi7":1,"90000":15,"925412":11,"95000":15,"960":12,"976771087":33,"976773134":33,"break":14,"byte":[9,11,14,30,33],"case":[2,8,9,13,14,18,23,25,28,32,33],"catch":26,"class":[4,6,9,10,11,12,13,14,18,25,26,32,33],"default":[4,8,10,15,18,25,28,30],"export":[5,13,25,31,32],"final":[3,5,7,8,9,11,12,13,14,16,19,23,26,28,30,33],"float":30,"function":[7,11],"import":[4,5,9,10,11,13,14,15,16,18,19,24,26,28,32],"int":[11,26],"long":[1,24,25,30],"machine vis":6,"new":[7,11,13,14,17,32],"return":[11,14,26],"short":24,"static":32,"switch":[3,25,30],"throw":3,"true":[2,8,11,14,25],"try":[7,11,18,24,25,26,28,30,32,33],"video analysi":6,"video manag":6,"video surveil":6,"while":[2,4,6,8,9,11,13,14,15,22,28,33],Adding:25,And:[4,5,7,14,25,26],Are:25,But:14,For:[2,4,5,6,7,8,11,12,13,14,16,22,23,25,28,30,31,33],HLS:2,LTS:[1,8],Near:7,Not:11,One:[24,30,31],Such:[7,14],THE:30,That:[4,8,9,11,12,24,26,28],The:[3,4,5,6,8,9,10,11,12,13,14,15,16,17,18,21,22,23,24,25,26,28,32,33],Then:[3,9,14,15,25,32,33],There:[8,11,12,13,17,26,32,33],These:[11,12,13,14,22],Use:[3,11,23,25],Used:11,Using:[6,25,26,28,32],VMS:[6,11],With:[7,13,14,23,25],__init__:[13,32],__pycache__:32,_at_:0,_branch_sub:17,_build:32,a10:[],a15:[],a169:[],a1eb:33,a20:[],a54c1880e300:[],abbrevi:1,abil:23,abl:[2,8,24,30],about:[2,4,5,6,9,10,11,14,24,27,28,33],abov:[4,11,14,24,25,28,30,32],absolut:23,acceler:[6,12],accept:[9,30],access:[18,30,32,33],accordingli:32,accumul:4,achiev:[2,11,13,25],across:6,activ:[5,9,11,14,16,32],actual:[11,14,23,32],add:[8,11,13,19,28,29,30,32],added:[],addit:[5,30],addrectanglecal:19,address:[5,11,13,14,15,17,18,24],adequ:3,adjust:[13,14,25,33],admin:[9,11,12,13,14,15,16,18,19,24,25],advanc:31,advantag:[14,23,33],affin:[1,18,30],afford:30,afraid:[],after:[2,3,5,8,9,11,14,25,28,30,32,33],again:[2,6,9,11,14,16,25,28,33],against:[5,25,30],agnost:6,agpl:27,ahead:32,aka:[2,13,23],algorithm:[7,8],aliv:14,all:[2,3,4,5,6,7,8,9,10,11,12,13,14,15,23,24,25,26,28,30,32,33],allow:[11,25],alltogeth:[],almost:[24,25],alon:[26,32],along:[],alpha:7,alreadi:6,also:[2,3,4,7,9,10,11,13,14,15,16,18,19,23,24,25,26,28,30,32,33],alt:25,altern:[11,25,26],alwai:[28,32],ambiti:13,among:[30,33],amount:[7,33],amp:[],anaconda:28,analysi:[7,14,26],analyt:24,analyz:[4,6,7,26,31],ancient:23,ani:[2,3,4,8,9,11,14,15,24,26,30,32,33],anoth:[7,9,11,12,13,14,15,23,30],anyth:[24,28],api2:[4,9,11,14,18,22,27],api:[2,4,6,9,11,12,13,22,23,25,27,28,31,32,33],api_level_1:[26,31],api_level_2:[18,23,26,30],app:6,appear:[5,7,8,33],append:[13,14],applet:23,appli:[14,26,30,33],applic:[3,4,6,7,11,13,25,26],approach:[2,6,26,33],approx:4,approxim:[],apt:[3,8,23,24,25,28],arbitrari:11,architectur:[6,7,8,13,28],archiv:[],arg:3,argument:[13,18],aris:11,arm:[],around:[13,31,32],arp:24,arrai:14,arrang:14,arriv:[4,11,13,24,25,30],articl:6,asap:[11,32],ask:4,aspect:31,associ:25,assum:[4,28,32,33],assur:11,asterix:11,ati:5,author:[6,32],auto:32,autodoc:32,autogener:[29,32],automag:32,automat:[28,32,33],aux:3,auxiliari:32,av3_in_filt:17,av_in_filt:[10,12,13,14,16,19],avail:[4,5,7,8,9,13,18,22,25,30,33],avbitmapfram:12,avoid:[7,32,33],avp:15,avthread:[4,5,7,10,12,13,14,16,17,18,19,25],avthread_3:17,awar:[28,30,33],axi:[5,24],b16:[],b17:[],b33b:33,b8af:33,back:[14,32],backend:[26,32],background:[6,11,26],backtrac:3,balanc:30,bandwith:25,base:[6,7,12,13,14,24,25,32],baselin:30,bash:[3,8,25,32],basi:[11,16,30],basic:[2,5,24,31],basicfilterchain:18,basicfram:[9,11],bbox:19,bdist_wheel:8,beast:[4,11],becaus:4,becom:24,been:[7,8,13,14,16,23,24,25,26,28,32],befor:[4,8,9,11,12,14,15,24,25,30,31,32],begin:[2,9,11,12,13,14,15,16,18,24],behaviour:[11,14,30],behind:[2,32],being:[11,14,30,33],belong:[5,22],below:[14,25],benchmark:[25,28,30],benefit:6,best:32,better:[4,24,25],between:[3,6,7,12,14,18,23,24],beyond:7,big:32,bigger:[15,30],biggest:4,bin:[8,32],binari:[8,28,33],bind:[7,27,28,30,31],bit:[12,13,24,26,32],bitmap:[12,13,14,17,25],bitrat:33,black:4,blame:25,blkid:33,bloat:24,block:[9,11,16,33],block_indic:11,blockdev:33,blockfil:[11,33],blocksiz:[11,33],blocktabl:11,blown:26,blur:14,boil:[],bonu:24,book:[11,33],both:[9,12,14,25,26,30,33],bother:32,bottleneck:[6,23,24],bottom:19,bound:[4,30,31],box:[2,4,25,31],bracket:9,branch:[7,9,11,14,17,18,32],brand:13,briefinfoframefilt:14,broken:[5,25],brows:8,browser:[2,14],bsf:30,buffer:[4,7,13,14,15,25,30,33],bug:[5,8,23],buggi:25,bugreport:8,build:[3,6,8,23,28],build_exampl:8,build_opencv_python2:8,build_opencv_python3:8,build_perf_test:8,build_test:8,bunch:[],burn:7,burst:[4,11,16,25],busi:[6,19],button:[30,32],bye:[9,10,11,12,13,14,15,16,18,19],c18:[],c2763e639a67:33,c920:[5,10],cach:[2,11,33],cacher:11,cacherthread:11,cairo:28,calcul:[],call:[4,6,9,11,12,16,19,25,32],callback:[9,11],cam:30,camera:[1,2,4,6,7,11,12,14,15,17,24,25,30,31,33],can:[2,3,4,5,6,7,8,9,10,11,13,14,15,17,18,22,23,24,25,26,28,30,31,32,33],cann:5,cap:24,capabilitycategori:24,capabl:[5,33],capac:25,card:23,careful:14,carri:11,cascad:9,cat:25,categori:[22,24],caus:28,celebr:[],cellsiz:14,certain:[4,11,13,24,28,30,32],chain:[18,31],challeng:11,chang:[11,32],changelog:32,changestr:32,channel:3,chapter:14,charact:32,check:[3,5,6,7,8,11,23,25,28,32],checkout:8,childpip:26,chmod:24,choic:[2,6],choke:25,choos:[25,33],choppi:25,chunk:[2,33],churn:12,clang:8,clariti:14,classic:26,clean:32,cleanpi:32,clear:[3,14,19],clearobjectscal:19,click:[30,32],client:[2,3,6,7,17,24,26,31],clientpullpi:14,clock:25,clog:4,clone:[8,28,32],close:[4,9,13,16,18,25,26],closer:32,cloud:[6,14],clusterfuck:32,cmake:8,cmake_build_typ:8,cmake_install_prefix:8,cmakelist:8,code:[2,7,8,9,11,14,17,18,24,26,27,28,31],codebas:7,codec:[2,6,9],codec_id:9,collect:32,column:[11,24,33],com:[8,28,32],combin:[2,3,26],come:[5,8,13,24,26,28],comfort:7,command:[5,8,10,13,15,24,25,33],comment:[1,8],commerci:25,commit:32,common:[6,14,18,30],commun:[7,14,23,26],compact:[14,18,32],compar:13,compat:8,compil:[6,8,25,32],complet:[7,11,14,32],complex:[6,7,9,12,13,18,24,33],compliant:[5,6,31],complic:26,compon:[21,26,33],composit:[23,25],compositor:[23,25],comput:[7,24],concern:12,concret:26,concurr:11,condit:11,conf:[25,32],config:[8,25],configur:[5,6,25,30,32],confirm:5,conflict:28,confus:9,connect:[5,7,9,11,12,13,14,17,18,23,25,26,30,31,33],consecut:[4,19],consid:[3,9,12,13,23,25,26,30,32,33],consist:[9,22,25,28,30,32],constitut:[],construct:[9,11,12,13,14,15,16,18,24,26],constructor:[26,32],consult:[11,33],consumpt:[3,30],contact:27,contain:[2,9,14,30,32],content:11,contex:[13,23],context:[9,12,13],context_id1:13,context_id2:13,context_id:[10,13,14,16,19,26],continu:[4,7,9,11,14,16,30,33],continui:13,contrari:23,contrast:33,contrib:6,control:[15,24,26,31],conveni:[2,14,26,32],convent:17,convert:[11,26,30],convinc:[],convolut:4,cool:[6,32],coordin:19,copi:[9,12,14,30,32],copyright:[6,32],core:[4,5,7,9,10,11,14,15,16,18,19,21,22,25,27,28,30,33],correct:[9,11,14,23,25,26,30],correctli:[3,11,25,26,32],correspond:[11,12,28],could:[4,8,11,12,13,14,16,19,25],count:3,cours:[3,14],cpack_binary_deb:8,cpack_debian_package_shlibdep:8,cpackconfig:8,cpp:[3,6,7,8,9,11,12,13,14,18,26,27],cpp_thread_demo:26,cpu:[4,7,12,14,17,25],crashi:26,creat:[2,3,6,7,8,9,11,12,13,14,16,18,22,23,24,26,27,32,33],createwindow:[10,13,14,16,18,19],createwindowcontain:26,credenti:24,cross:[2,23],crossov:12,ctl:10,ctor:[],ctrl:25,ctx:[9,10,11,12,13,14,15,16,19,25],cuda:5,culprit:25,cumbersom:32,curl:28,curli:9,current:[5,11,22,26,28,30,33],current_time_callback:11,current_time_limit:11,custom:[3,6,7,11,26,28,32],cut:24,cv2:[14,25],cycl:32,d11:[],d12:[],d1a:1,dai:4,dangl:[],darknet:27,data:[11,14,23,32,33],date:[1,32],db572185:33,dbg:3,dbu:25,deactiv:[9,14,16,32],deal:[8,9,13],deb:[8,28],debian:[8,22,28],debug:[6,7,11,14,25,30],debug_log_al:16,dec:30,decent:[4,5,24,31],decid:32,declar:24,declin:7,decod:[1,6,7,11,14,16,18,23,25,26,30,31,33],decoderthread:33,decodingoffcal:[10,12,13,14,19],decodingon:18,decodingoncal:[10,12,13,14,16,19],dedic:[4,11,23,26,33],deep:[4,6],deeper:[23,26],deepli:14,def:[11,13,26],defin:[8,9,10,11,12,13,14,15,23,24,30,32],definit:[11,32],degrad:30,deinstal:28,delet:32,delrendercontextcal:[10,13,14,16,19],delrendergroupcal:[10,13,14,16,19],demand:[7,15],demo:[6,14,23,27,28],demo_multiprocess:[],demonstr:[7,30],depenc:32,depend:[4,5,7,8,11,13,14,25,28],deprec:23,deregisteroutboundcal:15,deregisterstreamcal:15,deriv:[26,32],describ:[2,9,24,28],descriptor:14,design:[6,7,11,13,25],desktop:[2,6,23,25,31],desper:7,detail:[4,5,7,9,11,12,13,24,26,32,33],detect:30,detector:[14,30],dev:[3,5,6,8,10,33],develop:[6,7,24,30,32,33],devic:[2,5,9,11,24,33],device_nam:25,device_s:[11,33],device_servic:24,devicebind:24,deviceio:24,devicemanag:24,devicemgmt:24,diagram:12,did:[26,32],differ:[10,13,14,17,23],dig:26,dimens:14,dir:8,direct:26,directli:[11,14,24,25,30,32,33],directori:[3,8,10,11,30,32,33],dirnam:[11,33],dirti:32,disabl:[8,13,25],disadvantag:23,discard:25,disconnect:11,discov:24,discoveri:[6,27],discuss:[5,9,11,23,25,26],disk:[6,7,9,11,16,17,33],disk_writ:11,displai:[3,6,25],dist:[8,22,28,32],distribut:[8,28,32],distro:[25,28,31],divis:11,dna:1,doc:[9,32],docker:[5,25],document:[2,6,9,11,12,13,14,26,32],doe:[5,9,10,11,12,14,18,26,30,32],doesn:2,doing:[11,26],don:[4,14,23,24,28,30,32],done:[5,12,13,14,15,16,17,24,26,32],dongl:25,dont:[],doubl:32,down:[26,33],download:[5,8,9,10,11,12,13,14,15,16,17,18,19,28,32],downstream:11,dpkg:[8,28],draw:[6,31],dri:5,drive:33,driver:[5,13,23,25],drop:25,due:[7,25],dummi:[26,32],dump:[2,9,11,12,30,33],dumpblock:11,dumpfil:[11,33],durat:24,dure:[7,9,16,32],dynam:2,each:[11,13,14,17,23,24,25,30,32,33],earlier:11,easi:7,easier:[11,33],easiest:5,easili:[3,18,26],easy_build:[],echo:25,econom:6,edg:9,edit:[8,29,32],editor:[25,32],effect:[],effici:[11,14,25,33],either:[6,8,25,30,32],element:14,els:[14,24],elsampsa:[28,32],email:8,emb:26,emit:33,emphasi:[7,9,26],emploi:8,enabl:[3,11,23,25],encapsul:[13,18,33],encount:33,end:[9,11,12,13,14,15,16,18,32,33],enforc:5,enhanc:4,enough:[9,11,25],entir:[6,11],entiti:[23,32,33],entri:[3,9,32],environ:[5,23,25],environment:23,equal:16,error:[25,28,32],especi:[3,5,12],essenti:8,establish:[14,15],etc:[3,4,6,7,8,9,11,12,13,14,16,18,25,26,30,31,32],even:[4,7,11,13,14,25,30,33],event:[24,26],ever:[4,6],everi:[3,11],everybodi:32,everyth:[6,7,14,25,30,32],evil:32,evok:11,exact:33,exactli:[4,14,25],exagger:25,exampl:[3,4,6,7,8,9,11,13,14,17,19,23,26,27,28,30,31,33],example_project:[],except:[11,32],excercis:15,excess:30,exclude_list:24,execut:[9,16,24,26],exist:[13,24,26],exit:[9,11,13,14,16,19,32],expect:25,experi:25,experiment:[5,10,28,30,33],explain:[17,32],explan:[12,22,30],explor:5,ext4:[],extens:[2,3,5,7,27],extent:14,extern:[7,33],extra:[14,18,24],extrem:13,eye:[4,7],f12:25,fact:25,factori:24,fail:11,fals:[14,18],fanci:[9,12,32],faq:6,far:[11,25],fast:[7,32],favorit:[7,8,9],fd4d:[],fdisk:33,featur:[5,7,8,9,14,28,32],fed:9,feed:[9,12,14,26],feel:15,few:[9,11,24],ffmpeg:[5,7,28,30],ffplai:[15,25,30,31],fiddl:32,field:[30,32],fifo:[12,17],file:[2,3,6,8,9,11,14,15,16,24,30],file_ctx:16,file_filt:[9,11,16],file_filter_2:17,file_input_framefilt:11,filecacherthread:33,filecachethread:11,filecontext:16,fileframefilt:[9,11,16,17],filenam:[16,30],filestreamcontext:11,filesystem:[6,7,11],filethread:16,fill:11,filter:[12,17,26],filter_2:9,filter_3:9,filterchain:[11,12,13,14,15,18,26,33],filtergraph:[6,7,9,11,12,13,14,15,16,17,18,26],find:[1,3,8,24,26,32],finish:11,finit:33,firefox:[24,32],firewal:25,first:[1,3,5,8,9,11,12,13,14,18,19,24,28,30,32,33],fish:7,fishey:7,fix:25,flavor:[8,11,28],flexibl:13,flow:[9,33],fly:14,fmp4:2,fmtp:15,folder:32,follow:[3,5,7,9,10,11,12,13,14,16,23,25,26,28,30,32,33],forc:11,foreign:26,foreign_widget:26,foreign_window:26,forev:4,forget:[14,26,32],fork:[3,11,14,24,26,31],fork_3:17,fork_filt:[7,11,14,17],fork_filter_3:17,forkframefilt:[7,9,14,17],forkframefilter3:17,forkframefiltern:11,form:23,form_snippet:32,format:[2,9,10,14,23,32,33],former:[3,11],forward:11,found:[10,14,17,22,23,24,25,26,33],four:[4,23],fps:[1,4,11,13,14,25],frag:[2,31],fragment:[2,14,33],fragmp4mux:14,fragmp4muxframefilt:14,fragmp4shmem:14,fragmp4shmemcli:14,fragmp4shmemframefilt:14,frame:[3,6,7,12,13,15,16,17,18,23,25,26,30,31,33],framecacherthread:11,framefifo:[12,26],framefilt:[11,12,13,16,18,25,31],framer:[4,13,23],framework:[6,26],free:[8,15],freeglut3:8,freez:25,freq:11,frequent:[11,25],fresh:28,from:[2,3,4,5,6,7,8,10,11,12,13,14,15,16,17,18,19,23,24,25,26,27,28,30,31,32,33],fromwinid:26,frontend:[26,32],frustrat:23,fs_directori:30,fs_directory_:30,fsgroup:33,ftyp:2,full:[14,17,18,25,26],fulli:7,further:[9,14,33],futur:7,gate:9,gate_filt:9,gateframefilt:9,gaussian:14,gaussianblur:14,gdb:3,gener:[1,2,6,25,26,31,32],gestur:26,get:[3,4,7,8,9,11,14,23,24,25,28,30,32,33],getblockingframefilt:16,getblockt:11,getcap:24,getframefilt:[10,11,12,13,14,15,16,17,19],getind:11,getindneigh:11,getnumpyshmem:14,getsize64:33,gettimerang:11,getvari:24,getwsdlpath:24,gf_driver:1,gigabit:25,gir1:28,git:[8,28,31,32],github:[2,7,8,28,32],githubusercont:28,gitlab:32,give:[3,14,24,30],given:[9,11,19],gl_ctx:[4,13],gl_in_filt:[10,13,14,16,19],gl_in_filter_3_1:17,gla:1,global:[11,22,28],glthread:[4,7,10,13,14,16,17,18,19,26],glthread_3_1:17,glx:7,glxgear:[13,23,25],glxinfo:5,gmtime:11,goal:[7,14],goe:[6,7,11,14,16,18],going:[10,11,13,14,26],gold:30,good:[2,4,5,7,8,13,28,32],gori:[7,12],got:[7,14,24,32],gpart:33,gpt:33,gpu1:23,gpu2:23,gpu:[5,6,7,13,14,25,30],gpu_index:5,grant:33,graph:9,graphic:[6,23,26,28],greater:[5,23],greeter:32,grid:25,group:[5,10,13,19,30],grow:[7,29],grrp:2,gtk:[6,26],guarante:5,gui:[6,11,14,26,33],guidelin:26,h264:[2,4,5,9,10,11,12,13,14,15,30,31,33],h264_mp4toannexb:30,h265:2,h26:[],hack:32,had:9,half:[5,25],hand:[5,11],handi:8,handl:[3,4,10,11,14,23,32],handlefifo:25,happen:[3,5,18,23],hard:[13,25,33],hardwar:[4,6,8,12,25,30],has:[5,7,9,10,11,12,13,14,16,24,25,26,28,32],have:[2,3,4,5,7,8,11,12,13,14,18,23,24,25,26,28,30,31,32,33],haven:4,hdd:33,head:33,header:8,headless:25,heavi:[4,12],heavili:14,height:[10,14,17],hello:32,help:30,helper:32,here:[1,2,3,4,5,7,8,9,10,11,12,13,14,15,16,17,18,19,22,23,24,25,26,27,28,30,31,33],hidden:[6,7],hide:[3,32],hierarch:33,high:14,highli:[6,26],highlight:6,hold:11,home:[32,33],hood:[12,13],hopefulli:[],host:[5,23],hour:[],how:[1,2,4,7,11,14,18,22,24,25,26,30,31,32,33],howev:[3,4,7,8,9,11,12,13,14,24,25,26],hrs:8,html:32,htop:3,http:[8,24,28,32],huawei:5,huge:33,human:4,hundr:13,hurdl:5,i915:[1,5],i965:5,iOS:2,id_list:13,idea:[4,7,8,11,13,24,32],ideal:33,ident:[23,28,33],identif:33,identifi:[11,14,16,17,33],idl:11,ids:[13,26],iki:0,imag:[4,6,12,14,24,25],image_interv:[14,17],imagin:[2,24,30,32],img2:14,img:14,immedi:11,implement:[4,5,7,9,14,24,25],impress:25,imshow:14,imutil:[14,28],includ:[8,9,11,24,25,26,28,32],incom:[12,15,26],inconveni:32,incorrectli:25,increas:25,indent:18,independ:[9,12],index:[6,8,14,30,32],indic:[11,22,30,33],individu:[9,11,13],infer:4,info:[9,11],info_filt:[4,9,12,15],infoframefilt:[9,11,12,15],inform:[2,7,8,9,10,11,14,25],infrastructur:[5,11,14,26],inherit:[12,32],init:32,init_filt:11,init_stream:11,initi:[5,11,32],initstreamframefilt:11,input:[11,13,16],inspect:11,instabl:30,instal:[3,5,6,8,14,22,23,24,25,26,30,31,32],install_requir:32,instanc:[4,9,11,18],instant:[11,33],instanti:[9,11,12,13,14,15,18,24,26,33],instead:[3,4,5,11,12,14,23,25,26,30,32],instruct:[8,22,28,30,31,32],integ:[9,11],integr:[6,7],intel:[5,13,25],intel_gpu_top:5,intellig:[],intend:30,interact:[6,30,33],interest:[7,27,32],interfac:[5,6,14,18,22,25,28,30,32],intern:[5,9,12,33],internet:[2,5,25],interpol:[13,14,17,25],interpret:[26,30],interprocess:[14,26],interserv:7,interst:[],interv:[11,14,33],interval_filt:[7,14,17],interval_filter_3_2:17,intervalframefilt:[7,14,17],intra:4,intro:[6,7,32],introduc:11,introduct:[6,32],invent:11,investor:6,involv:6,ip4:15,ip_address:31,iphon:2,ips2:24,ips:24,ipython3:32,ipython:32,isiz:14,isod:24,isol:32,issu:[4,5,25],its:[7,8,13,26,28,31],itself:[6,9,12],jackd2:8,jann:32,jantunen:32,javascript:5,jetson:6,jetsonnano:8,jitter:[25,30],joggl:14,json:[11,33],just:[2,3,4,5,7,8,9,11,13,14,18,19,22,23,24,25,26,27,28,30,32,33],kate:25,kbit:11,kbp:[11,25],kbyte:11,kde:[23,25],keep:[11,13,18,23,25,32,33],kei:[9,11,33],kept:11,kernel:[1,30],keyfram:[10,25,33],keyint:30,kilobit:11,kinda:[],knee:6,know:[12,25],knowledg:[6,31],known:14,kokk:[11,16],ksysguard:25,kwin:[23,25],lack:2,lag:30,lan:[2,4,25],languag:13,laptop:[1,31],larg:[4,6,7,11,25,30,33],last:[9,25,26,28,30,33],late:[4,25],latenc:2,later:[9,11],latest:25,latter:[8,11,25],launch:[3,8,15,23,25,26,30,32],layout:26,ld_library_path:[],lead:26,leaf:9,leak:[3,4,5],leaki:26,learn:[4,6,7,9,11,14,18,23,24,26,28,30],least:[7,8,10,25,31],leav:17,left:[12,13,15,19,30],lesson:[4,6,26],lesson_1_a:31,lesson_4:[14,17],lesson_4_c:14,lesson_8_a:18,let:[4,9,11,12,13,14,15,16,19,23,24,26,30,32,33],letter:[],level:[3,4,6,7,9,11,13,22,27,28,31],lgpl3:32,lgpl:[7,21,27],lib:[22,28,32],libasound2:8,libav:[5,7],libavcodec:8,libavformat:[8,15],libc6:[],libclang:8,libdc1394:8,libglew:[],libgtk2:8,libjack:8,libjasp:8,libjpeg:8,libpng:8,libqt5svg5:8,libqt5webkit5:8,libqt5xmlpatterns5:8,librari:[4,5,6,8,9,13,14,24,26,28],libsdl2:8,libssl:8,libstdc:[],libswscal:8,libtbb2:8,libtbb:8,libtiff:8,libv4l:8,libva:5,libva_driver_nam:5,libvalkka:[1,2,3,4,5,6,8,9,11,13,14,21,24,25,26,27,28],libx264:8,libxi:8,libxmu:8,libxrandr:8,libxvidcor:8,licenc:6,licens:[7,21,27,28,32],life:33,lift:12,light:4,like:[2,4,5,8,9,11,12,13,14,15,16,17,18,19,24,25,26,28,30,31,32,33],limit:[7,11,13],line:[8,10,13,24,25,28,30,32],link:[2,8,24],linux:[2,3,4,6,23,25,28,30,31,33],list:[2,10,12,14],listen:[14,26],liva:1,live2_in_filt:17,live555:[7,15,18],live:[1,2,3,4,6,13,14,16,18,22,25,27,30,32],live_in_filt:15,live_out_filt:[9,14,25],live_thread:18,liveconnectioncontext:[9,11,12,13,14,15,16,19,25],liveconnectiontype_rtsp:[9,11,12,13,14,15,16,19,25],liveconnectiontype_sdp:15,liveoutboundcontext:15,livestream:13,livethread2:15,livethread2_1:17,livethread:[7,9,11,12,13,14,15,16,17,18,19,25,26,30],livethread_1:17,load:[11,25,30],loadfromdirectori:11,local:[8,15,24,28,30,32],localhost:15,locat:33,log:9,logger:[9,11],logic:23,login:[5,25,33],logitech:5,loglevel_crazi:11,loglevel_debug:11,loglevel_norm:[9,11],loglevel_sil:9,logout:[5,25,33],look:[2,4,6,8,9,11,13,14,15,17,24,26,32,33],loop:26,loopback:7,lot:[7,9,14,17],low:2,lower:25,lowest:14,ltd:21,luck:7,luxuri:30,mac:2,machin:[5,6,7,14,22,26],machine_learn:32,macro:23,macro_project:32,made:13,magic:26,mai:[4,28],main:[7,9,11,14,17,24,26,32],mainstream:25,maintain:[1,25,32],major:2,make:[3,8,11,14,15,23,25,27,33],manag:[7,9,13,23,25,32,33],mani:[4,5,7,13,23,25,30],manifest:32,manipul:[24,33],manner:28,manual:[7,8,28],manufactur:5,map:[11,13,14,16,18,26],mark:[9,11,12],markdown:32,market:31,massiv:[6,25],master:[14,28,32],match:33,materia:30,math:[13,25],matroska:[9,16,30,31],matter:33,max:[4,11,14],maximum:[11,25],mayb:[4,25,32],mbp:25,mbyte:[],mean:28,media:[2,6,7,9,13,24,31,33],media_servic:24,media_source_extensions_api:[],media_typ:9,mediaplay:9,mediasourc:[],medium:[],member:9,memleak:[3,4],memori:[3,4,5,6,7,11,13,14,17,18,26,30,31,33],memwatch:3,mention:[1,3,33],menu:30,mesa:[5,13,25,28],mess:[3,30],messag:[24,26],messageprocess:26,meta:14,metadata:[11,14,33],method:[9,11,12,16,25,26],might:[4,6,7,8,11,14,15,25,28,30,32],millisec:30,millisecond:[4,11,13,14,17,30,33],min:[11,14,25,30],mind:[13,18,32],minim:[25,33],minimum:[11,24],mint:32,minut:10,mirror:27,mismatch:28,miss:[25,33],mit:[7,27,32],mix:[3,26],mkv:[9,11,16,30],mod:[24,32],mode:15,model:26,modern:[4,31],modif:33,modifi:[4,14,24,25,32],modul:[3,6,7,8,14,24,25,27,32],moment:[5,9,11,32],monitor:[3,13,23,25],moov:2,more:[2,3,4,5,6,7,8,9,11,12,13,14,19,25,26,29,30,32,33],most:[2,8,14,25,31],mous:[23,26,30],move:[9,17,23],movement:30,movementdetectorprocess:26,movi:8,mozilla:[],mp4:[2,31],msbuftim:[1,4,18,30],mse:2,msreconnect:18,mstime1:33,mstime2:33,mstime:11,mstimeout:14,mstimestamp:[11,14],much:[4,9],multi:[6,30],multicast:[6,7,16,17,30,31],multipl:[6,11,14,23,30,31],multiplex:[10,14],multiprocess:[3,6,14,27],multiprocess_1:26,multiprocess_2:26,multiprocess_3:26,multiprocessing_demo:26,multiprocessing_demo_sign:[],multithread:[3,6,14],muscl:4,must:[4,5,6,8,11,14,16,17,24,28,32],mutex:[7,12],mux:14,mux_filt:14,muxer:11,mvision:[22,27],myself:5,mysteri:[],n1080p:30,n1440p:30,n4k:30,n720p:30,n_1080p:[1,4,13,18],n_1440p:[1,4,13,18],n_4k:[1,4,13,18],n_720p:[1,4,13,18],n_audio:1,n_block:11,n_ringbuff:14,n_size:14,name:[3,4,5,6,8,9,11,14,15,17,18,24,28,30,32],namespac:[5,11,22,24,27],nano:6,nasti:33,naudio:30,navig:30,necessari:[11,30,32],need:[4,5,6,7,8,9,11,12,13,14,15,23,24,26,27,28,30,31,32,33],negoti:25,neighborhood:11,nest:24,net:[7,16,25],network:[4,25],neural:4,never:18,newest:1,newfromdirectori:[11,33],newli:32,newrendercontextcal:[10,13,14,16,19,26],newrendergroupcal:[10,13,14,16,19],next:[8,9,11,12,13,14,16,18,28,32,33],nic:25,nice:[13,14,23,24,25,30,32],nojekyl:32,non:[8,11],none:[11,14,25],nordic12345:[9,12,13,14,15,16,18,19,25],normal:[8,9,11,14,22,24,30,33],notat:[9,11],note:[2,6,9,11,16,26],noth:[7,9,14,25,32],notion:11,nouveau:[13,25],now:[3,11,12,13,14,18,24,30,32,33],nowadai:25,nowher:[],ntp:25,number:[4,6,9,10,11,13,14,15,16,18,23,25,26,30,32,33],numer:28,numpi:[6,8,14],nvidia:[1,5,13,23,25],nvthread:5,object:[3,7,11,12,14,24,33],oblig:26,obmalloc:3,obscur:24,observ:[14,23,25],obsess:4,obsolet:[24,27],obtain:2,occur:14,off:[8,9,18,23,25],offer:[23,25],often:10,old:25,oldest:33,onc:[5,7,11,13,14,17,25,28,30,31,32,33],one:[2,3,8,11,14,18,23,25,28,30,31,33],ones:25,onli:[2,4,5,7,8,9,10,11,12,13,14,15,16,17,22,24,25,26,28,30,33],onto:9,onvif:[5,6,27,31],open:[16,24,30,32],opencv:[6,7,17,25,26,30,31],opencv_contrib:8,opencv_enable_nonfre:8,opencv_extra_modules_path:8,openfilestreamcal:16,opengl:[1,5,7,13,23,25,30],opengl_tim:25,openglframefifo:13,openglframefifocontext:[4,13],openglthread:[4,7,10,13,14,16,17,18,19,23,25,26],opensourc:[5,6,7],openspec:24,oper:[7,30],opt:[13,32],option:[3,23,25,32],orchestr:26,order:[1,5,7,11,12,13,14,15,16,18,19,26,30,32,33],ordinari:8,org:[8,13,24,25],organ:[7,11,13,22,33],origin:[11,32],other:[4,5,7,8,11,14,25,26,28,30],otherwis:[1,14,30,32],our:[6,9,11,14,26],ourselv:8,out:[5,6,7,8,9,12,13,14,23,28,30,31,32,33],out_ctx:15,out_filt:11,outdat:5,outer:[9,17],outfil:30,outgo:[15,26],output:[3,9,11,12,15],over:[2,3,4,11,16,23,25,30,33],overcom:[],overflow:2,overlai:19,overview:33,overwrit:[],overwritten:33,own:[7,13,14,23,24,26,27,30,32],packag:[5,8,13,22,26,28,29],packagenam:8,packet:[2,12,15,25],page:[6,7,13,22,23,25,28,32],pair:[14,30],pan:24,param:30,paramet:[1,9,11,12,14,23,24,26,32],parameter:19,parent:26,parenthesi:9,part:[8,9,12,13,14,16,18,22,25,28],particularli:25,partit:[6,11],partition_uuid:33,partuuid:33,pass:[9,11,12,13,14,17,24,26,30,33],passslotframefilt:11,passwd:31,password:[5,24,30],pastabl:32,patent:8,path:32,patienc:10,paus:16,payload:[9,11,12,14],pcmu:9,peek:11,peopl:[24,32],per:[4,6,11,13,25,30],perform:[1,11,12,14,23,25,30],perhap:6,period:30,permit:24,persist:25,person:32,physic:23,pick:[],ping:26,pip3:[8,22,23,24,25,28,32],pip:[8,28,32],pipe:[7,16,26],pipelin:[2,7,25],pitfal:[6,26],pixel:[4,7],pkg:8,place:[12,13,14,26,30,33],plai:[2,9,13,14,15,16,19,30,31,32,33],plain:14,plan:30,platform:[2,25],playback:[11,30,33],playcamerastreamcal:10,player:[7,9,30,31],playfilestreamcal:16,playlist:2,playstreamcal:[9,11,12,13,14,15,16,19],playstreamscal:11,pleas:[2,4,5,6,8,11,14,26,27,28,33],plu:11,plug:6,pluggin:7,plugin:25,point:[3,7,9,11,18,33],pointer:23,poison:4,polish:32,pong:26,pong_:[],pong__:26,poorli:4,popular:[14,30],port:[15,24,25],posit:23,posix:[14,17,18,30],possibl:[11,12,14,32],post:[2,32],power:[7,25],ppa:6,pps:[],pre:[4,7,12,13,23,25,30,33],precompil:28,predefin:33,prefer:[3,25,28,30],prepar:23,prepare_build:[],prerequisit:6,present:[4,6,7,11,13,16,18,25,30,33],preset:30,press:[30,32,33],pretti:27,previou:[9,11,12,13,14],price:7,prima:30,primer:24,print:[9,10,11,12,13,14,15,16,18,19,24],privat:8,pro:[5,10],probabl:[4,23],problem:[4,6,7,14,28,30,32,33],proce:[11,12,32],process:[3,6,7,14,18,25,26,28,30],processor:[25,30],produc:[2,32],product:32,profil:30,profile_tim:25,program:[1,4,6,7,9,13,14,17,22,23,25,26,27,28,30,32],programmat:9,progress:[],project:[6,14],promis:7,pronounc:4,proper:32,proprietari:[4,5,13,23,25],protect:12,protocol:[2,5,9,24,31],provid:[5,11,13,14,18,24,25,26,28],ptz:24,pull:[3,7,14,25,28],pullblockspycal:11,pullfram:14,pure:6,purpos:[13,14],push:[2,11,14,32],put:[8,32],pwd:32,pyapi:[9,12],pyc:32,pygobject:28,pypi:8,pyqt5:[3,23,28],pyqt:[1,6,7,8,11,18,23,25,26,28,33],pysid:8,pyside2:[3,6,8,23,28],pyside_setup:8,python3:[3,6,7,8,14,18,22,25,26,27,28,30,31,32],python3_packag:32,python:[2,3,6,7,9,11,15,25,27,28,30,31],python_program:3,pythonpath:32,pytorch:6,qhandlerthread:26,qmake:8,qopengltimemonitor_wrapp:8,qopengltimerquery_wrapp:8,qpa:25,qt5:8,qt_for_python:8,qtbase5:8,qtdeclarative5:8,qtgui:[8,26],qtgui_gen_dir:8,qthread:26,qtmultimedia5:8,qtscript5:8,qttools5:8,qtwebengine5:8,qtwidget:26,qualiti:25,quarter:14,queri:[],queu:30,queue:[6,7,12,13],quickli:32,quickstart:6,quicktest:[25,28],quit:13,qvalkkaopencvprocess:[],qvalkkaprocess:[],qvalkkathread:[],qwidget:26,qwindow:26,ramp:25,rang:[11,13,14],rapidli:7,rate:[13,14,25],rather:[23,24],raw:28,reach:[],read:[2,4,5,6,8,9,10,12,13,14,15,17,25,26,30,31,33],readabl:3,reader:11,reader_out_filt:11,readerthread:11,readi:[13,14,25],readili:[],readm:32,readthedoc:8,real:25,realli:[4,5,25],realtim:5,recal:11,recast:[6,7,15,17,30],receiv:[2,11,15,25,26,31],recent:[24,28,32],recommend:[6,7,13,26,33],recompil:32,reconnect:18,record:[7,11,30,33],recov:11,recreat:32,redirect:[11,32],ref:[],refer:[2,3,8,11,18,25,26,28,31,32,33],refresh:[13,25],refus:30,regist:[11,13],registeroutboundcal:15,registerstreamcal:[9,11,12,13,14,15,16,19],regular:[14,33],reinit:32,reiniti:32,rel:[19,23],relat:5,releas:[6,8,14],relev:18,reli:14,rememb:[2,3,4,8,14,25,32],remot:[24,25,32],remov:[3,8,28,30,32],render:[10,13,19,25],repeat:28,replac:5,replic:[1,13,30],repo:[28,32],report:[13,23,25],repositori:[2,6,7,28,32],repres:33,req:11,request:[11,12,13,16,33],request_tcp:25,requir:[5,7,8,17,28,30,31,32,33],reserv:[4,7,12,13,18,23,25,30,33],reshap:14,resiz:14,resolut:[4,10,13,14,18,24,25,30],resolv:[14,32],resort:28,resourc:23,respect:11,respons:[11,13,24],restamp:30,restart:25,restrict:4,result:[9,26],resum:33,revert:[],revis:32,rewind:33,rewindcal:11,rgb24:14,rgb:[13,14,17],rgbsharedmemframefilt:[7,14,17],rgbshmemframefilt:[14,17],rid:32,right:[12,13,19,25,30,32],rigor:3,riikonen:[0,21,28],ring:14,ringbuff:[14,17],risk:14,rmem_max:25,robust:[5,23],root:[],router:31,routin:14,row:[11,33],rst:32,rtp:[15,31],rtpmap:15,rtsp:[5,9,11,12,13,14,16,18,19,25,30,31],rtsp_address:11,rule:9,run:[1,3,4,5,6,7,8,9,11,12,13,14,15,18,23,24,25,26,30,31,32],run_cmak:[8,25],runarpscan:24,runwsdiscoveri:24,safe:[7,12],sai:[5,7,9,11,14,25,26,30,31,32],said:32,same:[1,2,3,7,11,12,13,14,18,24,25,26,30,32,33],sampl:[7,26],sampsa:[0,21,28,33],satur:25,save:[4,11,13,15,30,31,32,33],saw:11,sbin:24,scaffold:[22,32],scale:7,scan:24,scenario:[],schema:24,scheme:[14,22,25,33],score:[],scratch:7,scream:[4,25],screen:[4,6,7,9,12,13,14,16,18,23,30],script:[3,14,15,32],sdb1:33,sdb:33,sdist:32,sdp:[15,30,31],search:[6,11],sec:[9,11,13,16,18],second:[4,8,11,13,14,16,18,19,24,25,28,30,33],section:[11,25,32],sector:33,secur:21,see:[2,3,4,5,6,7,8,9,10,11,12,13,14,22,23,24,25,26,27,30,32,33],seek:[11,16,33],seekfilestreamcal:16,seekpoint:16,seekstreamscal:11,seektime_:16,seem:[5,25,32],segfault:3,segment:33,select:14,self:13,semaphor:[3,6,7,14,30],send:[2,6,8,10,11,13,14,16,23,24,25,26,31],sendsign:26,sendsignal_:[],sendsignal__:26,sens:[23,33],sent:[2,15,23,30],separ:[5,14,18,23,24,26,32],septemb:2,sequenc:[],seri:12,seriou:[14,30],serv:[15,18,32],server:[7,23,25,30,31,32],servic:[6,8,18,32],set:[3,5,8,9,10,11,13,23,24,25,28,30,32,33],setauthor:32,setliveoutpacketbuffermaxs:15,setloglevel_filelogg:11,setloglevel_livelogg:9,setloglevel_valkkafslogg:11,setnumberofthread:4,setproctitl:[3,28],setpycallback2:11,setpycallback:11,setrtspserv:15,setslotidcal:11,setup:[3,8,9,11,16,23,32],setupfram:9,setvalkkaloglevel:9,setver:32,sever:[4,11,12,14,15,23,25,26,30,31,33],shader:13,shadow:28,shape:14,share:[3,6,7,14,15,17,18,23,26,30],sharedmemringbufferrgb:14,shm:3,shmem:[14,17],shmem_buff:[14,17],shmem_filt:[7,14],shmem_filter_3_2:17,shmem_list:14,shmem_nam:[14,17],shmemrgbclient:14,shot:11,should:[2,3,4,5,7,8,9,11,12,13,14,16,25,30,32,33],show:[7,14],shown:[11,13],shut:9,side:[23,26,31],signal:[6,7,11,26,30],significantli:3,silent:9,silopassword:[],similar:[11,13,14,16,30],simpl:[11,13,23,30,31,32,33],simpler:33,simpli:[8,9,11,14,23,30],simultan:[4,6,7,11,13,14,15,17,18,25,30,33],sinc:[8,14,24],singl:[6,11,14,15,17,18,19,23,26,30,31,32,33],single_stream_rtsp:26,single_stream_rtsp_1:[],sink:[9,15],site:32,situat:[5,11,13,25],size:[9,11,12,14,15,17,25,30,33],skeleton:27,skip:11,slang:26,sleep:[9,10,11,12,13,14,15,16,18,19],slice_typ:[9,11],slot:[6,7,9,10,11,12,13,14,15,16,18,19,26,30,33],slot_filt:11,slow:25,slowli:4,small:[7,9,12,14,15,17,25,32,33],smaller:[2,32],smart:30,smem:3,snippet:[15,32],soap:24,socket:[25,30],softwar:[23,32],sole:4,solut:[2,6,7,14,23,33],solv:[4,6,7,26,33],some:[1,2,5,6,9,11,14,18,19,24,25,28,30,32,33],some_widget:26,someth:[4,7,11,23,26,33],sometim:4,sort:[5,32],sound:7,sourc:[2,4,8,9,13,15,24,25,26,28,30,32],space:[26,33],span:[14,23],spawn:14,special:[7,11],specif:24,specifi:[24,30],speed:[11,25,33],sphinx:32,sps:[],stabl:[3,5,8,28],stack:[2,7,12,13,18,25,26],stage:[7,12,33],stai:30,stall:25,stamp:25,stand:[22,26,32],standard:[3,5,7,25,30,31],stare:32,start:[1,4,5,6,7,9,11,12,13,14,15,16,17,18,24,25,26,30,31,33],startcal:[9,10,11,12,13,14,15,16,19],startup:25,state:[23,26],still:[2,4,5,13,25,32,33],stock:[5,6,7,25],stop:[1,11,12,13,14,15,16,30],stopcal:[9,10,11,12,13,14,15,16,19],stopcamerastreamcal:10,stopfilestreamcal:16,stopstreamcal:15,store:33,str:11,strategi:[25,26],stream1:[13,15],stream2:13,stream:[4,5,6,7,8,9,10,11,12,14,17,18,19,25,30,31],streamer:6,streamid:15,streamn:30,string:[23,32],strip:26,struct_tim:11,structur:[2,8,10,32],studi:32,stuff:[7,9,11,14,17],stutter:25,sub:[24,25],sub_xaddr:24,subaddress:24,subclass:[24,26],subject:[2,23,30],submodul:32,submodule1:32,submodule2:32,subprogram:7,subroutin:7,subscrib:28,subsession_index:[9,11,12],subset:12,substitut:12,substream:[15,25],succes:23,succesful:5,suck:25,sud:24,sudo:[3,5,8,23,24,25,28,33],suffer:4,suggest:[25,32],suit:28,suitabl:14,summar:14,support:[2,6,7,10,16,31],suppos:[4,6,11,33],sure:[5,11,25,32,33],surpris:[3,5],surprisingli:33,surround:11,surveil:[6,7,13,14,25,27],suspend:25,swap:[25,33],swappi:25,swig:[3,14,26],sws_filter:[7,14,17],sws_filter_3_2:17,swscaleframefilt:[7,14,17],symbol:[3,12],symlink:32,sync:[25,33],synchron:[7,11,13,25,33],synonym:[],sys:[10,11,25],syscntl:25,sysctl:25,system:[6,7,8,9,14,26,30,31,32,33],systemat:32,tabl:[11,24,33],tabul:1,tag:[9,12,13,14,15,16,17,32],take:[2,4,6,8,11,13,14,18,23,24,25,26,30,31,32,33],taken:[12,14],talk:4,tar:32,target:[9,11,33],target_filt:5,tcp:25,tear:33,technic:7,technolog:7,tell:[25,32],templat:32,tempor:33,ten:[14,18,30,33],tensorflow:[6,7],term:[7,28],termin:[4,9,11],test:[1,4,5,6,13,15,17,23,25,27,30,33],test_studio_1:[1,4,6],test_studio_2:30,test_studio_3:[23,30],test_studio_4:30,test_studio_5:30,test_studio_6:[11,30],test_studio_:[],test_studio_detector:[6,26],test_studio_fil:30,test_studio_multicast:30,test_studio_rtsp:30,testsuit:[1,4,6,7,11,18,23,25,26,33],testthread:26,testvalkkaf:[11,33],text:32,textur:[5,7,13],than:[3,4,8,24,28,30],thei:[9,11,15,23,25,28,30,33],them:[2,3,4,7,9,11,12,13,14,23,24,26,28,32,33],therein:[8,26],thi:[2,3,4,5,6,8,9,10,11,12,13,14,15,16,17,18,22,23,24,25,26,28,29,30,31,32,33],thing:[3,7,11,12,14,24,26,30,32,33],think:7,third:24,those:[2,5,7,14,15,32],though:[25,32],thousand:9,thread:[3,6,7,9,10,11,12,13,14,15,17,18,23,26,30,33],throttl:[],through:[2,12,14,25],throughput:[],thumb:9,ticket:[],tilt:24,time:[4,7,8,9,10,11,12,13,14,15,16,18,19,25,30,32,33],time_limits_callback:11,timediff:[9,12],timeintervalframefilt:[14,17],timelin:30,timeout:[14,24],timestamp:[9,11,12,25,30,33],tip:[8,25,32],tmp:[11,33],todo:11,togeth:[7,9,26,30,33],token:18,told:25,too:[7,9,10,13,15,25],tool:[3,8,11,15,25,33],top:[19,24,26],topic:31,total:[4,11,13,31,33],touch:[30,32],toward:[9,17],trace:[3,25],translat:26,translate:[],transmiss:11,transmit:31,transport:25,treat:16,tree:[9,17,32],tri:25,trick:[8,24],tricki:3,trivial:[9,13],truli:32,tune:6,tup:14,tupl:[11,14],turk:27,turn:[9,14,23,25],tutori:[2,4,6,7,9,14,18,19,23,25,26,28,30,33],tweak:[23,25,32],two:[8,9,11,12,13,14,17,18,23,28,30,33],txt:[8,32],type:[9,22,33],type_factori:24,typic:[2,4,5,6,7,11,12,13,22,25,26,33],uberfancyhelloworld:32,ubuntu:[1,8,28,31],udp:25,ultim:[14,30],ultrafast:30,unbound:30,uncheck:[23,25],uncom:[10,32],undefin:14,under:[7,10,11,12,13,21,22,32,33],underli:[4,18,33],understand:[9,13,26],understood:2,unfortun:[23,25],unicast:[6,30],uninstal:[25,28],uniqu:[14,17],unset:9,unstabl:28,until:[12,13],updat:[7,28,32],updatet:11,upgrad:[8,28,32],upload:25,upon:30,uppercas:[],uptim:1,url:22,usabl:26,usag:[5,25],usb:[6,25,31,33],usbcameraconnectioncontext:10,usbdevicethread:10,usbthread:10,use:[2,4,5,7,10,11,12,13,14,23,24,25,26,28,30,32,33],use_build:[],used:[1,5,7,9,10,11,12,13,14,24,25,26,28,30,32,33],useful:[11,25],user:[5,6,7,8,11,12,13,18,22,23,24,25,28,30,32,33],user_guid:8,userland:3,usermod:[5,33],usernam:[30,31,33],uses:[4,5,13,23,30,31,32,33],using:[2,3,4,5,6,7,8,9,11,12,13,14,15,18,22,24,25,26,27,30,32,33],usr:[8,22,24,28],usual:[12,13,14,16,17,19],utf:14,util:[13,28],uuid:33,v4l2:10,vaapi:5,vaapithread:[5,12],valgrind:3,valkka:[3,4,5,9,10,11,12,14,15,16,18,19,21,22,23,24,25,26,27,28,30,31,33],valkka_cor:18,valkka_exampl:[18,23,26,30,31,32],valkka_examples_exampl:32,valkka_libva_driver_nam:5,valkka_opencv_demo:14,valkkaf:[6,7,30,31],valkkafs2:33,valkkafsmanag:[31,33],valkkafsread:11,valkkafsreaderthread:[11,33],valkkafstool:11,valkkafswrit:[],valkkafswriterthread:[11,33],valkkamultif:[11,30,33],valkkasinglef:[11,30,33],valu:[25,30],variabl:[5,11,23,24],variant:33,variou:[13,18,25],vblank_mod:[13,25],ver10:24,ver20:24,verbos:[11,14,18,30,31,32],veri:[4,5,11,14,25,30,33],verifi:33,version:[5,6,8,14,23,24,25,32],vertic:[13,25],via:[6,26],video2:10,video4linux:10,video:[2,4,5,6,7,9,10,11,13,14,15,18,19,22,23,25,27,30,31,33],view:[4,6,13,14],virtual:26,virtualenv:[28,32],visibl:9,vision:[6,7,14,22,26],visual:[2,11,14,24,26,31],vlc:[7,25,28,30,31],vsync:[13,25],wai:[3,5,8,13,14,23,25,26,28,32,33],waitkei:14,wall:23,wan:[2,11,28,33],want:[4,5,6,7,10,11,13,14,23,24,25,30,32,33],warn:[5,33],watch:26,wear:33,web:[2,5,14,25,32],webcam:[5,10],websocket:2,week:4,weird:32,well:[4,5,14,23,26,32,33],went:14,were:11,what:[4,7,9,13,14,23,25,26,30,31,32,33],whatnot:28,wheel:[8,30],when:[4,5,8,9,11,12,13,14,23,24,25,28,30,32,33],where:[2,9,10,11,12,13,14,23,26,30,32,33],which:[4,5,7,9,11,24,25,26,33],whitepap:6,whl:8,who:[13,32],whole:[25,32],why:[6,33],widget:[6,7,30],width:[10,14,17],wifi:25,wiki:[8,32],win_id:[18,26],window:[2,7,14,16,17,18,19,23,25,26,30,31],window_id1:13,window_id2:13,window_id:[10,13,14,16,18,19,26],winid:26,wish:5,with_cuda:8,with_gstream:8,with_libv4l:8,within:[8,11,14],without:[26,30],wmem_max:25,won:[7,8],wonder:6,word:[5,12,32],work:[2,5,6,8,14,24,25,26,31,32,33],world:32,worst:[],worth:11,would:[4,11,13,14,24,25,28,32,33],wrap:[9,14,18,26,33],wrapper:8,write:[2,7,9,12,13,14,25,26,31,32,33],writer:11,writerthread:11,written:[7,9,11,14,15,22,26,33],ws_client:24,wsdl:24,wsdl_file:24,www:24,x11:25,x11r6:[],x264:30,x86:28,xcb:25,xcfe:[23,25],xdg_session_typ:25,xinerama:23,xml:24,xsignal:26,xubuntu:23,yasm:[],yes:30,yet:[7,11,14],yolo:[4,8,14,27],you:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,18,19,23,24,25,26,27,28,30,31,32,33],your:[2,3,4,5,6,7,8,9,10,11,13,14,23,24,25,26,27,29,30,31,32,33],your_blocks:33,your_directori:8,your_ip:30,your_list_of_block:11,your_video_fil:30,yourself:[4,6,8,10,23,24],yuv:[13,14,17,18],zeep:6,zeep_client:24,zoom:24},titles:["Authors","Benchmarking","Cloud Streaming","Debugging","Decoding","Supported hardware","Valkka","About Valkka","Knowledge Base","Lesson 1 : Receiving frames from an IP camera","Lesson 10 : USB Cameras","Lesson 11 : ValkkaFS","Lesson 2 : Decoding","Lesson 3 : Streaming to the X-window system","Lesson 4 : Receiving Frames at Python","Lesson 5 : Transmitting stream","Lesson 6 : Writing / reading stream","Lesson 7 : Decode, save, visualize, analyze and re-transmit","Lesson 8: API level 2","Lesson 9 : Drawing Bounding Boxes","<no title>","Licence & Copyright","Modules","Multi-GPU systems","OnVif & Discovery","Common problems","Integrating with Qt and multiprocessing","Repository Index","Installing","Submodule documentation","The PyQt testsuite","Tutorial","Tutorial - start here","ValkkaFS"],titleterms:{"class":24,"export":11,For:32,One:13,The:[7,30],Using:[15,31,33],VMS:33,about:7,acceler:[4,5],advanc:14,analyz:17,api:[7,14,18,26],approach:23,architectur:33,aspect:18,author:0,autodocument:32,base:8,benchmark:1,bind:8,bottleneck:25,bound:19,box:19,call:24,camera:[5,9,10,13],chain:9,client:[5,14],cloud:2,code:32,codec:5,common:25,compil:28,configur:23,contrib:8,control:9,copyright:21,core:[],cpp:22,debug:3,decod:[4,12,13,17],depend:32,develop:28,discoveri:24,displai:23,document:29,draw:[19,26],entir:33,exampl:[18,24,32],faq:25,file:[32,33],filesystem:33,fork:9,frag:14,frame:[4,9,11,14],framefilt:9,from:9,gener:[8,18],gpu:[4,23],gtk:28,hardwar:5,here:32,impati:32,index:27,instal:28,instead:[],integr:26,intern:32,intro:24,introduct:23,jetson:8,just:[],knowledg:8,larg:32,lesson:[9,10,11,12,13,14,15,16,17,18,19,31],level:[14,18],librari:7,licenc:21,licens:[],link:32,linux:5,list:22,matroska:11,miscellan:32,modul:22,mp4:14,multi:23,multicast:15,multipl:[13,33],multiprocess:26,multithread:4,nano:8,note:[23,24],numpi:28,one:13,onlin:32,onvif:24,opencv:[8,14,28],organ:32,our:23,packag:32,partit:33,per:33,pitfal:25,plai:11,ppa:28,prerequisit:31,problem:25,project:[7,32],pure:22,pyqt:30,python:[8,14,22,24,26,32],queue:4,quick:32,read:[11,16],receiv:[9,14],refer:9,releas:28,repositori:27,rtsp:15,save:17,send:15,server:[14,15],servic:24,sever:13,side:14,simpl:18,singl:[4,9],start:32,stream:[2,13,15,16,33],submodul:29,support:5,system:[13,23,25],test:[28,32],test_studio_1:30,test_studio_detector:30,testsuit:[28,30],thi:7,thread:4,topic:14,transmit:[15,17],tune:25,tutori:[31,32],usb:[5,10],use:[],using:28,valkka:[6,7],valkkaf:[11,33],valkkafsmanag:11,verbos:9,version:28,video:26,visual:17,warn:[],why:7,widget:26,window:13,write:[11,16],your:28,yourself:28,zeep:24}}) \ No newline at end of file diff --git a/docs/hardware.rst b/docs/hardware.rst index 64d4f87..c0b0f69 100644 --- a/docs/hardware.rst +++ b/docs/hardware.rst @@ -56,6 +56,15 @@ Please first read this :ref:`word of warning `. Comes in the basic libValkka installation (and uses ffmpeg/libav infrastructure) - no additional packages needed. +First of all, the user using VAAPI, must belong to the "video" user group: + +.. code:: bash + + groups $USER + # run the following command if the user does not appear in the video group + sudo usermod -a -G video $USER + # after that you still need to logout & login + In order to use the VAAPI acceleration, just replace `AVThread` with `VAAPIThread`, i.e. instead of .. code:: python @@ -68,6 +77,7 @@ use this: avthread = VAAPIThread("avthread", target_filter) + For more details about VAAPI, you can read `this `_, `this `_ and `this `_. @@ -92,6 +102,13 @@ If you wish to use VAAPI in a docker environment, you should start docker with And be sure that the host machine has all required vaapi-related libraries installed (the easiest way: install libValkka on the host as well). +Finally, you can follow the GPU usage in realtime with: + +.. code:: bash + + sudo intel_gpu_top + + *NVidia / CUDA* Provided as a separate package that installs into the `valkka.nv` namespace and is used like this: diff --git a/docs/requirements.rst b/docs/requirements.rst index 32d7f94..69ae203 100644 --- a/docs/requirements.rst +++ b/docs/requirements.rst @@ -4,8 +4,15 @@ Installing ========== -Install valkka-core -------------------- +The debian package includes the core library, its python bindings and some API level 2 python code. The python part is installed "globally" into */usr/lib/python3/dist-packages/* + +.. note:: LibValkka comes precompiled and packaged for a certain ubuntu distribution version. This means that the compilation and it's dependencies assume the default + python version of that distribution. Using custom-installed python versions, anacondas and whatnot might cause dependency problems. + +A. Install using PPA +-------------------- + +*the preferred way* For recent ubuntu distributions, the core library binary packages and python bindings are provided by a PPA repository. Subscribe to the PPA repo (do this only once) with: @@ -20,13 +27,6 @@ Install with: sudo apt-get update sudo apt-get install valkka -Test the installation with: - -:: - - curl https://raw.githubusercontent.com/elsampsa/valkka-examples/master/quicktest.py - python3 quicktest.py - When you need to update valkka, do: :: @@ -34,13 +34,43 @@ When you need to update valkka, do: sudo apt-get update sudo apt-get install --only-upgrade valkka + +B. Install using releases +------------------------- + +*if you don't like PPAs* + +You can download and install the required .deb packages "manually" from the +`releases page `_ + +:: + + sudo dpkg -i Valkka-*.deb + sudo apt-get install -fy + +The last line pulls the dependencies. + +Repeat the process when you need to update. + +C. Compile yourself +------------------- + +*the last resort* + If you're not using a recent Ubuntu distro and need to build libValkka and it's python bindings yourself, please refer to the `valkka-core github page `_. -The debian package includes the core library, its python bindings and some API level 2 python code. The python part is installed "globally" into */usr/lib/python3/dist-packages/* -.. note:: LibValkka comes precompiled and packaged for a certain ubuntu distribution version. This means that the compilation and it's dependencies assume the default - python version of that distribution. Using custom-installed python versions, anacondas and whatnot might cause dependency problems. +Test your installation +---------------------- + +Test the installation with: + +:: + + curl https://raw.githubusercontent.com/elsampsa/valkka-examples/master/quicktest.py -o quicktest.py + python3 quicktest.py + Numpy ----- diff --git a/quicktest.py b/quicktest.py index 8f581e3..df2d683 100644 --- a/quicktest.py +++ b/quicktest.py @@ -1,5 +1,5 @@ from subprocess import Popen, PIPE -import os +import os, sys print() print("Loading Valkka") @@ -10,7 +10,10 @@ import valkka from valkka import core except Exception as e: - print("Loading Valkka failed with", e) + print("FATAL: Loading Valkka failed with", e) + print(" Have you installed libValkka at all?") + print() + sys.exit(2) else: valkka_ok = True print("Valkka loaded ok") @@ -23,8 +26,8 @@ live =core.LiveThread("live") # inp =core.FrameFifo("fifo") # in the API no more # ff =core.FifoFrameFilter("fifo",inp) - out =core.DummyFrameFilter("dummy") - av =core.AVThread("av",out) + out_filter =core.DummyFrameFilter("dummy") + av =core.AVThread("av",out_filter) gl =core.OpenGLThread("gl") av_in =av.getFrameFilter(); @@ -34,7 +37,7 @@ ctx.slot=1 ctx.connection_type=core.LiveConnectionType_rtsp ctx.address="rtsp://admin:12345@192.168.0.157" - ctx2=core.LiveConnectionContext(core.LiveConnectionType_rtsp, "rtsp://admin:12345@192.168.0.157", 1, out) + ctx2=core.LiveConnectionContext(core.LiveConnectionType_rtsp, "rtsp://admin:12345@192.168.0.157", 1, out_filter) print(" Valkka classes ok") print() @@ -96,13 +99,12 @@ print("OpenCV loaded ok") print(" Version ",cv2.__version__) print(" Loaded from ",cv2.__file__) - -if "/usr/lib/" not in cv2.__file__: - print(" WARNING your opencv is not installed into the standard /usr/lib/ location") - print(" consider using these commands:") - print(" pip3 uninstall opencv-python") - print(" sudo pip3 uninstall opencv-python") - print(" sudo apt-get install python3-opencv") + if "/usr/lib/" not in cv2.__file__: + print(" WARNING your opencv is not installed into the standard /usr/lib/ location") + print(" consider using these commands:") + print(" pip3 uninstall opencv-python") + print(" sudo pip3 uninstall opencv-python") + print(" sudo apt-get install python3-opencv") print() print("Loading PySide2") @@ -151,8 +153,10 @@ try: from valkka.core import VAAPIThread + avthread=VAAPIThread("decoder", out_filter) except Exception as e: print(" could not import VAAPIThread from valkka.core") + print(e) else: print(" VAAPI acceleration available: you can use valkka.core.VAAPIThread instead of valkka.core.AVThread") @@ -176,3 +180,28 @@ else: print(" All good") print() + + +print("Taking a look at current user's groups") +p=Popen(f"groups {os.environ['USER']}".split(), stdout=PIPE, stderr=PIPE) +out, err = p.communicate() +if p.returncode != 0: + print(" WARNING: command groups failed - something is VERY WRONG in your system") +res = out.decode("utf-8") +user, groups = res.split(":") +# print(groups) +if "video" not in groups: + print(f" WARNING: user not in the 'video' group: VAAPI hw acceleration will not work - please run:") + print(f" sudo usermod -a -G video {os.environ['USER']}") + print(f" after that you still need to logout & login") +if "render" not in groups: + print(f" WARNING: user not in the 'render' group - consider running:") + print(f" sudo usermod -a -G render {os.environ['USER']}") + print(f" after that you still need to logout & login") +if "docker" not in groups: + print(f" WARNING: user not in the 'docker' group - if you want to use docker, do:") + print(f" sudo usermod -a -G docker {os.environ['USER']}") + print(f" after that you still need to logout & login") +print() + +