從AVFrame到MediaFrame數組(四)

本文記錄的是從AVFrame到MediaFrame數組的實現過程

目的

前提:假定你已經看完了《從AVFrame到MediaFrame數組(三)》

實現從AVFrame到自定義實體類MediaFrame數組的過程

修改Java層回調接口

JNIHelper中添加一個方法:

public class JNIHelper {
   public void onReceived(MediaFrame[] frame){
       // TODO: Java層接收到MediaFrame[]後,可以開始搞事情了
   }
}

封裝MediaFrame數組

Native層封裝MediaFrame數組,分爲2步:
1. 創建MediaFrame數組對象

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);

Native回調Java層接口

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數組》系列記錄結束!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章