I am trying to fill sample data for a AVFrame initialized with RGB24 format.
I use following code snippet to populate RGB data.
But in the encoded video,I can only see grayscale strip covering only 1/3 of the videoframe.
This code snippet suppose to fill only Red color.
Any tips what Im doing wrong here ?
AVFrame *targetFrame=.....
int height=imageHeight();
int width=imageWidth();
for(y=0;y<encoder.getVideoParams().height ;y++){
for(x=0;x< encoder.getVideoParams().width;x++){
targetFrame->data[0][(y* width)+x]=(x%255); //R
targetFrame->data[0][(y* width)+x+1]=0; //G
targetFrame->data[0][(y* width)+x+2]=0; //B
}
}
If you’re using RGB24, you need to scale the coordinates before indexing into the data buffer. Here’s a version of your inner loop that’ll do it properly:
And here’s a simpler approach: