eden-miror/src/common
ameerj eb67a45ca8 video_core: NVDEC Implementation
This commit aims to implement the NVDEC (Nvidia Decoder) functionality, with video frame decoding being handled by the FFmpeg library.

The process begins with Ioctl commands being sent to the NVDEC and VIC (Video Image Composer) emulated devices. These allocate the necessary GPU buffers for the frame data, along with providing information on the incoming video data. A Submit command then signals the GPU to process and decode the frame data.

To decode the frame, the respective codec's header must be manually composed from the information provided by NVDEC, then sent with the raw frame data to the ffmpeg library.

Currently, H264 and VP9 are supported, with VP9 having some minor artifacting issues related mainly to the reference frame composition in its uncompressed header.

Async GPU is not properly implemented at the moment.

Co-Authored-By: David <25727384+ogniK5377@users.noreply.github.com>
2020-10-26 23:07:36 -04:00
..
logging
x64
algorithm.h
alignment.h
assert.h
atomic_ops.cpp
atomic_ops.h
bit_field.h
bit_util.h
cityhash.cpp
cityhash.h
CMakeLists.txt video_core: NVDEC Implementation 2020-10-26 23:07:36 -04:00
color.h
common_funcs.h
common_paths.h
common_types.h
concepts.h
detached_tasks.cpp
detached_tasks.h
dynamic_library.cpp
dynamic_library.h
fiber.cpp
fiber.h
file_util.cpp
file_util.h
hash.h
hex_util.cpp
hex_util.h
lz4_compression.cpp
lz4_compression.h
math_util.h
memory_detect.cpp
memory_detect.h
memory_hook.cpp
memory_hook.h
microprofile.cpp
microprofile.h
microprofileui.h
misc.cpp
multi_level_queue.h
page_table.cpp
page_table.h
param_package.cpp
param_package.h
quaternion.h
ring_buffer.h
scm_rev.cpp.in
scm_rev.h
scope_exit.h
spin_lock.cpp
spin_lock.h
stream.cpp video_core: NVDEC Implementation 2020-10-26 23:07:36 -04:00
stream.h video_core: NVDEC Implementation 2020-10-26 23:07:36 -04:00
string_util.cpp
string_util.h
swap.h
telemetry.cpp
telemetry.h
thread.cpp
thread.h
thread_queue_list.h
threadsafe_queue.h
time_zone.cpp
time_zone.h
timer.cpp
timer.h
uint128.cpp
uint128.h
uuid.cpp
uuid.h
vector_math.h
virtual_buffer.cpp
virtual_buffer.h
wall_clock.cpp
wall_clock.h
zstd_compression.cpp
zstd_compression.h