【问题标题】:x264 Encoding use x264_picture_clean crashx264 编码使用 x264_picture_clean 崩溃
【发布时间】:2023-03-03 00:21:02
【问题描述】:

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

enter image description here

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

这里有更多关于崩溃时 pPic_in 的详细信息 enter image description here

非常感谢你

【问题讨论】:

  • 请删除图像的链接,并将其粘贴为代码,并在编译器通过错误消息发出错误信号的位置添加注释。
  • Thread1:EXC_Bad_ACCESS(代码 = 1 地址 = 0x107e3bff8)

标签: ios iphone ffmpeg x264 libx264


【解决方案1】:

我怀疑这个错误的发生是因为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是动态分配的,还需要在别处解除分配)。

顺便说一句,x264_picture_initx264_picture_alloc 内被调用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-28
    • 2014-11-18
    • 1970-01-01
    • 2012-10-04
    • 2017-12-24
    相关资源
    最近更新 更多