OpenHEVC/openHEVC

OpenHevc(android branch) supports SHVC decoding

Opened this issue · 4 comments

JWSon commented

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.

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

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

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

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