1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- using FFmpeg.AutoGen;
- namespace Vinno.vCloud.FIS.CrossPlatform.Windows.LiveVideo
- {
- public class AvFrameOperateUtil
- {
- /// <summary>
- /// 创建AVFrame
- /// </summary>
- /// <param name="width"></param>
- /// <param name="height"></param>
- /// <param name="format"></param>
- /// <returns></returns>
- public static unsafe AVFrame* Create(int width, int height, AVPixelFormat format)
- {
- AVFrame* frame = ffmpeg.av_frame_alloc();
- frame->width = width;
- frame->height = height;
- frame->format = (int)format;
- frame->pts = 0;
- var tmpData = new byte_ptrArray4();
- var linesize = new int_array4();
- ffmpeg.av_image_alloc(ref tmpData, ref linesize, frame->width, frame->height, format, 1);
- frame->data.UpdateFrom(tmpData);
- frame->linesize.UpdateFrom(linesize);
- return frame;
- }
- /// <summary>
- /// 销毁AVFrame
- /// </summary>
- /// <param name="frame"></param>
- public static unsafe void Destory(AVFrame* frame)
- {
- if (frame != null)
- {
- ffmpeg.av_frame_unref(frame);
- }
- }
- }
- }
|