CURRENT_STATUS_POSITION_TIME,
CURRENT_STATUS_LOOPING,
CURRENT_STATUS_DISPLAY_SURFACE_CHANGE,
+ CURRENT_STATUS_EXPORT_VIDEO_FRAME,
CURRENT_STATUS_DISPLAY_MODE,
CURRENT_STATUS_DISPLAY_DST_ROI_AREA,
CURRENT_STATUS_DISPLAY_ROTATION,
CURRENT_STATUS_AUDIO_EQUALIZER,
CURRENT_STATUS_PLAYBACK_RATE,
CURRENT_STATUS_STREAMING_PLAYBACK_RATE,
- CURRENT_STATUS_SWITCH_SUBTITLE,
+ CURRENT_STATUS_SET_TRACK_TYPE,
+ CURRENT_STATUS_SET_TRACK_INDEX,
CURRENT_STATUS_NEXT_URI,
CURRENT_STATUS_GAPLESS,
CURRENT_STATUS_GET_TRACK_INFO,
g_print(" ==> [Player_Test] looping = %d\n", *looping);
}
+void _video_decoded_cb(media_packet_h packet, void *user_data)
+{
+ media_packet_destroy(packet);
+}
+
+static void set_video_frame_decoded_cb(void)
+{
+ player_set_media_packet_video_frame_decoded_cb(g_player[0], _video_decoded_cb, g_player[0]);
+}
+
static void change_surface(int option)
{
player_display_type_e surface_type = 0;
player_set_subtitle_path(g_player[0], g_subtitle_uri);
}
-static void switch_subtitle(int index)
+static void set_track(int type, int index)
{
char *lang_code = NULL;
- if (player_select_track(g_player[0], PLAYER_STREAM_TYPE_TEXT, index) != PLAYER_ERROR_NONE)
+
+ if (player_select_track(g_player[0], type, index) != PLAYER_ERROR_NONE)
g_print("player_select_track failed\n");
- if (player_get_track_language_code(g_player[0], PLAYER_STREAM_TYPE_TEXT, index, &lang_code) == PLAYER_ERROR_NONE) {
- g_print("selected track code %s\n", lang_code);
+ if (player_get_track_language_code(g_player[0], type, index, &lang_code) == PLAYER_ERROR_NONE) {
+ g_print("selected track lang code %s\n", lang_code);
free(lang_code);
}
}
g_menu_state = CURRENT_STATUS_HANDLE_NUM;
} else if (strncmp(cmd, "tr", 2) == 0) {
g_menu_state = CURRENT_STATUS_PLAYBACK_RATE;
- } else if (strncmp(cmd, "ss", 2) == 0) {
- g_menu_state = CURRENT_STATUS_SWITCH_SUBTITLE;
} else if (strncmp(cmd, "X3", 2) == 0) {
audio_frame_decoded_cb_ex(TRUE);
} else if (strncmp(cmd, "X4", 2) == 0) {
get_next_uri();
} else if (strncmp(cmd, "sg", 2) == 0) {
g_menu_state = CURRENT_STATUS_GAPLESS;
- } else if (strncmp(cmd, "tl", 2) == 0) {
+ } else if (strncmp(cmd, "tg", 2) == 0) {
g_menu_state = CURRENT_STATUS_GET_TRACK_INFO;
+ } else if (strncmp(cmd, "ts", 2) == 0) {
+ g_menu_state = CURRENT_STATUS_SET_TRACK_TYPE;
} else if (strncmp(cmd, "vi", 2) == 0) {
get_variant_info();
} else if (strncmp(cmd, "vs", 2) == 0) {
g_print("[overlay display] r. Set display mode\t");
g_print("s. Get display mode\n");
g_print("[overlay display] t. Set display Rotation\n");
- g_print("[Track] tl. Get Track language info(single only)\n");
g_print("[Variant] vi. Get Streaming Variant Info\t");
g_print("vs. Set max limit of variant\t");
g_print("vg. Get max limit of variant\n");
g_print("[audio only] ao. set audio only\n");
g_print("[subtitle] A. Set(or change) subtitle path\n");
- g_print("[subtitle] ss. Select(or change) subtitle track\n");
+ g_print("[Track] tg. Get Track info\n");
+ g_print("[Track] ts. Set track\n");
g_print("[Video Capture] C. Capture \n");
g_print("[Video Codec] C1. Set codec type (1:HW, 2:SW)\t");
g_print("C2. Get codec type\n");
g_print("*** input looping value.(0: Not Looping, 1: Looping) \n");
} else if (g_menu_state == CURRENT_STATUS_DISPLAY_SURFACE_CHANGE) {
g_print("*** input display surface type.(0: Wayland surface, 1: EVAS surface, 2: No use surface (e.g: audio playback)) \n");
+ } else if (g_menu_state == CURRENT_STATUS_EXPORT_VIDEO_FRAME) {
+ g_print("*** set video_decoded_cb (0: none, 1: set cb) \n");
} else if (g_menu_state == CURRENT_STATUS_DISPLAY_MODE) {
g_print("*** input display mode value.(0: LETTER BOX, 1: ORIGIN SIZE, 2: FULL_SCREEN, 3: CROPPED_FULL, 4: ORIGIN_OR_LETTER, 5:ROI) \n");
} else if (g_menu_state == CURRENT_STATUS_DISPLAY_DST_ROI_AREA) {
g_print(" *** input audio eq value.(0: UNSET, 1: SET) \n");
} else if (g_menu_state == CURRENT_STATUS_PLAYBACK_RATE || g_menu_state == CURRENT_STATUS_STREAMING_PLAYBACK_RATE) {
g_print(" *** input playback rate.(-5.0 ~ 5.0)\n");
- } else if (g_menu_state == CURRENT_STATUS_SWITCH_SUBTITLE) {
- int count = 0, cur_index = 0;
- int ret = 0;
-
- ret = player_get_track_count(g_player[0], PLAYER_STREAM_TYPE_TEXT, &count);
- if (ret != PLAYER_ERROR_NONE)
- g_print("player_get_track_count fail!!!!\n");
- else if (count) {
- g_print("Total subtitle tracks = %d \n", count);
- player_get_current_track(g_player[0], PLAYER_STREAM_TYPE_TEXT, &cur_index);
- g_print("Current index = %d \n", cur_index);
- g_print(" *** input correct index 0 to %d\n:", (count - 1));
- } else
- g_print("no track\n");
+ } else if (g_menu_state == CURRENT_STATUS_SET_TRACK_TYPE) {
+ g_print(" *** input track type.(1:audio, 3:text)\n");
+ } else if (g_menu_state == CURRENT_STATUS_SET_TRACK_INDEX) {
+ g_print(" *** input track index\n");
} else if (g_menu_state == CURRENT_STATUS_NEXT_URI) {
g_print("*** input next uri.\n");
} else if (g_menu_state == CURRENT_STATUS_GAPLESS) {
g_print("*** input gapless value.(0:disable, 1: enable) \n");
} else if (g_menu_state == CURRENT_STATUS_GET_TRACK_INFO) {
- g_print("*** input stream type.(1:audio, 3:text) \n");
+ g_print("*** input track type.(1:audio, 3:text) \n");
} else if (g_menu_state == CURRENT_STATUS_SET_MAX_BANDWIDTH_VARIANT) {
g_print("*** set max bandwidth (default: -1) \n");
} else if (g_menu_state == CURRENT_STATUS_SET_MAX_WIDTH_VARIANT) {
{
value1 = atoi(cmd);
change_surface(value1);
+ if (value1 == 2) { /* null display type */
+ g_menu_state = CURRENT_STATUS_EXPORT_VIDEO_FRAME;
+ break;
+ }
reset_menu_state();
}
break;
+ case CURRENT_STATUS_EXPORT_VIDEO_FRAME:
+ {
+ value2 = atoi(cmd);
+ if (value2 != 0)
+ set_video_frame_decoded_cb();
+ reset_menu_state();
+ } break;
case CURRENT_STATUS_DISPLAY_MODE:
{
value1 = atoi(cmd);
reset_menu_state();
}
break;
- case CURRENT_STATUS_SWITCH_SUBTITLE:
+ case CURRENT_STATUS_SET_TRACK_TYPE:
{
value1 = atoi(cmd);
- switch_subtitle(value1);
+ get_track_info(value1);
+
+ g_menu_state = CURRENT_STATUS_SET_TRACK_INDEX;
+ }
+ break;
+ case CURRENT_STATUS_SET_TRACK_INDEX:
+ {
+ value2 = atoi(cmd);
+ set_track(value1, value2);
reset_menu_state();
}
break;