[英]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_init
在x264_picture_alloc
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.