+ \r
+ auto av_frame = get_av_frame();\r
+ av_frame->data[0] = const_cast<uint8_t*>(frame->image_data().begin());\r
+\r
+ auto frames = filter_.execute(av_frame);\r
+\r
+ if(frames.empty())\r
+ return;\r
+\r
+ av_frame = frames[0];\r
+\r
+ if(av_frame->linesize[0] != static_cast<int>(format_desc_.width*4))\r
+ {\r
+ const uint8_t *src_data[4] = {0};\r
+ memcpy(const_cast<uint8_t**>(&src_data[0]), av_frame->data, 4);\r
+ const int src_linesizes[4] = {0};\r
+ memcpy(const_cast<int*>(&src_linesizes[0]), av_frame->linesize, 4);\r
+\r
+ auto av_frame2 = get_av_frame();\r
+ av_image_alloc(av_frame2->data, av_frame2->linesize, av_frame2->width, av_frame2->height, PIX_FMT_BGRA, 16);\r
+ av_image_copy(av_frame2->data, av_frame2->linesize, src_data, src_linesizes, PIX_FMT_BGRA, av_frame2->width, av_frame2->height);\r
+ av_frame = safe_ptr<AVFrame>(av_frame2.get(), [=](AVFrame*)\r
+ {\r
+ av_freep(&av_frame2->data[0]);\r
+ });\r
+ }\r