0
几乎无处不在我看去,srcSliceY值设置为0 在它wrriten文档:中的ffmpeg库sws_scale功能srcSliceY参数
c the scaling context previously created with sws_getContext()
srcSlice the array containing the pointers to the planes of the source slice
srcStride the array containing the strides for each plane of the source image
srcSliceY the position in the source image of the slice to process, that is the number (counted starting from zero) in the image of the first row of the slice
...
据我不清楚这是什么意思“了源图像“。这是否意味着源片?没有称为“源图像”的参数。
我写了这个代码:
SwsContext *ctx = sws_getContext(width, height, AV_PIX_FMT_GRAY8,
dwidth, dheight, AV_PIX_FMT_GRAY8,
SWS_BILINEAR, NULL, NULL, NULL);
const uint8_t* srcSlice[1] = { pSrc};
const int srcStride[1] = { width };
int srcSliceH = height;
const int dstStride[1] = { dwidth };
printf("srcStride=%d, height =%d\n",srcStride[0],srcSliceH);
for(int i=0;i<100;i++){
int t = sws_scale(ctx, srcSlice, srcStride, i, srcSliceH, &pDst, dstStride);
if(t != 0)
printf("i=%d t= %d\n",i,t);
}
我得到的输出:
srcStride=384, height =30
[swscaler @ 0x1b0ba60] Warning: data is not aligned! This can lead to a speedloss
i=0 t= 2
i=4 t= 1
i=14 t= 1
i=24 t= 1
i=33 t= 1
i=43 t= 1
i=52 t= 1
i=62 t= 1
i=72 t= 1
i=81 t= 1
i=91 t= 1
望着sws_scale的源代码,它在错误或无效的输入返回0。所以我得出结论:对于迭代中的srcSliceY的大部分值,sws_returns错误。但目前尚不清楚什么是有效的。