महत्वपूर्ण संपादित छवियों तारीख तक नहीं हो सकता है, लेकिन काम संस्करणों नीचे पर परीक्षण किया गया:
एक अद्यतन संस्करण @ praneetloke के समाधान के (opus-1.1.2 के लिए काम करता है)। कुछ अतिरिक्त के साथ एक अलग दृष्टिकोण। सब से पहले नीचे उपयोग करने के लिए मेरी संरचना (मैं और अधिक पुस्तकालयों का उपयोग करने का इरादा है, इसलिए मैं अपने सब-फ़ोल्डर में रचना डाल दिया।)
दूसरी बात मैं एक रूट Android.mk
फ़ाइल और एक दूसरे फ़ोल्डर रचना के अंदर है -1.1.2।
यहाँ जड़ Android.mk
फ़ाइल है:
LOCAL_PATH := $(call my-dir)
OPUS_DIR := opus-1.1.2
include $(OPUS_DIR)/Android.mk
include $(CLEAR_VARS)
LOCAL_MODULE := codec
LOCAL_SRC_FILES := Opus_jni.cpp
LOCAL_CFLAGS := -DNULL=0
LOCAL_LDLIBS := -lm -llog
LOCAL_C_INCLUDES := $(LOCAL_PATH)/$(OPUS_DIR)/include
LOCAL_SHARED_LIBRARIES := opus
include $(BUILD_SHARED_LIBRARY)
Android.mk
रचना-1.1.2 फ़ोल्डर के अंदर फाइल के नीचे है:
#Backing up previous LOCAL_PATH so it does not screw with the root Android.mk file
LOCAL_PATH_OLD := $(LOCAL_PATH)
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
#include the .mk files
include $(LOCAL_PATH)/celt_sources.mk
include $(LOCAL_PATH)/silk_sources.mk
include $(LOCAL_PATH)/opus_sources.mk
LOCAL_MODULE := opus
#fixed point sources
SILK_SOURCES += $(SILK_SOURCES_FIXED)
#ARM build
CELT_SOURCES += $(CELT_SOURCES_ARM)
SILK_SOURCES += $(SILK_SOURCES_ARM)
LOCAL_SRC_FILES := \
$(CELT_SOURCES) $(SILK_SOURCES) $(OPUS_SOURCES)
LOCAL_LDLIBS := -lm -llog
LOCAL_C_INCLUDES := \
$(LOCAL_PATH)/include \
$(LOCAL_PATH)/silk \
$(LOCAL_PATH)/silk/fixed \
$(LOCAL_PATH)/celt
LOCAL_CFLAGS := -DNULL=0 -DSOCKLEN_T=socklen_t -DLOCALE_NOT_USED -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64
LOCAL_CFLAGS += -Drestrict='' -D__EMX__ -DOPUS_BUILD -DFIXED_POINT=1 -DDISABLE_FLOAT_API -DUSE_ALLOCA -DHAVE_LRINT -DHAVE_LRINTF -DAVOID_TABLES
LOCAL_CFLAGS += -w -std=gnu99 -O3 -fno-strict-aliasing -fprefetch-loop-arrays -fno-math-errno
LOCAL_CPPFLAGS := -DBSD=1
LOCAL_CPPFLAGS += -ffast-math -O3 -funroll-loops
include $(BUILD_SHARED_LIBRARY)
#Putting previous LOCAL_PATH back here
LOCAL_PATH := $(LOCAL_PATH_OLD)
यह है कि यह कैसे opus- अंदर की तरह लग रहा है 1.1.2 फ़ोल्डर:
मूल स्रोतों का एकमात्र स्पर्श Android.mk
फ़ाइल का एकमात्र स्पर्श है। कुछ भी नहीं हटाया गया।
इस तरह से मैं एक अलग पुस्तकालय की तरह ओपस का उपयोग और अद्यतन कर सकता हूं।
यहां उन लोगों के लिए अतिरिक्त है जो एंड्रॉइड में संकलन और उपयोग करना चाहते हैं; आवरण स्रोत, आंशिक रूप से:
#include <jni.h>
#include <android/log.h>
#include <opus.h>
/* Header for class net_abcdefgh_opustrial_codec_Opus */
#ifndef _Included_net_abcdefgh_opustrial_codec_Opus
#define _Included_net_abcdefgh_opustrial_codec_Opus
#define TAG "Opus_JNI"
#define LOGV(...) __android_log_print(ANDROID_LOG_VERBOSE, TAG,__VA_ARGS__)
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG , TAG,__VA_ARGS__)
#define LOGI(...) __android_log_print(ANDROID_LOG_INFO , TAG,__VA_ARGS__)
#define LOGW(...) __android_log_print(ANDROID_LOG_WARN , TAG,__VA_ARGS__)
#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR , TAG,__VA_ARGS__)
#ifdef __cplusplus
extern "C" {
#endif
JNIEXPORT jint JNICALL Java_net_abcdefgh_opustrial_codec_Opus_open
(JNIEnv *env, jobject thiz){
...
return error;
}
JNIEXPORT jint JNICALL Java_net_abcdefgh_opustrial_codec_Opus_decode
(JNIEnv * env, jobject thiz, jbyteArray jencoded, jint jencodedOffset, jint jencodedLength, jbyteArray jpcm, jint jpcmOffset, jint jframeSize) {
...
return decodedSize;
}
JNIEXPORT jint JNICALL Java_net_abcdefgh_opustrial_codec_Opus_encode
(JNIEnv * env, jobject thiz, jbyteArray jpcm, jint jpcmOffset, jint jpcmLength, jbyteArray jencoded, jint jencodedOffset) {
...
return encodedSize;
}
JNIEXPORT void JNICALL Java_net_abcdefgh_opustrial_codec_Opus_close
(JNIEnv *env, jobject thiz){
...
}
#ifdef __cplusplus
}
#endif
#endif
Application.mk
फ़ाइल (वैकल्पिक)
APP_ABI := all # mips, armeabi, armeabi-v7a, x86 etc. builds
इसे ओपस लोगों को वापस क्यों न दें? – Samveen
अच्छा विचार। करूँगा। – Stanley
हे स्टेनली, क्या इसे कभी भी आधिकारिक ओपस रिलीज में जोड़ा गया है? ओपस का कौन सा संस्करण इस मेकफ़ाइल के लिए था? क्या आपके पास v1.1 के लिए एक अपडेटेड मेकफ़ाइल है? –