@ -62,6 +62,9 @@ typedef struct SRTContext {
int64_t maxbw ;
int64_t maxbw ;
int pbkeylen ;
int pbkeylen ;
char * passphrase ;
char * passphrase ;
int enforced_encryption ;
int kmrefreshrate ;
int kmpreannounce ;
int mss ;
int mss ;
int ffs ;
int ffs ;
int ipttl ;
int ipttl ;
@ -102,6 +105,9 @@ static const AVOption libsrt_options[] = {
{ " maxbw " , " Maximum bandwidth (bytes per second) that the connection can use " , OFFSET ( maxbw ) , AV_OPT_TYPE_INT64 , { . i64 = - 1 } , - 1 , INT64_MAX , . flags = D | E } ,
{ " maxbw " , " Maximum bandwidth (bytes per second) that the connection can use " , OFFSET ( maxbw ) , AV_OPT_TYPE_INT64 , { . i64 = - 1 } , - 1 , INT64_MAX , . flags = D | E } ,
{ " pbkeylen " , " Crypto key len in bytes {16,24,32} Default: 16 (128-bit) " , OFFSET ( pbkeylen ) , AV_OPT_TYPE_INT , { . i64 = - 1 } , - 1 , 32 , . flags = D | E } ,
{ " pbkeylen " , " Crypto key len in bytes {16,24,32} Default: 16 (128-bit) " , OFFSET ( pbkeylen ) , AV_OPT_TYPE_INT , { . i64 = - 1 } , - 1 , 32 , . flags = D | E } ,
{ " passphrase " , " Crypto PBKDF2 Passphrase size[0,10..64] 0:disable crypto " , OFFSET ( passphrase ) , AV_OPT_TYPE_STRING , { . str = NULL } , . flags = D | E } ,
{ " passphrase " , " Crypto PBKDF2 Passphrase size[0,10..64] 0:disable crypto " , OFFSET ( passphrase ) , AV_OPT_TYPE_STRING , { . str = NULL } , . flags = D | E } ,
{ " enforced_encryption " , " Enforces that both connection parties have the same passphrase set " , OFFSET ( enforced_encryption ) , AV_OPT_TYPE_BOOL , { . i64 = - 1 } , - 1 , 1 , . flags = D | E } ,
{ " kmrefreshrate " , " The number of packets to be transmitted after which the encryption key is switched to a new key " , OFFSET ( kmrefreshrate ) , AV_OPT_TYPE_INT , { . i64 = - 1 } , - 1 , INT_MAX , . flags = D | E } ,
{ " kmpreannounce " , " The interval between when a new encryption key is sent and when switchover occurs " , OFFSET ( kmpreannounce ) , AV_OPT_TYPE_INT , { . i64 = - 1 } , - 1 , INT_MAX , . flags = D | E } ,
{ " mss " , " The Maximum Segment Size " , OFFSET ( mss ) , AV_OPT_TYPE_INT , { . i64 = - 1 } , - 1 , 1500 , . flags = D | E } ,
{ " mss " , " The Maximum Segment Size " , OFFSET ( mss ) , AV_OPT_TYPE_INT , { . i64 = - 1 } , - 1 , 1500 , . flags = D | E } ,
{ " ffs " , " Flight flag size (window size) (in bytes) " , OFFSET ( ffs ) , AV_OPT_TYPE_INT , { . i64 = - 1 } , - 1 , INT_MAX , . flags = D | E } ,
{ " ffs " , " Flight flag size (window size) (in bytes) " , OFFSET ( ffs ) , AV_OPT_TYPE_INT , { . i64 = - 1 } , - 1 , INT_MAX , . flags = D | E } ,
{ " ipttl " , " IP Time To Live " , OFFSET ( ipttl ) , AV_OPT_TYPE_INT , { . i64 = - 1 } , - 1 , 255 , . flags = D | E } ,
{ " ipttl " , " IP Time To Live " , OFFSET ( ipttl ) , AV_OPT_TYPE_INT , { . i64 = - 1 } , - 1 , 255 , . flags = D | E } ,
@ -321,6 +327,9 @@ static int libsrt_set_options_pre(URLContext *h, int fd)
( s - > maxbw > = 0 & & libsrt_setsockopt ( h , fd , SRTO_MAXBW , " SRTO_MAXBW " , & s - > maxbw , sizeof ( s - > maxbw ) ) < 0 ) | |
( s - > maxbw > = 0 & & libsrt_setsockopt ( h , fd , SRTO_MAXBW , " SRTO_MAXBW " , & s - > maxbw , sizeof ( s - > maxbw ) ) < 0 ) | |
( s - > pbkeylen > = 0 & & libsrt_setsockopt ( h , fd , SRTO_PBKEYLEN , " SRTO_PBKEYLEN " , & s - > pbkeylen , sizeof ( s - > pbkeylen ) ) < 0 ) | |
( s - > pbkeylen > = 0 & & libsrt_setsockopt ( h , fd , SRTO_PBKEYLEN , " SRTO_PBKEYLEN " , & s - > pbkeylen , sizeof ( s - > pbkeylen ) ) < 0 ) | |
( s - > passphrase & & libsrt_setsockopt ( h , fd , SRTO_PASSPHRASE , " SRTO_PASSPHRASE " , s - > passphrase , strlen ( s - > passphrase ) ) < 0 ) | |
( s - > passphrase & & libsrt_setsockopt ( h , fd , SRTO_PASSPHRASE , " SRTO_PASSPHRASE " , s - > passphrase , strlen ( s - > passphrase ) ) < 0 ) | |
( s - > enforced_encryption > = 0 & & libsrt_setsockopt ( h , fd , SRTO_ENFORCEDENCRYPTION , " SRTO_ENFORCEDENCRYPTION " , & s - > enforced_encryption , sizeof ( s - > enforced_encryption ) ) < 0 ) | |
( s - > kmrefreshrate > = 0 & & libsrt_setsockopt ( h , fd , SRTO_KMREFRESHRATE , " SRTO_KMREFRESHRATE " , & s - > kmrefreshrate , sizeof ( s - > kmrefreshrate ) ) < 0 ) | |
( s - > kmpreannounce > = 0 & & libsrt_setsockopt ( h , fd , SRTO_KMPREANNOUNCE , " SRTO_KMPREANNOUNCE " , & s - > kmpreannounce , sizeof ( s - > kmpreannounce ) ) < 0 ) | |
( s - > mss > = 0 & & libsrt_setsockopt ( h , fd , SRTO_MSS , " SRTO_MMS " , & s - > mss , sizeof ( s - > mss ) ) < 0 ) | |
( s - > mss > = 0 & & libsrt_setsockopt ( h , fd , SRTO_MSS , " SRTO_MMS " , & s - > mss , sizeof ( s - > mss ) ) < 0 ) | |
( s - > ffs > = 0 & & libsrt_setsockopt ( h , fd , SRTO_FC , " SRTO_FC " , & s - > ffs , sizeof ( s - > ffs ) ) < 0 ) | |
( s - > ffs > = 0 & & libsrt_setsockopt ( h , fd , SRTO_FC , " SRTO_FC " , & s - > ffs , sizeof ( s - > ffs ) ) < 0 ) | |
( s - > ipttl > = 0 & & libsrt_setsockopt ( h , fd , SRTO_IPTTL , " SRTO_UPTTL " , & s - > ipttl , sizeof ( s - > ipttl ) ) < 0 ) | |
( s - > ipttl > = 0 & & libsrt_setsockopt ( h , fd , SRTO_IPTTL , " SRTO_UPTTL " , & s - > ipttl , sizeof ( s - > ipttl ) ) < 0 ) | |
@ -507,6 +516,15 @@ static int libsrt_open(URLContext *h, const char *uri, int flags)
av_freep ( & s - > passphrase ) ;
av_freep ( & s - > passphrase ) ;
s - > passphrase = av_strndup ( buf , strlen ( buf ) ) ;
s - > passphrase = av_strndup ( buf , strlen ( buf ) ) ;
}
}
if ( av_find_info_tag ( buf , sizeof ( buf ) , " enforced_encryption " , p ) ) {
s - > enforced_encryption = strtol ( buf , NULL , 10 ) ;
}
if ( av_find_info_tag ( buf , sizeof ( buf ) , " kmrefreshrate " , p ) ) {
s - > kmrefreshrate = strtol ( buf , NULL , 10 ) ;
}
if ( av_find_info_tag ( buf , sizeof ( buf ) , " kmpreannounce " , p ) ) {
s - > kmpreannounce = strtol ( buf , NULL , 10 ) ;
}
if ( av_find_info_tag ( buf , sizeof ( buf ) , " mss " , p ) ) {
if ( av_find_info_tag ( buf , sizeof ( buf ) , " mss " , p ) ) {
s - > mss = strtol ( buf , NULL , 10 ) ;
s - > mss = strtol ( buf , NULL , 10 ) ;
}
}