@@ -61,19 +61,25 @@ static int rtsp_client_media_play(struct rtsp_client_t *rtsp, int i)
61
61
62
62
assert (rtsp -> media [i ].uri [0 ] && rtsp -> session [i ].session [0 ]);
63
63
r = rtsp_client_authenrization (rtsp , "PLAY" , rtsp -> media [i ].uri , NULL , 0 , rtsp -> authenrization , sizeof (rtsp -> authenrization ));
64
- r = snprintf (rtsp -> req , sizeof (rtsp -> req ), sc_format , rtsp -> media [i ].uri , rtsp -> cseq ++ , rtsp -> session [i ].session , rtsp -> range , rtsp -> speed , rtsp -> authenrization , USER_AGENT );
64
+ r = snprintf (rtsp -> req , sizeof (rtsp -> req ), sc_format , rtsp -> media [i ].uri , rtsp -> cseq ++ , rtsp -> session [i ].session , rtsp -> range , rtsp -> scale , rtsp -> authenrization , USER_AGENT );
65
65
return (r > 0 && r < sizeof (rtsp -> req ) && r == rtsp -> handler .send (rtsp -> param , rtsp -> media [i ].uri , rtsp -> req , r )) ? 0 : -1 ;
66
66
}
67
67
68
- int rtsp_client_play (struct rtsp_client_t * rtsp , const uint64_t * npt , const float * speed )
68
+ int rtsp_client_play (struct rtsp_client_t * rtsp , const uint64_t * npt , const float * scale )
69
69
{
70
70
int r ;
71
71
assert (RTSP_SETUP == rtsp -> state || RTSP_PLAY == rtsp -> state || RTSP_PAUSE == rtsp -> state );
72
72
rtsp -> state = RTSP_PLAY ;
73
73
rtsp -> progress = 0 ;
74
- rtsp -> speed [0 ] = rtsp -> range [0 ] = '\0' ;
75
-
76
- if ( (speed && snprintf (rtsp -> speed , sizeof (rtsp -> speed ), "Scale: %.2f\r\n" , * speed ) >= sizeof (rtsp -> speed ))
74
+ rtsp -> scale [0 ] = rtsp -> range [0 ] = '\0' ;
75
+
76
+ #if RTSP_PLAY_SCALE == 2
77
+ if ((scale && snprintf (rtsp -> scale , sizeof (rtsp -> scale ), "Speed: %.2f\r\n" , * scale ) >= sizeof (rtsp -> scale ))
78
+ #elif defined(RTSP_PLAY_SCALE )
79
+ if ((scale && snprintf (rtsp -> scale , sizeof (rtsp -> scale ), "Scale: %.2f\r\n" , * scale ) >= sizeof (rtsp -> scale ))
80
+ #else
81
+ if ((scale && snprintf (rtsp -> scale , sizeof (rtsp -> scale ), "Speed: %.2f\r\nScale: %.2f\r\n" , * scale , * scale ) >= sizeof (rtsp -> scale ))
82
+ #endif
77
83
|| (npt && snprintf (rtsp -> range , sizeof (rtsp -> range ), "Range: npt=%" PRIu64 ".%" PRIu64 "-\r\n" , * npt / 1000 , * npt % 1000 ) >= sizeof (rtsp -> range )) )
78
84
return -1 ;
79
85
@@ -82,7 +88,7 @@ int rtsp_client_play(struct rtsp_client_t *rtsp, const uint64_t *npt, const floa
82
88
assert (rtsp -> media_count > 0 );
83
89
assert (rtsp -> aggregate_uri [0 ]);
84
90
r = rtsp_client_authenrization (rtsp , "PLAY" , rtsp -> aggregate_uri , NULL , 0 , rtsp -> authenrization , sizeof (rtsp -> authenrization ));
85
- r = snprintf (rtsp -> req , sizeof (rtsp -> req ), sc_format , rtsp -> aggregate_uri , rtsp -> cseq ++ , rtsp -> session [0 ].session , rtsp -> range , rtsp -> speed , rtsp -> authenrization , USER_AGENT );
91
+ r = snprintf (rtsp -> req , sizeof (rtsp -> req ), sc_format , rtsp -> aggregate_uri , rtsp -> cseq ++ , rtsp -> session [0 ].session , rtsp -> range , rtsp -> scale , rtsp -> authenrization , USER_AGENT );
86
92
return (r > 0 && r < sizeof (rtsp -> req ) && r == rtsp -> handler .send (rtsp -> param , rtsp -> aggregate_uri , rtsp -> req , r )) ? 0 : -1 ;
87
93
}
88
94
else
@@ -108,6 +114,8 @@ static int rtsp_client_media_play_onreply(struct rtsp_client_t* rtsp, void* pars
108
114
109
115
prange = http_get_header_by_name (parser , "Range" );
110
116
pscale = http_get_header_by_name (parser , "Scale" );
117
+ if (!pscale )
118
+ pscale = http_get_header_by_name (parser , "Speed" );
111
119
prtpinfo = http_get_header_by_name (parser , "RTP-Info" );
112
120
113
121
if (pscale )
0 commit comments