3 #ifndef __SS_MANIFEST_PARSE_H__
4 #define __SS_MANIFEST_PARSE_H__
8 #include <libxml2/libxml/tree.h>
11 typedef struct _GstSSMParse GstSSMParse;
13 #define GST_SSMPARESE(m) ((GstSSMParse*)m)
14 #define XML_MAKE_FOURCC(a,b,c,d) ((guint32)((a)|(b)<<8|(c)<<16|(d)<<24))
15 #define BITRATE_SWITCH_UPPER_THRESHOLD 0.4
16 #define BITRATE_SWITCH_LOWER_THRESHOLD 0.1
21 SS_STREAM_UNKNOWN = -1,
30 SS_MODE_NO_SWITCH, /* no switch is need */
31 SS_MODE_AONLY, /* switch to audio only */
37 guint64 StreamTimeScale;
38 guint64 stream_duration;
47 GList *fragment_lists;
52 gboolean fraglist_eos;
65 guint bps; /* bits per sample */
68 guint NALULengthofLength;
86 }GstSSMProtectionNode;
95 guint64 DVRWindowLength;
96 gboolean PresentationIsLive;
97 GList *streams[SS_STREAM_NUM];
98 GstSSMProtectionNode *ProtectNode;
103 gchar *uri; /* manifest URI */
104 gchar *presentation_uri;
105 GstSSMRootNode *RootNode;
110 #define gst_ssm_parse_check_stream(parser, stream_type) (parser->RootNode->streams[stream_type])
111 #define GST_SSM_PARSE_GET_DURATION(parser) (parser->RootNode->Duration)
112 #define GST_SSM_PARSE_GET_TIMESCALE(parser) (parser->RootNode->TimeScale)
113 #define GST_SSM_PARSE_IS_LIVE_PRESENTATION(parser) (parser->RootNode->PresentationIsLive)
114 #define GST_SSM_PARSE_LOOKAHEAD_COUNT(parser) (parser->RootNode->LookAheadCount)
115 #define GST_SSM_PARSE_NS_START(parser) (parser->ns_start)
117 const gchar *ssm_parse_get_stream_name(SS_STREAM_TYPE type);
118 GstSSMParse *gst_ssm_parse_new (const gchar * uri);
119 void gst_ssm_parse_free (GstSSMParse *parser);
120 gboolean gst_ssm_parse_manifest (GstSSMParse *parser, char *data, unsigned int size);
121 gboolean gst_ssm_parse_get_next_fragment_url (GstSSMParse *parser, SS_STREAM_TYPE stream_type, gchar **uri, guint64 *start_ts);
122 gboolean gst_ssm_parse_append_next_fragment (GstSSMParse *parser, SS_STREAM_TYPE stream_type, guint64 timestamp, guint64 duration);
123 GstCaps *ssm_parse_get_stream_caps (GstSSMParse *parser, SS_STREAM_TYPE stream_type);
124 SS_BW_MODE gst_ssm_parse_switch_qualitylevel (GstSSMParse *parser, guint drate);
125 gboolean gst_ssm_parse_seek_manifest (GstSSMParse *parser, guint64 seek_time);
126 gboolean gst_ssm_parse_get_protection_header (GstSSMParse *parser, unsigned char **protection_header, unsigned int *protection_header_len);
128 #endif /* __SS_MANIFEST_PARSE_H__ */