本文记录的是从AVFrame到MediaFrame数组的实现过程
目的
前提:假定你已经看完了《从AVFrame到MediaFrame数组(三)》,学会了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数组》系列记录结束!
链接到第一文:《从AVFrame到MediaFrame数组(一)》
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。