Page 1 of 1

RVMedia 10.2 - FFmpeg 6

Posted: Thu Feb 22, 2024 9:53 am
by Sergey Tkachenko
We've released RVMedia 10.2

A trial version can be downloaded from https://www.trichview.com/download/

In this update: FFmpeg 6, drawing using OpenGL and Skia, improved noise reduction, new demo projects.

rvmedia10_2.png
rvmedia10_2.png (35.51 KiB) Viewed 19213 times

Previous version
https://www.trichview.com/forums/viewtopic.php?t=12268

RVMedia 10.2: FFmpeg and drawing (OpenGL and Skia)

Posted: Thu Feb 22, 2024 10:04 am
by Sergey Tkachenko
FFmpeg 6

Since this update, RVMedia supports the newest FFmpeg version: 6.
FFmpeg has breaking changes only in major releases. This means that all 6.x releases of FFmpeg are supported.
RVMedia still supports all old versions of FFmpeg (an available version of FFmpeg is auto-detected)

Drawing

In VCL and Lazarus version, you can choose a graphic engine for drawing video viewers (TRVCamView.RenderMode, TRVCamMultiView.RenderMode properties).
In FireMonkey, RVMedia always uses the form's drawing engine.

The code for drawing video viewers using various graphic engines is completely rewritten. It is removed from the video viewer units and moved to a separate painter classes.

OpenGL drawing was once supported in old VCL versions of RVMedia. RVMedia 10.2 restores, optimizes and improves OpenGL support.
Now it is available not only in VCL, but also in Lazarus version of RVMedia (Windows platform).
The main reason for using OpenGL is drawing scaled video frames with use of a graphics processing unit (GPU) instead of a central processing unit (CPU).

A new rendering mode is added: Skia. Unlike OpenGL mode, Skia is used only for drawing video frames. All other content is still drawn using standard Windows GDI functions.
RVMedia does not turn GPU features in Skia on, so frames are still scaled using CPU (I think it does not make sense to use OpenGL via Skia, since RVMedia can use it directly).
Requirements:
  • Skia4Delphi (included in Delphi 12; can be installed in older versions of Delphi, starting from XE7)
  • MRVCamViewSkia unit must be added to the project
DirectX drawing is removed, since it never worked as good as it should.

TRVCamView.FrameScaleQuality now works in all rendering modes: Windows ("software"), OpenGL, Skia. You can choose fast low-quality scaling methods to reduce CPU/GPU usage.

New property: TRVCamMultiViewer.Viewers[].AudioViewerColor defines a background color for microphone viewers (if they are displayed)

This update also includes several fixes and tweaks, such as drawing overlapping video viewers on TRVCamMultiView, and painting in high-DPI display modes.

RVMedia 10.2: sound and recording

Posted: Thu Feb 22, 2024 10:13 am
by Sergey Tkachenko
Sound

A noise reduction feature is greatly improved. Now you can not only turn it on/off, but you can specify a level of noise reduction.
New properties: TRVMicrophone.NoiseReductionLevel, TRVAudioPlayer.NoiseReductionLevel
The recommended range of these properties is 0..100 (although, you can use greater values). 0 means no reduction; higher values mean greater reduction (but can lead to sound distortion). The default value (20) is small, and may be not enough for noisy sound sources.

I added a trackbar for a noise reduction level in Recording\AudioRecorder\ demo, and in audio options for of all ClientServer\VideoChats\ demos.

NoiseReduction.png
NoiseReduction.png (10.66 KiB) Viewed 19197 times

Unlike all other microphone settings, noise reduction controls are not disabled when recording. You can change settings and listen the result immediately.


Recording

New event: TRVCamRecorder.OnGetImage allows modifying video frames before writing them to a file.

RVMedia 10.2: demo projects

Posted: Thu Feb 22, 2024 10:18 am
by Sergey Tkachenko
Demo projects

New demo projects for C++Builder VCL (from XE2 to 12), in Demos\CBuilderUnicode\ folder. This update includes only two demos: Cameras\WebCamera and Cameras\IPCamera\. More demos will be converted to C++Builder in future updates.

New demo: Cameras\IPCamera\ (in 4 versions: Delphi VCL, Lazarus, C++Builder VCL, Delphi FireMonkey). This is a simple demo dispaying video either from the specified video URL or from the specified camera address (host : port). Cameras\MediaTest demo already has this functionality; however, MediaTest is an overcomplicated demo; and I wanted to create a simple demo showing basic functions.
You can see a screenshot of this demo used in the collage at the top of this post.