AVFrameOperateUtil.cs 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. using FFmpeg.AutoGen;
  2. namespace Vinno.vCloud.FIS.CrossPlatform.Windows.LiveVideo
  3. {
  4. public class AvFrameOperateUtil
  5. {
  6. /// <summary>
  7. /// 创建AVFrame
  8. /// </summary>
  9. /// <param name="width"></param>
  10. /// <param name="height"></param>
  11. /// <param name="format"></param>
  12. /// <returns></returns>
  13. public static unsafe AVFrame* Create(int width, int height, AVPixelFormat format)
  14. {
  15. AVFrame* frame = ffmpeg.av_frame_alloc();
  16. frame->width = width;
  17. frame->height = height;
  18. frame->format = (int)format;
  19. frame->pts = 0;
  20. var tmpData = new byte_ptrArray4();
  21. var linesize = new int_array4();
  22. ffmpeg.av_image_alloc(ref tmpData, ref linesize, frame->width, frame->height, format, 1);
  23. frame->data.UpdateFrom(tmpData);
  24. frame->linesize.UpdateFrom(linesize);
  25. return frame;
  26. }
  27. /// <summary>
  28. /// 销毁AVFrame
  29. /// </summary>
  30. /// <param name="frame"></param>
  31. public static unsafe void Destory(AVFrame* frame)
  32. {
  33. if (frame != null)
  34. {
  35. ffmpeg.av_frame_unref(frame);
  36. }
  37. }
  38. }
  39. }