<div dir="ltr"><div dir="ltr"><div class="gmail_default" style="font-family:tahoma,sans-serif;font-size:small">Hi</div><div class="gmail_default" style="font-family:tahoma,sans-serif;font-size:small">In the following code, I can't figure out what's wrong:</div><div class="gmail_default"><div class="gmail_default"><font face="tahoma, sans-serif"><br></font></div><div class="gmail_default"><font face="monospace, monospace">uint8_t *dstData[4];</font></div><div class="gmail_default"><font face="monospace, monospace">int dstLinesize[4];</font></div><div class="gmail_default"><font face="monospace, monospace">AVPixelFormat convertToPixFmt = AV_PIX_FMT_RGBA;</font></div><div class="gmail_default"><font face="monospace, monospace">int ret;</font></div><div class="gmail_default"><font face="monospace, monospace"><br></font></div><div class="gmail_default"><font face="monospace, monospace">// ...</font></div><div class="gmail_default"><font face="monospace, monospace"><br></font></div><div class="gmail_default"><font face="monospace, monospace">printf("tmp_frame format: %d (%s) %dx%d\n", tmp_frame->format, av_get_pix_fmt_name((AVPixelFormat)tmp_frame->format), tmp_frame->width, tmp_frame->height);</font></div><div class="gmail_default"><font face="monospace, monospace">// The above line prints: tmp_frame format: 23 (nv12) 480x480</font></div><div class="gmail_default"><font face="monospace, monospace"><br></font></div><div class="gmail_default"><font face="monospace, monospace">int size = av_image_get_buffer_size(convertToPixFmt, tmp_frame->width, tmp_frame->height, 1);</font></div><div class="gmail_default"><font face="monospace, monospace">uint8_t *buffer = (uint8_t *) av_malloc(size);</font></div><div class="gmail_default"><font face="monospace, monospace"><br></font></div><div class="gmail_default"><font face="monospace, monospace">ret = av_image_copy_to_buffer(buffer, size,</font></div><div class="gmail_default"><font face="monospace, monospace"><span style="white-space:pre">    </span>(const uint8_t * const *)&tmp_frame->data[i],</font></div><div class="gmail_default"><font face="monospace, monospace"><span style="white-space:pre">   </span>(const int *)&tmp_frame->linesize[i], (AVPixelFormat)tmp_frame->format,</font></div><div class="gmail_default"><font face="monospace, monospace"><span style="white-space:pre">      </span>tmp_frame->width, tmp_frame->height, 1);</font></div><div class="gmail_default"><font face="monospace, monospace">ASSERT(ret >= 0);</font></div><div class="gmail_default"><font face="monospace, monospace"><br></font></div><div class="gmail_default"><font face="monospace, monospace">ret = av_image_fill_arrays(dstData, dstLinesize, buffer, convertToPixFmt, dest_width, dest_height, 1);</font></div><div class="gmail_default"><font face="monospace, monospace">ASSERT(ret >= 0);</font></div><div class="gmail_default"><font face="monospace, monospace"><br></font></div><div class="gmail_default"><font face="monospace, monospace">ret = sws_scale(</font></div><div class="gmail_default"><font face="monospace, monospace"><span style="white-space:pre">   </span>convertContext,</font></div><div class="gmail_default"><font face="monospace, monospace"><span style="white-space:pre">        </span>dstData,</font></div><div class="gmail_default"><font face="monospace, monospace"><span style="white-space:pre">       </span>dstLinesize,</font></div><div class="gmail_default"><font face="monospace, monospace"><span style="white-space:pre">   </span>0,</font></div><div class="gmail_default"><font face="monospace, monospace"><span style="white-space:pre">     </span>dest_width,</font></div><div class="gmail_default"><font face="monospace, monospace"><span style="white-space:pre">    </span>convertedFrame->data,</font></div><div class="gmail_default"><font face="monospace, monospace"><span style="white-space:pre">       </span>convertedFrame->linesize);</font></div><div class="gmail_default"><font face="monospace, monospace">printf("sws_scale returns %d\n", ret);  // prints: sws_scale returns 0</font></div><div class="gmail_default"><font face="monospace, monospace">ASSERT(ret == tmp_frame->height);</font></div><div class="gmail_default"><font face="monospace, monospace"><br></font></div><div class="gmail_default"><font face="monospace, monospace">// ...</font></div><div style="font-family:tahoma,sans-serif;font-size:small"><br></div><div style="font-size:small"><font face="tahoma, sans-serif">It's part of a code which uses dxva2 to obtain tmp_frame. I inspired the code from hw_decode.c and am sure that there's no mistake in the code. The date is properly given in NV12 format. The error occurs just when I call sws_scale and it's:</font></div><div style="font-size:small"><font face="tahoma, sans-serif"><br></font><font face="monospace, monospace" color="#ff0000">bad src image pointers</font></div><div style="font-size:small"><font face="monospace, monospace" color="#ff0000"><br></font></div><div style="font-family:tahoma,sans-serif;font-size:small">So I don't know how to provide pointers not to get this error and sws_scale may work properly.</div><div style="font-family:tahoma,sans-serif;font-size:small">Any idea?</div></div></div></div>