}
+static void _camera_media_packet_preview_cb(media_packet_h pkt, void *user_data)
+{
+ int ret = 0;
+ int width = 0;
+ int height = 0;
+ media_format_h fmt = NULL;
+ media_format_mimetype_e type = MEDIA_FORMAT_I420;
+
+ ret = media_packet_get_format(pkt, &fmt);
+ if (ret != MEDIA_PACKET_ERROR_NONE) {
+ g_print("get media format failed[0x%x]", ret);
+ goto _MEDIA_PACKET_PREVIEW_CB_OUT;
+ }
+
+ ret = media_format_get_video_info(fmt, &type, &width, &height, NULL, NULL);
+ if (ret != MEDIA_FORMAT_ERROR_NONE) {
+ g_print("get video info failed[0x%x]", ret);
+ goto _MEDIA_PACKET_PREVIEW_CB_OUT;
+ }
+
+ g_print("==== media_packet_preview_cb[mimetype:0x%x, %dx%d]\n", type, width, height);
+
+_MEDIA_PACKET_PREVIEW_CB_OUT:
+ media_packet_unref(pkt);
+}
+
+
static bool preview_resolution_cb(int width, int height, void *user_data)
{
resolution_stack *data = (resolution_stack *)user_data;
g_print("\t '2' Multishot test\n");
g_print("\t '3' Setting\n");
g_print("\t '4' Change device (CAMERA0 <-> CAMERA1)\n");
- g_print("\t '5' Add preview callback\n");
- g_print("\t '6' Remove preview callback\n");
+ g_print("\t '5' Set preview callback\n");
+ g_print("\t '6' Unset preview callback\n");
+ g_print("\t '7' Set media packet preview callback\n");
+ g_print("\t '8' Unset media packet preview callback\n");
g_print("\t 'b' back\n");
g_print("\t=======================================\n");
break;
case '6':
camera_unset_preview_cb(hcamcorder->camera);
break;
+ case '7':
+ camera_set_media_packet_preview_cb(hcamcorder->camera, _camera_media_packet_preview_cb, hcamcorder->camera);
+ break;
+ case '8':
+ camera_unset_media_packet_preview_cb(hcamcorder->camera);
+ break;
case 'b': /* back */
camera_stop_preview(hcamcorder->camera);
camera_destroy(hcamcorder->camera);