最近在做voip相关的项目,上位机直接使用linphone进行二次开发,下位机下位机使用的是利用osip、ffmpeg开发的sip客户端。测试时ffmpeg解码时打印出如下警告信息:
显然slice数超过了定义的最大值,MAX_SLICES定义
尝试增加到32时,下位机解码出错了,没找到原因,所以从
Too many slices (17 >= 16), increase MAX_SLICES and recompil
Too many slices (18 >= 16), increase MAX_SLICES and recompil
Too many slices (20 >= 16), increase MAX_SLICES and recompil
... 相关代码在h264.c中
...
h0->last_slice_type = slice_type;
h->slice_num = ++h0->current_slice;
if(h->slice_num >= MAX_SLICES){
av_log(s->avctx, AV_LOG_ERROR, "Too many slices (%d >= %d), increase MAX_SLICES and recompile\n", h->slice_num, MAX_SLICES);
}
...
显然slice数超过了定义的最大值,MAX_SLICES定义
/**
* The maximum number of slices supported by the decoder.
* must be a power of 2
*/
#define MAX_SLICES 16
尝试增加到32时,下位机解码出错了,没找到原因,所以从

在进行voip项目开发时,使用linphone进行上位机开发,下位机使用osip和ffmpeg的sip客户端。在测试过程中,由于H264解码警告,提示slice数超过MAX_SLICES定义的最大值16。尝试增大MAX_SLICES并未解决问题,发现x264编码参数中的i_slice_count设置无效,原因是x264_encoder.c中当i_slice_max_mbs或i_slice_max_size不为0时,i_slice_count会被清0。通过注释掉导致问题的代码段,成功解决解码警告。
最低0.47元/天 解锁文章
4241

被折叠的 条评论
为什么被折叠?



