[vlc-devel] [PATCH 2/2] Add method for getting stats from VLCMedia

Pierre d'Herbemont pdherbemont at free.fr
Mon Dec 27 11:47:34 CET 2010


On Sun, Dec 26, 2010 at 4:43 PM, Botten, Rune Røbech (OSL-MEW)
<rune.botten at sdg.no> wrote:
> Pierre,
>
> your email was blank.
> Did you see the new patch I sent?

oops :-)

> /Rune
>
> On 24. des. 2010, at 00.40, Pierre d'Herbemont wrote:
>
>>
>> El 20/12/2010, a las 16:14, Rune Botten <rbotten at gmail.com> escribió:
>>
>>> ---
>>> .../macosx/framework/Headers/Public/VLCMedia.h     |   12 ++++++--
>>> projects/macosx/framework/Sources/VLCMedia.m       |   30 +++++++++++++++++++-
>>> 2 files changed, 38 insertions(+), 4 deletions(-)
>>>
>>> diff --git a/projects/macosx/framework/Headers/Public/VLCMedia.h b/projects/macosx/framework/Headers/Public/VLCMedia.h
>>> index 1322332..29e9578 100644
>>> --- a/projects/macosx/framework/Headers/Public/VLCMedia.h
>>> +++ b/projects/macosx/framework/Headers/Public/VLCMedia.h
>>> @@ -332,15 +332,21 @@ extern NSString *VLCMediaTracksInformationTypeUnknown;
>>> */
>>> - (void)parse;
>>>
>>> -/**************************************************************************
>>> +/**
>>> * Add options to the media, that will be used to determine how
>>> * VLCMediaPlayer will read the media. This allow to use VLC advanced
>>> * reading/streaming options in a per-media basis
>>> *
>>> * The options are detailed in vlc --long-help, for instance "--sout-all"
>>> * And on the web: http://wiki.videolan.org/VLC_command-line_help
>>> -
>>> -**************************************************************************/
>>> +*/
>>> - (void) addOptions:(NSDictionary*) options;
>>>
>>> +/**
>>> + * Getter for statistics information
>>> + * Returns a NSDictionary with NSNumbers for values.
>>> + *
>>> + */
>>> +- (NSDictionary*) getStats;

You should drop the "get" in front of stats.

>>> @end
>>> diff --git a/projects/macosx/framework/Sources/VLCMedia.m b/projects/macosx/framework/Sources/VLCMedia.m
>>> index 958591e..eaf0dd3 100644
>>> --- a/projects/macosx/framework/Sources/VLCMedia.m
>>> +++ b/projects/macosx/framework/Sources/VLCMedia.m
>>> @@ -240,7 +240,7 @@ static void HandleMediaParsedChanged(const libvlc_event_t * event, void * self)
>>>    libvlc_event_detach(p_em, libvlc_MediaDurationChanged, HandleMediaDurationChanged, self);
>>>    libvlc_event_detach(p_em, libvlc_MediaStateChanged,    HandleMediaStateChanged,    self);
>>>    libvlc_event_detach(p_em, libvlc_MediaSubItemAdded,    HandleMediaSubItemAdded,    self);
>>> -    libvlc_event_detach(p_em, libvlc_MediaParsedChanged,   HandleMediaParsedChanged,    self);
>>> +    libvlc_event_detach(p_em, libvlc_MediaParsedChanged,   HandleMediaParsedChanged,   self);
>>>    [[VLCEventManager sharedManager] cancelCallToObject:self];
>>>
>>>    // Testing to see if the pointer exists is not required, if the pointer is null
>>> @@ -338,6 +338,34 @@ static void HandleMediaParsedChanged(const libvlc_event_t * event, void * self)
>>>    }
>>> }
>>>
>>> +- (NSDictionary*) getStats
>>> +{
>>> +    if(!p_md)
>>> +        return NULL;
>>> +
>>> +    NSMutableDictionary *d = [NSMutableDictionary dictionary];
>>> +    libvlc_media_stats_t p_stats;
>>> +    libvlc_media_get_stats(p_md, &p_stats);
>>> +
>>> +    [d setObject:[NSNumber numberWithFloat: p_stats.f_demux_bitrate]       forKey:@"demux_bitrate"];
>>> +    [d setObject:[NSNumber numberWithFloat: p_stats.f_input_bitrate]       forKey:@"input_bitrate"];
>>> +    [d setObject:[NSNumber numberWithFloat: p_stats.f_send_bitrate]        forKey:@"send_bitrate"];
>>> +    [d setObject:[NSNumber numberWithInt:   p_stats.i_decoded_audio]       forKey:@"decoded_audio"];
>>> +    [d setObject:[NSNumber numberWithInt:   p_stats.i_decoded_video]       forKey:@"decoded_video"];
>>> +    [d setObject:[NSNumber numberWithInt:   p_stats.i_demux_corrupted]     forKey:@"demux_corrupted"];
>>> +    [d setObject:[NSNumber numberWithInt:   p_stats.i_demux_discontinuity] forKey:@"demux_discontinuity"];
>>> +    [d setObject:[NSNumber numberWithInt:   p_stats.i_demux_read_bytes]    forKey:@"demux_read_bytes"];
>>> +    [d setObject:[NSNumber numberWithInt:   p_stats.i_displayed_pictures]  forKey:@"displayed_pictures"];
>>> +    [d setObject:[NSNumber numberWithInt:   p_stats.i_lost_abuffers]       forKey:@"lost_abuffers"];
>>> +    [d setObject:[NSNumber numberWithInt:   p_stats.i_lost_pictures]       forKey:@"lost_pictures"];
>>> +    [d setObject:[NSNumber numberWithInt:   p_stats.i_played_abuffers]     forKey:@"played_abuffers"];
>>> +    [d setObject:[NSNumber numberWithInt:   p_stats.i_read_bytes]          forKey:@"read_bytes"];
>>> +    [d setObject:[NSNumber numberWithInt:   p_stats.i_sent_bytes]          forKey:@"sent_bytes"];
>>> +    [d setObject:[NSNumber numberWithInt:   p_stats.i_sent_packets]        forKey:@"sent_packets"];

Could you use capitalization for the keys (readBytes instead of
read_bytes) and document the keys, or at least mention them in the
header?

Else, the patch looks fine, thanks!

Pierre.



More information about the vlc-devel mailing list