MartinEesmaa / VVCEasy

VVCEasy is that you don't have to compile or/and coding to encode VVC (known as Versatile Video Codec). Simple. Easy. Encode. Decode
https://martineesmaa.org/en/vvceasy
MIT License
145 stars 15 forks source link

Android MPV add decoder for EVC #43

Closed JaitinPrakash closed 1 month ago

JaitinPrakash commented 2 months ago

Is your feature request related to a problem? Please describe. I'm mildly annoyed that i cannot view EVC encoded video.

Describe the solution you'd like Build and link xevd to the ffmpeg used in the mpv-android application.

Additional Context evc support was recently added to ffmpeg, and i want to utilize it, for testing or even personal use.

MartinEesmaa commented 2 months ago

Hello, @JaitinPrakash.

I tried to cross compile xevd of Android using Linux and did not work for compiling caused an error:

20 errors generated.
gmake[2]: *** [src_main/CMakeFiles/xevd_dynamic.dir/build.make:90: src_main/CMakeFiles/xevd_dynamic.dir/__/src_base/xevd_bsr.c.o] Error 1
gmake[2]: *** Waiting for unfinished jobs....
gmake[2]: *** [src_main/CMakeFiles/xevd.dir/build.make:90: src_main/CMakeFiles/xevd.dir/__/src_base/xevd_bsr.c.o] Error 1
gmake[2]: *** Waiting for unfinished jobs....
20 errors generated.
gmake[2]: *** [src_main/CMakeFiles/xevd_dynamic.dir/build.make:118: src_main/CMakeFiles/xevd_dynamic.dir/__/src_base/xevd_eco.c.o] Error 1
[ 12%] Building C object src_main/CMakeFiles/xevd.dir/__/src_base/xevd_ipred.c.o
20 errors generated.
gmake[2]: *** [src_main/CMakeFiles/xevd.dir/build.make:104: src_main/CMakeFiles/xevd.dir/__/src_base/xevd_df.c.o] Error 1
20 errors generated.
gmake[2]: *** [src_main/CMakeFiles/xevd.dir/build.make:118: src_main/CMakeFiles/xevd.dir/__/src_base/xevd_eco.c.o] Error 1
In file included from /home/martineesmaa/xevd/src_base/xevd_ipred.c:31:
In file included from /home/martineesmaa/xevd/src_main/../src_base/xevd_def.h:35:
In file included from /home/martineesmaa/xevd/src_main/../src_base/xevd_port.h:159:
In file included from /home/martineesmaa/android-ndk-r24/toolchains/llvm/prebuilt/linux-x86_64/lib64/clang/14.0.1/include/x86intrin.h:15:
In file included from /home/martineesmaa/android-ndk-r24/toolchains/llvm/prebuilt/linux-x86_64/lib64/clang/14.0.1/include/immintrin.h:13:
In file included from /home/martineesmaa/android-ndk-r24/toolchains/llvm/prebuilt/linux-x86_64/lib64/clang/14.0.1/include/x86gprintrin.h:15:
/home/martineesmaa/android-ndk-r24/toolchains/llvm/prebuilt/linux-x86_64/lib64/clang/14.0.1/include/hresetintrin.h:42:27: error: invalid input constraint 'a' in asm
  __asm__ ("hreset $0" :: "a"(__eax));
                          ^
