本文記錄的是 從AVFrame到MediaFrame數組的實現過程
前提:假定你已經看完了 《從AVFrame到MediaFrame數組(三)》,學會了MediaFrame的建立
實現從AVFrame到自定義實體類MediaFrame數組的過程segmentfault
JNIHelper中添加一個方法:數組
public class JNIHelper { public void onReceived(MediaFrame[] frame){ // TODO: Java層接收到MediaFrame[]後,能夠開始搞事情了 } }
Native層封裝MediaFrame數組,分爲2步:
1. 建立MediaFrame數組對象 code
jclass clz_media_frame = env->FindClass("me/oogh/xplayer/MediaFrame"); // NewObjectArray(數組大小, 元素類型, 元素初始化值) jobjectArray media_frames = env->NewObjectArray(2, clz_media_frame, NULL);
2. 給數組賦值對象
假定這裏你已經看過 《從AVFrame到MediaFrame數組(三)》,學會了建立MediaFrame
假定你已經建立了兩個MediaFrame(jobject類型): obj1和obj2
// SetObjectArrayElement(數組對象, 索引角標, 元素對象) env->SetObjectArrayElement(media_frames, 0, obj1); env->SetObjectArrayElement(media_frames, 1, obj2);
jclass clz_jni_helper = env->FindClass("me/oogh/xplayer/JNIHelper"); jmethodID cb_received = env->GetMethodID(clz_jni_helper, "onReceived", "([Lme/oogh/xplayer/MediaFrame;)V"); env->CallVoidMethod(obj, cb_received, media_frames);
至此,從AVFrame到MediaFrame數組,在將MediaFrame數組上傳,就已經完成了,《從AVFrame到MediaFrame數組》系列記錄結束!索引
連接到第一文:《從AVFrame到MediaFrame數組(一)》接口