+ \r
+int av_opt_set(void *obj, const char *name, const char *val, int search_flags)\r
+{\r
+ AVClass* av_class = *(AVClass**)obj;\r
+\r
+ if((strcmp(name, "pix_fmt") == 0 || strcmp(name, "pixel_format") == 0) && strcmp(av_class->class_name, "AVCodecContext") == 0)\r
+ {\r
+ AVCodecContext* c = (AVCodecContext*)obj; \r
+ auto pix_fmt = av_get_pix_fmt(val);\r
+ if(pix_fmt == PIX_FMT_NONE)\r
+ return -1; \r
+ c->pix_fmt = pix_fmt;\r
+ return 0;\r
+ }\r
+ if((strcmp(name, "r") == 0 || strcmp(name, "frame_rate") == 0) && strcmp(av_class->class_name, "AVCodecContext") == 0)\r
+ {\r
+ AVCodecContext* c = (AVCodecContext*)obj; \r
+\r
+ if(c->codec_type != AVMEDIA_TYPE_VIDEO)\r
+ return -1;\r
+\r
+ AVRational rate;\r
+ int ret = av_parse_video_rate(&rate, val);\r
+ if(ret < 0)\r
+ return ret;\r
+\r
+ c->time_base.num = rate.den;\r
+ c->time_base.den = rate.num;\r
+ return 0;\r
+ }\r
+\r
+ return ::av_opt_set(obj, name, val, search_flags);\r
+}\r