+ av_frame->width = planes[0].width;\r
+ av_frame->height = planes[0].height;\r
+ for(int n = 0; n < planes.size(); ++n) \r
+ {\r
+ av_frame->data[n] = data[n];\r
+ av_frame->linesize[n] = planes[n].linesize; \r
+ }\r
+ switch(format)\r
+ {\r
+ case core::pixel_format::rgba:\r
+ av_frame->format = PIX_FMT_RGBA; \r
+ break;\r
+ case core::pixel_format::argb:\r
+ av_frame->format = PIX_FMT_ARGB; \r
+ break;\r
+ case core::pixel_format::bgra:\r
+ av_frame->format = PIX_FMT_BGRA; \r
+ break;\r
+ case core::pixel_format::abgr:\r
+ av_frame->format = PIX_FMT_ABGR; \r
+ break;\r
+ case core::pixel_format::gray:\r
+ av_frame->format = PIX_FMT_GRAY8; \r
+ break;\r
+ case core::pixel_format::ycbcr:\r
+ {\r
+ int y_w = planes[0].width;\r
+ int y_h = planes[0].height;\r
+ int c_w = planes[1].width;\r
+ int c_h = planes[1].height;\r
+\r
+ if(c_h == y_h && c_w == y_w)\r
+ av_frame->format = PIX_FMT_YUV444P;\r
+ else if(c_h == y_h && c_w*2 == y_w)\r
+ av_frame->format = PIX_FMT_YUV422P;\r
+ else if(c_h == y_h && c_w*4 == y_w)\r
+ av_frame->format = PIX_FMT_YUV411P;\r
+ else if(c_h*2 == y_h && c_w*2 == y_w)\r
+ av_frame->format = PIX_FMT_YUV420P;\r
+ else if(c_h*2 == y_h && c_w*4 == y_w)\r
+ av_frame->format = PIX_FMT_YUV410P;\r
+\r
+ break;\r
+ }\r
+ case core::pixel_format::ycbcra:\r
+ av_frame->format = PIX_FMT_YUVA420P;\r
+ break;\r
+ }\r
+ return av_frame;\r