cdata.set('TIZEN_FEATURE_POST_VARIANT_INFO', true)
cdata.set('TIZEN_FEATURE_ADAPTIVE_VARIANT_LIMIT', true)
cdata.set('TIZEN_FEATURE_BUG_FIX', true)
+cdata.set('TIZEN_FEATURE_V4L2_ENCODER_SET_MAX_LEVEL', true)
if get_option('tv-profile')
cdata.set('TIZEN_PROFILE_TV', true)
if (!failed && codec->level_cid && get_string_list (s, "level", &levels)) {
GList *l;
+#ifdef TIZEN_FEATURE_V4L2_ENCODER_SET_MAX_LEVEL
+ gint max_level = -1;
+#endif
for (l = levels.head; l; l = l->next) {
struct v4l2_control control = { 0, };
level = codec->level_to_string (control.value);
+#ifdef TIZEN_FEATURE_V4L2_ENCODER_SET_MAX_LEVEL
+ if (v4l2_level > max_level &&
+ (control.value == v4l2_level ||
+ g_list_find_custom (l, level, g_str_equal))) {
+ ctx->level = level;
+ max_level = v4l2_level;
+ GST_WARNING_OBJECT (ctx->self, "max level -> %d", max_level);
+ }
+#else
if (control.value == v4l2_level) {
ctx->level = level;
break;
ctx->level = level;
break;
}
+#endif
}
if (levels.length && !ctx->level)