@@ -176,7 +176,7 @@ static void json_array_end(const int indentation) {
176
176
177
177
}
178
178
179
- void dump_segments (const struct M3U8Stream * const stream ) {
179
+ static void dump_segments (const struct M3U8Stream * const stream ) {
180
180
181
181
size_t index = 0 ;
182
182
size_t subindex = 0 ;
@@ -449,7 +449,7 @@ void dump_segments(const struct M3U8Stream* const stream) {
449
449
450
450
}
451
451
452
- void dump_media_stream (
452
+ static void dump_media_stream (
453
453
const struct M3U8Stream * const stream ,
454
454
const struct M3U8StreamItem * const item
455
455
) {
@@ -626,7 +626,7 @@ void dump_media_stream(
626
626
627
627
}
628
628
629
- void dump_variant_stream (
629
+ static void dump_variant_stream (
630
630
const struct M3U8Stream * const stream ,
631
631
const struct M3U8StreamItem * const item
632
632
) {
@@ -851,7 +851,91 @@ void dump_variant_stream(
851
851
852
852
}
853
853
854
- void dump_master_playlist (const struct M3U8Stream * const stream ) {
854
+ static void dump_media_playlist (const struct M3U8Stream * const stream ) {
855
+
856
+ const bigfloat_t duration = m3u8stream_getduration (stream );
857
+ const biguint_t segments = m3u8stream_getsegments (stream );
858
+ const bigfloat_t average_duration = duration / (segments > 0 ? segments : 1 );
859
+
860
+ json_object_begin (0 );
861
+
862
+ /* Type */
863
+ put_jkey (KTYPE , 1 );
864
+ json_object_begin (0 );
865
+
866
+ put_jkey (KID , 2 );
867
+ put_jvalue_uint (stream -> playlist .type );
868
+
869
+ put_jdelimiter ();
870
+
871
+ put_jkey (KNAME , 2 );
872
+ put_jvalue_string ("Media Playlist" );
873
+
874
+ printf ("\n" );
875
+
876
+ json_object_end (1 );
877
+
878
+ put_jdelimiter ();
879
+
880
+ /* Streams */
881
+ put_jkey (KSTREAMS , 1 );
882
+
883
+ json_array_begin (0 );
884
+
885
+ json_object_begin (2 );
886
+
887
+ /* Type */
888
+ put_jkey (KTYPE , 3 );
889
+ put_jvalue_null ();
890
+
891
+ put_jdelimiter ();
892
+
893
+ /* Duration */
894
+ put_jkey (KDURATION , 3 );
895
+ put_jvalue_uint (duration );
896
+
897
+ put_jdelimiter ();
898
+
899
+ /* Average duration */
900
+ put_jkey (KAVERAGE_DURATION , 3 );
901
+ put_jvalue_uint (average_duration );
902
+
903
+ put_jdelimiter ();
904
+
905
+ /* Segments */
906
+ put_jkey (KSEGMENTS , 3 );
907
+ put_jvalue_uint (segments );
908
+
909
+ put_jdelimiter ();
910
+
911
+ /* Media */
912
+ put_jkey (KMEDIA , 3 );
913
+
914
+ json_array_begin (0 );
915
+
916
+ dump_segments (stream );
917
+
918
+ printf ("\n" );
919
+
920
+ json_array_end (3 );
921
+
922
+ printf ("\n" );
923
+
924
+ json_object_end (2 );
925
+
926
+ printf ("\n" );
927
+
928
+ json_array_end (1 );
929
+
930
+ printf ("\n" );
931
+
932
+ json_object_end (0 );
933
+
934
+ printf ("\n" );
935
+
936
+ }
937
+
938
+ static void dump_master_playlist (const struct M3U8Stream * const stream ) {
855
939
856
940
int begin = 1 ;
857
941
@@ -929,4 +1013,17 @@ void dump_master_playlist(const struct M3U8Stream* const stream) {
929
1013
930
1014
printf ("\n" );
931
1015
1016
+ }
1017
+
1018
+ void dump_playlist (const struct M3U8Stream * const stream ) {
1019
+
1020
+ switch (stream -> playlist .type ) {
1021
+ case M3U8_PLAYLIST_TYPE_MASTER :
1022
+ dump_master_playlist (stream );
1023
+ break ;
1024
+ case M3U8_PLAYLIST_TYPE_MEDIA :
1025
+ dump_media_playlist (stream );
1026
+ break ;
1027
+ }
1028
+
932
1029
}
0 commit comments