Saturday, December 7, 2013

NDK extrenal libs

After googled a lot, I figured out how to include existing prebuilt libs.

You have to add local modules (static or shared), and let your main module to call them in the android.mk.


#Here is the format for static libs. The shared ones work in the similar way.
#I use libpng as an example

include $(CLEAR_VARS)
LOCAL_MODULE := libpng
LOCAL_SRC_FILES := PATH/TO/YOUR/LIB/libpng.a
LOCAL_EXPORT_C_INCLUDES := PATH/TO/YOUR/INCLUDE
include $(PREBUILT_STATIC_LIBRARY)

#call it in your main module

include $(CLEAR_VARS)

LOCAL_C_INCLUDES := $(ANDROID_TOOLCHAIN)/include/
LOCAL_C_INCLUDES += $(ANDROID_SYSROOT)/include/

LOCAL_MODULE := YourModuleName
LOCAL_CFLAGS := -Wall -Wextra
LOCAL_CPPFLAGS += -std=c++11
LOCAL_SRC_FILES := YourModule.cpp

#add your external static modules
LOCAL_STATIC_LIBRARIES := libpng
LOCAL_LDLIBS := -llog -lGLESv2 -lEGL -landroid

include $(BUILD_SHARED_LIBRARY)



Tuesday, November 5, 2013

assimp--3.0.1270 clang patch

clang has some different style from gcc. assimp works perfectly with gcc but no luck with clang.

I googled a lot and borrow some patches online. This is tested with linux 64bit clang 3.3 and android ndk clang 3.3


Friday, October 25, 2013

opengl matrix, column major

When I implement lootat function with rotation and translation, I found out the opengl matrix is saved in column major, if you were using 1d array. 2d arrays are with the intuitive representations.

Thursday, October 24, 2013

Simple Makefile to compile and link all the cpp files in the folder

DEFINC := /usr/include/
LIBS := /usr/lib/
INC := $(DEFINC)


CXXFLAGS :=
CXXFLAGS = -I$(INC)
CXXFLAGS += -O2 -march=native
CXXFLAGS += -fPIC

LINK :=
LDFLAGS :=
LDFLAGS += -L$(LIBS) $(LINK)


CXX = g++
LD = g++

SRC := $(wildcard ./*.cpp)
OBJ := $(addprefix ./,$(notdir $(SRC:.cpp=.o)))
TARGET := test


all: $(TARGET)

$(TARGET): $(OBJ)
$(CXX) $(LDFLAGS) -o $@ $^

obj/%.o: src/%.cpp
$(CXX) $(CXXFLAGS) -c -o $@ $<

clean :
rm -rf ./*.o $(TARGET)

Thursday, September 12, 2013

PCM audio

PCM uses signed int to represent sound.U can generate a family of sin function samples, rescale them form -signed_int_max ~ signed_int_max, and convert them into a byte array. Android lib will play it.

Sunday, February 10, 2013

opencv python 64bit waitkey

There is a bug for opencv python api under 64 bit. cv2.WaitKey return a value other than a normal int. Maybe it is a long int.  Usually it is 1048576(0x100000) more than what it should be. I have to add numpy.int16(cv.WaitKey(10)) to fix it.