From patchwork Mon Feb 19 08:31:16 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: rayjay <526528945@qq.com> X-Patchwork-Id: 46363 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:dda5:b0:19e:cdac:8cce with SMTP id kw37csp1126797pzb; Mon, 19 Feb 2024 00:31:51 -0800 (PST) X-Forwarded-Encrypted: i=2; AJvYcCXVyBJ0Z5YyBVeYqM2/U4ZkWwiLWr+k2VbUgLNZikNZuzZK71L0eX9GjqqSLMjR2RbwJx5RqXvHPR/lDB6iXR4p8s5SkGPa3eB/Mg== X-Google-Smtp-Source: AGHT+IFYv8T0+hEU3dzLQlxUP1SxN5GfIAjKGSUGJEjgO/v8ZsOqEmfz41Fsp0bpt2AgjEDFZgGa X-Received: by 2002:a05:6402:3593:b0:563:fc1d:4568 with SMTP id y19-20020a056402359300b00563fc1d4568mr6740369edc.10.1708331511065; Mon, 19 Feb 2024 00:31:51 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1708331511; cv=none; d=google.com; s=arc-20160816; b=SgFD990gakWclJKqO0YC7OpBSCDpKfGSbR1Sj/8OqX5QI5zfqZtswq/znU4/xvXZGL rPEV41tQJSFJb0oGte3XhCGtCB54iNQWiak0BYVhS9+mYC+xMoG3bzo3tFBgKACHfWQZ DqEiiVd+a8gRggYKwn5cbYUcetXWpNKrfpObKtBae8J41O7Fs2WKx+TbxVp2X84tnbnz lz2OWGvlwTnqht8hT/MlJaH/ir33i5b/kuCzdIbaAOmAbSpqFo37j5p61hjx8WH1s1d4 aiJnLcqGQrxVlO/gkOp3zwwYvfTORZYszZ6S9DevNfZKkNLzF0jsruiF/dMfSEikSe+z Y2Pg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to:from :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:date:to:message-id :delivered-to; bh=WjjdMQOYqlhgIm0FrT6pu7BedoVujoOw3SgqGw1mvco=; fh=g9+xlSOo/4WH7awHkCdDFIm2TRUeDPRENMfJIs22KW0=; b=K7Vy8yPIPgKdzJoa/6+A5chfM/hoyliSD4MK622V8eCkpnYQZhEjMO8q9HSoB/+1qL lPChgFtFPMrI8Ig46OmgZKIuNVMsJA3dzJnSc7EnJ99WDPRN7lh9Es8Xg4JtWUG1HnSR 5ZlqU42oxvfDrF/0fkUdnGq/VqsfJShGhMjHvRJxs27zppfW7kLwy0oOdGTxTacOOXyc YLDZy9RRB9mkvbJVpTCAPwALgnUGxDBDv1fgptK73np+Kiac3doOrBa4y6DHipCedeKp UTXZM5byI2SpCuXa1Pt/sk73VqEbmgiRTnXRE5gk5fdoWlqoki2wx3yVF5/3A5URZHNf r3TQ==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id b24-20020aa7c6d8000000b0056464ec317dsi998148eds.615.2024.02.19.00.31.50; Mon, 19 Feb 2024 00:31:51 -0800 (PST) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 20CD968D3CB; Mon, 19 Feb 2024 10:31:48 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from out203-205-251-80.mail.qq.com (out203-205-251-80.mail.qq.com [203.205.251.80]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 68D8568D3BF for ; Mon, 19 Feb 2024 10:31:39 +0200 (EET) Received: from localhost.localdomain ([119.123.55.197]) by newxmesmtplogicsvrsza7-0.qq.com (NewEsmtp) with SMTP id 7E213E21; Mon, 19 Feb 2024 16:31:34 +0800 X-QQ-mid: xmsmtpt1708331494tspd0qzo3 Message-ID: X-QQ-XMAILINFO: MyIXMys/8kCtHRicK2wwQ7Q9ikzF8LVM6dNxpDKt7DQyCiJav0F83mbAJLu0pb 1eRw4TgZWWWkXU9CU7e6z/HUvT9b7UDkbP3+Uq2hqNjZYncEb71qMDImgC6rR7/WQ2sdZVFmhvic 6UKtQe8zgDH5X1x73zA45kV7KgV8oKsfZhmaElQp9mqXVjhXDJ/IPI5VNTyMgH0/D40Hh5NoQBhc HB5IL4RkTX+bD21QtK/MG1XzZVsfGg1HX7U2bKXRoTF6E63VhMY0oSuptCSTIfFqOFuwPKTkRXEI BRbXYSlfR7zRGUgGySwJmGEbzf0H8gfxzciL8tOnauECJAGwkvYW8zVL7tY5SbYmGtpIjettDdQe tNpaikYzJSaicbEdK4XyOiOFrdR3oJ6sqgiP90/cZ2lsQ40vmAHkHFGe4qLMLPwF68hK5fCtiX9h 4c3zBVaclfB/NAip+yToRv8jrATh5+d+DmbfcmYR2cSTET8tbfnr6A32DQU8cTZXxKCeWWCjj/ha gIH+QKk6omzqshTmY+Z1e5YpQNZB8lvyWsRceeVNEzrtzlBzwGDuoqKwgpvC6NkgMThGA4BCaUZo vMCLiroj4obWt93uqIg9uvPeY0z2zgziQsJYETXwEvANOdjAFHumrlWdUYZB5DCohCC1WxB8Ov/h HfDMpmKzOuAOUoqYqeMEwE3hOevZZdytykBhQ8/tge0SXamdWIRWUkhIvM0S7wDZ8E/I/JdKe2Ai l7y+pY463lrDapPEWbv+AezX+YxraTmO5ez1W/9O3uyb9PCPtwT+DSxiAX9AwrtEWtIla9qp8aPv EAuzxuCggHTnTI6/XLOrozkicEhPdIGDejqkr3qdAK8xGddHC48fNysfjlst+ZDgsYv9Ydy871UM nfVj4srkyHkuU/V0sePNslJ23lNmdxQ1n8Ak61IWtgLxQ1kwR5a/aU+fxuTUNpzqIGwzcDkr4Ubb PM+RVDcbHdoHiUIXTCB8mPYU/bFe4VbLx+JZNn3iJbKQay/6GxLWVxRcvZaH0yJGrnuwRUH8c= X-QQ-XMRINFO: Nq+8W0+stu50PRdwbJxPCL0= To: ffmpeg-devel@ffmpeg.org Date: Mon, 19 Feb 2024 16:31:16 +0800 X-OQ-MSGID: <20240219083116.1364-1-526528945@qq.com> X-Mailer: git-send-email 2.40.0.windows.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] libavformat/rtpenc_jpeg.c: Added support for DRI frames in MJPEG RTP packetization X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: rayjay via ffmpeg-devel From: rayjay <526528945@qq.com> Reply-To: FFmpeg development discussions and patches Cc: rayjay <526528945@qq.com> Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: eW2T8Ro/IPyE Signed-off-by: rayjay <526528945@qq.com> --- libavformat/rtpenc_jpeg.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/libavformat/rtpenc_jpeg.c b/libavformat/rtpenc_jpeg.c index e4e95931f4..721c02ff76 100644 --- a/libavformat/rtpenc_jpeg.c +++ b/libavformat/rtpenc_jpeg.c @@ -37,6 +37,7 @@ void ff_rtp_send_jpeg(AVFormatContext *s1, const uint8_t *buf, int size) int len; int i; int default_huffman_tables = 0; + uint16_t restart_interval = 0; s->buf_ptr = s->buf; s->timestamp = s->cur_timestamp; @@ -164,6 +165,9 @@ void ff_rtp_send_jpeg(AVFormatContext *s1, const uint8_t *buf, int size) return; } break; + } else if (buf[i + 1] == DRI) { + type |= 0x40; + restart_interval = AV_RB16(&buf[i + 4]); } } @@ -203,6 +207,9 @@ void ff_rtp_send_jpeg(AVFormatContext *s1, const uint8_t *buf, int size) if (off == 0 && nb_qtables) hdr_size += 4 + 64 * nb_qtables; + if (type & 0x40) + hdr_size += 4; + /* payload max in one packet */ len = FFMIN(size, s->max_payload_size - hdr_size); @@ -214,6 +221,13 @@ void ff_rtp_send_jpeg(AVFormatContext *s1, const uint8_t *buf, int size) bytestream_put_byte(&p, w); bytestream_put_byte(&p, h); + /* set dri */ + if (type & 0x40) { + bytestream_put_be16(&p, restart_interval); + bytestream_put_byte(&p, 0xff); + bytestream_put_byte(&p, 0xff); + } + if (off == 0 && nb_qtables) { /* set quantization tables header */ bytestream_put_byte(&p, 0);