In file included from /home/martineesmaa/xevd/src_base/xevd_ipred.c:31:
In file included from /home/martineesmaa/xevd/src_main/../src_base/xevd_def.h:35:
In file included from /home/martineesmaa/xevd/src_main/../src_base/xevd_port.h:159:
In file included from /home/martineesmaa/android-ndk-r24/toolchains/llvm/prebuilt/linux-x86_64/lib64/clang/14.0.1/include/x86intrin.h:15:
In file included from /home/martineesmaa/android-ndk-r24/toolchains/llvm/prebuilt/linux-x86_64/lib64/clang/14.0.1/include/immintrin.h:17:
/home/martineesmaa/android-ndk-r24/toolchains/llvm/prebuilt/linux-x86_64/lib64/clang/14.0.1/include/mmintrin.h:50:12: error: invalid conversion between vector type '__m64' (vector of 1 'long long' value) and integer type 'int' of different size
    return (__m64)__builtin_ia32_vec_init_v2si(__i, 0);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/martineesmaa/android-ndk-r24/toolchains/llvm/prebuilt/linux-x86_64/lib64/clang/14.0.1/include/mmintrin.h:129:12: error: invalid conversion between vector type '__m64' (vector of 1 'long long' value) and integer type 'int' of different size
    return (__m64)__builtin_ia32_packsswb((__v4hi)__m1, (__v4hi)__m2);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/martineesmaa/android-ndk-r24/toolchains/llvm/prebuilt/linux-x86_64/lib64/clang/14.0.1/include/mmintrin.h:159:12: error: invalid conversion between vector type '__m64' (vector of 1 'long long' value) and integer type 'int' of different size
    return (__m64)__builtin_ia32_packssdw((__v2si)__m1, (__v2si)__m2);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/martineesmaa/android-ndk-r24/toolchains/llvm/prebuilt/linux-x86_64/lib64/clang/14.0.1/include/mmintrin.h:189:12: error: invalid conversion between vector type '__m64' (vector of 1 'long long' value) and integer type 'int' of different size
    return (__m64)__builtin_ia32_packuswb((__v4hi)__m1, (__v4hi)__m2);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/martineesmaa/android-ndk-r24/toolchains/llvm/prebuilt/linux-x86_64/lib64/clang/14.0.1/include/mmintrin.h:216:12: error: invalid conversion between vector type '__m64' (vector of 1 'long long' value) and integer type 'int' of different size
    return (__m64)__builtin_ia32_punpckhbw((__v8qi)__m1, (__v8qi)__m2);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/martineesmaa/android-ndk-r24/toolchains/llvm/prebuilt/linux-x86_64/lib64/clang/14.0.1/include/mmintrin.h:239:12: error: invalid conversion between vector type '__m64' (vector of 1 'long long' value) and integer type 'int' of different size
    return (__m64)__builtin_ia32_punpckhwd((__v4hi)__m1, (__v4hi)__m2);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/martineesmaa/android-ndk-r24/toolchains/llvm/prebuilt/linux-x86_64/lib64/clang/14.0.1/include/mmintrin.h:260:12: error: invalid conversion between vector type '__m64' (vector of 1 'long long' value) and integer type 'int' of different size
