当我执行以下代码时:
AVFrame tmp = frames_video1[k]; //AVFrame frames_video1[]
AVFrame *avf1 = &tmp;
AVFrameSideData* avfsd1=NULL;
if(avf1->side_data != NULL)
printf("avf1->side_data is not NULL!!...........\n");
avfsd1 = av_frame_get_side_data(avf1, AV_FRAME_DATA_MOTION_VECTORS);
我在av_frame_get_side_data(avf1,av_frame_data_MOTION_VECTORS)处遇到分段错误:
avf1->side_data is not NULL!!...........
Segmentation fault (core dumped)
为什么?
最佳答案
以下是gdb的输出:
(gdb) print avf1->side_data->type
Cannot access memory at address 0x0
(gdb) print frames_video1[1]->side_data->type
Cannot access memory at address 0x0
令人惊讶的是,avf1指向一个
side_data->type
为空的损坏帧,这是异常的。问题的原因在别的地方。