static int _mm_evas_renderer_retrieve_all_packets(mm_evas_info *evas_info, bool keep_screen);
static int _mm_evas_renderer_make_flush_buffer(mm_evas_info *evas_info);
static void _mm_evas_renderer_release_flush_buffer(mm_evas_info *evas_info);
+static void _mm_evas_renderer_get_video_angle(mm_evas_info *evas_info, int *rotate_angle, int *orientation);
+static void _mm_evas_renderer_update_rotate_angle(mm_evas_info *evas_info);
static void _mm_evas_renderer_set_callback(mm_evas_info *evas_info);
static void _mm_evas_renderer_unset_callback(mm_evas_info *evas_info);
static void _mm_evas_renderer_set_evas_object_size(mm_evas_info *evas_info);
MMEVAS_RETURN_IF_FAIL(evas_info);
MMEVAS_RETURN_IF_FAIL(evas_info->eo); //need to check evas object
+ /* get rotate angle with content orientaion */
+ _mm_evas_renderer_update_rotate_angle(evas_info);
+
result.x = 0;
result.y = 0;
video_width = evas_info->w;
return;
}
+static void _mm_evas_renderer_get_video_angle(mm_evas_info *evas_info, int *rotate_angle, int *orientation)
+{
+ int rotate = 0;
+ media_packet_h packet = NULL;
+ media_packet_rotate_method_e org_orient = 0;
+
+ MMER_FENTER();
+
+ MMEVAS_RETURN_IF_FAIL(evas_info);
+ MMEVAS_RETURN_IF_FAIL(rotate_angle);
+ MMEVAS_RETURN_IF_FAIL(orientation);
+
+ rotate = evas_info->rotate;
+ LOGD("current rotate value: %d", rotate);
+
+ /* Counter clockwise */
+ switch (rotate) {
+ case EVAS_IMAGE_ORIENT_0: //0
+ *rotate_angle = 0;
+ break;
+ case EVAS_IMAGE_ORIENT_90: //1
+ *rotate_angle = 90;
+ break;
+ case EVAS_IMAGE_ORIENT_180: //2
+ *rotate_angle = 180;
+ break;
+ case EVAS_IMAGE_ORIENT_270: //3
+ *rotate_angle = 270;
+ break;
+ default:
+ LOGW("wrong angle type : %d", rotate);
+ break;
+ }
+ LOGD("check display angle: %d", *rotate_angle);
+
+ /* get content orientation */
+ packet = evas_info->pkt_info[evas_info->cur_idx].packet;
+ MMEVAS_RETURN_IF_FAIL(packet);
+
+ media_packet_get_rotate_method(packet, &org_orient);
+ LOGE("get content orientation : %d", org_orient);
+
+ /* Counter clockwise */
+ switch (org_orient) {
+ case MEDIA_PACKET_ROTATE_IDENTITY: //0
+ *orientation = 0;
+ break;
+ case MEDIA_PACKET_ROTATE_90: //1
+ *orientation = 90;
+ break;
+ case MEDIA_PACKET_ROTATE_180: //2
+ *orientation = 180;
+ break;
+ case MEDIA_PACKET_ROTATE_270: //3
+ *orientation = 270;
+ break;
+ default:
+ LOGW("wrong angle type : %d", org_orient);
+ break;
+ }
+ LOGD("check orientation: %d", *orientation);
+
+ return;
+}
+
+static void _mm_evas_renderer_update_rotate_angle(mm_evas_info *evas_info)
+{
+
+ int required_angle = 0; /* Angle required for straight view */
+ int rotate_angle = 0;
+ int orientation = 0;
+
+ MMER_FENTER();
+
+ MMEVAS_RETURN_IF_FAIL(evas_info);
+
+ _mm_evas_renderer_get_video_angle(evas_info, &rotate_angle, &orientation);
+
+ required_angle = 360 - orientation;
+ rotate_angle = (rotate_angle + required_angle) % 360;
+
+ /* chech if supported or not */
+ if (rotate_angle % 90) {
+ LOGD("not supported rotation angle = %d", rotate_angle);
+ return;
+ }
+
+ switch (rotate_angle) {
+ case 0:
+ evas_info->rotate_angle = EVAS_IMAGE_ORIENT_0;
+ break;
+ case 90:
+ evas_info->rotate_angle = EVAS_IMAGE_ORIENT_90;
+ break;
+ case 180:
+ evas_info->rotate_angle = EVAS_IMAGE_ORIENT_180;
+ break;
+ case 270:
+ evas_info->rotate_angle = EVAS_IMAGE_ORIENT_270;
+ break;
+ }
+
+ LOGD("setting rotation angle : %d", evas_info->rotate_angle);
+
+ return;
+}
+
void mm_evas_renderer_write(media_packet_h packet, void *data)
{
MMER_FENTER();
return MM_ERROR_EVASRENDER_INVALID_ARGUMENT;
}
- if (evas_info->rotate_angle != value) {
+ if (evas_info->rotate != value) {
evas_info->update_needed = TRUE;
- evas_info->rotate_angle = value;
+ evas_info->rotate = value;
}
evas_info->rendering_info_changed = TRUE;
MMEVAS_RETURN_VAL_IF_FAIL(evas_info, MM_ERROR_EVASRENDER_NOT_INITIALIZED);
- switch (evas_info->rotate_angle) {
+ switch (evas_info->rotate) {
case EVAS_IMAGE_ORIENT_0:
*rotate = DEGREE_0;
break;