OpenHEVC / openHEVC

HEVC decoder
http://openhevc.github.io/openHEVC/
531 stars 192 forks source link

OpenHevc(android branch) supports SHVC decoding #44

Open JWSon opened 8 years ago

JWSon commented 8 years ago

Hi! I am going to ask a question about something that is important for what I am going to do. Actually, I’ve tried to build OpenHevc(android branch) on Android and I just compile it successfully. However, I wonder if it supports SHVC decoding or not because I only saw OpenHevc(hevc_rext branch) can decode shvc bitstream like this.

add -l layer with layer a number to select the layer in a SHVC bitstream

Is it available to OpenHevc(android branch)? Hopefully, it is going to work well.

pcabarat commented 8 years ago

Hi again,

SHVC supports is not fully implemented yet. If I'm not mistaken hevc_rext only supports SHM4.1 shvc bitstreams. If you'd like a more up to date version, I suggest you HEVC_extensions branch. It may not be totally stable but it adds support for SHM9 bitstreams. (still in progress) Concerning Android, it hasn't been tested yet on recent versions of this branch. I don't know if shvc upsampling filters optimizations are fully implemented yet, if it works it might be slow. Let us know if you managed to get something.

Pierre-Loup

JWSon commented 8 years ago

Thanks for your resoponse.

I builded the hevc_rext branch on the Ubuntu and decoded SHM4.1 shvc bitstreams successfully. However, I failed to build the hevc_rext branch on the Android. when trying to ndk-build the Android.mk, some error occured.

e.g error1.

jni/platform/arm/config.h:174:23: error: token "@" is not valid in preprocessor expressions

define HAVE_GMTIME_R @GMTIME_R_FOUND@

                   ^

jni/libavutil/time_internal.h:25:6: note: in expansion of macro 'HAVE_GMTIME_R'

if !HAVE_GMTIME_R && !defined(gmtime_r)

  ^

make: *\ [obj/local/armeabi/objs-debug/openhevc_rext/libavutil/parseutils.o] Error 1


error2.

ni/libavformat/matroska.c:151: error: undefined reference to 'av_stereo3d_alloc' jni/libavformat/matroskadec.c:1555: error: undefined reference to 'ff_vorbis_comment' jni/libavformat/mov.c:2804: error: undefined reference to 'av_display_rotation_get' jni/libavformat/mov.c:3985: error: undefined reference to 'ff_replaygain_export' jni/libavcodec/hevc.c:3052: error: undefined reference to 'av_stereo3d_create_side_data' collect2.exe: error: ld returned 1 exit status make: *\ [obj/local/armeabi-v7a/openhevc_rext] Error 1

How to build the hevc_rext branch on the Android? I look forward to your responses. Thanks! Regard, Son

kicha555in commented 7 years ago

I am also facing this issues, Anybody resolve this issue

jni/libavformat/matroska.c:151: error: undefined reference to 'av_stereo3d_alloc' jni/libavformat/matroskadec.c:1555: error: undefined reference to 'ff_vorbis_comment' jni/libavformat/mov.c:3985: error: undefined reference to 'ff_replaygain_export' jni/libavformat/mov.c:2804: error: undefined reference to 'av_display_rotation_get' jni/libavcodec/fft_template.c:174: error: undefined reference to 'ff_fft_init_arm' jni/libavcodec/hevc.c:3136: error: undefined reference to 'av_stereo3d_create_side_data' jni/libavcodec/hpeldsp.c:363: error: undefined reference to 'ff_hpeldsp_init_arm' jni/libavcodec/rdft.c:126: error: undefined reference to 'ff_rdft_init_arm' jni/main_hm/main.c:205: error: undefined reference to 'IsCloseWindowEvent' jni/main_hm/main.c:205: error: undefined reference to 'IsCloseWindowEvent' jni/main_hm/main.c:205: error: undefined reference to 'IsCloseWindowEvent' /home/krishnamurthy/Android/Sdk/ndk-bundle/build/core/build-binary.mk:702: recipe for target 'obj/local/armeabi-v7a/libopenhevc.so' failed clang++: error: linker command failed with exit code 1 (use -v to see invocation) make: *** [obj/local/armeabi-v7a/libopenhevc.so] Error 1

Thanks,

Regards, Krishnamurthy.R

kicha555in commented 7 years ago

I changed the Android.mk as below and then I could able to successfully compiled.

LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) APP_STL := gnustl_static APP_OPTIM := debug LOCAL_ARM_MODE := arm TARGET_PLATFORM := android-23 TARGET_ARCH_ABI := armeabi-v7a

LOCAL_CFLAGS := -I

LOCAL_CFLAGS += -g LOCAL_CFLAGS += -ggdb LOCAL_CFLAGS += -O1

LOCAL_CFLAGS += -mthumb

LOCAL_CFLAGS += -mfloat-abi=softfp LOCAL_LDLIBS := -lz LOCAL_LDFLAGS += -fuse-ld=bfd LOCAL_ALLOW_UNDEFINED_SYMBOLS:= true