From c80c8c1cfd594f2597e46b09d44360ade9f4fec2 Mon Sep 17 00:00:00 2001 From: LukePulverenti Luke Pulverenti luke pulverenti Date: Thu, 23 Aug 2012 01:45:26 -0400 Subject: Switched all i/o to win32 methods and added protobuf serialization for ffprobe caching --- MediaBrowser.Controller/FFMpeg/FFProbeResult.cs | 59 ++++++++++++++++++++++++- 1 file changed, 57 insertions(+), 2 deletions(-) (limited to 'MediaBrowser.Controller/FFMpeg/FFProbeResult.cs') diff --git a/MediaBrowser.Controller/FFMpeg/FFProbeResult.cs b/MediaBrowser.Controller/FFMpeg/FFProbeResult.cs index 8b2a8687e..db7c9dd3c 100644 --- a/MediaBrowser.Controller/FFMpeg/FFProbeResult.cs +++ b/MediaBrowser.Controller/FFMpeg/FFProbeResult.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using ProtoBuf; namespace MediaBrowser.Controller.FFMpeg { @@ -7,9 +8,13 @@ namespace MediaBrowser.Controller.FFMpeg /// Sample output: /// http://stackoverflow.com/questions/7708373/get-ffmpeg-information-in-friendly-way /// + [ProtoContract] public class FFProbeResult { - public IEnumerable streams { get; set; } + [ProtoMember(1)] + public MediaStream[] streams { get; set; } + + [ProtoMember(2)] public MediaFormat format { get; set; } } @@ -18,47 +23,97 @@ namespace MediaBrowser.Controller.FFMpeg /// A number of properties are commented out to improve deserialization performance /// Enable them as needed. /// + [ProtoContract] public class MediaStream { + [ProtoMember(1)] public int index { get; set; } + + [ProtoMember(2)] public string profile { get; set; } + + [ProtoMember(3)] public string codec_name { get; set; } + + [ProtoMember(4)] public string codec_long_name { get; set; } + + [ProtoMember(5)] public string codec_type { get; set; } + //public string codec_time_base { get; set; } //public string codec_tag { get; set; } //public string codec_tag_string { get; set; } //public string sample_fmt { get; set; } + + [ProtoMember(6)] public string sample_rate { get; set; } + + [ProtoMember(7)] public int channels { get; set; } + //public int bits_per_sample { get; set; } //public string r_frame_rate { get; set; } + + [ProtoMember(8)] public string avg_frame_rate { get; set; } + //public string time_base { get; set; } //public string start_time { get; set; } + + [ProtoMember(9)] public string duration { get; set; } + + [ProtoMember(10)] public string bit_rate { get; set; } + [ProtoMember(11)] public int width { get; set; } + + [ProtoMember(12)] public int height { get; set; } + //public int has_b_frames { get; set; } //public string sample_aspect_ratio { get; set; } + + [ProtoMember(13)] public string display_aspect_ratio { get; set; } + //public string pix_fmt { get; set; } //public int level { get; set; } - public Dictionary tags { get; set; } + + [ProtoMember(14)] + public Dictionary tags { get; set; } } + [ProtoContract] public class MediaFormat { + [ProtoMember(1)] public string filename { get; set; } + + [ProtoMember(2)] public int nb_streams { get; set; } + + [ProtoMember(3)] public string format_name { get; set; } + + [ProtoMember(4)] public string format_long_name { get; set; } + + [ProtoMember(5)] public string start_time { get; set; } + + [ProtoMember(6)] public string duration { get; set; } + + [ProtoMember(7)] public string size { get; set; } + + [ProtoMember(8)] public string bit_rate { get; set; } + + [ProtoMember(9)] public Dictionary tags { get; set; } } } -- cgit v1.2.3