From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 29056479AB for ; Sat, 27 Jan 2024 05:11:25 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 2E68F68D154; Sat, 27 Jan 2024 07:11:22 +0200 (EET) Received: from mail-oi1-f178.google.com (mail-oi1-f178.google.com [209.85.167.178]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id AD12168D13F for ; Sat, 27 Jan 2024 07:11:15 +0200 (EET) Received: by mail-oi1-f178.google.com with SMTP id 5614622812f47-3bb9d54575cso877963b6e.2 for ; Fri, 26 Jan 2024 21:11:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1706332273; x=1706937073; darn=ffmpeg.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=L7b+wa2IoCA6ltF5NYmsb71wd+iwunkfNQ5+DqMSq+8=; b=SQzeOum62rwShbbyJVZqYH05RvF9L0KBYhh7GmQJbO+xxHaQ5PUA45/hTDxx7QMXaV nWbu3eAWFxEjZkDnKsFmJwZF9xKme+vZWGhn1QHiX+qDN15MNCuiXaBowfPUNC459IXV m3jA9ENQgrRbrMTL09JQUe3dEftm7PPQtFjDP6SBpxCRc8HhNTTQ/WQwqaCbpS5/YRsX qgqe0Mx63PeiM7gVDaZu1CFx5h/i9epJSRKfaNUxINdB4fp6gpGIWLXePF8ci4IlnGwp E8JTTs85wFg/8zH9fcmra5Ixls4IfcZbdNppfXb/mYiLptPLxWYXEwvvSd0CN7Co2cNM GLHA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1706332273; x=1706937073; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=L7b+wa2IoCA6ltF5NYmsb71wd+iwunkfNQ5+DqMSq+8=; b=F3s45ITBq+BPx/O2YEDtYAs45xJ0VtJZv8YFykHzw7xQOI344QbmvafYjHKUSiahoM VSZM80vPJhIMWIGrHk7mJQU9YcEpI3VtAbrh4Bg1iEVdWOC/BNqeNtf5EhZ8SjuV/zmr mErClgRtkdQ4PcZNHkWedzATG8bu2n/HejvcDRHCiZzyIgbFsK4f6h5nHkceaxERYIae Wbx38k7kLF+1wn6vfCktVwgVbsAIci/NTVBg4+g+87dDINJ2N6p1ckxmfEe+w0xq6IG8 77E0MAz/ByruSZxNSmXsuu2dvRKrCbxl2+oDRGtcjjjXD9xuCdXlO53FyjcTZa5K5F8F SG0w== X-Gm-Message-State: AOJu0YzkCV7rftJkK2tozAozyjqyPL+4nfEnOSlSZ+BPJNY0Yx645rjP D5rT0HEcOPe9VPqG/TnuEmh43Aafs5L5Tfn7Wa+m3QgAPrgb7iRzQVqCDt6u X-Google-Smtp-Source: AGHT+IFm3hVtUgEq47D+t8l/csPTfmYdx5sHDGqu5oWLj4E1u/VLRtE8H179yaJk2Z/5WLJ6G3O2sg== X-Received: by 2002:a05:6808:1701:b0:3bd:c0e1:cc4e with SMTP id bc1-20020a056808170100b003bdc0e1cc4emr1283612oib.22.1706332273274; Fri, 26 Jan 2024 21:11:13 -0800 (PST) Received: from ramblenride.. ([2604:3d09:f83:e00:7182:4e23:17b3:2fe4]) by smtp.gmail.com with ESMTPSA id 9-20020a630009000000b005ccf10e73b8sm1719058pga.91.2024.01.26.21.11.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 26 Jan 2024 21:11:12 -0800 (PST) From: Sebastien Cote To: ffmpeg-devel@ffmpeg.org Date: Fri, 26 Jan 2024 22:09:44 -0700 Message-Id: <20240127050944.26604-1-sebas642@gmail.com> X-Mailer: git-send-email 2.40.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 1/1] libavformat/rtpenc_jpeg.c: add support for the DRI marker 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: , Reply-To: FFmpeg development discussions and patches Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: This patch adds support for the DRI marker in the JPEG RTP encoder. Apologies for the bad line breaks in the previous patch. The production line for this patch is 100% Linux. Signed-off-by: Sebastien Cote --- libavformat/rtpenc_jpeg.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/libavformat/rtpenc_jpeg.c b/libavformat/rtpenc_jpeg.c index e4e95931f4..de2148a29d 100644 --- a/libavformat/rtpenc_jpeg.c +++ b/libavformat/rtpenc_jpeg.c @@ -33,6 +33,7 @@ void ff_rtp_send_jpeg(AVFormatContext *s1, const uint8_t *buf, int size) uint8_t type = 2; /* initialized non-0/1 value for RTP/JPEG type check*/ uint8_t w, h; uint8_t *p; + uint16_t rst_marker_interval = 0; int off = 0; /* fragment offset of the current JPEG frame */ int len; int i; @@ -155,6 +156,22 @@ void ff_rtp_send_jpeg(AVFormatContext *s1, const uint8_t *buf, int size) dht_size = 0; continue; } + } else if (buf[i + 1] == DRI) { + uint16_t dri_size = 0; + if (i + 5 > size) { + av_log(s1, AV_LOG_ERROR, "Too short JPEG header. Aborted!\n"); + return; + } + + dri_size = AV_RB16(&buf[i + 2]); + rst_marker_interval = AV_RB16(&buf[i + 4]); + + if (i + 1 + dri_size > size) { + av_log(s1, AV_LOG_ERROR, "Too short JPEG header. Aborted!\n"); + return; + } + + i += 1 + dri_size; } else if (buf[i + 1] == SOS) { /* SOS is last marker in the header */ i += AV_RB16(&buf[i + 2]) + 2; @@ -196,10 +213,16 @@ void ff_rtp_send_jpeg(AVFormatContext *s1, const uint8_t *buf, int size) } } + if (rst_marker_interval > 0) + type += 64; + p = s->buf_ptr; while (size > 0) { int hdr_size = 8; + if (rst_marker_interval > 0) + hdr_size += 4; + if (off == 0 && nb_qtables) hdr_size += 4 + 64 * nb_qtables; @@ -214,6 +237,11 @@ void ff_rtp_send_jpeg(AVFormatContext *s1, const uint8_t *buf, int size) bytestream_put_byte(&p, w); bytestream_put_byte(&p, h); + if (rst_marker_interval > 0) { + bytestream_put_be16(&p, rst_marker_interval); + bytestream_put_be16(&p, 0xFFFF); + } + if (off == 0 && nb_qtables) { /* set quantization tables header */ bytestream_put_byte(&p, 0); -- 2.40.1 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".