Submitted:
21 September 2026
Posted:
22 September 2026
You are already at the latest version
Abstract
This paper presents an end-to-end system in which 4K-resolution (3840 × 2160, 12-bit, YCbCr 4:2:0) 360° panoramic color images captured by a field-mounted camera are compressed in hardware on a graphics processing unit (GPU) using the HEVC (H.265) codec, transmitted between two points (up to 1000 km apart) over a link limited to 100 Mbps using the RTP protocol within a maximum latency budget of 2 s, and then decoded in hardware on a GPU at the receiving side for live display on ten 4K monitors. The camera delivers the 360° panorama at 5 frames per second as ten 36° sectors, corresponding to a raw data rate of approximately 5 Gbps. With the hardware HEVC encoder (NVENC) of NVIDIA GPUs, the data rate is reduced to roughly one hundredth of the raw rate, at most 50 Mbps. Inter-process data sharing is implemented as a circular list in System V shared memory, coordinated with semaphores. Measurements show that the end-to-end latency remains below 1 s.

Keywords:
HEVC (H.265)
; hardware-accelerated video coding
; GPU
; NVENC
; panoramic video
; 4K video streaming
; RTP
; low-latency transmission
; shared memory
1. Introduction
Applications such as wide-area surveillance, border security, and port and air-traffic monitoring require high-resolution 360° panoramic imagery acquired by field-mounted cameras to be monitored at a remote center with near-real-time latency. However, 4K-resolution (3840 × 2160) panoramic video with 12-bit color depth (YCbCr 4:2:0) requires a bandwidth on the order of 5 Gbps in uncompressed form, and it is therefore not possible to transmit it directly over the bandwidth-limited 100 Mbps leased lines that are available in practice.
This paper presents an end-to-end system designed and implemented to solve this problem. The system is based on compressing the images on the transmitter side with the hardware HEVC (H.265) encoder of NVIDIA GPUs [1,2,3], transmitting them with the RTP protocol [4] to a receiver system located up to 1000 km away, and decoding them on the receiver side, again with a hardware HEVC decoder, for live display at 5 fps on ten 4K monitors. The complete system was designed to operate under an end-to-end latency constraint of at most 2 s; the measurements performed show that the latency remains below 1 s.
The remainder of the paper is organized as follows. Section 2 presents the system architecture and image acquisition, Section 3 the transmitter system and the shared-memory data structures, Section 4 the bandwidth analysis and compression, Section 5 the receiver system, Section 6 the experimental setup, and Section 7 the results and discussion; Section 8 concludes the paper.
2. System Architecture and Image Acquisition
The system consists of two main subsystems, each comprising hardware and software: the Transmitter System, which reads the images from the camera, compresses them and transmits them to the remote site, and the Receiver System, which decodes the incoming video stream and renders it on the displays. The two systems are connected to each other by a leased network link with a bandwidth of at most 100 Mbps and a length of at most 1000 km. The operation of the end-to-end system is shown in Figure 1.
The camera, which captures high-resolution, 360° panoramic color images at a high rate, does not deliver the full panorama as a single image but as 10 sub-images (sectors), each corresponding to a 36° angular slice. The resolution of each sector is 3840 × 2160 pixels and the color format is 12-bit YCbCr 4:2:0 [5]. The images are produced at 5 frames per second (5 fps). The image-acquisition process is summarized in Figure 2.
3. Transmitter System
A 64-bit Linux operating system runs on the transmitter system. The frame grabber (video capture board), which is installed in the system through a PCI Express x16 interface, is connected directly to the camera. The device driver of the board writes each frame received from the camera — consisting of 10 raw YCbCr 4:2:0 images of 2160 × 3840 pixels together with a header — into the shared memory (System V shared memory) of the operating system, organized as a circular list [6]. Semaphores are used to coordinate the write and read operations on the shared memory.
3.1. Shared-Memory Data Structures
3.2. Hardware HEVC Encoding and Transmission over RTP
4. Bandwidth Analysis and Compression
The total amount of information held in shared memory for one frame is 124,417,128 bytes, and it consists of the following components:
- Buffer offset: 8 bytes
- Image header × 10: 112 bytes × 10 = 1,120 bytes
- Image buffer × 10: 12,441,600 bytes × 10 = 124,416,000 bytes
The size of a single image buffer is calculated as 2160 × 3840 × 1.5 = 12,441,600 bytes, on the basis of an average of 1.5 bytes per pixel in the YCbCr 4:2:0 format.
Accordingly, the amount of data required for one frame is 124,417,128 bytes = 995,337,024 bits. Since the camera records at 5 fps, the total amount of raw data per second is 5 × 995,337,024 bits = 4,976,685,120 bits, that is, approximately 5 Gbps (≈ 593 MiB/s). Given that the available link rate is at most 100 Mbps, it is not possible to transmit this data without compression.
For this reason, the hardware HEVC (H.265) codec provided by the GPU [1,2] was used and the amount of data was reduced to approximately one hundredth of the raw rate; after compression, 1 s of video is reduced to approximately 47 Mbit, so that the required bandwidth is at most 50 Mbps. The compressed video stream was transmitted to the receiver system using the RTP protocol [4].
5. Receiver System
The video stream arriving from the transmitter system at a rate of at most 50 Mbps is decoded at the receiver system, again using the hardware HEVC decoder of the GPU (NVDEC) [3], and is written into shared memory in the structure given in Table 1 and Table 2 and 3. A separate C++ application running on this system reads the images from shared memory and renders them at 5 fps on ten portrait-oriented 4K monitors. In this way, the 360° 4K panoramic images acquired at the source can be monitored in near real time at the remote site.
6. Experimental Setup
The compression (transmitter) and decoding (receiver) systems were each built on a standard small-form-factor (SFF) PC. The hardware and software components used are summarized in Table 4.
7. Results and Discussion
The measurements performed on the implemented system show that the end-to-end latency, from the acquisition of an image at the camera to its display on the monitors at the remote site, remains below 1 s. This value is clearly below the 2 s latency limit set as the design target. Hardware HEVC encoding reduced the raw data rate from approximately 5 Gbps to at most 50 Mbps (a reduction by a factor of roughly 100), making transmission over the bandwidth-limited 100 Mbps link possible. The use of a separate RTP channel per sector allowed encoding and transmission to be carried out in parallel for all 10 sectors.
8. Conclusions
In this study, an end-to-end system was designed and implemented for the hardware-accelerated compression of 4K-resolution 360° panoramic video, its transmission over a long distance on a link with limited bandwidth, its decoding, and its live display in a multi-screen environment. By combining GPU-based hardware HEVC encoding and decoding, a circular-list data structure in System V shared memory, and parallel per-sector RTP streams, raw data on the order of 5 Gbps was reduced to below 50 Mbps and an end-to-end latency of less than 1 s was achieved. Future work will target support for higher frame rates, improved error resilience (e.g., FEC), and the evaluation of hardware support for next-generation codecs such as AV1.
Funding
This research was carried out within the scope of an industrial development project funded by a private-sector partner that cannot be named for confidentiality reasons. The funder had no role in the design of the study, in the collection, analysis or interpretation of the data, in the writing of the manuscript, or in the decision to publish the results.
Data Availability Statement
The video recordings, latency measurement logs and source code generated in this study are not publicly available owing to confidentiality restrictions arising from the commercial and security-sensitive nature of the project. No new publicly archivable dataset was created. Further information on the methodology may be obtained from the corresponding author upon reasonable request.
Acknowledgments
AI-assisted tools were used for the translation of this manuscript from Turkish into English and for manuscript formatting. The author reviewed and edited the resulting text and takes full responsibility for the content of the manuscript.
Conflicts of Interest
The author declares no conflicts of interest.
References
- Sullivan, G.J.; Ohm, J.-R.; Han, W.-J.; Wiegand, T. Overview of the High Efficiency Video Coding (HEVC) Standard. IEEE Trans. Circuits Syst. Video Technol. 2012, 22, 1649–1668. [Google Scholar] [CrossRef]
- ITU-T Recommendation H.265 | ISO/IEC 23008-2. High Efficiency Video Coding; International Telecommunication Union: Geneva, Switzerland, 2013 (and later editions).
- NVIDIA Corporation. NVIDIA Video Codec SDK Documentation (NVENC/NVDEC). Available online: https://developer.nvidia.com/video-codec-sdk (accessed on 14 March 2025).
- Schulzrinne, H.; Casner, S.; Frederick, R.; Jacobson, V. IETF RFC 3550; RTP: A Transport Protocol for Real-Time Applications. Internet Engineering Task Force: Fremont, CA, USA, July 2003.
- Parameter Values for the HDTV Standards for Production and International Programme Exchange. ITU-R; Recommendation BT.709-6. International Telecommunication Union: Geneva, Switzerland, 2015.
- Kerrisk, M. The Linux Programming Interface: A Linux and UNIX System Programming Handbook. In System V semaphores and shared memory; No Starch Press: San Francisco, CA, USA, 2010; pp. Chapters 47–48. [Google Scholar]
- AAEON Technology Inc. MAX-Q470A Industrial ATX Motherboard—Product Specifications. Available online: https://www.aaeon.com (accessed on 2 June 2025).
- NVIDIA Corporation. NVIDIA RTX A4000 Datasheet; NVIDIA Corporation: Santa Clara, CA, USA, 2021; Available online: https://www.nvidia.com (accessed on 19 April 2025).
- Canonical Ltd. Ubuntu 20.04 LTS (Focal Fossa) Release Notes; Canonical Ltd.: London, UK, 2020; Available online: https://releases.ubuntu.com/20.04/ (accessed on 27 August 2025).
Figure 1.
End-to-end system architecture: transmitter system, leased network link (max. 100 Mbps, max. 1000 km) and receiver system.
Figure 1.
End-to-end system architecture: transmitter system, leased network link (max. 100 Mbps, max. 1000 km) and receiver system.

