From patchwork Tue Apr 20 04:44:32 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: zheng qian X-Patchwork-Id: 27188 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a6b:5014:0:0:0:0:0 with SMTP id e20csp1137643iob; Mon, 19 Apr 2021 22:10:01 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxXZtDB1hPU2HnEIPyVUCWSbJ0s9E/1M3FZZiVs5M6fOXprCb6L+B6f+30oB200631iaK2h X-Received: by 2002:a05:6402:75a:: with SMTP id p26mr28371735edy.293.1618895401103; Mon, 19 Apr 2021 22:10:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1618895401; cv=none; d=google.com; s=arc-20160816; b=Qti666CU0Jf+bcamf+9Chjr9IHt8i6uDaJfYmBhjthEG7bm0R6HkfMtApiG9adsxNI hl2uG7YI12kte1AY2wJcschfM26Yg5s5f6oxsVMfg8S8mIDCr6m3j5EmNx7vczzB/uag vH1gZBCdXNIMr9vGpmwc/j5I8y2GmKHxH5IyV5td8pbXVqB3wug6PCp/J968urJyYF2z qMbRlCOhCJoVH2/o41Tncm9BHT0d34arWX1Fmbv6RDUBpTx4UgRntVEgaEiUSr+JrdZR 69poL4mXuNG6jBZRipunl5JkVssuflas1XLfY1EygpOj4DJGjmrE5x0y4hq4+97Z0yuH VoRQ== 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:references:in-reply-to :message-id:date:to:from:dkim-signature:delivered-to; bh=xVsfyJbcbSVgoXdV2K5EpJ1GCj+YIyEYW4cINVhlS+E=; b=OucKeDHv4Oe59XXKQB8ewMfEtg1dyNTjVRd8PxMmPgt5hshMsaU9voEdQ2HdD15TtQ X8a3Dvg9Qh2XVsqjMEVP3YjX98UHV3yvlO9idxMYQsO4aqxWPQLYgof7dbyA2ysBDQRL jtu04Q2LAoURrjtycOXADBL3XJmXKQyjTsPKG4oO1yrJPGWvTzdStmmg/lKUsHEItt53 GTZ8h8GEFTTpVW7dFFtTfk+D3Rwr9KGFBrJiSTkMnNAxeA+zmlITl7T79NyBNZdbpx4L juBa7bbRQBh+v8g5GIRdhkRfOVIYyrXXKTRd6CA6/ZpfHN1pIDHlUwrzpRvnbF8ekBVl zkng== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@xqq-im.20150623.gappssmtp.com header.s=20150623 header.b="D/z4es4C"; 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 e15si6011049eds.372.2021.04.19.22.10.00; Mon, 19 Apr 2021 22:10:01 -0700 (PDT) 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=@xqq-im.20150623.gappssmtp.com header.s=20150623 header.b="D/z4es4C"; 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 7FAFF689DA1; Tue, 20 Apr 2021 08:09:56 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-oi1-f180.google.com (mail-oi1-f180.google.com [209.85.167.180]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 23342689ADE for ; Tue, 20 Apr 2021 08:09:50 +0300 (EEST) Received: by mail-oi1-f180.google.com with SMTP id u16so20500139oiu.7 for ; Mon, 19 Apr 2021 22:09:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=xqq-im.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=R9squAGESo3tv88DHYF189Sbed9j6jgjPObDe0k1yRQ=; b=D/z4es4CtVBd5GR4h/Gg/eftiiTtzLFGXEVzpjkcAhtBwd4zT7G+7AY1h0Lc4jsFeD EAa8++6eTSbqumsjhN5f+qLAW/ZQxPTu9uql6EOjbUJveaJMXe+8fdBtKs83aXWy70Yo ZAJbsjUOLoXqKlqEXegQnvaIuP+YaDnzfNRZMY2XcVaW0T0SFNRRNWcikOluhQpna9TK yw0mnjS3yzHSpFq3vgkx4L4MHEDA49h4IMo/XfJAfhM055Xtt9+SrUAmF+U6R+EoOuv0 dNyRxxvZlzktKMeszxkPfQdQ9moCMxhYfMhaK2SXbEJ1NQlrFeavlSp1q6oT94v70oVV T3+Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=R9squAGESo3tv88DHYF189Sbed9j6jgjPObDe0k1yRQ=; b=NpB/+iq9Rc8IVfqvRgbwmUNti5wGcOQ7dnbdxKjr/uHXr1IGO66tWtBUIr7AvNwp+r RCmvehzwjBklIwdyPrbHdw5JLkBuBgoJ2FylRoA6eL0oVLwFWrgP2sigP18i+DnFgRjJ +oHZklBNvrlAq9SPh8Zzp4HabybRRxdC5w5E4gmjIqqgLGcfS9zVxN+xCZAmra5QenIW rvHV4UsXVURdAc3CtDUT80WZW/6kwtzZH79ce2nZuuYpwNSeERbAVsWNiUsBuRywcdy2 WE04Z7N1kW0/V/H8KHOtl1NJ3y2cXLQ43TIrgd9xBuyp2pHbBz0mFwOo8XorGqOKm1sU DlAQ== X-Gm-Message-State: AOAM533e2YElX1dVppDIUNRdukw2pQXznHHxN97Y/2+0em7SaUcdvyAl tC2lCsPBw+STiCE4R/hRi36Y+qqLmnBPJbnJ X-Received: by 2002:a17:90a:8410:: with SMTP id j16mr2820513pjn.120.1618893886828; Mon, 19 Apr 2021 21:44:46 -0700 (PDT) Received: from zhengqian-xps.lan (ngn-nat1.v4.open.ad.jp. [202.222.12.138]) by smtp.gmail.com with ESMTPSA id a65sm13619988pfb.116.2021.04.19.21.44.45 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 19 Apr 2021 21:44:46 -0700 (PDT) From: zheng qian To: ffmpeg-devel@ffmpeg.org Date: Tue, 20 Apr 2021 13:44:32 +0900 Message-Id: <20210420044434.65012-1-xqq@xqq.im> X-Mailer: git-send-email 2.29.2 In-Reply-To: References: MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 1/3] avformat/mpegtsenc: Fix mpegts_write_pes() for private_stream_2 and other types 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: zheng qian Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: 4FDLeSDoBnf2 Changes since v1: Separate if-statement and cosmetic changes into different commits According to the PES packet definition defined in Table 2-17 of ISO_IEC_13818-1 specification, some fields like PTS/DTS or pes_extension could only appears if the stream_id meets the condition: if (stream_id != 0xBC && // program_stream_map stream_id != 0xBE && // padding_stream stream_id != 0xBF && // private_stream_2 stream_id != 0xF0 && // ECM stream_id != 0xF1 && // EMM stream_id != 0xFF && // program_stream_directory stream_id != 0xF2 && // DSMCC_stream stream_id != 0xF8) // ITU-T Rec. H.222.1 type E stream And the following stream_id types don't have fields like PTS/DTS: else if ( stream_id == program_stream_map || stream_id == private_stream_2 || stream_id == ECM || stream_id == EMM || stream_id == program_stream_directory || stream_id == DSMCC_stream || stream_id == ITU-T Rec. H.222.1 type E stream ) { for (i = 0; i < PES_packet_length; i++) { PES_packet_data_byte } } Current implementation skipped the judgement of stream_id causing some kind of stream like private_stream_2 to be incorrectly written with PTS/DTS field. For example, Japan DTV transmits news and alerts through ARIB superimpose that utilizes private_stream_2 still could not be remuxed correctly for now. This patch set fixes the remuxing for private_stream_2 and other stream_id types. Signed-off-by: zheng qian --- libavformat/mpegtsenc.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/libavformat/mpegtsenc.c b/libavformat/mpegtsenc.c index f302af84ff..0c543c385b 100644 --- a/libavformat/mpegtsenc.c +++ b/libavformat/mpegtsenc.c @@ -1524,6 +1524,16 @@ static void mpegts_write_pes(AVFormatContext *s, AVStream *st, } *q++ = len >> 8; *q++ = len; + + if (stream_id != 0xBC && // program_stream_map + stream_id != 0xBE && // padding_stream + stream_id != 0xBF && // private_stream_2 + stream_id != 0xF0 && // ECM + stream_id != 0xF1 && // EMM + stream_id != 0xFF && // program_stream_directory + stream_id != 0xF2 && // DSMCC_stream + stream_id != 0xF8) { // ITU-T Rec. H.222.1 type E stream + val = 0x80; /* data alignment indicator is required for subtitle and data streams */ if (st->codecpar->codec_type == AVMEDIA_TYPE_SUBTITLE || st->codecpar->codec_type == AVMEDIA_TYPE_DATA) @@ -1569,6 +1579,7 @@ static void mpegts_write_pes(AVFormatContext *s, AVStream *st, memset(q, 0xff, pes_header_stuffing_bytes); q += pes_header_stuffing_bytes; } + } is_start = 0; } /* header size */