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 */ From patchwork Tue Apr 20 04:44:33 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: zheng qian X-Patchwork-Id: 27187 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a6b:5014:0:0:0:0:0 with SMTP id e20csp1123799iob; Mon, 19 Apr 2021 21:45:08 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyuW9wS4eHE9z0U38jAHS6jwDOkPEq0E8VNvNi2aZIg1Dg2JXYYS0xSbAGnLNMANAUSQfgz X-Received: by 2002:a17:906:b0f:: with SMTP id u15mr25892066ejg.156.1618893908658; Mon, 19 Apr 2021 21:45:08 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1618893908; cv=none; d=google.com; s=arc-20160816; b=XNuKOKwV20JpA+cJodXOWIziHzd5pX3CgRVf3y3LWLu6EdDLfKAnIcXjDmkOlrwoio BzhanQjjBqpWzfLvT2gFowWSLKv//0LQjl2RQQUYvXrEamKheU+QM2ke7yyTf9De5LkP UkZ2ybpgJs2GwOJsJF5vH4MQLGWzNvowRGJE5uu5dP2Eapldu/D2LebMKU2txhtCEfjP 0f1ER3YpQpS2d16atCsSSppv9a56r4+uZjj+1q7NZsGOmKpfbDeuHReWWbqKauFkMH+q QiGSyUOua4HGFfIrrNqjLQNq3FwUtMKtV/mhI/uPvkLAm4A/YpitRme4FV4GBNp01NBP Y1Jg== 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=ZluJ6iFfVltSEd02Iq1N3xqNU9gZHjiI+f3zeErjWGQ=; b=ygmLqxEDC5R1IuBRDB4dBrdhbeoOfx8D8UMO12FFkhy4yKKfOfE/O0V8jrV0JhPlh7 Vz5mYm5YvQ2L3hUQIJ/i1uAIEJpebAi/uNg1UQnVvbmuQRZ2o2uqGx5qaubioEAu5URD hrPs9ii+kCwI+QM9HTx1CWtWF9rXdPqwJjMIa6gg81UB6VLpPczQSeyB5+gLUpgTDIhs TkKzWuNrN7UgAVZ0/iJOOlqboGYAdOzl6Ah/RN5sLOI4V4G5qirAXTH9q259yaDrwq1M 7a8gQIBSpDGfd19lrSlL0CFsfq381RPChB/j6o0VU9o1dQ/UJrbJJomL97LxC69lf8aq D12g== 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=P5gJ7ajN; 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 c13si13938631eje.45.2021.04.19.21.45.07; Mon, 19 Apr 2021 21:45:08 -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=P5gJ7ajN; 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 98D4F68A141; Tue, 20 Apr 2021 07:45:04 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pg1-f177.google.com (mail-pg1-f177.google.com [209.85.215.177]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 99A396804AA for ; Tue, 20 Apr 2021 07:44:57 +0300 (EEST) Received: by mail-pg1-f177.google.com with SMTP id p2so10316267pgh.4 for ; Mon, 19 Apr 2021 21:44:57 -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=hmpQYjRXiN/+zFPWsgxA58FDs1Shvyo/EUf4LM2HjL0=; b=P5gJ7ajNh8zJBjLZv/l+2MsLxRicNX8wxPLIFMNFlO5pOY9IxjTwxWDhHNvnb+HTYG oyk1g6yIVwwR0usbjAms6oC9J4Vt2xr/8oYGys073/uaCfHO6TpJE7mCCpU1E0mzSM6Z Bp7CR2EPS3Rit9GoPGhOsmSJnTrm0vIfBvtJJZT3EP1xpkJh8u8zdzeCjfw362nLrrcj jFi3S29vcBeGY8VSgZkKciJ4jvoYhH5lXP51U+4iW4uFiDTN30MRD3r0qE6eCPrfn9Mb ZUzk/uE3lycRCd2Od7su1gI/hQsDyQx90M2HhO9znvPWM2SyT2AVTq9PcMTs7QonOXOI z7YA== 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=hmpQYjRXiN/+zFPWsgxA58FDs1Shvyo/EUf4LM2HjL0=; b=VKyWMs5V4t87Q8VWM++Rk/R0PvjkCAdd939XVZfxObtM7/xVkD3zk1i4YSNfe3IENg N8JHuKNlupZOvDgUGrf/i6gtPBSdbeYILo8M/K0/v5V3Ag9QDS/HCTF96xQKuFkLiXX5 89p0EuGQz8d4fPbhAFBxxK+wuCe9z12EfuoNm3kRMjrC3V6LfdO9PyFn8bI8L6l9Ej2R CWDDXzQNSpKm0jt/GnzVVe9kkea71cy6+7oA0RfUkqz8R6u8hPGLcpGBnR9PS66apqfS +W63RQ52XVtM1MZ+qFMf0n1qEs73bx/LbeYxdF4NddpIxF55y+oHF3nlgixzpOczg5sG Pqfg== X-Gm-Message-State: AOAM532XS4nVCaaYZ9Y7CAJ1ilIxu9zsDE4aT9ggxH3LmvC5Tprorvhl wUmt4VjRuZY8Wv+8x3pSOIHJsNrbwlGkXWHa X-Received: by 2002:a63:9516:: with SMTP id p22mr14179898pgd.58.1618893895390; Mon, 19 Apr 2021 21:44:55 -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.54 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 19 Apr 2021 21:44:55 -0700 (PDT) From: zheng qian To: ffmpeg-devel@ffmpeg.org Date: Tue, 20 Apr 2021 13:44:33 +0900 Message-Id: <20210420044434.65012-2-xqq@xqq.im> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210420044434.65012-1-xqq@xqq.im> References: <20210420044434.65012-1-xqq@xqq.im> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 2/3] avformat/mpegtsenc: Fix indentation inside if statement in mpegts_write_pes() 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: IuH3cLr0bjND Fix indentation caused by the added stream_id judgement Signed-off-by: zheng qian --- libavformat/mpegtsenc.c | 84 ++++++++++++++++++++--------------------- 1 file changed, 42 insertions(+), 42 deletions(-) diff --git a/libavformat/mpegtsenc.c b/libavformat/mpegtsenc.c index 0c543c385b..4a20775af4 100644 --- a/libavformat/mpegtsenc.c +++ b/libavformat/mpegtsenc.c @@ -1534,51 +1534,51 @@ static void mpegts_write_pes(AVFormatContext *s, AVStream *st, 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) - val |= 0x04; - *q++ = val; - *q++ = flags; - *q++ = header_len; - if (pts != AV_NOPTS_VALUE) { - write_pts(q, flags >> 6, pts); - q += 5; - } - if (dts != AV_NOPTS_VALUE && pts != AV_NOPTS_VALUE && dts != pts) { - write_pts(q, 1, dts); - q += 5; - } - if (pes_extension && st->codecpar->codec_id == AV_CODEC_ID_DIRAC) { - flags = 0x01; /* set PES_extension_flag_2 */ - *q++ = flags; - *q++ = 0x80 | 0x01; /* marker bit + extension length */ - /* Set the stream ID extension flag bit to 0 and - * write the extended stream ID. */ - *q++ = 0x00 | 0x60; - } - /* For Blu-ray AC3 Audio Setting extended flags */ - if (ts->m2ts_mode && - pes_extension && - st->codecpar->codec_id == AV_CODEC_ID_AC3) { - flags = 0x01; /* set PES_extension_flag_2 */ + 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) + val |= 0x04; + *q++ = val; *q++ = flags; - *q++ = 0x80 | 0x01; /* marker bit + extension length */ - *q++ = 0x00 | 0x71; /* for AC3 Audio (specifically on blue-rays) */ - } + *q++ = header_len; + if (pts != AV_NOPTS_VALUE) { + write_pts(q, flags >> 6, pts); + q += 5; + } + if (dts != AV_NOPTS_VALUE && pts != AV_NOPTS_VALUE && dts != pts) { + write_pts(q, 1, dts); + q += 5; + } + if (pes_extension && st->codecpar->codec_id == AV_CODEC_ID_DIRAC) { + flags = 0x01; /* set PES_extension_flag_2 */ + *q++ = flags; + *q++ = 0x80 | 0x01; /* marker bit + extension length */ + /* Set the stream ID extension flag bit to 0 and + * write the extended stream ID. */ + *q++ = 0x00 | 0x60; + } + /* For Blu-ray AC3 Audio Setting extended flags */ + if (ts->m2ts_mode && + pes_extension && + st->codecpar->codec_id == AV_CODEC_ID_AC3) { + flags = 0x01; /* set PES_extension_flag_2 */ + *q++ = flags; + *q++ = 0x80 | 0x01; /* marker bit + extension length */ + *q++ = 0x00 | 0x71; /* for AC3 Audio (specifically on blue-rays) */ + } - if (is_dvb_subtitle) { - /* First two fields of DVB subtitles PES data: - * data_identifier: for DVB subtitle streams shall be coded with the value 0x20 - * subtitle_stream_id: for DVB subtitle stream shall be identified by the value 0x00 */ - *q++ = 0x20; - *q++ = 0x00; - } - if (is_dvb_teletext) { - memset(q, 0xff, pes_header_stuffing_bytes); - q += pes_header_stuffing_bytes; - } + if (is_dvb_subtitle) { + /* First two fields of DVB subtitles PES data: + * data_identifier: for DVB subtitle streams shall be coded with the value 0x20 + * subtitle_stream_id: for DVB subtitle stream shall be identified by the value 0x00 */ + *q++ = 0x20; + *q++ = 0x00; + } + if (is_dvb_teletext) { + memset(q, 0xff, pes_header_stuffing_bytes); + q += pes_header_stuffing_bytes; + } } is_start = 0; } From patchwork Tue Apr 20 04:44:34 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: zheng qian X-Patchwork-Id: 27186 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a6b:5014:0:0:0:0:0 with SMTP id e20csp1123897iob; Mon, 19 Apr 2021 21:45:17 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyW6zE6Wk7wM2Lg5uFsQ/MK9WTBEz0AqFiACLGb2mUnv+4ZCrpZfhcIIxn2TgJ+mufFCqF1 X-Received: by 2002:a17:906:8812:: with SMTP id zh18mr25576285ejb.342.1618893917206; Mon, 19 Apr 2021 21:45:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1618893917; cv=none; d=google.com; s=arc-20160816; b=SX84mGa03JPxYVg+I8GztiI+22Cahzb64Hs9UlUNIQQQ1axEAnzpp49kkxGyRJE0Tw KodLV+nhhtR4EwKCdLCzaXZxLa0eDQ15dQcIv04S/dSSkNRwHiN5z8gtahI4lxad/PHU /ERNbYFhfOPJ8o1Q/xnFMnsjyjiBEV3rGT1AJrzdg6/6SQUWNtY5iXHobN915oLfwnT+ +FVN+vF0Mcu5h4oCJFw7FVjJiNmfP16CJ1s/DMw1opkIg8WTSuJf0exUwUJ01WI/kY/P pepT9Mhy3TbJkhc6w40cSFmQA+YcfEkaLqF7CIrNGLnusTTDjD6M+6lu2qvY3VRESOE5 vyVA== 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=0KRmiVjOfUqRvclDOGD/CuBAoyDXAdvMHu4zRUzSsZw=; b=GoUgQV9e3zHhvt6MlS75cACTlGKOWs/BnkQxrf5r5XBy7qNlSB38KIcdaOH7dIcHU+ u/C2W4V6U9MK+M4IA06FK4ysrLHna8sVaIBvAtnVPkLtnRC0ehhTH6L9hgAM7W8dYyHc IksgngAXhjcL6cJUyT5G8KGOSV1iPkFnlN7AzJdW+TZgiEKdqDNlbOloePxKAT6LtSZW 6KEkxj4RLcmJJl4Hq0HRbfD4i0vvgVGqyjBqX7/k00QW/38GVckGbXxAEl6zikpCV0vN nApzgpFdZ88hFNW4QAzP4vbCN8DxlZ8wTkxAc7JAajbLDifE0wQvbtHm1BEtLxL+IdER HE4g== 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=Kutn3WBC; 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 v15si14064153ejr.512.2021.04.19.21.45.16; Mon, 19 Apr 2021 21:45:17 -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=Kutn3WBC; 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 A1F5068A176; Tue, 20 Apr 2021 07:45:05 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pj1-f50.google.com (mail-pj1-f50.google.com [209.85.216.50]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B179268A148 for ; Tue, 20 Apr 2021 07:44:59 +0300 (EEST) Received: by mail-pj1-f50.google.com with SMTP id m6-20020a17090a8586b02901507e1acf0fso4276318pjn.3 for ; Mon, 19 Apr 2021 21:44:59 -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=lkYu2E0S0JSVtWk+cPt1esYWEz0c4i43pHMjiIbK3O0=; b=Kutn3WBC5UYLoIVOjm3vWvVULnX11gKeRDpTLwLIGnzQVscTCQREVVCPx/DjQOdzOI C5zqeZ+slILF/Xz8KOyzpVEhnB/hFSgJQz0xR2OfVMQ1lWdj+IHn/qdgvsB1MtVOBUKL ButctMFRRvmb0uPQRKqfBh5Xbna3bZzhgO2aHi4lj0UigmWodASa9AeYzxINpt64XTVg eYY9uRe4MQ6oPrRDS3Big7T3KlJSGxKrL//FhsqeRzEH3yK0XSE2HNZB+H9m/gk1RhBo rMM75xdxL0k6w5VAtPATKPE+9sAP8hoNuk2y3LjNJKuTBRSJajqSwF/Iyb55AZ0s8x0T MtIw== 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=lkYu2E0S0JSVtWk+cPt1esYWEz0c4i43pHMjiIbK3O0=; b=rACNXwoOk7TsJN+qh9yrqRHHqtJUXe6YQcMoPc0rs5RwwNA3Hrg7d9bdAsfo1DlBH7 OXbzOtK9e/c6cR0ekEntVQLVTyid3+BW9fBC3R/pB/MHJ6B/m42NG5Qdjp8G3gP8znP7 y67BYakfgnhdQF6eMpP9Hyb02Psu/KZE28iOpcehIZsXO0QN/W+GhjL838F63/eBlpPq D7MIHcQEHVLd15eKu1yziWvHabw6H023v0UNzDkzidib0hyCbXr8sK1xm2phQvBg0Z6o i6Ce/HeGR77Tm50D639ocByYIrF5MwBBOtPUZLxH2lCwXT6iZKFGSWelimETu79Q/pAV DPOA== X-Gm-Message-State: AOAM533TGuvzC8DkLYkPo+szSM0bTYAETWKNAshonOVrZVTSbPQ7UBy1 ktXSPGhtMPhw/4DEAag8x9MYIRaG02FBYcqF X-Received: by 2002:a17:90a:2807:: with SMTP id e7mr2925327pjd.181.1618893897798; Mon, 19 Apr 2021 21:44:57 -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.56 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 19 Apr 2021 21:44:57 -0700 (PDT) From: zheng qian To: ffmpeg-devel@ffmpeg.org Date: Tue, 20 Apr 2021 13:44:34 +0900 Message-Id: <20210420044434.65012-3-xqq@xqq.im> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210420044434.65012-1-xqq@xqq.im> References: <20210420044434.65012-1-xqq@xqq.im> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 3/3] avformat/mpegtsenc: Write stream_id into PES after stream_id decision 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: kBUt3tjUlUFR Since stream_id will have effect on the existences of PES header fields like PTS/DTS, it should be better to guarantee stream_id variable to be identical with exact written value. Signed-off-by: zheng qian --- libavformat/mpegtsenc.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/libavformat/mpegtsenc.c b/libavformat/mpegtsenc.c index 4a20775af4..0e9c978d74 100644 --- a/libavformat/mpegtsenc.c +++ b/libavformat/mpegtsenc.c @@ -1445,28 +1445,28 @@ static void mpegts_write_pes(AVFormatContext *s, AVStream *st, is_dvb_teletext = 0; if (st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO) { if (st->codecpar->codec_id == AV_CODEC_ID_DIRAC) - *q++ = STREAM_ID_EXTENDED_STREAM_ID; + stream_id = STREAM_ID_EXTENDED_STREAM_ID; else - *q++ = STREAM_ID_VIDEO_STREAM_0; + stream_id = STREAM_ID_VIDEO_STREAM_0; } else if (st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO && (st->codecpar->codec_id == AV_CODEC_ID_MP2 || st->codecpar->codec_id == AV_CODEC_ID_MP3 || st->codecpar->codec_id == AV_CODEC_ID_AAC)) { - *q++ = STREAM_ID_AUDIO_STREAM_0; + stream_id = STREAM_ID_AUDIO_STREAM_0; } else if (st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO && st->codecpar->codec_id == AV_CODEC_ID_AC3 && ts->m2ts_mode) { - *q++ = STREAM_ID_EXTENDED_STREAM_ID; + stream_id = STREAM_ID_EXTENDED_STREAM_ID; } else if (st->codecpar->codec_type == AVMEDIA_TYPE_DATA && st->codecpar->codec_id == AV_CODEC_ID_TIMED_ID3) { - *q++ = STREAM_ID_PRIVATE_STREAM_1; + stream_id = STREAM_ID_PRIVATE_STREAM_1; } else if (st->codecpar->codec_type == AVMEDIA_TYPE_DATA) { - *q++ = stream_id != -1 ? stream_id : STREAM_ID_METADATA_STREAM; + stream_id = stream_id != -1 ? stream_id : STREAM_ID_METADATA_STREAM; if (stream_id == STREAM_ID_PRIVATE_STREAM_1) /* asynchronous KLV */ pts = dts = AV_NOPTS_VALUE; } else { - *q++ = STREAM_ID_PRIVATE_STREAM_1; + stream_id = STREAM_ID_PRIVATE_STREAM_1; if (st->codecpar->codec_type == AVMEDIA_TYPE_SUBTITLE) { if (st->codecpar->codec_id == AV_CODEC_ID_DVB_SUBTITLE) { is_dvb_subtitle = 1; @@ -1475,6 +1475,7 @@ static void mpegts_write_pes(AVFormatContext *s, AVStream *st, } } } + *q++ = stream_id; header_len = 0; flags = 0; if (pts != AV_NOPTS_VALUE) {