evas_info->w = evas_info->h = 0;
evas_info->cur_idx = -1;
evas_info->dst_roi.x = evas_info->dst_roi.y = evas_info->dst_roi.w = evas_info->dst_roi.h = 0;
+ evas_info->is_set_roi_area = FALSE;
+ evas_info->display_geometry_method = evas_info->pre_display_geometry_method = DISP_GEO_METHOD_LETTER_BOX;
evas_info->eo = eo;
evas_info->epipe = ecore_pipe_add((Ecore_Pipe_Cb) _evas_pipe_cb, evas_info);
if (!evas_info->epipe) {
gint video_width = 0;
gint video_height = 0;
rect_info result = { 0 };
+ gint disp_mode = -1;
MMEVAS_RETURN_IF_FAIL(evas_info);
MMEVAS_RETURN_IF_FAIL(evas_info->eo); //need to check evas object
}
LOGD("eo size (x:%d,y:%d,w:%d,h:%d)", evas_info->eo_size.x, evas_info->eo_size.y, evas_info->eo_size.w, evas_info->eo_size.h);
LOGD("video size (w:%d,h:%d)", video_width, video_height);
- switch (evas_info->display_geometry_method) {
+
+ if (evas_info->display_geometry_method == DISP_GEO_METHOD_CUSTOM_ROI && evas_info->is_set_roi_area == FALSE) {
+ disp_mode = evas_info->pre_display_geometry_method;
+ LOGD("ROI area isn't set. and use previous display geometry method(%d)", disp_mode);
+ } else {
+ disp_mode = evas_info->display_geometry_method;
+ }
+ switch (disp_mode) {
case DISP_GEO_METHOD_LETTER_BOX:
/* set black padding for letter box mode */
LOGD("letter box mode");
break;
case DISP_GEO_METHOD_CUSTOM_ROI:
LOGD("custom roi mode");
+ if (evas_info->is_set_roi_area == FALSE) {
+ LOGW("ROI Area isn't set");
+ return;
+ }
/* roi need to set -1 */
evas_info->ratio = -1;
result.x = evas_info->dst_roi.x;
if (evas_info->display_geometry_method != mode) {
evas_info->update_needed = TRUE;
+ evas_info->pre_display_geometry_method = evas_info->display_geometry_method;
evas_info->display_geometry_method = mode;
}
mm_evas_info *evas_info = (mm_evas_info *)handle;
MMEVAS_RETURN_VAL_IF_FAIL(evas_info, MM_ERROR_EVASRENDER_NOT_INITIALIZED);
- if (!w || !h) {
- LOGE("invalid resolution");
+ if (w <= 0 || h <= 0) {
+ LOGE("invalid resolution w(%d), h(%d)", w, h);
return MM_ERROR_EVASRENDER_INVALID_ARGUMENT;
}
- if (evas_info->display_geometry_method != DISP_GEO_METHOD_CUSTOM_ROI) {
- LOGE("invalid mode");
- return MM_ERROR_EVASRENDER_INVALID_OPERATION;
- }
if (evas_info->dst_roi.x != x || evas_info->dst_roi.y != y
|| evas_info->dst_roi.w != w || evas_info->dst_roi.h != h) {
- evas_info->update_needed = TRUE;
evas_info->dst_roi.x = x;
evas_info->dst_roi.y = y;
evas_info->dst_roi.w = w;
evas_info->dst_roi.h = h;
+ evas_info->update_needed = TRUE;
+ evas_info->is_set_roi_area = TRUE;
}
evas_info->rendering_info_changed = TRUE;
mm_evas_info *evas_info = (mm_evas_info *)handle;
MMEVAS_RETURN_VAL_IF_FAIL(evas_info, MM_ERROR_EVASRENDER_NOT_INITIALIZED);
- if (evas_info->display_geometry_method != DISP_GEO_METHOD_CUSTOM_ROI) {
- LOGE("invalid mode");
- return MM_ERROR_EVASRENDER_INVALID_OPERATION;
- }
-
*x = evas_info->dst_roi.x;
*y = evas_info->dst_roi.y;
*w = evas_info->dst_roi.w;