Figure 2.
Acquisition of the 360° panoramic image: division of the 21600 × 3840-pixel source image into ten 36° sectors of 2160 × 3840 pixels each.
Figure 2.
Acquisition of the 360° panoramic image: division of the 21600 × 3840-pixel source image into ten 36° sectors of 2160 × 3840 pixels each.

Table 1.
Shared memory segment structure.
| Byte Offset | Description | Length (bytes) | Data Type | Comment |
|---|---|---|---|---|
| 0 | Current buffer offset | 8 | unsigned long | Byte offset to the image header of the most recently updated image buffer |
| 8 | Image header 0 | 112 | struct | |
| 120 | Image buffer 0 | 12,441,600 | unsigned char[] | 3840 × 2160 YCbCr 4:2:0 image |
| 12,441,720 | Image header 1 | 112 | struct | |
| 12,441,832 | Image buffer 1 | 12,441,600 | unsigned char[] | 3840 × 2160 YCbCr 4:2:0 image |
| 24,883,432 | Image header 2 | 112 | struct | |
| 24,883,544 | Image buffer 2 | 12,441,600 | unsigned char[] | 3840 × 2160 YCbCr 4:2:0 image |
| 37,325,144 | Image header 3 | 112 | struct | |
| 37,325,256 | Image buffer 3 | 12,441,600 | unsigned char[] | 3840 × 2160 YCbCr 4:2:0 image |
| 49,766,856 | Image header 4 | 112 | struct | |
| 49,766,968 | Image buffer 4 | 12,441,600 | unsigned char[] | 3840 × 2160 YCbCr 4:2:0 image |
| 62,208,568 | Image header 5 | 112 | struct | |
| 62,208,680 | Image buffer 5 | 12,441,600 | unsigned char[] | 3840 × 2160 YCbCr 4:2:0 image |
| 74,650,280 | Image header 6 | 112 | struct | |
| 74,650,392 | Image buffer 6 | 12,441,600 | unsigned char[] | 3840 × 2160 YCbCr 4:2:0 image |
| 87,091,992 | Image header 7 | 112 | struct | |
| 87,092,104 | Image buffer 7 | 12,441,600 | unsigned char[] | 3840 × 2160 YCbCr 4:2:0 image |
| 99,533,704 | Image header 8 | 112 | struct | |
| 99,533,816 | Image buffer 8 | 12,441,600 | unsigned char[] | 3840 × 2160 YCbCr 4:2:0 image |
| 111,975,416 | Image header 9 | 112 | struct | |
| 111,975,528 | Image buffer 9 | 12,441,600 | unsigned char[] | 3840 × 2160 YCbCr 4:2:0 image |
| 124,417,128 | (total size) |
Table 2.
Image header structure.
| Byte Offset | Description | Length (bytes) | Data Type | Comment |
|---|---|---|---|---|
| 0 | bitDepth | 8 | unsigned long | Average number of bits per pixel; 12 for YCbCr 4:2:0 |
| 8 | width | 8 | unsigned long | Image width in pixels; 3840 for one sector |
| 16 | height | 8 | unsigned long | Image height in pixels; 2160 for one sector |
| 24 | locationId | 8 | unsigned long | Unique location ID number |
| 32 | locationName | 16 | char [16] | Location name (15 ASCII characters + termination) |
| 48 | dataSource | 16 | char [16] | Data source name (15 ASCII characters + termination) |
| 64 | timeStamp.seconds | 8 | long long | Image timestamp in seconds from the Epoch, 1970-01-01 00:00:00 (UTC) |
| 72 | timeStamp.nanoseconds | 8 | long long | Additional fraction of a second, in nanoseconds |
| 80 | frameNumber | 8 | unsigned long | Frame number; increments by 1 per rotation round |
| 88 | isLive | 1 | bool | Non-zero if live (i.e., not a recording) |
| 89 | (gap due to alignment) | 1 | ||
| 90 | segNum | 2 | unsigned short | Image segment (sector) number; value 0–9 |
| 92 | (gap due to alignment) | 4 | ||
| 96 | sensorDirection.azimuth | 8 | double | Not applicable |
| 104 | sensorDirection.pitch | 8 | double | Not applicable |
| 112 | (total size) |
Table 3.
Image buffer structure.
| Byte Offset | Description | Length (bytes) | Data Type | Comment |
|---|---|---|---|---|
| 0 | Y data | 8,294,400 | unsigned char | YCbCr 4:2:0 luminance image (3840 × 2160) |
| 8,294,400 | Cb data | 2,073,600 | unsigned char | YCbCr 4:2:0 chroma-blue difference image (1920 × 1080) |
| 10,368,000 | Cr data | 2,073,600 | unsigned char | YCbCr 4:2:0 chroma-red difference image (1920 × 1080) |
| 12,441,600 | (total size) |
Table 4.
Hardware and software components of the transmitter and receiver systems.
| Component | Specification |
|---|---|
| Motherboard | AAEON MAX-Q470A industrial motherboard [7] |
| GPU | NVIDIA RTX A4000 [8] |
| RAM | 32 GB |
| CPU | Intel Core i9 |
| Storage | 1 TB M.2 NVMe SSD |
| Additional hardware | Frame grabber board with a PCI Express x16 interface |
| Operating system | Ubuntu Linux 20.04 LTS, 64-bit [9] |
| Programming language | C++ |
Disclaimer/Publisher’s Note: The statements, opinions and data contained in all publications are solely those of the individual author(s) and contributor(s) and not of MDPI and/or the editor(s). MDPI and/or the editor(s) disclaim responsibility for any injury to people or property resulting from any ideas, methods, instructions or products referred to in the content. |
© 2026 by the author. Licensee MDPI, Basel, Switzerland. This article is an open access article distributed under the terms and conditions of the Creative Commons Attribution (CC BY) license (http://creativecommons.org/licenses/by/4.0/).
Copyright: This open access article is published under a Creative Commons CC BY 4.0 license, which permit the free download, distribution, and reuse, provided that the author and preprint are cited in any reuse.