static gchar * gst_stream_subtitle_information_to_string (GstDiscovererStreamInfo * info, gint depth) { GstDiscovererSubtitleInfo *subtitle_info; GString *s; gchar *tmp; const gchar *ctmp; int len = 400; const GstTagList *tags; GstCaps *caps; g_return_val_if_fail (info != NULL, NULL); s = g_string_sized_new (len); my_g_string_append_printf (s, depth, "Codec:\n"); caps = gst_discoverer_stream_info_get_caps (info); tmp = gst_caps_to_string (caps); gst_caps_unref (caps); my_g_string_append_printf (s, depth, " %s\n", tmp); g_free (tmp); my_g_string_append_printf (s, depth, "Additional info:\n"); if (gst_discoverer_stream_info_get_misc (info)) { tmp = gst_structure_to_string (gst_discoverer_stream_info_get_misc (info)); my_g_string_append_printf (s, depth, " %s\n", tmp); g_free (tmp); } else { my_g_string_append_printf (s, depth, " None\n"); } subtitle_info = (GstDiscovererSubtitleInfo *) info; ctmp = gst_discoverer_subtitle_info_get_language (subtitle_info); my_g_string_append_printf (s, depth, "Language: %s\n", ctmp ? ctmp : "<unknown>"); my_g_string_append_printf (s, depth, "Tags:\n"); tags = gst_discoverer_stream_info_get_tags (info); if (tags) { tmp = gst_structure_to_string ((GstStructure *) tags); my_g_string_append_printf (s, depth, " %s\n", tmp); g_free (tmp); } else { my_g_string_append_printf (s, depth, " None\n"); } if (verbose) my_g_string_append_printf (s, depth, "\n"); return g_string_free (s, FALSE); }
static gchar * gst_stream_subtitle_information_to_string (GstDiscovererStreamInfo * info, guint depth) { GstDiscovererSubtitleInfo *subtitle_info; GString *s; const gchar *ctmp; int len = 400; const GstTagList *tags; g_return_val_if_fail (info != NULL, NULL); s = g_string_sized_new (len); gst_stream_information_to_string (info, s, depth); subtitle_info = (GstDiscovererSubtitleInfo *) info; ctmp = gst_discoverer_subtitle_info_get_language (subtitle_info); my_g_string_append_printf (s, depth, "Language: %s\n", ctmp ? ctmp : "<unknown>"); tags = gst_discoverer_stream_info_get_tags (info); print_tags_topology (depth, tags); return g_string_free (s, FALSE); }
static gchar * format_channel_mask (GstDiscovererAudioInfo * ainfo) { GString *s = g_string_sized_new (32); GstAudioChannelPosition position[64]; guint channels = gst_discoverer_audio_info_get_channels (ainfo); GEnumClass *enum_class = g_type_class_ref (GST_TYPE_AUDIO_CHANNEL_POSITION); guint i; guint64 channel_mask; if (channels == 0) goto done; channel_mask = gst_discoverer_audio_info_get_channel_mask (ainfo); if (channel_mask != 0) { gst_audio_channel_positions_from_mask (channels, channel_mask, position); for (i = 0; i < channels; i++) { GEnumValue *value = g_enum_get_value (enum_class, position[i]); my_g_string_append_printf (s, 0, "%s%s", value->value_nick, i + 1 == channels ? "" : ", "); } } else { g_string_append (s, "unknown layout"); } g_type_class_unref (enum_class); done: return g_string_free (s, FALSE); }
static gchar * gst_stream_audio_information_to_string (GstDiscovererStreamInfo * info, gint depth) { GstDiscovererAudioInfo *audio_info; GString *s; gchar *tmp; const gchar *ctmp; int len = 400; const GstTagList *tags; g_return_val_if_fail (info != NULL, NULL); s = g_string_sized_new (len); gst_stream_information_to_string (info, s, depth); audio_info = (GstDiscovererAudioInfo *) info; ctmp = gst_discoverer_audio_info_get_language (audio_info); my_g_string_append_printf (s, depth, "Language: %s\n", ctmp ? ctmp : "<unknown>"); my_g_string_append_printf (s, depth, "Channels: %u\n", gst_discoverer_audio_info_get_channels (audio_info)); my_g_string_append_printf (s, depth, "Sample rate: %u\n", gst_discoverer_audio_info_get_sample_rate (audio_info)); my_g_string_append_printf (s, depth, "Depth: %u\n", gst_discoverer_audio_info_get_depth (audio_info)); my_g_string_append_printf (s, depth, "Bitrate: %u\n", gst_discoverer_audio_info_get_bitrate (audio_info)); my_g_string_append_printf (s, depth, "Max bitrate: %u\n", gst_discoverer_audio_info_get_max_bitrate (audio_info)); my_g_string_append_printf (s, depth, "Tags:\n"); tags = gst_discoverer_stream_info_get_tags (info); if (tags) { tmp = gst_tag_list_to_string (tags); my_g_string_append_printf (s, depth, " %s\n", tmp); g_free (tmp); } else { my_g_string_append_printf (s, depth, " None\n"); } if (verbose) my_g_string_append_printf (s, depth, "\n"); return g_string_free (s, FALSE); }
static void gst_stream_information_to_string (GstDiscovererStreamInfo * info, GString * s, guint depth) { gchar *tmp; GstCaps *caps; const GstStructure *misc; my_g_string_append_printf (s, depth, "Codec:\n"); caps = gst_discoverer_stream_info_get_caps (info); tmp = gst_caps_to_string (caps); gst_caps_unref (caps); my_g_string_append_printf (s, depth, " %s\n", tmp); g_free (tmp); my_g_string_append_printf (s, depth, "Additional info:\n"); if ((misc = gst_discoverer_stream_info_get_misc (info))) { tmp = gst_structure_to_string (misc); my_g_string_append_printf (s, depth, " %s\n", tmp); g_free (tmp); } else { my_g_string_append_printf (s, depth, " None\n"); } my_g_string_append_printf (s, depth, "Stream ID: %s\n", gst_discoverer_stream_info_get_stream_id (info)); }
static gchar * gst_stream_video_information_to_string (GstDiscovererStreamInfo * info, guint depth) { GstDiscovererVideoInfo *video_info; GString *s; int len = 500; const GstTagList *tags; g_return_val_if_fail (info != NULL, NULL); s = g_string_sized_new (len); gst_stream_information_to_string (info, s, depth); video_info = (GstDiscovererVideoInfo *) info; my_g_string_append_printf (s, depth, "Width: %u\n", gst_discoverer_video_info_get_width (video_info)); my_g_string_append_printf (s, depth, "Height: %u\n", gst_discoverer_video_info_get_height (video_info)); my_g_string_append_printf (s, depth, "Depth: %u\n", gst_discoverer_video_info_get_depth (video_info)); my_g_string_append_printf (s, depth, "Frame rate: %u/%u\n", gst_discoverer_video_info_get_framerate_num (video_info), gst_discoverer_video_info_get_framerate_denom (video_info)); my_g_string_append_printf (s, depth, "Pixel aspect ratio: %u/%u\n", gst_discoverer_video_info_get_par_num (video_info), gst_discoverer_video_info_get_par_denom (video_info)); my_g_string_append_printf (s, depth, "Interlaced: %s\n", gst_discoverer_video_info_is_interlaced (video_info) ? "true" : "false"); my_g_string_append_printf (s, depth, "Bitrate: %u\n", gst_discoverer_video_info_get_bitrate (video_info)); my_g_string_append_printf (s, depth, "Max bitrate: %u\n", gst_discoverer_video_info_get_max_bitrate (video_info)); tags = gst_discoverer_stream_info_get_tags (info); print_tags_topology (depth, tags); return g_string_free (s, FALSE); }
static gchar * gst_stream_audio_information_to_string (GstDiscovererStreamInfo * info, guint depth) { GstDiscovererAudioInfo *audio_info; GString *s; const gchar *ctmp; int len = 400; const GstTagList *tags; gchar *channel_positions; g_return_val_if_fail (info != NULL, NULL); s = g_string_sized_new (len); gst_stream_information_to_string (info, s, depth); audio_info = (GstDiscovererAudioInfo *) info; ctmp = gst_discoverer_audio_info_get_language (audio_info); my_g_string_append_printf (s, depth, "Language: %s\n", ctmp ? ctmp : "<unknown>"); channel_positions = format_channel_mask (audio_info); my_g_string_append_printf (s, depth, "Channels: %u (%s)\n", gst_discoverer_audio_info_get_channels (audio_info), channel_positions); g_free (channel_positions); my_g_string_append_printf (s, depth, "Sample rate: %u\n", gst_discoverer_audio_info_get_sample_rate (audio_info)); my_g_string_append_printf (s, depth, "Depth: %u\n", gst_discoverer_audio_info_get_depth (audio_info)); my_g_string_append_printf (s, depth, "Bitrate: %u\n", gst_discoverer_audio_info_get_bitrate (audio_info)); my_g_string_append_printf (s, depth, "Max bitrate: %u\n", gst_discoverer_audio_info_get_max_bitrate (audio_info)); tags = gst_discoverer_stream_info_get_tags (info); print_tags_topology (depth, tags); return g_string_free (s, FALSE); }
static gchar * gst_stream_video_information_to_string (GstDiscovererStreamInfo * info, gint depth) { GstDiscovererVideoInfo *video_info; GString *s; gchar *tmp; int len = 500; const GstStructure *misc; const GstTagList *tags; GstCaps *caps; g_return_val_if_fail (info != NULL, NULL); s = g_string_sized_new (len); my_g_string_append_printf (s, "Codec:\n"); caps = gst_discoverer_stream_info_get_caps (info); tmp = gst_caps_to_string (caps); gst_caps_unref (caps); my_g_string_append_printf (s, " %s\n", tmp); g_free (tmp); my_g_string_append_printf (s, "Additional info:\n"); misc = gst_discoverer_stream_info_get_misc (info); if (misc) { tmp = gst_structure_to_string (misc); my_g_string_append_printf (s, " %s\n", tmp); g_free (tmp); } else { my_g_string_append_printf (s, " None\n"); } video_info = (GstDiscovererVideoInfo *) info; my_g_string_append_printf (s, "Width: %u\n", gst_discoverer_video_info_get_width (video_info)); my_g_string_append_printf (s, "Height: %u\n", gst_discoverer_video_info_get_height (video_info)); my_g_string_append_printf (s, "Depth: %u\n", gst_discoverer_video_info_get_depth (video_info)); my_g_string_append_printf (s, "Frame rate: %u/%u\n", gst_discoverer_video_info_get_framerate_num (video_info), gst_discoverer_video_info_get_framerate_denom (video_info)); my_g_string_append_printf (s, "Pixel aspect ratio: %u/%u\n", gst_discoverer_video_info_get_par_num (video_info), gst_discoverer_video_info_get_par_denom (video_info)); my_g_string_append_printf (s, "Interlaced: %s\n", gst_discoverer_video_info_is_interlaced (video_info) ? "true" : "false"); my_g_string_append_printf (s, "Bitrate: %u\n", gst_discoverer_video_info_get_bitrate (video_info)); my_g_string_append_printf (s, "Max bitrate: %u\n", gst_discoverer_video_info_get_max_bitrate (video_info)); my_g_string_append_printf (s, "Tags:\n"); tags = gst_discoverer_stream_info_get_tags (info); if (tags) { tmp = gst_structure_to_string ((GstStructure *) tags); my_g_string_append_printf (s, " %s\n", tmp); g_free (tmp); } else { my_g_string_append_printf (s, " None\n"); } if (verbose) my_g_string_append_printf (s, "\n"); return g_string_free (s, FALSE); }