Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- bool VideoFileWriter::writeToFile(const VideoFrame &frame){
- av_init_packet(&mPacket);
- mPacket.data = NULL;
- mPacket.size = 0;
- mPacket.pts = ++mFrameCounter;
- mPacket.dts=mPacket.pts;
- mFrame->pts=++mFrameCounter;
- const uchar *rgb=frame.bits();
- QSize size=frame.size();
- int inputStride[4] = { size.width()*4, 0, 0, 0 };
- if(rgb && mScaler && ((int)mFrame->linesize[0])==size.width())
- sws_scale(mScaler, &rgb, inputStride, 0, size.height(), //convert RGBA to YUV
- mFrame->data, mFrame->linesize);
- int gotFrame = 0;
- int ret =avcodec_encode_video2(mCodecContext, &mPacket, mFrame, &gotFrame);
- if (ret == 0) {
- if (gotFrame) {
- m_file.write((const char *)mPacket.data, mPacket.size);
- }
- av_free_packet(&mPacket);
- return true;
- } else {
- return false;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement