Le ven. 13 déc. 2024 à 16:42, Romain Beauxis <romain.beau...@gmail.com> a écrit : > > This patch adds parameters to pick specific ports for the two FEC error- > correction streams associated with a Pro-MPEG CoP #3-R2 FEC streams. > > Radio France is currently interested in using this technology to do > error-correction on some of their stream. In this context, they may not > have full control over their available UDP ports and would like to be able to > pick any two ports for these streams. > > The specifications for this protocol is available online: > https://www.yumpu.com/en/document/read/8808550/pro-mpeg-code-of-practice-3-release-2-pro-mpeg-forum > > In section 5.2, page 14, port assignments for the FEC streams are under > "shall" thus the changes in this patch should still be valid w.r.t. the > specs.
A bit surprised, as I re-read the specs now, to learn that "shall" is to be interpreted as a mandatory requirement while, usually, "must" is used. My understanding of the English language has failed me once more! Still, I believe that this patch should be useful (shall, if considering the use-case I came from!). > --- > doc/protocols.texi | 8 +++++++- > libavformat/prompeg.c | 8 ++++++-- > 2 files changed, 13 insertions(+), 3 deletions(-) > > diff --git a/doc/protocols.texi b/doc/protocols.texi > index ed70af4b33..3e14b732c6 100644 > --- a/doc/protocols.texi > +++ b/doc/protocols.texi > @@ -796,7 +796,7 @@ The required syntax is: > -f rtp_mpegts -fec prompeg=@var{option}=@var{val}... > rtp://@var{hostname}:@var{port} > @end example > > -The destination UDP ports are @code{port + 2} for the column FEC stream > +The default destination UDP ports are @code{port + 2} for the column FEC > stream > and @code{port + 4} for the row FEC stream. > > This protocol accepts the following options: > @@ -808,6 +808,12 @@ The number of columns (4-20, LxD <= 100) > @item d=@var{n} > The number of rows (4-20, LxD <= 100) > > +@item column_port_offset=@var{n} > +Port offset, relative to the main stream port, for the column stream > + > +@item row_port_offset=@var{n} > +Port offset, relative to the main stream port, for the row stream > + > @end table > > Example usage: > diff --git a/libavformat/prompeg.c b/libavformat/prompeg.c > index 322eb6560a..398638c66d 100644 > --- a/libavformat/prompeg.c > +++ b/libavformat/prompeg.c > @@ -103,6 +103,8 @@ typedef struct PrompegContext { > URLContext *fec_col_hd, *fec_row_hd; > PrompegFec **fec_arr, **fec_col_tmp, **fec_col, *fec_row; > int ttl; > + int column_port_offset; > + int row_port_offset; > uint8_t l, d; > uint8_t *rtp_buf; > uint16_t rtp_col_sn, rtp_row_sn; > @@ -123,6 +125,8 @@ static const AVOption options[] = { > { "ttl", "Time to live (in milliseconds, multicast only)", > OFFSET(ttl), AV_OPT_TYPE_INT, { .i64 = -1 }, -1, INT_MAX, .flags = E }, > { "l", "FEC L", OFFSET(l), AV_OPT_TYPE_INT, { .i64 = 5 }, 4, 20, .flags > = E }, > { "d", "FEC D", OFFSET(d), AV_OPT_TYPE_INT, { .i64 = 5 }, 4, 20, .flags > = E }, > + { "column_port_offset", "Port offset, relative to the main stream port, > for the column stream", OFFSET(column_port_offset), AV_OPT_TYPE_INT, { .i64 = > 2 }, -INT_MAX, INT_MAX, .flags = E }, > + { "row_port_offset", "Port offset, relative to the main stream port, for > the row stream", OFFSET(row_port_offset), AV_OPT_TYPE_INT, { .i64 = 4 }, > -INT_MAX, INT_MAX, .flags = E }, > { NULL } > }; > > @@ -293,11 +297,11 @@ static int prompeg_open(URLContext *h, const char *uri, > int flags) { > av_dict_set_int(&udp_opts, "ttl", s->ttl, 0); > } > > - ff_url_join(buf, sizeof (buf), "udp", NULL, hostname, rtp_port + 2, > NULL); > + ff_url_join(buf, sizeof (buf), "udp", NULL, hostname, rtp_port + > s->column_port_offset, NULL); > if (ffurl_open_whitelist(&s->fec_col_hd, buf, flags, > &h->interrupt_callback, > &udp_opts, h->protocol_whitelist, h->protocol_blacklist, h) < 0) > goto fail; > - ff_url_join(buf, sizeof (buf), "udp", NULL, hostname, rtp_port + 4, > NULL); > + ff_url_join(buf, sizeof (buf), "udp", NULL, hostname, rtp_port + > s->row_port_offset, NULL); > if (ffurl_open_whitelist(&s->fec_row_hd, buf, flags, > &h->interrupt_callback, > &udp_opts, h->protocol_whitelist, h->protocol_blacklist, h) < 0) > goto fail; > -- > 2.39.3 (Apple Git-146) > _______________________________________________ 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".