20 errors    return (__m64)__builtin_ia32_punpckhdq((__v2si)__m1, (__v2si)__m2); generated
.
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/martineesmaa/android-ndk-r24/toolchains/llvm/prebuilt/linux-x86_64/lib64/clang/14.0.1/include/mmintrin.h:287:12: error: invalid conversion between vector type '__m64' (vector of 1 'long long' value) and integer type 'int' of different size
    return (__m64)__builtin_ia32_punpcklbw((__v8qi)__m1, (__v8qi)__m2);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/martineesmaa/android-ndk-r24/toolchains/llvm/prebuilt/linux-x86_64/lib64/clang/14.0.1/include/mmintrin.h:310:12: error: invalid conversion between vector type '__m64' (vector of 1 'long long' value) and integer type 'int' of different size
    return (__m64)__builtin_ia32_punpcklwd((__v4hi)__m1, (__v4hi)__m2);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/martineesmaa/android-ndk-r24/toolchains/llvm/prebuilt/linux-x86_64/lib64/clang/14.0.1/include/mmintrin.h:331:12: error: invalid conversion between vector type '__m64' (vector of 1 'long long' value) and integer type 'int' of different size
    return (__m64)__builtin_ia32_punpckldq((__v2si)__m1, (__v2si)__m2);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/martineesmaa/android-ndk-r24/toolchains/llvm/prebuilt/linux-x86_64/lib64/clang/14.0.1/include/mmintrin.h:352:12: error: invalid conversion between vector type '__m64' (vector of 1 'long long' value) and integer type 'int' of different size
    return (__m64)__builtin_ia32_paddb((__v8qi)__m1, (__v8qi)__m2);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/martineesmaa/android-ndk-r24/toolchains/llvm/prebuilt/linux-x86_64/lib64/clang/14.0.1/include/mmintrin.h:373:12: error: invalid conversion between vector type '__m64' (vector of 1 'long long' value) and integer type 'int' of different size
    return (__m64)__builtin_ia32_paddw((__v4hi)__m1, (__v4hi)__m2);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/martineesmaa/android-ndk-r24/toolchains/llvm/prebuilt/linux-x86_64/lib64/clang/14.0.1/include/mmintrin.h:394:12: error: invalid conversion between vector type '__m64' (vector of 1 'long long' value) and integer type 'int' of different size
    return (__m64)__builtin_ia32_paddd((__v2si)__m1, (__v2si)__m2);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/martineesmaa/android-ndk-r24/toolchains/llvm/prebuilt/linux-x86_64/lib64/clang/14.0.1/include/mmintrin.h:416:12: error: invalid conversion between vector type '__m64' (vector of 1 'long long' value) and integer type 'int' of different size
    return (__m64)__builtin_ia32_paddsb((__v8qi)__m1, (__v8qi)__m2);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/martineesmaa/android-ndk-r24/toolchains/llvm/prebuilt/linux-x86_64/lib64/clang/14.0.1/include/mmintrin.h:439:12: error: invalid conversion between vector type '__m64' (vector of 1 'long long' value) and integer type 'int' of different size
    return (__m64)__builtin_ia32_paddsw((__v4hi)__m1, (__v4hi)__m2);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/martineesmaa/android-ndk-r24/toolchains/llvm/prebuilt/linux-x86_64/lib64/clang/14.0.1/include/mmintrin.h:461:12: error: invalid conversion between vector type '__m64' (vector of 1 'long long' value) and integer type 'int' of different size
    return (__m64)__builtin_ia32_paddusb((__v8qi)__m1, (__v8qi)__m2);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/martineesmaa/android-ndk-r24/toolchains/llvm/prebuilt/linux-x86_64/lib64/clang/14.0.1/include/mmintrin.h:483:12: error: invalid conversion between vector type '__m64' (vector of 1 'long long' value) and integer type 'int' of different size
    return (__m64)__builtin_ia32_paddusw((__v4hi)__m1, (__v4hi)__m2);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/martineesmaa/android-ndk-r24/toolchains/llvm/prebuilt/linux-x86_64/lib64/clang/14.0.1/include/mmintrin.h:504:12: error: invalid conversion between vector type '__m64' (vector of 1 'long long' value) and integer type 'int' of different size
    return (__m64)__builtin_ia32_psubb((__v8qi)__m1, (__v8qi)__m2);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
fatal error: too many errors emitted, stopping now [-ferror-limit=]
gmake[2]: *** [src_main/CMakeFiles/xevd_dynamic.dir/build.make:104: src_main/CMakeFiles/xevd_dynamic.dir/__/src_base/xevd_df.c.o] Error 1
20 errors generated.
20 errors generated.
gmake[2]: *** [src_main/CMakeFiles/xevd_dynamic.dir/build.make:76: src_main/CMakeFiles/xevd_dynamic.dir/xevdm.c.o] Error 1
gmake[1]: *** [CMakeFiles/Makefile2:171: src_main/CMakeFiles/xevd_dynamic.dir/all] Error 2
gmake[1]: *** Waiting for unfinished jobs....
gmake[2]: *** [src_main/CMakeFiles/xevd.dir/build.make:76: src_main/CMakeFiles/xevd.dir/xevdm.c.o] Error 1
20 errors generated.
gmake[2]: *** [src_main/CMakeFiles/xevd.dir/build.make:132: src_main/CMakeFiles/xevd.dir/__/src_base/xevd_ipred.c.o] Error 1
gmake[1]: *** [CMakeFiles/Makefile2:145: src_main/CMakeFiles/xevd.dir/all] Error 2
gmake: *** [Makefile:156: all] Error 2

So I can't add decoder for EVC to MPV, because the compilation of Android made errors, tried with latest NDK, same did not work.

However you have to create issue to https://github.com/mpeg5/xevd or maybe I can create issue problem for Android compilation.

Feel free to reply or ask question to me. Thank you! :)

Regards

MartinEesmaa commented 1 month ago

I'm gonna close the issue due to inactivity with no response for one month. Feel free to reopen the issue with or without a response. Thanks! :)

Sincerely, Martin Eesmaa