Skip to content

Commit

Permalink
MPCVideoDec - декодирование VVC для процессоров с поддержкой SSE 4.1 …
Browse files Browse the repository at this point in the history
…сделано с помощью vvdec (https://github.com/fraunhoferhhi/vvdec). Для этого используется враппер в ffmpeg на основе https://patchwork.ffmpeg.org/project/ffmpeg/patch/[email protected] с доработками.
  • Loading branch information
Aleksoid1978 committed May 11, 2024
1 parent f09beab commit ff7a598
Show file tree
Hide file tree
Showing 18 changed files with 1,462 additions and 3 deletions.
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -16,3 +16,6 @@
[submodule "distrib/MPC_components"]
path = distrib/MPC_components
url = https://github.com/Aleksoid1978/MPC_components
[submodule "src/ExtLib/vvdec/vvdec"]
path = src/ExtLib/vvdec/vvdec
url = https://github.com/fraunhoferhhi/vvdec.git
5 changes: 5 additions & 0 deletions docs/Changelog.Rus.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,11 @@

1.7.1.x dev
=============================
MPCVideoDec
Декодирование VVC сделано с помощью vvdec (https://github.com/fraunhoferhhi/vvdec).

Обновлены библиотеки:
vvdec git-v2.3.0;


1.7.1 - 2024-05-07
Expand Down
5 changes: 5 additions & 0 deletions docs/Changelog.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,11 @@

1.7.1.x dev
=============================
MPCVideoDec
VVC decoding is done using vvdec (https://github.com/fraunhoferhhi/vvdec).

Updated libraries:
vvdec git-v2.3.0;


1.7.1 - 2024-05-07
Expand Down
1 change: 1 addition & 0 deletions docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -64,3 +64,4 @@ MPC-BE makes use of the following 3rd party code:
| ZenLib | zlib License | https://github.com/MediaArea/ZenLib |
| zlib | zlib License | https://zlib.net/ |
| bs2b | MIT License | https://bs2b.sourceforge.net/ |
| VVdeC | BSD License | https://github.com/fraunhoferhhi/vvdec/ |
3 changes: 3 additions & 0 deletions docs/custom_code/ffmpeg.txt
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
* libavcodec/vvc/vvcdec.c

* libavcodec/aacsbr_template.c
* libavcodec/allcodecs.c
* libavcodec/bsf_list.c
* libavcodec/codec_list.c
* libavcodec/d3d12va_hevc.c
Expand Down Expand Up @@ -52,3 +53,5 @@ The following files are available only in MPC-BE (compared with ffmpeg):
* libavcodec/x86/hevc_idct_intrinsic.c
* libavcodec/x86/hevc_intra_intrinsic.c
* libavcodec/x86/hevcpred.h

* libavcodec/libvvdec.c
20 changes: 20 additions & 0 deletions mpc-be.sln
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,7 @@ EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MPCVideoDec", "src\filters\transform\MPCVideoDec\MPCVideoDec.vcxproj", "{58E36BF5-4A06-47E4-BD40-4CCEF8C634DF}"
ProjectSection(ProjectDependencies) = postProject
{1CDBE640-BB75-422C-B63A-8C70C4D48BEA} = {1CDBE640-BB75-422C-B63A-8C70C4D48BEA}
{A5B58721-0F63-4410-9598-880EBDA78C53} = {A5B58721-0F63-4410-9598-880EBDA78C53}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MpcDvdVideoDecoder", "src\filters\transform\DVDVideoDecoder\MpcDvdVideoDecoder.vcxproj", "{305BAB2D-0D75-4FBC-8BCD-A2917392B48C}"
Expand Down Expand Up @@ -201,6 +202,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mfx_dispatch", "src\ExtLib\
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "uavs3d", "src\ExtLib\uavs3d\uavs3d.vcxproj", "{1CDBE640-BB75-422C-B63A-8C70C4D48BEA}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "vvdec", "src\ExtLib\vvdec.vcxproj", "{A5B58721-0F63-4410-9598-880EBDA78C53}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug Filter|Win32 = Debug Filter|Win32
Expand Down Expand Up @@ -1273,6 +1276,22 @@ Global
{1CDBE640-BB75-422C-B63A-8C70C4D48BEA}.Release|Win32.Build.0 = Release|Win32
{1CDBE640-BB75-422C-B63A-8C70C4D48BEA}.Release|x64.ActiveCfg = Release|x64
{1CDBE640-BB75-422C-B63A-8C70C4D48BEA}.Release|x64.Build.0 = Release|x64
{A5B58721-0F63-4410-9598-880EBDA78C53}.Debug Filter|Win32.ActiveCfg = Debug|Win32
{A5B58721-0F63-4410-9598-880EBDA78C53}.Debug Filter|Win32.Build.0 = Debug|Win32
{A5B58721-0F63-4410-9598-880EBDA78C53}.Debug Filter|x64.ActiveCfg = Debug|x64
{A5B58721-0F63-4410-9598-880EBDA78C53}.Debug Filter|x64.Build.0 = Debug|x64
{A5B58721-0F63-4410-9598-880EBDA78C53}.Debug|Win32.ActiveCfg = Debug|Win32
{A5B58721-0F63-4410-9598-880EBDA78C53}.Debug|Win32.Build.0 = Debug|Win32
{A5B58721-0F63-4410-9598-880EBDA78C53}.Debug|x64.ActiveCfg = Debug|x64
{A5B58721-0F63-4410-9598-880EBDA78C53}.Debug|x64.Build.0 = Debug|x64
{A5B58721-0F63-4410-9598-880EBDA78C53}.Release Filter|Win32.ActiveCfg = Release|Win32
{A5B58721-0F63-4410-9598-880EBDA78C53}.Release Filter|Win32.Build.0 = Release|Win32
{A5B58721-0F63-4410-9598-880EBDA78C53}.Release Filter|x64.ActiveCfg = Release|x64
{A5B58721-0F63-4410-9598-880EBDA78C53}.Release Filter|x64.Build.0 = Release|x64
{A5B58721-0F63-4410-9598-880EBDA78C53}.Release|Win32.ActiveCfg = Release|Win32
{A5B58721-0F63-4410-9598-880EBDA78C53}.Release|Win32.Build.0 = Release|Win32
{A5B58721-0F63-4410-9598-880EBDA78C53}.Release|x64.ActiveCfg = Release|x64
{A5B58721-0F63-4410-9598-880EBDA78C53}.Release|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand Down Expand Up @@ -1356,6 +1375,7 @@ Global
{F4C233D1-297B-4B6B-BD63-A7D38F88AA83} = {D9A0529B-9EC4-4D30-9E05-A5D533739D95}
{B86606FD-A72D-4AF3-8078-A9CDD3B08FDC} = {D9A0529B-9EC4-4D30-9E05-A5D533739D95}
{1CDBE640-BB75-422C-B63A-8C70C4D48BEA} = {D9A0529B-9EC4-4D30-9E05-A5D533739D95}
{A5B58721-0F63-4410-9598-880EBDA78C53} = {D9A0529B-9EC4-4D30-9E05-A5D533739D95}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {078D97C7-7181-4DB4-90A5-9EC3801FD925}
Expand Down
1 change: 1 addition & 0 deletions src/ExtLib/ffmpeg/config_components.h
Original file line number Diff line number Diff line change
Expand Up @@ -2213,4 +2213,5 @@
#define CONFIG_LIBZMQ_PROTOCOL 0
#define CONFIG_IPFS_GATEWAY_PROTOCOL 0
#define CONFIG_IPNS_GATEWAY_PROTOCOL 0
#define CONFIG_LIBVVDEC_DECODER 1
#endif /* FFMPEG_CONFIG_COMPONENTS_H */
4 changes: 3 additions & 1 deletion src/ExtLib/ffmpeg/ffmpeg.mak
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ SOXR_DIR = ../soxr
DAV1_DIR = ../dav1d
FFNVCODEC_DIR = ../nv-codec-headers/include
UAVS3D_DIR = ../uavs3d/source/decoder
VVDEC_DIR = ../vvdec/vvdec/include

ifeq ($(64BIT),yes)
PLATFORM = x64
Expand Down Expand Up @@ -33,7 +34,7 @@ ARSCRIPT = $(OBJ_DIR)script.ar
# Compiler and yasm flags
CFLAGS = -I. -I.. -Icompat/atomics/win32 -Icompat/windows \
-Ilibavcodec \
-I$(ZLIB_DIR) -I$(SPEEX_DIR) -I$(SOXR_DIR) -I$(DAV1_DIR) -I$(FFNVCODEC_DIR) -I$(UAVS3D_DIR) \
-I$(ZLIB_DIR) -I$(SPEEX_DIR) -I$(SOXR_DIR) -I$(DAV1_DIR) -I$(FFNVCODEC_DIR) -I$(UAVS3D_DIR) -I$(VVDEC_DIR) \
-DHAVE_AV_CONFIG_H -D_ISOC99_SOURCE -D_XOPEN_SOURCE=600 \
-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DOPJ_STATIC \
-D_WIN32_WINNT=0x0601 -DWINVER=0x0601 \
Expand Down Expand Up @@ -344,6 +345,7 @@ SRCS_LC = \
libavcodec/libfdk-aacdec.c \
libavcodec/libspeexdec.c \
libavcodec/libuavs3d.c \
libavcodec/libvvdec.c \
libavcodec/lossless_audiodsp.c \
libavcodec/lossless_videodsp.c \
libavcodec/lsp.c \
Expand Down
3 changes: 3 additions & 0 deletions src/ExtLib/ffmpeg/libavcodec/allcodecs.c
Original file line number Diff line number Diff line change
Expand Up @@ -801,6 +801,9 @@ extern const FFCodec ff_libvpx_vp8_encoder;
extern const FFCodec ff_libvpx_vp8_decoder;
extern FFCodec ff_libvpx_vp9_encoder;
extern const FFCodec ff_libvpx_vp9_decoder;
// ==> Start patch MPC
extern const FFCodec ff_libvvdec_decoder;
// ==> End patch MPC
/* preferred over libwebp */
extern const FFCodec ff_libwebp_anim_encoder;
extern const FFCodec ff_libwebp_encoder;
Expand Down
1 change: 1 addition & 0 deletions src/ExtLib/ffmpeg/libavcodec/codec_list.c
Original file line number Diff line number Diff line change
Expand Up @@ -168,5 +168,6 @@ static const FFCodec * const codec_list[] = {
&ff_libfdk_aac_decoder,

&ff_av1_decoder, // after ff_libdav1d_decoder
&ff_libvvdec_decoder,
NULL
};
Loading

0 comments on commit ff7a598

Please sign in to comment.