On Sun, Dec 29, 2019 at 9:57 AM Jun Zhao <mypopy...@gmail.com> wrote: > > From: Jun Zhao <barryjz...@tencent.com> > > add version guard for srt encryption control. and use > SRTO_STRICTENC(53) for compatibility. > > Signed-off-by: Jun Zhao <barryjz...@tencent.com> > --- > libavformat/libsrt.c | 11 +++++++++-- > 1 files changed, 9 insertions(+), 2 deletions(-) > > diff --git a/libavformat/libsrt.c b/libavformat/libsrt.c > index 2fdfe8e..a727b1c 100644 > --- a/libavformat/libsrt.c > +++ b/libavformat/libsrt.c > @@ -62,9 +62,11 @@ typedef struct SRTContext { > int64_t maxbw; > int pbkeylen; > char *passphrase; > +#if SRT_VERSION_VALUE >= 0x010302 > int enforced_encryption; > int kmrefreshrate; > int kmpreannounce; > +#endif > int mss; > int ffs; > int ipttl; > @@ -105,9 +107,11 @@ 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 }, > { "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 }, > - { "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 }, > +#if SRT_VERSION_VALUE >= 0x010302 > + { "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 }, > +#endif > { "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 }, > { "ipttl", "IP Time To Live", > OFFSET(ipttl), AV_OPT_TYPE_INT, { .i64 = > -1 }, -1, 255, .flags = D|E }, > @@ -327,9 +331,12 @@ 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->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->enforced_encryption >= 0 && libsrt_setsockopt(h, fd, > SRTO_ENFORCEDENCRYPTION, "SRTO_ENFORCEDENCRYPTION", &s->enforced_encryption, > sizeof(s->enforced_encryption)) < 0) || > +#if SRT_VERSION_VALUE >= 0x010302 > + /* SRTO_STRICTENC == SRTO_ENFORCEDENCRYPTION (53), but for > compatibility, we used SRTO_STRICTENC */ > + (s->enforced_encryption >= 0 && libsrt_setsockopt(h, fd, > SRTO_STRICTENC, "SRTO_STRICTENC", &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) || > +#endif > (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->ipttl >= 0 && libsrt_setsockopt(h, fd, SRTO_IPTTL, "SRTO_UPTTL", > &s->ipttl, sizeof(s->ipttl)) < 0) || > -- > 1.7.1 > Applied, thx _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".