From 729b7568895cd6fa0b6a1b43c27a234132672bd2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Toque?= Date: Sun, 22 Apr 2012 09:35:52 +0200 Subject: [PATCH 3/6] libvlc: add language and frame rate to libvlc_media_track_info_t --- include/vlc/libvlc_media.h | 14 ++++++++++++++ lib/media.c | 15 +++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/include/vlc/libvlc_media.h b/include/vlc/libvlc_media.h index f8b267d..5773ad2 100644 --- a/include/vlc/libvlc_media.h +++ b/include/vlc/libvlc_media.h @@ -164,9 +164,12 @@ typedef struct libvlc_media_track_info_t /* Video specific */ unsigned i_height; unsigned i_width; + float f_frame_rate; } video; } u; + char *psz_language; + } libvlc_media_track_info_t; @@ -512,6 +515,17 @@ LIBVLC_API int libvlc_media_get_tracks_info( libvlc_media_t *p_md, libvlc_media_track_info_t **tracks ); +/** + * Release media descriptor's elementary streams description array + * + * \param p_tracks tracks info array to release + * \param i_count number of elements in the array + */ +LIBVLC_API +void libvlc_media_tracks_info_release( libvlc_media_track_info_t *p_tracks, + int i_count ); + + /** @}*/ # ifdef __cplusplus diff --git a/lib/media.c b/lib/media.c index 600e10a..ab33fd6 100644 --- a/lib/media.c +++ b/lib/media.c @@ -706,6 +706,8 @@ libvlc_media_get_tracks_info( libvlc_media_t *p_md, libvlc_media_track_info_t ** p_mes->i_codec = p_es->i_codec; p_mes->i_id = p_es->i_id; + p_mes->psz_language = p_es->psz_language != NULL ? strdup(p_es->psz_language) : NULL; + p_mes->i_profile = p_es->i_profile; p_mes->i_level = p_es->i_level; @@ -719,6 +721,7 @@ libvlc_media_get_tracks_info( libvlc_media_t *p_md, libvlc_media_track_info_t ** p_mes->i_type = libvlc_track_video; p_mes->u.video.i_height = p_es->video.i_height; p_mes->u.video.i_width = p_es->video.i_width; + p_mes->u.video.f_frame_rate = p_es->video.i_frame_rate / (float) p_es->video.i_frame_rate_base; break; case AUDIO_ES: p_mes->i_type = libvlc_track_audio; @@ -734,3 +737,15 @@ libvlc_media_get_tracks_info( libvlc_media_t *p_md, libvlc_media_track_info_t ** vlc_mutex_unlock( &p_input_item->lock ); return i_es; } + +/************************************************************************** + * Release media descriptor's elementary streams description array + **************************************************************************/ +void libvlc_media_tracks_info_release( libvlc_media_track_info_t *p_tracks, int i_count ) +{ + if (!p_tracks) + return; + for (int i = 0; i < i_count; ++i) + free( p_tracks[i].psz_language ); + free( p_tracks ); +} -- 1.7.12.1