Advertisement
Guest User

Untitled

a guest
Aug 16th, 2015
200
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.90 KB | None | 0 0
  1. bool VideoFileWriter::writeToFile(const VideoFrame &frame){
  2. av_init_packet(&mPacket);
  3. mPacket.data = NULL;
  4. mPacket.size = 0;
  5. mPacket.pts = ++mFrameCounter;
  6. mPacket.dts=mPacket.pts;
  7. mFrame->pts=++mFrameCounter;
  8. const uchar *rgb=frame.bits();
  9. QSize size=frame.size();
  10.  
  11. int inputStride[4] = { size.width()*4, 0, 0, 0 };
  12.  
  13. if(rgb && mScaler && ((int)mFrame->linesize[0])==size.width())
  14. sws_scale(mScaler, &rgb, inputStride, 0, size.height(), //convert RGBA to YUV
  15. mFrame->data, mFrame->linesize);
  16.  
  17.  
  18. int gotFrame = 0;
  19. int ret =avcodec_encode_video2(mCodecContext, &mPacket, mFrame, &gotFrame);
  20.  
  21. if (ret == 0) {
  22. if (gotFrame) {
  23. m_file.write((const char *)mPacket.data, mPacket.size);
  24. }
  25.  
  26. av_free_packet(&mPacket);
  27. return true;
  28. } else {
  29. return false;
  30. }
  31. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement