簡體   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