libvlc_media_option_unique = 0x100
};
-typedef enum libvlc_es_type_t
+typedef enum libvlc_track_type_t
{
- libvlc_es_unknown = -1,
- libvlc_es_audio = 0,
- libvlc_es_video = 1,
- libvlc_es_text = 2,
-} libvlc_es_type_t;
+ libvlc_track_unknown = -1,
+ libvlc_track_audio = 0,
+ libvlc_track_video = 1,
+ libvlc_track_text = 2,
+} libvlc_track_type_t;
/** defgroup libvlc_media_stats_t LibVLC media statistics
* \ingroup libvlc_media
} libvlc_media_stats_t;
/** @}*/
-typedef struct libvlc_media_es_t
+typedef struct libvlc_media_track_info_t
{
/* Codec fourcc */
uint32_t i_codec;
int i_id;
- libvlc_es_type_t i_type;
+ libvlc_track_type_t i_type;
/* Codec specific */
int i_profile;
unsigned i_height;
unsigned i_width;
-} libvlc_media_es_t;
+} libvlc_media_track_info_t;
/**
*
* \see libvlc_media_parse_async
* \see libvlc_media_get_meta
- * \see libvlc_media_get_es
+ * \see libvlc_media_get_tracks_info
*
* \param media media descriptor object
*/
* \see libvlc_media_parse
* \see libvlc_MediaPreparsedChanged
* \see libvlc_media_get_meta
- * \see libvlc_media_get_es
+ * \see libvlc_media_get_tracks_info
*
* \param media media descriptor object
*/
*
* Note, you need to play the media _one_ time with --sout="#description"
* Not doing this will result in an empty array, and doing it more than once
- * will duplicate the entries in the array each time.
+ * will duplicate the entries in the array each time. Something like this:
*
- * \param p_md media descriptor object
- * \param pp_es address to store an allocated array of Elementary Streams descriptions (must be freed by the caller)
+ * @begincode
+ * libvlc_media_player_t *player = libvlc_media_player_new_from_media(media);
+ * libvlc_media_add_option_flag(media, "sout=\"#description\"");
+ * libvlc_media_player_play(player);
+ * // ... wait until playing
+ * libvlc_media_player_release(player);
+ * @endcode
+ *
+ * This is very likely to change in next release, and be done at the parsing
+ * phase.
+ *
+ * \param media media descriptor object
+ * \param tracks address to store an allocated array of Elementary Streams
+ * descriptions (must be freed by the caller)
*
* return the number of Elementary Streams
*/
-VLC_PUBLIC_API int
- libvlc_media_get_es( libvlc_media_t * p_md, libvlc_media_es_t ** pp_es );
+VLC_PUBLIC_API
+int libvlc_media_get_tracks_info(libvlc_media_t *media,
+ libvlc_media_track_info_t **tracks );
/** @}*/
* Get media descriptor's elementary streams description
**************************************************************************/
int
-libvlc_media_get_es( libvlc_media_t *p_md, libvlc_media_es_t ** pp_es )
+libvlc_media_get_tracks_info( libvlc_media_t *p_md, libvlc_media_track_info_t ** pp_es )
{
assert( p_md );
vlc_mutex_lock( &p_input_item->lock );
const int i_es = p_input_item->i_es;
- *pp_es = (i_es > 0) ? malloc( i_es * sizeof(libvlc_media_es_t) ) : NULL;
+ *pp_es = (i_es > 0) ? malloc( i_es * sizeof(libvlc_media_track_info_t) ) : NULL;
if( !pp_es ) /* no ES, or OOM */
{
/* Fill array */
for( int i = 0; i < i_es; i++ )
{
- libvlc_media_es_t *p_mes = *pp_es+i;
+ libvlc_media_track_info_t *p_mes = *pp_es+i;
const es_format_t *p_es = p_input_item->es[i];
p_mes->i_channels = p_mes->i_rate = 0;
{
case UNKNOWN_ES:
default:
- p_mes->i_type = libvlc_es_unknown;
+ p_mes->i_type = libvlc_track_unknown;
break;
case VIDEO_ES:
- p_mes->i_type = libvlc_es_video;
+ p_mes->i_type = libvlc_track_video;
p_mes->i_height = p_es->video.i_height;
p_mes->i_width = p_es->video.i_width;
break;
case AUDIO_ES:
- p_mes->i_type = libvlc_es_audio;
+ p_mes->i_type = libvlc_track_audio;
p_mes->i_channels = p_es->audio.i_channels;
p_mes->i_rate = p_es->audio.i_rate;
break;
case SPU_ES:
- p_mes->i_type = libvlc_es_text;
+ p_mes->i_type = libvlc_track_text;
break;
}
}
libvlc_media_duplicate
libvlc_media_event_manager
libvlc_media_get_duration
-libvlc_media_get_es
libvlc_media_get_meta
libvlc_media_get_mrl
libvlc_media_get_state
libvlc_media_get_stats
libvlc_media_get_user_data
+libvlc_media_get_tracks_info
libvlc_media_is_preparsed
libvlc_media_library_load
libvlc_media_library_media_list
// Check to see if we are properly receiving the event.
libvlc_event_manager_t *em = libvlc_media_event_manager (media);
- libvlc_event_attach (em, libvlc_MediaPreparsedChanged, preparsed_changed, &received);
+ libvlc_event_attach (em, libvlc_MediaPreparsedChanged, preparsed_changed, (void*)&received);
// Parse the media. This is synchronous.
libvlc_media_parse(media);
while (!received);
// We are good, now check Elementary Stream info.
- libvlc_media_es_t *es;
- int num = libvlc_media_get_es(media, &es);
+ libvlc_media_track_info_t *tracks;
+ int num = libvlc_media_get_es(media, &tracks);
assert(num > 0);
- free(es);
+ free(tracks);
libvlc_media_release (media);
libvlc_release (vlc);