1

如何在使用 ijkplayer 解码时将相同的解码帧合并两次。我的解码帧大小为 4096*2048。我创建了一个大小为 4096*4096 的大叠加层,并希望将同一个框架两次放在另一个之上。这是我在 ijkplayer 中使用的一段代码

 int bytes_num = avpicture_get_size(12,4096, 2048);//4096);//4096, 2048);
 if(buff==NULL)
 {
    buff = (uint8_t * ) av_malloc(bytes_num);   
 }
 uint8_t * buff_point;
 memcpy(buff_point, src_frame->data, sizeof(src_frame->data));
 buff_point += sizeof(src_frame->data);
 memcpy(buff_point, src_frame->data, sizeof(src_frame->data));
 buff_point += sizeof(src_frame->data);

 src_frame->width = 4096; //4096
 src_frame->height = 4096;
 src_frame->format = 12;

 av_image_fill_arrays(src_frame->data, src_frame->linesize, buff, 12/*src_frame->format*/, 4096, 4096/*8192*/, 32);

//creating the overlay
SDL_VoutSetOverlayFormat(ffp->vout, ffp->overlay_format);
vp->bmp = SDL_Vout_CreateOverlay(4096, 4096, 12, ffp->vout);

 //filling the overlay with frame
 if (SDL_VoutFillFrameYUVOverlay(vp->bmp,src_frame) < 0) {
        av_log(NULL, AV_LOG_FATAL, "Cannot initialize the conversion context\n");
        exit(1);
}

SDL_VoutDisplayYUVOverlay(ffp->vout, vp->bmp);

src_frame 是 AVFrame* 类型的解码帧。谁能告诉我在合并时我在哪里犯了错误,因为我只能在 android 上看到黑屏。

虽然pix_fmt是 YUVJ420P 但我无法观察到三个数据平面。data[0],data[1]并且data[2]都是空指针。

谁能帮助我如何使用 ijkplayer 合并两个解码图像并将其显示在同一表面上。

4

0 回答 0