<div dir="ltr"><p class="MsoNormal"><span lang="EN-US">I want to use ffmpeg to convert image from
RGB48 into YUV422, then generate mp4 file finally.</span></p>

<p class="MsoNormal"><span lang="EN-US">But I found that conversion result shows
the color of YUV422 image is not same as RGB48. I also tried to convert
image from RGB24 (just convert from RGB48) into YUV422, no issue found.</span></p><p class="MsoNormal"><span lang="EN-US"></span></p><p class="MsoNormal"><br></p><p class="MsoNormal"><span lang="EN-US">Do anyone know is this the bug in ffmpeg for
such conversion or some mistake in my code?</span></p><br><p class="MsoNormal"><span lang="EN-US">Thanks so much in advance!!</span></p>

<p class="MsoNormal"><span lang="EN-US"> </span></p>

<p class="MsoNormal"><span lang="EN-US">The following code is from my project and used
to conversion:</span></p><p class="MsoNormal"><span lang="EN-US"><br></span></p>

<p class="MsoNormal"><span style="color:rgb(116,27,71)"><span lang="EN-US">void conversion()</span></span></p><span style="color:rgb(116,27,71)">

</span><p class="MsoNormal"><span style="color:rgb(116,27,71)"><span lang="EN-US">{</span></span></p><span style="color:rgb(116,27,71)">

</span><p class="MsoNormal" style="text-indent:20.25pt"><span style="color:rgb(116,27,71)"><span lang="EN-US">//xxxxxxxx;</span></span></p><span style="color:rgb(116,27,71)">

</span><p class="MsoNormal" style="text-indent:20.25pt"><span style="color:rgb(116,27,71)"><span lang="EN-US"> </span></span></p><span style="color:rgb(116,27,71)">

</span><p class="MsoNormal" style="text-indent:21pt"><span style="color:rgb(116,27,71)"><span lang="EN-US">rgb_pixel_format = AV_PIX_FMT_RGB48BE;</span></span></p><span style="color:rgb(116,27,71)">

</span><p class="MsoNormal" style="text-indent:21pt"><span style="color:rgb(116,27,71)"><span lang="EN-US">pCodecCtx->pix_fmt = yuv_pixel_format = AV_PIX_FMT_YUV422P;</span></span></p><span style="color:rgb(116,27,71)">

</span><p class="MsoNormal" style="text-indent:21pt"><span style="color:rgb(116,27,71)"><span lang="EN-US">scale_flag = SWS_POINT;</span></span></p><span style="color:rgb(116,27,71)">

</span><p class="MsoNormal" style="text-indent:21pt"><span style="color:rgb(116,27,71)"><span lang="EN-US"> </span></span></p><span style="color:rgb(116,27,71)">

</span><p class="MsoNormal" style="text-indent:20.25pt"><span style="color:rgb(116,27,71)"><span lang="EN-US">//xxxxxxxx;</span></span></p><span style="color:rgb(116,27,71)">

</span><p class="MsoNormal"><span style="color:rgb(116,27,71)"><span lang="EN-US"> </span></span></p><span style="color:rgb(116,27,71)">

</span><p class="MsoNormal"><span style="color:rgb(116,27,71)"><span lang="EN-US"><span>   
</span>size = avpicture_get_size(pCodecCtx->pix_fmt, pCodecCtx->width,
pCodecCtx->height);<span>  </span></span></span></p><span style="color:rgb(116,27,71)">

</span><p class="MsoNormal"><span style="color:rgb(116,27,71)"><span lang="EN-US"><span>   
</span>yuv_buff = (unsigned char*)av_malloc(size); </span></span></p><span style="color:rgb(116,27,71)">

</span><p class="MsoNormal"><span style="color:rgb(116,27,71)"><span lang="EN-US"><span>    </span></span></span></p><span style="color:rgb(116,27,71)">

</span><p class="MsoNormal"><span style="color:rgb(116,27,71)"><span lang="EN-US"><span>   
</span>pSwsCtx=
sws_getContext(pCodecCtx->width,pCodecCtx->height,rgb_pixel_format,</span></span></p><span style="color:rgb(116,27,71)">

</span><p class="MsoNormal"><span style="color:rgb(116,27,71)"><span lang="EN-US"><span>                   
</span>pCodecCtx->width,pCodecCtx->height,yuv_pixel_format,scale_flag,NULL,NULL,NULL);<span>    </span></span></span></p><span style="color:rgb(116,27,71)">

</span><p class="MsoNormal"><span style="color:rgb(116,27,71)"><span lang="EN-US"> </span></span></p><span style="color:rgb(116,27,71)">

</span><p class="MsoNormal"><span style="color:rgb(116,27,71)"><span lang="EN-US"> </span></span></p><span style="color:rgb(116,27,71)">

</span><p class="MsoNormal"><span style="color:rgb(116,27,71)"><span lang="EN-US"><span>   
</span>for (file_index = 0; file_index < image_num; file_index ++)<span>    </span></span></span></p><span style="color:rgb(116,27,71)">

</span><p class="MsoNormal"><span style="color:rgb(116,27,71)"><span lang="EN-US"><span>    </span>{</span></span></p><span style="color:rgb(116,27,71)">

</span><p class="MsoNormal"><span style="color:rgb(116,27,71)"><span lang="EN-US"><span>       
</span>rgb_buff = (unsigned char*)av_malloc(image_data->length);<span>  </span></span></span></p><span style="color:rgb(116,27,71)">

</span><p class="MsoNormal"><span style="color:rgb(116,27,71)"><span lang="EN-US"><span>       
</span>memcpy(rgb_buff, image_data->data, image_data->length);<span>    </span></span></span></p><span style="color:rgb(116,27,71)">

</span><p class="MsoNormal"><span style="color:rgb(116,27,71)"><span lang="EN-US"> </span></span></p><span style="color:rgb(116,27,71)">

</span><p class="MsoNormal"><span style="color:rgb(116,27,71)"><span lang="EN-US"><span>       
</span>avpicture_fill((AVPicture*)pRGBFrame, (unsigned char*)rgb_buff,
rgb_pixel_format, nWidth, nHeight);<span>    </span></span></span></p><span style="color:rgb(116,27,71)">

</span><p class="MsoNormal"><span style="color:rgb(116,27,71)"><span lang="EN-US"> </span></span></p><span style="color:rgb(116,27,71)">

</span><p class="MsoNormal"><span style="color:rgb(116,27,71)"><span lang="EN-US"><span>       
</span>avpicture_fill((AVPicture*)pFrame, (unsigned char*)yuv_buff,
yuv_pixel_format, nWidth, nHeight);<span>    </span></span></span></p><span style="color:rgb(116,27,71)">

</span><p class="MsoNormal"><span style="color:rgb(116,27,71)"><span lang="EN-US"> </span></span></p><span style="color:rgb(116,27,71)">

</span><p class="MsoNormal"><span style="color:rgb(116,27,71)"><span lang="EN-US"><span>       
</span>//rotate RGB image</span></span></p><span style="color:rgb(116,27,71)">

</span><p class="MsoNormal"><span style="color:rgb(116,27,71)"><span lang="EN-US"><span>       
</span>pRGBFrame->data[0]<span>  </span>+=
pRGBFrame->linesize[0] * (nHeight - 1);<span>   
</span></span></span></p><span style="color:rgb(116,27,71)">

</span><p class="MsoNormal"><span style="color:rgb(116,27,71)"><span lang="EN-US"><span>       
</span>pRGBFrame->linesize[0] *= -1;<span>                       </span></span></span></p><span style="color:rgb(116,27,71)">

</span><p class="MsoNormal"><span style="color:rgb(116,27,71)"><span lang="EN-US"><span>       
</span>pRGBFrame->data[1]<span>  </span>+=
pRGBFrame->linesize[1] * (nHeight / 2 - 1);<span>    </span></span></span></p><span style="color:rgb(116,27,71)">

</span><p class="MsoNormal"><span style="color:rgb(116,27,71)"><span lang="EN-US"><span>       
</span>pRGBFrame->linesize[1] *= -1;<span>   
</span></span></span></p><span style="color:rgb(116,27,71)">

</span><p class="MsoNormal"><span style="color:rgb(116,27,71)"><span lang="EN-US"><span>       
</span>pRGBFrame->data[2]<span>  </span>+=
pRGBFrame->linesize[2] * (nHeight / 2 - 1);<span>    </span></span></span></p><span style="color:rgb(116,27,71)">

</span><p class="MsoNormal"><span style="color:rgb(116,27,71)"><span lang="EN-US"><span>       
</span>pRGBFrame->linesize[2] *= -1;<span>   
</span></span></span></p><span style="color:rgb(116,27,71)">

</span><p class="MsoNormal"><span style="color:rgb(116,27,71)"><span lang="EN-US"> </span></span></p><span style="color:rgb(116,27,71)">

</span><p class="MsoNormal"><span style="color:rgb(116,27,71)"><span lang="EN-US"><span>       
</span>//covert RGB into YUV</span></span></p><span style="color:rgb(116,27,71)">

</span><p class="MsoNormal"><span style="color:rgb(116,27,71)"><span lang="EN-US"><span>       
</span>sws_scale(pSwsCtx,pRGBFrame->data,pRGBFrame->linesize,0,pCodecCtx->height,pFrame->data,pFrame->linesize);<span>    </span></span></span></p><span style="color:rgb(116,27,71)">

</span><p class="MsoNormal"><span style="color:rgb(116,27,71)"><span lang="EN-US"><span>           
</span>yuv_file = fopen(yuv_rst_file[file_index], "wb");</span></span></p><span style="color:rgb(116,27,71)">

</span><p class="MsoNormal"><span style="color:rgb(116,27,71)"><span lang="EN-US"><span>           
</span></span></span></p><span style="color:rgb(116,27,71)">

</span><p class="MsoNormal"><span style="color:rgb(116,27,71)"><span lang="EN-US"><span>           
</span>fseek(yuv_file, 0L, SEEK_END);</span></span></p><span style="color:rgb(116,27,71)">

</span><p class="MsoNormal"><span style="color:rgb(116,27,71)"><span lang="EN-US"><span>           
</span>rewind(yuv_file);</span></span></p><span style="color:rgb(116,27,71)">

</span><p class="MsoNormal"><span style="color:rgb(116,27,71)"><span lang="EN-US"><span>           
</span>fwrite(pFrame->data[0],(pCodecCtx->width)*(pCodecCtx->height),1,yuv_file);
</span></span></p><span style="color:rgb(116,27,71)">

</span><p class="MsoNormal"><span style="color:rgb(116,27,71)"><span lang="EN-US"><span>           
</span>fwrite(pFrame->data[1],(pCodecCtx->width)*(pCodecCtx->height)/2,1,yuv_file);
</span></span></p><span style="color:rgb(116,27,71)">

</span><p class="MsoNormal"><span style="color:rgb(116,27,71)"><span lang="EN-US"><span>           
</span>fwrite(pFrame->data[2],(pCodecCtx->width)*(pCodecCtx->height)/2,1,yuv_file);
</span></span></p><span style="color:rgb(116,27,71)">

</span><p class="MsoNormal"><span style="color:rgb(116,27,71)"><span lang="EN-US"><span>           
</span>fclose(yuv_file);<span>   </span></span></span></p><span style="color:rgb(116,27,71)">

</span><p class="MsoNormal"><span style="color:rgb(116,27,71)"><span lang="EN-US"><span>       
</span>}</span></span></p><span style="color:rgb(116,27,71)">

</span><p class="MsoNormal"><span style="color:rgb(116,27,71)"><span lang="EN-US">}</span></span></p></div>