From patchwork Fri Jan 27 21:18:41 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Coiner X-Patchwork-Id: 40150 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:3ca3:b0:b9:1511:ac2c with SMTP id b35csp1678566pzj; Fri, 27 Jan 2023 13:19:03 -0800 (PST) X-Google-Smtp-Source: AK7set/+yu6nH16kAUvyxWM5vdFXXmrPwLi1NHMd0X/2YCz3bMChrB+StFgiuZjFCSy+wvBQwVsU X-Received: by 2002:a17:906:7150:b0:878:5976:5bb7 with SMTP id z16-20020a170906715000b0087859765bb7mr8912965ejj.8.1674854343298; Fri, 27 Jan 2023 13:19:03 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1674854343; cv=none; d=google.com; s=arc-20160816; b=bEXZsyscI7uhc0OoQ28ZzzMUNoZaHRUp+djCw77/zAFk5WKHuhhTqS6pp2HwU4o1hK Wwb9/qoPmMKtiDXcKn2RV/p9cSSwsxNvI6Z8cRApN3ICv6ArRf75Rd70W3TwPzWIGULG vu23ivceuwkeEfmCeZjTNIsdCTYzGhilBgXosWSftidT5SXiospHn91ENwWFn0Qsv4tP Qkbv+x8o/KYrPAovt8AT67ZLYBgzR/fA6c7h0T3oIv+d2B2ERVE0Dv8NJt91i7MVa0Kv 7Hpqy9Y2G97ISdow7eJwf9UhcxTzjh52eKxsvIJpqABAFMImWU7N0LZUsv6Hnk7t2oV6 neQg== 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 :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:message-id:date:to:from :dkim-signature:delivered-to; bh=kon86M+kzNaZse9tcusUXWM6PIJ0QXZVfXtUz3SxRjc=; b=L6LzV3VLN3FiH+uZ6FVblBfVaOEhQQj/OwQpd1WikBhA8vUhjw7LMWWqVl+A3jhg6q qgGwKzjf+QGIBmZEsPBEkZWxdPxhybjxiFfLNqX/PVuTrkjWCKBoSze7ztBDSaBl20xM HTo3SAQTCNj0f6eGYhMCJ261V5NdPysG8MiuxYHPKqizlUPPEUyPT58XvLHqEy6/flpi VSz6xwqKFGH+bxzy2T8yUYfbKaGrzUAiDj2lykAPB1XFYOzH7m3ntRvifWr+Hz+Wf1yM tP3bItH/OtAJy7Y+gALwgzcd+dq2ljpoLBK+4Rdf7npfKPrZxULV7TGnlH1zNkNNgIGW j4WQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=Cy8pIOSM; 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; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id wj15-20020a170907050f00b007adf3ed5d20si4931986ejb.376.2023.01.27.13.18.56; Fri, 27 Jan 2023 13:19:03 -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; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=Cy8pIOSM; 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; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 8407B68BE6B; Fri, 27 Jan 2023 23:18:52 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qt1-f169.google.com (mail-qt1-f169.google.com [209.85.160.169]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 774FA68BDEE for ; Fri, 27 Jan 2023 23:18:46 +0200 (EET) Received: by mail-qt1-f169.google.com with SMTP id z9so5206441qtv.5 for ; Fri, 27 Jan 2023 13:18:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=6bMSRYvi9H4wSWS8rJGTR7g+p97u7cjD9BN/J8MBf4k=; b=Cy8pIOSMlTcF/1PNPJ0us/bBSeuZLS11gpaldgpXlFfLle5L8TmFw0LCk5FrYbs9+X OOWKuwgW3gjAuek/oR9BsS8ItUW/gef4tQz9xV3L2WGBy8t/E5hI4NtNqgCDeJOtzHvX NEzwCVROZ1voxMsMxTtcLjR26iVHOriwRCPJNzj5OQAlsR1kouo1o5GB+y6glKMsWgP1 QC/G3zyYrbaSNH6PDsD6SAlD6UJaa8wJr9nKVkV/KygOjPq3DBTvYlYLr0Evq8ePlMB/ RrYfW+yuibQrSqv5Lk2fAOT/cO+JAvLMuQPwdFwp2L5kh0JbWJ5QCPhlc/IMPiy4mYci cCxw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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=6bMSRYvi9H4wSWS8rJGTR7g+p97u7cjD9BN/J8MBf4k=; b=Akh01BCLGWR8GNXxD2laYTF1IG5vhtPSputPpFZgyvWBS0AVLzp0Tu9H0+5ljJSB1a eVHZnzPsGbpgVoBolm1+lYPOmql1fA0aCiJwds2JlL54bcxXiDmvK+GG5Sffl729qg+/ Y6P8LSm6xvVrd+eWyNq3tduStkqR88IL4muiHAFSGsEFRK/FJ8L5cZ7uSfnGFB54hMw9 iGdRSALLy/m4IyVQXGc/fewq/o2GdzktjUtjqy70wQVsP59vhQ0BQROEzJtW7SzevK2K Zr9eKD+qgFDcPkTq8/BN4SkDeifWsgwf6lxaFazdluivnLrJL6ec4in4boGfJuoxEBQH KYYQ== X-Gm-Message-State: AFqh2kq0GfcRdPq1eHDnG+cuvMLOGuqwixal6goPF0Mj/ZmOEmeQ68Ub SFFbYjsqhGF888ZtsmYY5Zo97OIRrXY= X-Received: by 2002:ac8:7c82:0:b0:3ab:ceb9:10fd with SMTP id y2-20020ac87c82000000b003abceb910fdmr56298182qtv.25.1674854324690; Fri, 27 Jan 2023 13:18:44 -0800 (PST) Received: from jcoiner3.corp.google.com ([2620:15c:93:200:51f:1ec0:b360:a986]) by smtp.gmail.com with ESMTPSA id j7-20020ac806c7000000b003b80a69d353sm3333072qth.49.2023.01.27.13.18.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 27 Jan 2023 13:18:44 -0800 (PST) From: John Coiner To: ffmpeg-devel@ffmpeg.org Date: Fri, 27 Jan 2023 16:18:41 -0500 Message-Id: <20230127211841.59628-1-jpcoiner@gmail.com> X-Mailer: git-send-email 2.39.1.456.gfc5497dd1b-goog MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] libavformat/mpegtsenc.c -- correctly re-emit extradata ahead of IDR pictures 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 Cc: John Coiner Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: rmPeyxuP85gw From: John Coiner This is the proposed fix for https://trac.ffmpeg.org/ticket/10148 Very sorry to send the same patch 3 times; this time with `git send-email' so it should be legal :) --- libavformat/mpegtsenc.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/libavformat/mpegtsenc.c b/libavformat/mpegtsenc.c index 48d39e6a7d..6cb398f99c 100644 --- a/libavformat/mpegtsenc.c +++ b/libavformat/mpegtsenc.c @@ -1886,17 +1886,21 @@ static int mpegts_write_packet_internal(AVFormatContext *s, AVPacket *pkt) if (extradd && AV_RB24(st->codecpar->extradata) > 1) extradd = 0; - do { + while (p < buf_end + && extradd > 0 + && (state & 0x1f) != 5 // IDR picture + && (state & 0x1f) != 1 // non-IDR picture + ) { p = avpriv_find_start_code(p, buf_end, &state); av_log(s, AV_LOG_TRACE, "nal %"PRId32"\n", state & 0x1f); - if ((state & 0x1f) == 7) + if ((state & 0x1f) == 7) // SPS NAL extradd = 0; - } while (p < buf_end && (state & 0x1f) != 9 && - (state & 0x1f) != 5 && (state & 0x1f) != 1); - - if ((state & 0x1f) != 5) + } + if ((state & 0x1f) != 5) { + // Not an IDR picture extradd = 0; - if ((state & 0x1f) != 9) { // AUD NAL + } + if (extradd > 0) { data = av_malloc(pkt->size + 6 + extradd); if (!data) return AVERROR(ENOMEM);