ultravideo / kvazzup Goto Github PK
View Code? Open in Web Editor NEWOpen software for HEVC video calls
License: ISC License
Open software for HEVC video calls
License: ISC License
I want to use my custom camera in Ubuntu.
I can add my custom camera in FilterGraph and see video in selfviewFilter_.
However, this video is not sent over Internet by calling.
I know the camerafilter module is connected to SelfviewFilter, so that camera data can be displayed on it.
For debugging I nees an answer of following questions:
Please use this issue template to describe your issue.
Describe as accurately as possible, what went wrong or why you think there is a bug in Kvazzup.
On which platform (Windows, Linux, Mac) and using what compiler (VS, GCC, MinGW) did you encounter the issue? You can also say mention if you think it is not related to the environment. You can also mention if it does not occur on some platform.
It can also be useful to mention other factors like version of Kvazzup or Qt in this section, if you think it is relevant or you are using something else that the newest commit of Kvazzup master.
What steps does one have to take to encounter this issue?
If you have a strong guess or you know what is causing the issue, you may include this information as well.
Following steps to compile Kvazzup gives an error. Therefore Kvazzup only can be build in latest release LTS 20.04.
$ qmake ../Kvazzup.pro
$ make
.
.
.
g++ -fopenmp -Wl,-O1 -o Kvazzup connectionpolicy.o ice.o icecandidatetester.o icepairtester.o icesessiontester.o negotiation.o networkcandidates.o sdpnegotiator.o sipcontent.o stunmessage.o stunmessagefactory.o udpserver.o sipmanager.o sipclient.o sipdialog.o sipdialogclient.o sipdialogmanager.o sipdialogstate.o sipnondialogclient.o sipregistrations.o sipserver.o connectionserver.o sipconversions.o sipfieldcomposing.o sipfieldparsing.o siprouting.o siptransport.o tcpconnection.o kvazzupcontroller.o logger.o main.o delivery.o uvgrtpreceiver.o uvgrtpsender.o mediamanager.o audiocapturefilter.o audioframebuffer.o audiomixer.o audiomixerfilter.o audiooutputdevice.o audiooutputfilter.o camerafilter.o cameraframegrabber.o displayfilter.o dspfilter.o filter.o filtergraph.o kvazaarfilter.o openhevcfilter.o opusdecoderfilter.o opusencoderfilter.o rgb32toyuv.o scalefilter.o screensharefilter.o common.o speexaec.o speexdsp.o yuvtorgb32.o callwindow.o chartpainter.o conferenceview.o contactlist.o contactlistitem.o guimessage.o statisticswindow.o videodrawhelper.o videoglwidget.o videoviewfactory.o videowidget.o videoyuvwidget.o audiosettings.o camerainfo.o microphoneinfo.o screeninfo.o settings.o settingshelper.o sipsettings.o videosettings.o moc_ice.o moc_icecandidatetester.o moc_icepairtester.o moc_icesessiontester.o moc_negotiation.o moc_networkcandidates.o moc_udpserver.o moc_sipmanager.o moc_sipclient.o moc_sipdialog.o moc_sipdialogclient.o moc_sipdialogmanager.o moc_sipnondialogclient.o moc_sipregistrations.o moc_sipserver.o moc_connectionserver.o moc_siptransport.o moc_tcpconnection.o moc_kvazzupcontroller.o moc_delivery.o moc_uvgrtpreceiver.o moc_uvgrtpsender.o moc_mediamanager.o moc_audiocapturefilter.o moc_audiomixer.o moc_audiooutputdevice.o moc_camerafilter.o moc_cameraframegrabber.o moc_filter.o moc_filtergraph.o moc_screensharefilter.o moc_speexaec.o moc_speexdsp.o moc_callwindow.o moc_chartpainter.o moc_conferenceview.o moc_contactlist.o moc_contactlistitem.o moc_guimessage.o moc_statisticswindow.o moc_videodrawhelper.o moc_videoglwidget.o moc_videowidget.o moc_videoyuvwidget.o moc_audiosettings.o moc_settings.o moc_sipsettings.o moc_videosettings.o -lopus -lLibOpenHevcWrapper -luvgrtp -lkvazaar -lspeexdsp -lcryptopp /usr/lib/x86_64-linux-gnu/libQt5MultimediaWidgets.so /usr/lib/x86_64-linux-gnu/libQt5Multimedia.so /usr/lib/x86_64-linux-gnu/libQt5Svg.so /usr/lib/x86_64-linux-gnu/libQt5OpenGL.so /usr/lib/x86_64-linux-gnu/libQt5Widgets.so /usr/lib/x86_64-linux-gnu/libQt5Gui.so /usr/lib/x86_64-linux-gnu/libQt5Concurrent.so /usr/lib/x86_64-linux-gnu/libQt5Network.so /usr/lib/x86_64-linux-gnu/libQt5Core.so -lGL -lpthread
/usr/bin/ld: /usr/local/lib/libLibOpenHevcWrapper.a(videodsp_init.c.o): in function ff_videodsp_init_x86': videodsp_init.c:(.text.unlikely+0x14): undefined reference to
ff_prefetch_mmxext'
/usr/bin/ld: /usr/local/lib/libLibOpenHevcWrapper.a(cpu.c.o): in function ff_get_cpu_flags_x86': cpu.c:(.text+0x4c): undefined reference to
ff_cpu_cpuid'
/usr/bin/ld: cpu.c:(.text+0x84): undefined reference to ff_cpu_cpuid' /usr/bin/ld: cpu.c:(.text+0x10b): undefined reference to
ff_cpu_cpuid'
/usr/bin/ld: cpu.c:(.text+0x1df): undefined reference to ff_cpu_cpuid' /usr/bin/ld: cpu.c:(.text+0x226): undefined reference to
ff_cpu_cpuid'
collect2: error: ld returned 1 exit status
make: *** [Makefile:571: Kvazzup] Error 1
openHEVC$ > cmake ..
CMake Deprecation Warning at CMakeLists.txt:1 (cmake_minimum_required):
Compatibility with CMake < 2.8.12 will be removed from a future version of
CMake.
Update the VERSION argument value or use a ... suffix to tell
CMake that the project does not need compatibility with older versions.
-- The C compiler identification is GNU 10.3.0
-- The CXX compiler identification is Clang 12.0.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/clang++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
DEBUG: CMAKE_SYSTEM_PROCESSOR = x86_64
DEBUG: CMAKE_SYSTEM_NAME = Linux
-- Check size of void*
-- Check size of void* - done
DEBUG: SIZEOF_VOID_P = 8
-- target changed from "" to "auto"
-- Detected CPU: generic
-- Performing Test check_cxx_compiler_flag__march_generic
-- Performing Test check_cxx_compiler_flag__march_generic - Failed
-- Performing Test check_cxx_compiler_flag__mno_sse2
-- Performing Test check_cxx_compiler_flag__mno_sse2 - Success
-- Performing Test check_cxx_compiler_flag__mno_sse3
-- Performing Test check_cxx_compiler_flag__mno_sse3 - Success
-- Performing Test check_cxx_compiler_flag__mno_ssse3
-- Performing Test check_cxx_compiler_flag__mno_ssse3 - Success
-- Performing Test check_cxx_compiler_flag__mno_sse4_1
-- Performing Test check_cxx_compiler_flag__mno_sse4_1 - Success
-- Performing Test check_cxx_compiler_flag__mno_sse4_2
-- Performing Test check_cxx_compiler_flag__mno_sse4_2 - Success
-- Performing Test check_cxx_compiler_flag__mno_sse4a
-- Performing Test check_cxx_compiler_flag__mno_sse4a - Success
-- Performing Test check_cxx_compiler_flag__mno_avx
-- Performing Test check_cxx_compiler_flag__mno_avx - Success
-- Performing Test check_cxx_compiler_flag__mno_xop
-- Performing Test check_cxx_compiler_flag__mno_xop - Success
-- Performing Test check_cxx_compiler_flag__mno_fma4
-- Performing Test check_cxx_compiler_flag__mno_fma4 - Success
-- Performing Test check_cxx_compiler_flag__mno_avx2
-- Performing Test check_cxx_compiler_flag__mno_avx2 - Success
-- Looking for GetProcessAffinityMask
-- Looking for GetProcessAffinityMask - not found
-- Looking for gettimeofday
-- Looking for gettimeofday - found
-- Looking for sched_getaffinity
-- Looking for sched_getaffinity - found
-- Looking for strerror_r
-- Looking for strerror_r - found
-- Looking for sysconf
-- Looking for sysconf - found
-- Looking for usleep
-- Looking for usleep - found
-- Looking for localtime_r
-- Looking for localtime_r - found
-- Looking for gmtime_r
-- Looking for gmtime_r - found
-- Looking for include file fcntl.h
-- Looking for include file fcntl.h - found
-- Looking for include file pthread.h
-- Looking for include file pthread.h - found
-- Looking for include file unistd.h
-- Looking for include file unistd.h - found
-- Looking for include file windows.h
-- Looking for include file windows.h - not found
-- Could NOT find YASM (missing: YASM_EXECUTABLE)
-- Performing Test check_c_compiler_flag__fpic
-- Performing Test check_c_compiler_flag__fpic - Success
-- Performing Test check_c_compiler_flag__fno_tree_vectorize
-- Performing Test check_c_compiler_flag__fno_tree_vectorize - Success
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE
-- Could NOT find SDL (missing: SDL_LIBRARY SDL_INCLUDE_DIR)
-- Could NOT find SDL2 (missing: SDL2_LIBRARY SDL2_INCLUDE_DIR)
-- Configuring done
-- Generating done
I am guessing openHEVC is maybe causing problem.
Hello Professor,
Thank you so much for your valuable contribution to the Field of Video encryption.
Could you please pity on me and guide me at this point "how you incorporated ROI in HEVC code" ?
How can select DC coefficient and motion vector from ROI and encrypt?
Thank you !!
First of all, thanks for this nice project! I tried out the UvgRTP and looking forward to playing around with this project.
I have an Ubuntu 20.04 system which does not officially offer the following dependencies:
I'm wondering if there are any ways around this? I could set up a Docker environment but want to make sure I'm not missing something simpler to set up this project. Thanks in advance.
Qt 6 has deprecated some of the functions that are in use with Kvazzup. The code and readme instructions should be updated to compile with Qt 6.
Haven't tested yet, but I'm guessing I'll want to integrate my branch for issue #17 before making too many changes, so there are no big conflicts.
I managed to compile the application in kubuntu20.4 (but not in kubuntu21.4) and I test ran on both systems. But whenever a video conferencing connection is established, it crashes.
Here are different logs if sound is muted or not:
$ head -n64 ERROR_*
==> ERROR_MUTE <==
[RTPLIB][DEBUG][::recv_msg] Receiving a ZRTP message
[RTPLIB][DEBUG][::recv_msg] Commit message received, verify CRC32!
[RTPLIB][DEBUG][::recv_msg] Receiving a ZRTP message
[RTPLIB][DEBUG][::recv_msg] Commit message received, verify CRC32!
[RTPLIB][DEBUG][::recv_msg] Receiving a ZRTP message
[RTPLIB][DEBUG][::recv_msg] Confirm2 message received, verify CRC32!
[RTPLIB][DEBUG][::alloc_zrtp_frame] Allocate ZRTP frame, packet size 92
[RTPLIB][DEBUG][::validate_session] All hashes match!
[RTPLIB][DEBUG][::~zrtp_message] Freeing zrtp message...
[RTPLIB][DEBUG][::~zrtp_message] Freeing zrtp message...
[RTPLIB][DEBUG][::derive_key] Truncate key to 128 bits!
[RTPLIB][DEBUG][::derive_key] Truncate key to 112 bits!
[RTPLIB][DEBUG][::derive_key] Truncate key to 128 bits!
[RTPLIB][DEBUG][::derive_key] Truncate key to 112 bits!
[RTPLIB][DEBUG][::derive_key] Truncate key to 128 bits!
[RTPLIB][DEBUG][::derive_key] Truncate key to 112 bits!
[RTPLIB][DEBUG][::derive_key] Truncate key to 128 bits!
[RTPLIB][DEBUG][::derive_key] Truncate key to 112 bits!
[RTPLIB][DEBUG][::runner] Received a corrupted packet!
[RTPLIB][DEBUG][::runner] Received a corrupted packet!
[RTPLIB][DEBUG][::runner] Received a corrupted packet!
Filter: Parameter set found (Frame received before: 0)
Filter: PEER ERROR: Detected no slices in incoming stream.
Filter: Uniniating.
[hevc @ 0x55e0d9551550] flush, decoder_0.
Filter: Starting to initiate OpenHEVC
[hevc @ 0x7f45fc005880] nb threads_frame = 1, nb threads_slice 1, thread_type = null
[hevc @ 0x7f45fc005ec0] nb threads_frame = 1, nb threads_slice 1, thread_type = null
Filter: OpenHEVC initiation successful. (Version: OpenHEVC v2.0)
[RTPLIB][DEBUG][::call_aux_handlers] Received a corrupted packet!
[RTPLIB][DEBUG][::call_aux_handlers] Received a corrupted packet!
Illegal instruction (core dumped)
==> ERROR_SOUND <==
[RTPLIB][DEBUG][::runner] Received a corrupted packet!
[RTPLIB][DEBUG][::runner] Received a corrupted packet!
[RTPLIB][DEBUG][::call_aux_handlers] Received a corrupted packet!
Filter: Parameter set found (Frame received before: 0)
Filter: PEER ERROR: Detected no slices in incoming stream.
Filter: Uniniating.
[hevc @ 0x55b125615500] flush, decoder_0.
Filter: Starting to initiate OpenHEVC
[hevc @ 0x7f1980022fb0] nb threads_frame = 1, nb threads_slice 1, thread_type = null
[hevc @ 0x7f1980040150] nb threads_frame = 1, nb threads_slice 1, thread_type = null
Filter: OpenHEVC initiation successful. (Version: OpenHEVC v2.0)
[RTPLIB][DEBUG][::call_aux_handlers] Received a corrupted packet!
SpeexAEC: Warning! We haven't buffered enough audio samples to start echo cancellation (Buffered: 5/6)
SpeexAEC: Warning! We haven't buffered enough audio samples to start echo cancellation (Buffered: 5/6)
SpeexAEC: Warning! We haven't buffered enough audio samples to start echo cancellation (Buffered: 5/6)
SpeexAEC: Warning! We haven't buffered enough audio samples to start echo cancellation (Buffered: 5/6)
SpeexAEC: Warning! We haven't buffered enough audio samples to start echo cancellation (Buffered: 5/6)
Illegal instruction (core dumped)
It is probably something wrong handling low level communication packets or operations with those packets; maybe openHEVC?
Possibly a problem with setting the resolution for Kvazaar filter?
In my case, I do not have any built-in camera in my laptop, and want to use an external camera.
I can capture video stream from my camera and want to input my video data into your framework.
I really do know, a good way to modify your interface.
Could you please help me for it?
Best thanks
Hi,
I use qt creator to compile kvazzup but failed.
Here's my folder structure
./msvc_libs
( Here comes another question. I tried thousand times to compile openHEVC, there's so many compile errors when using cmake and msvc. Finally I got a dll named LibOpenHevcWrapper.dll with out a prefix 'lib'. I use this dll at first, but got a error 'file format not recognized'. Then I replace this dll to the one at openHEVC-hevc_rext\bin\ffmpeg_w32 )
And I comment off win32-gcc in .pro file. If not, errors like 'cannot find -lkvazaar.dll' appear. But actually, I didn't got dlls for opus, speexdsp and kvazaar.
Finally, I got 1900+ errors like these
I don't know how to fix these up, could you give me help ?
Self view shows the shared screen correctly, but nothing is transmitted to call peers.
All
Call someone and enable screen sharing.
The correct resolution is not set for Kvazaar filter and a bug fix removed the filters ability to adapt to different incoming resolutions.
sometime for the case of call myself, after stopping the conference (by clicking on Stop-Button), it crashs.
Currently, there is no checking whether the order of the received audio frames is correct.
I got an error by running like:
NetworkCandidates: Warning! Either couldn't find interface or this interface has run out of ports
NetworkCandidates: BUG: Not port set. Can't get STUN address
But really do not know how to avoid it.
Could you pls help me? Thanks
it is too many problem by compiling with VS2017.
I have got error like
src\initiation\transaction\sipclient.cpp(93): error C2440: 'initializing': cannot convert from 'initializer list' to 'ViaInfo'
src\initiation\transaction\sipclient.cpp(93): note: No constructor could take the source type, or constructor overload resolution was ambiguous
sipdialog.cpp
src\initiation\transaction\sipdialog.cpp(30): error C2440: 'initializing': cannot convert from 'initializer list' to 'SIP_URI'
src\initiation\transaction\sipdialog.cpp(30): note: No constructor could take the source type, or constructor overload resolution was ambiguous
sipregistrations.cpp
src\initiation\transaction\sipregistrations.cpp(65): error C2440: 'initializing': cannot convert from 'initializer list' to 'SIP_URI'
src\initiation\transaction\sipregistrations.cpp(65): note: No constructor could take the source type, or constructor overload resolution was ambiguous
sipserver.cpp
src\initiation\transaction\sipserver.cpp(124): error C2440: 'initializing': cannot convert from 'initializer list' to 'SIP_URI'
src\initiation\transaction\sipserver.cpp(124): note: No constructor could take the source type, or constructor overload resolution was ambiguous
Do you have any idea?
Thanks
The SIP authentication support is getting close to ready and wanted to share this news.
Currently, audio quality is too bad with echo and noises.
Maybe sample rate for audio (16000) is set not correctly, or other problems
Screen sharing does not work if no camera has been attached
Open Kvazzup in a computer without a webcam and enable screen sharing.
Kvazzup crashes by printing Illegal Instruction.
Linux OS using GCC in release mode. Qt version unknown.
Call to another Kvazzup in LAN on Linux with release build?
Hard to say at this point. Could be that some optimization is not supported. Illegal Instruction would point to one of Kvazzups dependencies, either they have a problem or Kvazzup is using them incorrectly.
QMetaObject::connectSlotsByName: No matching signal for on_about_clicked()
=============================================================================
KvazzupController: Kvazzup initiation Started
=============================================================================
ContactList: Reading contact list (# of contacts: 1)
VideoDrawHelper: Warning! Tried updating target rect before picture
Settings Helper: Warning! Found missing setting. Resetting video settings (Missing key: sip/ServerAddress)
Settings: Warning! Could not restore settings! Resetting settings from defaults.
Settings: Recording settings
VideoSettings: Resettings video settings fomr UI
VideoSettings: Initializing formats
Camera Info: Getting text of 0 video formats (DeviceID: 0)
VideoSettings: Saving video Settings
VideoSettings: Recording capability settings for device (Device Index: 0)
VideoSettings: Box status
-- Format: -1
-- Resolution: -1
Camera Info: Getting text of 0 video formats (DeviceID: 0)
Camera Info: Getting text of 0 video formats (DeviceID: 0)
VideoSettings: Recorded following video settings.
-- Resolution: 0x0
-- Resolution Index: 0
-- Format: No_camera
Settings Helper: Writing list from GUI to settings
-- File: kvazzup.ini
-- List name: parameters
-- Table items: 0
AudioSettings: Saving audio Settings
Settings: Opening settings
Settings Helper: ERROR! Missing setting found (Key: video/OWF)
AudioSettings: Saving audio Settings
VideoSettings: Initializing formats
Camera Info: Getting text of 0 video formats (DeviceID: 0)
VideoSettings: Max Threads (Threads: 4)
Settings Helper: ERROR! Missing setting found (Key: video/OWF)
VideoSettings: Resettings video settings fomr UI
VideoSettings: Initializing formats
Camera Info: Getting text of 0 video formats (DeviceID: 0)
VideoSettings: Saving video Settings
VideoSettings: Recording capability settings for device (Device Index: 0)
VideoSettings: Box status
-- Format: -1
-- Resolution: -1
Camera Info: Getting text of 0 video formats (DeviceID: 0)
Camera Info: Getting text of 0 video formats (DeviceID: 0)
VideoSettings: Recorded following video settings.
-- Resolution: 0x0
-- Resolution Index: 0
-- Format: No_camera
Settings Helper: Writing list from GUI to settings
-- File: kvazzup.ini
-- List name: parameters
-- Table items: 0
Settings Helper: Reading list from settings
-- File: blocklist.local
-- List name: blocklist
-- Items: 0
CallWindow: Initiating, CallWindow: Creating statistics window
ChartPainter: Initiating chart (Title: Bandwidth (kbit/s))
ChartPainter: Initiating chart (Title: Bit rates (kbit/s))
ChartPainter: Initiating chart (Title: Bit rates (kbit/s))
ChartPainter: Initiating chart (Title: Latencies (ms))
ChartPainter: Initiating chart (Title: Latencies (ms))
ChartPainter: Initiating chart (Title: Frame rates (fps))
SIPManager: Listening to SIP TCP connections (Port: 5060)
SIPDialogManager: Iniating SIP Transactions
SIPRegistrations: Initiatin Registrations
NetworkCandidates: Allocating (but not reserving) ports for media
-- Min ports: 38500
-- Max port: 39500
MediaManager: Initiating
FilterGraph: Iniating camera and selfview
CameraFilter: Initiating Qt camera (ID: 0)
CameraFilter: Using the following camera settings.
-- Format: No_camera
-- Resolution: 640x480
-- Framerate: 30 to 30
ChartPainter: Initiating chart (Title: Frame rates (fps))
=============================================================================
CameraFilter: Starting camera.
=============================================================================
FilterGraph: Connecting filters (Connection: Camera -> Display)
FilterGraph: Connecting filters (Connection: Screen Sharing -> Display)
=============================================================================
KvazzupController: Kvazzup initiation finished
=============================================================================
VideoDrawHelper: Warning! Tried updating target rect before picture
GUIMessage: Closing message (Waiting messages: 0)
Settings: Closing Settings. Gettings settings from file.
Settings Helper: Warning! Found missing setting. Resetting video settings (Missing key: sip/ServerAddress)
Settings: Recording settings
VideoSettings: Saving video settings
VideoSettings: Saving video Settings
VideoSettings: Recording capability settings for device (Device Index: 0)
VideoSettings: Box status
-- Format: -1
-- Resolution: -1
Camera Info: Getting text of 0 video formats (DeviceID: 0)
Camera Info: Getting text of 0 video formats (DeviceID: 0)
VideoSettings: Recorded following video settings.
-- Resolution: 0x0
-- Resolution Index: 0
-- Format: No_camera
Settings Helper: Writing list from GUI to settings
-- File: kvazzup.ini
-- List name: parameters
-- Table items: 0
CameraFilter: Updating camera settings since they have changed
CameraFrameGrabber: Warning! Not a valid frame
CameraFilter: Initiating Qt camera (ID: 0)
CameraFilter: Using the following camera settings.
-- Format: No_camera
-- Resolution: 640x480
-- Framerate: 30 to 30
ChartPainter: Initiating chart (Title: Frame rates (fps))
=============================================================================
CameraFilter: Starting camera.
=============================================================================
FilterGraph: Starting camera
Common: Warning! Found faulty setting (Key: sip/ServerAddress)
SIPManager: Warning! SIP Registrar was empty or we have already registered. No registering.
VideoSettings: Cancelled modifying video settings. Getting settings from system.
VideoSettings: Initializing formats
Camera Info: Getting text of 0 video formats (DeviceID: 0)
VideoSettings: Max Threads (Threads: 4)
VideoSettings: Restoring previous video settings from file. (Filename: /home/ubuntu/Desktop/VideoConf/bin/kvazzup.ini)
Settings Helper: Reading list from settings
-- File: kvazzup.ini
-- List name: parameters
-- Items: 0
Settings: Opening settings
Settings: Closing Settings. Gettings settings from file.
Settings Helper: Warning! Found missing setting. Resetting video settings (Missing key: sip/ServerAddress)
Settings: Closing Settings. Gettings settings from file.
Settings Helper: Warning! Found missing setting. Resetting video settings (Missing key: sip/ServerAddress)
KvazzupController: Starting call with contact (Contact: BinhHP)
SIPTransport: Initiating TCP connection for sip connection (TransportID: 1)
TCPConnection: Establishing connection
-- Destination: 192.168.178.101
-- port: 5060
=============================================================================
TCPConnection: Starting TCP loop
=============================================================================
TCPConnection: Starting to connect TCP
TCPConnection: Checking status (Address: 192.168.178.101:5060)
TCPConnection: Attempting to connect (Attempt: 1)
TCPConnection: Connected succesfully (Connection: 192.168.178.111:37948 <-> 192.168.178.101:5060)
SIPDialogManager: Intializing a new dialog by sending an INVITE
SIPDialogState: Creating a new dialog.
Local dialog created. CallID: "FUjXaXS1huWMxnHC" Tag: "juw5B7nF7nJXr9JP" Cseq: 1617104989
SIPDialogState: Setting peer-to-peer address.
SIP, Dialog client: Starting a call and sending an INVITE in session
SIPDialogClient: Client starts sending a request. (Type: 1)
SIPDialog: Iniate sending of a dialog request
SIPDialogState: Increasing CSeq (CSeq: 1617104990)
=============================================================================
SIPTransport: Composing and sending SIP Request: (Type: INVITE)
=============================================================================
SIPDialog: Finished sending of a dialog request
TCPConnection: Writing buffer to TCP socket (Buffer size: 1)
ConferenceView: Adding widget to display that we are calling someone. (SessionID: 1)
ConferenceView: Checks session: SessionID does not exist
ConferenceView: Checks session: SessionID does not exist
ConferenceView: Initializing session (SessionID: 1)
TCPConnection: Written to socket (Bytes: 382)
TCPConnection: Can read one line (Bytes available: 318)
SIPTransport: Parsing package to header and body
-- Messages parsed so far: 0
-- Header end index: 318
-- content-length index: 297
SIPTransport: Parsed Content-length (Content-length: 0)
Parsing SIP header with 8 lines
Found following SIP fields: ("Via", "Max-Forwards", "To", "From", "Call-ID", "CSeq", "Content-Length")
=============================================================================
SIPTransport: Parsing incoming response (Type: 180)
=============================================================================
SIPRouting: Found our via. This is meant for us!
SIPDialogManager: Starting to process identifying SIP response dialog.
We don't yet have their remote Tag. Using the one in response.
SIPDialogManager: Found dialog matching the response
SIPDialogClient: Client starts processing response
SIPDialogClient: Got a provisional response. Restarting timer.
KvazzupController: Our call is ringing
Ringing, ConferenceView : Call is ringing. SessionID 1
SIPDialogManager: Response processing finished (SessionID: 1)
TCPConnection: Can read one line (Bytes available: 887)
SIPTransport: Parsing package to header and body
-- Messages parsed so far: 0
-- Header end index: 411
-- content-length index: 357
SIPTransport: Parsed Content-length (Content-length: 476)
Parsing SIP header with 10 lines
Found following SIP fields: ("Via", "Max-Forwards", "To", "From", "Call-ID", "CSeq", "Contact", "Content-Length", "Content-Type")
Found media: "audio"
Correctly matched a flag attribute: "sendrecv"
Found media: "video"
Correctly matched a flag attribute: "sendrecv"
Parsed SDP is valid.
Successfully parsed SDP
=============================================================================
SIPTransport: Parsing incoming response (Type: 200)
=============================================================================
SIPRouting: Found our via. This is meant for us!
SIPDialogManager: Starting to process identifying SIP response dialog.
SIPDialogManager: Found dialog matching the response
SIPManager: Got first SDP offer.
Negotiation: Found following codecs in SDP (Codecs: pcm, h265)
SDPNegotiator: Found suitable RTP number.
SDPNegotiator: Found suitable codec.
ICE: Start Generating ICE candidates
-- Local: 4
-- Global: 0
-- STUN: 0
-- STUN relays: 0
-- TURN: 0
=============================================================================
ICE: Starting ICE nomination
=============================================================================
ICE: Created 4 candidate pairs
SIPDialogClient: Client starts processing response
=============================================================================
KvazzupController: They accepted our call!
=============================================================================
SIPDialogClient: Client starts sending a request. (Type: 2)
SIPDialog: Iniate sending of a dialog request
SIPManager: Adding SDP content to request
=============================================================================
SIPTransport: Composing and sending SIP Request: (Type: ACK)
=============================================================================
SIPContent: Parameter SDP is valid. Starting to compose to string.
Sending, SIPContent : Composed SDP string: v=0
o=BinhT420 1617104991326 1617104991326 IN IP4 192.168.178.111
s=HEVCVideoCall
c=IN IP4 192.168.178.111
t=0 0
m=audio 0 RTP/AVP 0
a=sendrecv
m=video 0 RTP/AVP 97
a=rtpmap:97 h265/90000
a=sendrecv
a=candidate:1 1 UDP 2130706431 192.168.178.111 38500 typ host
a=candidate:1 2 UDP 2130706430 192.168.178.111 38501 typ host
a=candidate:1 3 UDP 2130706429 192.168.178.111 38502 typ host
a=candidate:1 4 UDP 2130706428 192.168.178.111 38503 typ host
SIPDialog: Finished sending of a dialog request
TCPConnection: Writing buffer to TCP socket (Buffer size: 1)
IcePairTester: Controller starts connectivity tests. (Pair: 192.168.178.111:38500 <-> 192.168.178.101:38500)
KvazzupController: Call negotiated
KvazzupController: Waiting for the ICE to finish before starting the call.
SIPDialogManager: Response processing finished (SessionID: 1)
IcePairTester: Controller starts connectivity tests. (Pair: 192.168.178.111:38502 <-> 192.168.178.101:38502)
TCPConnection: Written to socket (Bytes: 842)
IcePairTester: Controller starts connectivity tests. (Pair: 192.168.178.111:38503 <-> 192.168.178.101:38503)
IcePairTester: Controller starts connectivity tests. (Pair: 192.168.178.111:38501 <-> 192.168.178.101:38501)
IcePairTester: Controller found a connection (Pair: 192.168.178.111:38500 <-> 192.168.178.101:38500)
IceSessionTester: Controller component finished (Finished components: 1/4)
IcePairTester: Controller found a connection (Pair: 192.168.178.111:38503 <-> 192.168.178.101:38503)
IcePairTester: Controller found a connection (Pair: 192.168.178.111:38501 <-> 192.168.178.101:38501)
IcePairTester: Controller found a connection (Pair: 192.168.178.111:38502 <-> 192.168.178.101:38502)
IceSessionTester: Controller component finished (Finished components: 2/4)
IceSessionTester: Controller component finished (Finished components: 3/4)
IceSessionTester: Controller component finished (Finished components: 4/4)
=============================================================================
ICE: ICE finished.
-- Component 1: 192.168.178.111:38500 <-> 192.168.178.101:38500
-- Component 2: 192.168.178.111:38501 <-> 192.168.178.101:38501
-- Component 3: 192.168.178.111:38502 <-> 192.168.178.101:38502
-- Component 4: 192.168.178.111:38503 <-> 192.168.178.101:38503
=============================================================================
Negotiation: ICE nomination has succeeded (SessionID: 1)
KvazzupController: ICE has been successfully completed (SessionID: 1)
KvazzupController: Call has been agreed upon with peer. (SessionID: 1)
ConferenceView: Adding Videostream. (SessionID: 1)
View, VideoFactory : Creating videowidget for sessionID: 1
VideoviewFactory: Created video widget.
-- SessionID: 1
-- View Number: 1
ConferenceView: Clearing all previous views.
VideoDrawHelper: Warning! Tried updating target rect before picture
Delivery: Adding new peer
Delivery: RTP streamer (SessionID: 1)
MediaManager: Start creating media.
-- Outgoing media: 2
-- Incoming media: 2
MediaManager: Using media specific address for outgoing media.
-- Type: audio
-- Path: 192.168.178.111:38502 -> 192.168.178.101:38502
Delivery: Creating mediastream
Delivery: Creating sender filter
AudioCaptureFilter: Initializing audio capture filter.
[RTPLIB][WARNING][::set_payload] Unknown RTP format, setting clock rate to 10000
AudioCaptureFilter: A microphone chosen. (Device name: default)
AudioCaptureFilter: Creating audio input. (Notify interval (ms): 1000)
AudioCaptureFilter: Audio initializing completed.
AudioCaptureFilter: Resuming audio input.
AECProcessor: Initiating echo frame processing (Filter length: 1600)
FilterGraph: Connecting filters (Connection: Audio_Capture -> AEC input)
FilterGraph: Starting microphone
AudioCaptureFilter: Resuming audio input.
MediaManager: Using media specific address for outgoing media.
-- Type: video
-- Path: 192.168.178.111:38500 -> 192.168.178.101:38500
Delivery: Creating mediastream
Delivery: Creating sender filter
UvgRTPSender: Updated buffersize (Size: 64)
FilterGraph: Adding send video (SessionID: 1)
FilterGraph: Iniating video send
FilterGraph: Filter output and input do not match. Finding conversion (Connection: Camera->Kvazaar)
FilterGraph: Adding RGB32 to YUV conversion
FilterGraph: Connecting filters (Connection: Camera -> RGB32toYUV)
FilterGraph: Connecting filters (Connection: RGB32toYUV -> Kvazaar)
"Kvazaar" iniating
Using preset ultrafast: --rd=0 --pu-depth-intra=2-3 --pu-depth-inter=1-2 --me=hexbs --gop=8 --ref=1 --bipred=1 --deblock=0:0 --signhide=0 --subme=0 --sao=off --rdoq=0 --rdoq-skip=0 --transform-skip=0 --mv-rdo=0 --full-intra-search=0 --smp=0 --amp=0 --cu-split-termination=zero --me-early-termination=sensitive --intra-rdo-et=0 --early-skip=1 --fast-residual-cost=28 --max-merge=5
Initialization, Filter Getting custom Kvazaar options: 0
Compiled: INTEL, flags: MMX SSE SSE2
Detected: INTEL, flags: MMX SSE SSE2 SSE3 SSSE3 SSE41 SSE42 AVX
Available: sse2(2) sse41(4)
In use: sse2(1) sse41(4)
"Kvazaar" iniation succeeded.
FilterGraph: Filter output and input do not match. Finding conversion (Connection: Screen Sharing->Kvazaar)
FilterGraph: Adding RGB32 to YUV conversion
FilterGraph: Connecting filters (Connection: Screen Sharing -> RGB32toYUV)
FilterGraph: Connecting filters (Connection: RGB32toYUV -> Kvazaar)
"Kvazaar" iniating
MediaManager: Using media specific address for incoming.
-- Type: audio
-- Address: 192.168.178.111
-- Port: 38502
Delivery: Creating receiver filter
FilterGraph: Connecting filters (Connection: RTP Receiver PCM -> Audio Mixer)
MediaManager: Using media specific address for incoming.
-- Type: video
-- Address: 192.168.178.111
-- Port: 38500
Delivery: Creating receiver filter
FilterGraph: Connecting filters (Connection: RTP Receiver HEVC -> OpenHEVC)
Filter: Starting to initiate OpenHEVC
[hevc @ 0x55ef09981e30] nb threads_frame = 1, nb threads_slice 1, thread_type = null
[hevc @ 0x55ef090434f0] nb threads_frame = 1, nb threads_slice 1, thread_type = null
Filter: OpenHEVC initiation successful. (Version: OpenHEVC v2.0)
FilterGraph: Filter output and input do not match. Finding conversion (Connection: OpenHEVC->Display)
FilterGraph: Adding YUV to RGB32 conversion
FilterGraph: Connecting filters (Connection: OpenHEVC -> YUVtoRGB32)
FilterGraph: Connecting filters (Connection: YUVtoRGB32 -> Display)
KvazzupController: Waiting for the ICE to finish before starting the call.
AudioOutputDevice: Warning! Read too little audio data. (Read vs available: 0 vs 1280)
AudioOutputDevice: Warning! Read too little audio data. (Read vs available: 0 vs 1280)
AudioOutputDevice: Warning! Read too little audio data. (Read vs available: 0 vs 1280)
AudioOutputDevice: Warning! Read too little audio data. (Read vs available: 0 vs 1280)
AudioOutputDevice: Warning! Read too little audio data. (Read vs available: 0 vs 1280)
AudioOutputDevice: Warning! Read too little audio data. (Read vs available: 0 vs 1280)
AudioOutputDevice: Warning! Read too little audio data. (Read vs available: 0 vs 1280)
AudioOutputDevice: Warning! Read too little audio data. (Read vs available: 0 vs 1280)
AudioOutputDevice: Warning! Read too little audio data. (Read vs available: 0 vs 1280)
AudioOutputDevice: Warning! Read too little audio data. (Read vs available: 0 vs 1280)
AudioOutputDevice: Warning! Read too little audio data. (Read vs available: 0 vs 1280)
AudioCaptureFilter: Audio Input State changed (States:: Current: 0, Wanted: 0)
Processing, "Kvazaar" buffer full. Discarded input: 1 Total input: 4
AudioOutputDevice: Warning! Read too little audio data. (Read vs available: 0 vs 1280)
AudioOutputDevice: Warning! Read too little audio data. (Read vs available: 0 vs 1280)
AudioOutputDevice: Warning! Read too little audio data. (Read vs available: 0 vs 1280)
AudioOutputDevice: Warning! Read too little audio data. (Read vs available: 0 vs 1280)
AudioOutputDevice: Warning! Read too little audio data. (Read vs available: 0 vs 1280)
Filter: Parameter set found (Frame received before: 0)
Filter: PEER ERROR:Detected no slices in incoming stream.
Filter: Uniniating.
[hevc @ 0x55ef09981e30] flush, decoder_0.
Filter: Starting to initiate OpenHEVC
[hevc @ 0x7fde20076530] nb threads_frame = 1, nb threads_slice 1, thread_type = null
[hevc @ 0x7fde20035f00] nb threads_frame = 1, nb threads_slice 1, thread_type = null
Filter: OpenHEVC initiation successful. (Version: OpenHEVC v2.0)
Illegal instruction (core dumped)
Kvazzup removes lines from video frames with resolution not divisible by 8. It should instead pad the data with extra lines for resolutions that are not divisible by 8 which are then removed by the decoder. This way we don't lose those extra lines.
All
This issue is not important, but I recorded it so it'll be fixed at some point.
The AEC works now, but there would more room for fine tuning.
The aspect that should be tuned:
This issue should be done after #14 is complete
Qt is not designed for use with real-time audio. I've come to the conclusion that a real-time audio library should be included to handle input and output. I found that RTAudio was most suggested for this task.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.