繁体   English   中英

x264编码使用x264_picture_clean崩溃

[英]x264 Encoding use x264_picture_clean crash

当我使用iphone编码CMSampleBufferRef到H264时,它崩溃了x264_picture_clean我不知道如何处理它

在此输入图像描述

x264_picture_t* pPic_in; 

这是关于pPic_in的初始化

pPic_in = (x264_picture_t*)malloc(sizeof(x264_picture_t));
pPic_out = (x264_picture_t*)malloc(sizeof(x264_picture_t));

x264_picture_init(pPic_out);

x264_picture_init(pPic_in);
x264_picture_alloc(pPic_in, csp, pParam->i_width, pParam->i_height);

pPic_in->img.i_stride[0] = width;
pPic_in->img.i_stride[1] = width / 2;
pPic_in->img.i_stride[2] = width / 2;
pPic_in->img.i_plane = 3;

我在这里设置数据

    picture_buf = yuv420_data;
    pPic_in->img.plane[0] = picture_buf;
    pPic_in->img.plane[1] = picture_buf + y_size;
    pPic_in->img.plane[2] = picture_buf + y_size*5/4;

它看起来很好,当我在我的iPhone上运行它,但有时它会崩溃

x264_picture_clean

当崩溃occer在这里输入图像描述时,这里有更多细节abPot_in

十分感谢

我怀疑发生了这个错误,因为x264_picture_clean试图释放分配给img.plane[0]的内存:

x264_free( pic->img.plane[0] );

(见x264/common.c

但是img.plane[0]现在指向yuv420_data ,而不是在x264_picture_alloc内部分配的内存。

由于x264_picture_clean基本上只是释放img.plane[0]指向的已分配内存并重新初始化pPic_in ,因此您可以跳过调用x264_picture_clean而不会出现内存泄漏。 (如果动态分配yuv420_data ,您仍需要在其他位置解除分配)。

BTW, x264_picture_initx264_picture_alloc

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM