libswscale을 사용하여 YUV 프레임을 RGB로 변환하려고합니다.avcodec YUV to RGB
AVFrame *RGBFrame;
SwsContext *ConversionContext;
ConversionContext = sws_getCachedContext(NULL, FrameWidth, FrameHeight, AV_PIX_FMT_YUV420P, FrameWidth, FrameHeight, AV_PIX_FMT_RGB24, SWS_BILINEAR, 0, 0, 0);
RGBFrame = av_frame_alloc();
avpicture_fill((AVPicture *)RGBFrame, &FillVect[0], AV_PIX_FMT_RGB24, FrameWidth, FrameHeight);
sws_scale(ConversionContext, VideoFrame->data, VideoFrame->linesize, 0, VideoFrame->height, RGBFrame->data, RGBFrame->linesize);
내 프로그램이 sws_scale 기능에 세그먼트 폴트를 수행
여기 내 코드입니다.
VideoFrame은 내 디코딩 된 프레임을 보유하고있는 AVFrame 구조체입니다. YUV420P 이론적 하나의 평면을 가지고 있지만
가VideoFrame->data[0] // Y array, linesize = frame width
VideoFrame->data[1] // U array, linesize = frame width/2
VideoFrame->data[2] // V array, linesize = frame width/2
(위키에 따른 YUV420P 후, Y 평면 형식 :
은이 같은 배열을 반환 avcodec_decode_video2에서 온 YUV 프레임 때문이라고 생각 , U, V 데이터는 함께 그룹화됩니다). 그래서 swscale을 사용하여 Y, U, V 데이터가 RGB24로 분리되는 배열로 변환하는 방법을 알지 못합니다.
제발 도와주세요, 감사합니다 :)