From patchwork Sat Jul 17 02:38:26 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: zheng qian X-Patchwork-Id: 28949 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a5d:965a:0:0:0:0:0 with SMTP id d26csp2348156ios; Fri, 16 Jul 2021 19:38:55 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxRIJDTxZH8mpOgdlBI9uqzrUcWb0WneJgqVbYIsQF/kst/CArtyLOu/6sifvwfSro4Ro6X X-Received: by 2002:a05:6402:615:: with SMTP id n21mr19249219edv.139.1626489535075; Fri, 16 Jul 2021 19:38:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1626489535; cv=none; d=google.com; s=arc-20160816; b=mqTFINPVqADg9uM9m7E/mtwQJmsF6lafm3WeiNeCc433nKZJyqoMXfDBeLuE+JEa9t rvxzu3VoE5cObtMrdYPoVzfYFDddythUY91MMlULQGglfHtmYCZ0nTMAXHljyS8tZ7FN T3eoAuyfcGn6GHr0oTDeL+auHo4iD2sQIuE2Hg7L0LncoDZMbmzAkdfGjZRyttDIg01r 95OJZ8Syb7ayFBs0GsfmzsxtV85+GgM/tD32cDAHseuaQJAvaA6+AKDxsW2r+ILqpC+n HS1pB1WLIEoTXrKoC8tbo4jbeMJcDPhEZmBNravsWR2J3KGAvpszHcuRnGpnTPzadSsb OgSQ== 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=QxRBkSYXbajLPh8G/A5ER2c3OoQF/rykO6zobl+wJqM=; b=cmm/sY0o0BWoVVIm8Li8J4lZw8xdrdCYDTKKfP2bJp1rtyYJF4QO8t/0EkGu2x4NsW pPPsVoKwLaPtQZyExeLzP5wCVoYASx4bl3j/lbrObD1NXdqiBbY/ml8Ix1U6Jqta1Ilo zaf1e148EvfBldk3lmzgoDMkNyBgV0lYabOGPNfADb+rvJEO7YqCx6bvVsTFjtlQWghw 24HRGQ/r23va81y4im+ngW8scZViII8chTEqFHmcmHBCzJSVr6wO3e0ZVS9ZDlbbDyUN AJHmNBfs23FbzsMQoBLnYVK8WOjZc25znlMPJMPUhPMJ+wHKigMzDyYDBNw4Qhcogzb8 Jcew== 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=ZbXIkdwM; 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 gf1si13328039ejb.318.2021.07.16.19.38.54; Fri, 16 Jul 2021 19:38:55 -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=ZbXIkdwM; 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 306F668A7C3; Sat, 17 Jul 2021 05:38:50 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pj1-f47.google.com (mail-pj1-f47.google.com [209.85.216.47]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B0EE868A1D4 for ; Sat, 17 Jul 2021 05:38:43 +0300 (EEST) Received: by mail-pj1-f47.google.com with SMTP id v18-20020a17090ac912b0290173b9578f1cso8517795pjt.0 for ; Fri, 16 Jul 2021 19:38:43 -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:mime-version :content-transfer-encoding; bh=rYXPDXSKGfV8cJLW+wjoLfPrFgTso6qUc6YzT+k+xVo=; b=ZbXIkdwMr3sYJYrMSYdczWFhEuS0eue1pb04ViE3Iy/4zqybTnvsvrSydlvFb7MvvK wV7HR6H1YbCaMohIJe8Uq+aFaLBUQsRYRxzSzsTGeWRK6gXrwipCjNOWNiLmReci4RHd DDlyMM/u0dNsS7VZaCEyJd+16qLi7b8iH/4QrOcnJ5hDVxF3LYF26d3n+7HnGup2eipx Bfybqr0tEpwAYRkhwRrsrkbCNv8lRnwJUWxKnvq20A181VnEbHgLeuIJS18FNlZphk2w xk/qrZnsPT4OUtESbwAPC8LjMDCmN9VQwTv2fpY2cS2snSaJapwHQidy6Ap9v7jMz0eA ciAQ== 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:mime-version :content-transfer-encoding; bh=rYXPDXSKGfV8cJLW+wjoLfPrFgTso6qUc6YzT+k+xVo=; b=KbkQ3lLpcZVnHKIYa4mgW536v7nYvQNi/6/hbWot96yJKbs0hypWfzqhMJU5KedxbF nnvxS1dg0onMVclNmpke55V1utGzgTZZljidA6bModZEsvodlaTP/je5txw/2JQBIyfr ueuNV03mp3LKdoNY+6AAkOZhHuHZoi983ceLk1AhNGhnh+siPEN7GG54LNo72YXJZStq nsOje2sjtX2Ef2JPf3qzLx2htnFAUm4bzKb2FY+FrU/qMe2VnWiur/3TjSRmfft1eeXM HlPoAr2EoY+idEKbtmCf1S4TimSZPy6ogO1XbI3YrARYxaJP2v8Cy9YOfBzCkJZjrrpz mFcw== X-Gm-Message-State: AOAM530ePFXyHynjnYHsmKEvS2V/6esUvD6Ibgc0heWjf+oHKrjQ5G58 rq46YPXEF6UIc1lO1NqCOdZ/b0U4nwT/lQ== X-Received: by 2002:a17:90a:3b4e:: with SMTP id t14mr12691005pjf.62.1626489521390; Fri, 16 Jul 2021 19:38:41 -0700 (PDT) Received: from zhengqian-xps.lan (ngn-nat1.v4.open.ad.jp. [202.222.12.138]) by smtp.gmail.com with ESMTPSA id q18sm12909263pgj.8.2021.07.16.19.38.40 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 16 Jul 2021 19:38:40 -0700 (PDT) From: zheng qian To: ffmpeg-devel@ffmpeg.org Date: Sat, 17 Jul 2021 11:38:26 +0900 Message-Id: <20210717023829.84846-1-xqq@xqq.im> X-Mailer: git-send-email 2.29.2 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v3 1/4] avformat: Introduce AV_DISPOSITION_URGENT disposition flag for emergency alert 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: S73cwSM3Vc7X This patchset introduces AV_DISPOSITION_URGENT disposition flag for marking stuffs which is expected to be shown immediately as received, and adds recognization/remuxing support for ARIB superimpose stream. ARIB superimpose is almost same as ARIB caption but is utilized to transmit emergency alert and newsflash in Japan DTV. Since superimpose is designed to be displayed immediately as received, ARIB superimpose utilizes mpegts private_stream_2 rather than the private_stream_1 that is used by arib_caption, which means superimpose packet doesn't have PTS/DTS (AV_NOPTS_VALUE). Purpose of introducing AV_DISPOSITION_URGENT is mainly: 1) To be able to mark stuffs as "show as received", which could be NOPTS 2) Let ffmpeg-based player to be able to recognize these stuffs such as ARIB superimpose stream, and extract data to render it onto screen 3) Let mpegtsenc to be able to remux ARIB superimpose stream correctly Signed-off-by: zheng qian --- libavformat/avformat.h | 1 + libavformat/dump.c | 2 ++ 2 files changed, 3 insertions(+) diff --git a/libavformat/avformat.h b/libavformat/avformat.h index 81d2ac38d0..6c7d3fb3a5 100644 --- a/libavformat/avformat.h +++ b/libavformat/avformat.h @@ -831,6 +831,7 @@ typedef struct AVStreamInternal AVStreamInternal; #define AV_DISPOSITION_METADATA 0x40000 #define AV_DISPOSITION_DEPENDENT 0x80000 ///< dependent audio stream (mix_type=0 in mpegts) #define AV_DISPOSITION_STILL_IMAGE 0x100000 ///< still images in video stream (still_picture_flag=1 in mpegts) +#define AV_DISPOSITION_URGENT 0x200000 ///< stream which is expected to be shown immediately as received (emergency alert) /** * Options for behavior on timestamp wrap detection. diff --git a/libavformat/dump.c b/libavformat/dump.c index cf892de107..a987d097dc 100644 --- a/libavformat/dump.c +++ b/libavformat/dump.c @@ -610,6 +610,8 @@ static void dump_stream_format(const AVFormatContext *ic, int i, av_log(NULL, AV_LOG_INFO, " (dependent)"); if (st->disposition & AV_DISPOSITION_STILL_IMAGE) av_log(NULL, AV_LOG_INFO, " (still image)"); + if (st->disposition & AV_DISPOSITION_URGENT) + av_log(NULL, AV_LOG_INFO, " (urgent)"); av_log(NULL, AV_LOG_INFO, "\n"); dump_metadata(NULL, st->metadata, " "); From patchwork Sat Jul 17 02:38:27 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: zheng qian X-Patchwork-Id: 28951 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a5d:965a:0:0:0:0:0 with SMTP id d26csp2348248ios; Fri, 16 Jul 2021 19:39:05 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxDMxS0fWqW5CuhtMuSHR8PjpzqaBYXfqTVMbcd5kpyXR60Zloo+EpfAZOsoMQ/NT0TWoA9 X-Received: by 2002:aa7:db54:: with SMTP id n20mr18830937edt.21.1626489545609; Fri, 16 Jul 2021 19:39:05 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1626489545; cv=none; d=google.com; s=arc-20160816; b=cJlAnARe1dqG946N3gWRWz7RsOP2UE02wZvhUYKsHP6Csab4nIHGOr4g8eAqrixsM4 uHWnM2/mWYApU58yT8ZQPDCEsqyBUuowkYuQc/HWnxckiJjK8qLPmGy51cXrP5Mv6nB1 Dj2OT2JxDlwHLpIPQ9bDLE/ahef6/uJWLJT56+LpuxZQ4AfwMkv4eQluZoG3tqRlQyKT 8avWijVm8UVJJsgZ1y2BOjPD3dScoUWfRTrpkBw04SUtrg5wiS5TOhhGKnlFSPZSZYAG m0GXbjjri+BN+lJMgD/1g1PkvkqNQoyylcYD4JYDGGZ88xABEwpqKP06YSGEr6ENKE4T SpnQ== 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=qDeKS2F43/jUYUYqjXfJI1A++pCMcBu/ZKm0fyNzcMY=; b=mMkPdHu/NBu65EUyR0eaPDNj7OK6f3BBQ9d8Du16k37qAOeob2BUH+9jcrricfHqkU jlgBZFweKNy1OnZVBMlkE6dNc/dRrHC9RpWJbsoMpk+2IEahBJcwWwZpnN2GxKMtLD+K 3EW/RnqnoAnO+/soAtk3eAoIS7VDYbABKB2RYyHV9ny1BWrUlh7uUhnjIvET+Fl/cFCu gMPCcIxqdj8qFzvbg4ZGEC62JExYjveXwEHKLM4gHNgNjJdhOhjeNHFnVpf28ZKXIsJc 0/ee5VgiZ9HJtNfQXB3RXh0duspyIwIugMyenH31lkjvDaFnWdkyueTpbi8urVQlZYwj v9dw== 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=0s7l2DMW; 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 ds7si12502383ejc.150.2021.07.16.19.39.05; Fri, 16 Jul 2021 19:39:05 -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=0s7l2DMW; 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 4AD6968A880; Sat, 17 Jul 2021 05:38:59 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pl1-f171.google.com (mail-pl1-f171.google.com [209.85.214.171]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6AC4268A1D4 for ; Sat, 17 Jul 2021 05:38:52 +0300 (EEST) Received: by mail-pl1-f171.google.com with SMTP id x16so6224905plg.3 for ; Fri, 16 Jul 2021 19:38:52 -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=P+uis/GU9HGffGH6QHbAeKZwt6QOCy/NEjf7RNrB50Y=; b=0s7l2DMWAQq6rh6Bl8BFZQ1zcezm/sywewj9whjb9tnMPb+yv3xq1HBzBVAORwMAKc 2aWk5kvh5dQAoEUPZfp4c1g6L0MJxZmIDogyZ87/+rjTPxmjRYKqir5J1/m5PnZS6qc7 0MbWdn0KPhJrXPC+X+US2b3F63zuI4Icds8yJQlL+voMYNbL0966oejBHzgkudGv7kro UV0vOG98PRNyfdtvNvHsdaJB61kgZAZtMhqywEuKQQjnCPX6Z223nWCmbv9WlEUo4ddP E7tEWUDpS/pxUTUfXRzGhx34iSGPq2f2A0SnmfCFPnsfvoX/zZt9owTgJBBVB/+vdPbb Kmmw== 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=P+uis/GU9HGffGH6QHbAeKZwt6QOCy/NEjf7RNrB50Y=; b=c7Ikkc5bA2AtQqDgkS0MghKEgc/vCXDizK7ml2Ba/3n+2i1wQEFZbb2kDvbYUVDREO xbP9XLVPiHi8pNaWOdvUgSEa2TzHgEGY2ZrSntJGBmCR5eiB0jT+iXfuiZlZKVPee+we qvabqqHgKuzNO5BuvniiQf2825C1EHhGuIoxcjWEgG/AbR0v+mwgdUH3qY5x3uhhDkQu /YqwSg1+GDJmQZhFSeCTzGWDznRzweUUkIdDWWSq27vd8l3qWbj5aYkJogqqu5xBMFE+ jk1o7UMIT4/7HqP14TYauY5OgH0U2MAE2ool0kzLgUiSFQtXU0MCsiOX/yN76vGgvxjT Fx/g== X-Gm-Message-State: AOAM532snNR67sLvUKKjWjlSowVHg7ushIlF1sakKQf/GxDxtlRtpwpe AJgKogb6Rgr96wrDTTTkyuV4q1fgYjtF/g== X-Received: by 2002:a17:90a:4b02:: with SMTP id g2mr12455859pjh.44.1626489529914; Fri, 16 Jul 2021 19:38:49 -0700 (PDT) Received: from zhengqian-xps.lan (ngn-nat1.v4.open.ad.jp. [202.222.12.138]) by smtp.gmail.com with ESMTPSA id q18sm12909263pgj.8.2021.07.16.19.38.48 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 16 Jul 2021 19:38:49 -0700 (PDT) From: zheng qian To: ffmpeg-devel@ffmpeg.org Date: Sat, 17 Jul 2021 11:38:27 +0900 Message-Id: <20210717023829.84846-2-xqq@xqq.im> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210717023829.84846-1-xqq@xqq.im> References: <20210717023829.84846-1-xqq@xqq.im> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v3 2/4] avformat/mpegts: Recognize ARIB superimpose stream 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: g6jEzvAA8Qls Recognize ARIB superimpose stream through ARIB data coding descriptor, and re-use AV_CODEC_ID_ARIB_CAPTION codec id with an extra disposition flag AV_DISPOSITION_URGENT. Signed-off-by: zheng qian --- libavformat/mpegts.c | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/libavformat/mpegts.c b/libavformat/mpegts.c index a02965bacf..44a1841859 100644 --- a/libavformat/mpegts.c +++ b/libavformat/mpegts.c @@ -2106,8 +2106,8 @@ int ff_parse_mpeg2_descriptor(AVFormatContext *fc, AVStream *st, int stream_type } break; case 0xfd: /* ARIB data coding type descriptor */ - // STD-B24, fascicle 3, chapter 4 defines private_stream_1 - // for captions + // STD-B24, fascicle 3, chapter 4 defines + // private_stream_1 for captions, and private_stream_2 for superimpose if (stream_type == STREAM_TYPE_PRIVATE_DATA) { // This structure is defined in STD-B10, part 1, listing 5.4 and // part 2, 6.2.20). @@ -2115,6 +2115,7 @@ int ff_parse_mpeg2_descriptor(AVFormatContext *fc, AVStream *st, int stream_type // Component tag limits are documented in TR-B14, fascicle 2, // Vol. 3, Section 2, 4.2.8.1 int actual_component_tag = st->internal->stream_identifier - 1; + int is_superimpose = 0; int picked_profile = FF_PROFILE_UNKNOWN; int data_component_id = get16(pp, desc_end); if (data_component_id < 0) @@ -2122,17 +2123,28 @@ int ff_parse_mpeg2_descriptor(AVFormatContext *fc, AVStream *st, int stream_type switch (data_component_id) { case 0x0008: - // [0x30..0x37] are component tags utilized for + // [0x30..0x37] and [0x38..0x3F] are component tags utilized for // non-mobile captioning service ("profile A"). if (actual_component_tag >= 0x30 && actual_component_tag <= 0x37) { + // caption (Profile A) + picked_profile = FF_PROFILE_ARIB_PROFILE_A; + } else if (actual_component_tag >= 0x38 && + actual_component_tag <= 0x3F) { + // superimpose (Profile A) + is_superimpose = 1; picked_profile = FF_PROFILE_ARIB_PROFILE_A; } break; case 0x0012: - // component tag 0x87 signifies a mobile/partial reception + // component tag 0x87 and 0x88 signifies a mobile/partial reception // (1seg) captioning service ("profile C"). if (actual_component_tag == 0x87) { + // caption (Profile C) + picked_profile = FF_PROFILE_ARIB_PROFILE_C; + } else if (actual_component_tag == 0x88) { + // superimpose (Profile C) + is_superimpose = 1; picked_profile = FF_PROFILE_ARIB_PROFILE_C; } break; @@ -2147,6 +2159,9 @@ int ff_parse_mpeg2_descriptor(AVFormatContext *fc, AVStream *st, int stream_type st->codecpar->codec_id = AV_CODEC_ID_ARIB_CAPTION; st->codecpar->profile = picked_profile; st->internal->request_probe = 0; + if (is_superimpose) { + st->disposition |= AV_DISPOSITION_URGENT; + } } break; case 0xb0: /* DOVI video stream descriptor */ From patchwork Sat Jul 17 02:38:28 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: zheng qian X-Patchwork-Id: 28950 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a5d:965a:0:0:0:0:0 with SMTP id d26csp2351939ios; Fri, 16 Jul 2021 19:45:16 -0700 (PDT) X-Google-Smtp-Source: ABdhPJx8ZCSTb7NWLdtMaNRJi+HCNA6+gSazntseeIFBI6KprKMJ/w8X0rMVI0NLHhxH59FHt6R7 X-Received: by 2002:a05:6402:2206:: with SMTP id cq6mr18875647edb.209.1626489915973; Fri, 16 Jul 2021 19:45:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1626489915; cv=none; d=google.com; s=arc-20160816; b=cFk8hRNtmXIaQwUW+2oLCvtT0/xDKBMCYMjYzGt5yHxxj52rsTJJqkbM5CaOpvVJ6i DGYU/ayoRnRbOOUh4lB0RyEAJFe0oXSJ5PCLeg8YDGb6iHdXiq9bdgomjfldJe9+HYKT o2iwkkGAb+Gc/3LzHNUF2FsZtZ4Zh+xnSDElJ1tzSp2IpeZDHnCA/HY3SSXwKT458HG6 modRLmMsHcdUZIcThdH7DJ0TtUniukV2F0+O1AIgDKn6RfOsgcDAKK2Aeh9Dqbax7OR1 PYah0DrMreIh/zH/Wk7OdD8kI2IFW3gDyXd0R+umRKL/L6BIA+rnbjR6ZLMTZVdXfssC RxwA== 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=TFw7pAL4Gfh1qjhkiQ81jgchHMjcXCEOhB2eKjCPWUQ=; b=JoxcrMVtpWk7dOgTnDPRgBhi3AUBRvGzJX1H+Zz3zcvmHvNTRzJus3MCXY3uo1c6hc aVpNr9YV6dSYQxFMMbVXXocnWzY7DQEu1egPLA9ZR2v40n8Nu5SC2hJ3qCXKeIb3yVWJ s4H8R0lzOXCZ2348eo8XJFUYYeuMdlRvE28RiPgzl4bsYH2vLtBywGu4vYZ6MybwVWVk b5XrgN7nyEnWvuBgafTqT/gXUhqEz1DcdnN/oR8HUnKlX0wGNhmDChbwnyGg0As4CSoQ WVvvYjM/iXz5wc1LOE/DR5FbeS1pw8FVS6oLiJWtJMFNWmPhMhM7QNVklTdO6//XZGDo 9IfA== 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="oLkLKBO/"; 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 c16si14020251edw.522.2021.07.16.19.45.15; Fri, 16 Jul 2021 19:45:15 -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="oLkLKBO/"; 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 CF3B268A834; Sat, 17 Jul 2021 05:45:12 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pl1-f169.google.com (mail-pl1-f169.google.com [209.85.214.169]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 640E068A35C for ; Sat, 17 Jul 2021 05:45:06 +0300 (EEST) Received: by mail-pl1-f169.google.com with SMTP id b2so1664839plx.1 for ; Fri, 16 Jul 2021 19:45:06 -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=tgpfjvaVpLYLixZdOS7JyVSuckFhfT6/7PGsxmTRjYU=; b=oLkLKBO/AjvssPMxhu3BD7XX5bKuK0ABbWKzZbmw+2LkI5UWcR+8YTveCxjnlqX6aJ 46ouWIylNtTJ6G1yY6PeEd4+0x7v1K2wWbixTPIL7InOpaos70OdA+8yphpuy2bVX7kO Zf1Qfj7+VAkVZFYjIkRBzvBgZYVkqWJsQJpIVLnBU/75Byzg8W2080ntveIPV9ZxpZzY VMxko4+QNF4S08CXud++L5gItg/qy3DwyAp5IMvy+bPTrFxA2WIkSfp+625ExMZVOyuW Y8/gxzZ4WwbdT2+4/PIz1XVRpnuNwCkh7QnxsHQ43EIXe3TUjGxhBtck7TIq83FCwja9 oGmQ== 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=tgpfjvaVpLYLixZdOS7JyVSuckFhfT6/7PGsxmTRjYU=; b=a/uPys6iHU5IbUiNhLyfrpXv+lQsNyYfGeb1anV1Q3pX/9/Uq38LPSvcHRCZQTEAXb svJ62DFYnG+6RO6UE66DZlcDdeqM0cloBjH5osnuiVo+uLS1qSFov8GI7h1BhJS1RRzH /YXcNCKhohQz0PDDWvtihm0JB5jMk4VDR3aAsqaP21s7oGZczG0284SekGb5F4WupNyi O+WxOuxD+vTNGPQNSJEPrgCHFQC/njXJp4J5WZM9iy+8HvQMjpKoL3jvTe3jBlqj4IpF o0wm4tyNbQmGF8OWHAfV/tAXpidqdJxssoCcBXiAZH2eotEuePZp2xAe96yFNoFx8gW2 Xrhg== X-Gm-Message-State: AOAM532vWPtGkClgH5gbgfSpQEUlAC5vBtiXRKX8XKYbE9LtchjTlQig YWsSA5xaRz6P/toGsmdcl3OD9i0LvN/hGQ== X-Received: by 2002:a62:8283:0:b029:336:6e7a:9c73 with SMTP id w125-20020a6282830000b02903366e7a9c73mr5186329pfd.45.1626489534013; Fri, 16 Jul 2021 19:38:54 -0700 (PDT) Received: from zhengqian-xps.lan (ngn-nat1.v4.open.ad.jp. [202.222.12.138]) by smtp.gmail.com with ESMTPSA id q18sm12909263pgj.8.2021.07.16.19.38.52 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 16 Jul 2021 19:38:53 -0700 (PDT) From: zheng qian To: ffmpeg-devel@ffmpeg.org Date: Sat, 17 Jul 2021 11:38:28 +0900 Message-Id: <20210717023829.84846-3-xqq@xqq.im> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210717023829.84846-1-xqq@xqq.im> References: <20210717023829.84846-1-xqq@xqq.im> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v3 3/4] avformat/mpegtsenc: Add muxing support for ARIB superimpose stream 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: vK0Ff8eatDrW Signed-off-by: zheng qian --- libavformat/mpegtsenc.c | 40 +++++++++++++++++++++++++++++++--------- 1 file changed, 31 insertions(+), 9 deletions(-) diff --git a/libavformat/mpegtsenc.c b/libavformat/mpegtsenc.c index 98dac17994..b5d2938c4a 100644 --- a/libavformat/mpegtsenc.c +++ b/libavformat/mpegtsenc.c @@ -287,26 +287,37 @@ static void putbuf(uint8_t **q_ptr, const uint8_t *buf, size_t len) *q_ptr += len; } -static int put_arib_caption_descriptor(AVFormatContext *s, uint8_t **q_ptr, - AVCodecParameters *codecpar) +static int put_arib_descriptor(AVFormatContext *s, AVStream* st, uint8_t **q_ptr) { uint8_t stream_identifier; uint16_t data_component_id; uint8_t *q = *q_ptr; - switch (codecpar->profile) { + switch (st->codecpar->profile) { case FF_PROFILE_ARIB_PROFILE_A: - stream_identifier = 0x30; + if (st->disposition & AV_DISPOSITION_URGENT) { + // ARIB superimpose, with AV_DISPOSITION_URGENT flag + stream_identifier = 0x38; + } else { + // ARIB caption + stream_identifier = 0x30; + } data_component_id = 0x0008; break; case FF_PROFILE_ARIB_PROFILE_C: - stream_identifier = 0x87; + if (st->disposition & AV_DISPOSITION_URGENT) { + // ARIB superimpose + stream_identifier = 0x88; + } else { + // ARIB caption + stream_identifier = 0x87; + } data_component_id = 0x0012; break; default: av_log(s, AV_LOG_ERROR, "Unset/unknown ARIB caption profile %d utilized!\n", - codecpar->profile); + st->codecpar->profile); return AVERROR_INVALIDDATA; } @@ -320,11 +331,17 @@ static int put_arib_caption_descriptor(AVFormatContext *s, uint8_t **q_ptr, *q++ = 3; // descriptor_length put16(&q, data_component_id); // data_component_id // additional_arib_caption_info: defined in ARIB STD-B24, fascicle 1, Part 3, 9.6.1 - // Here we utilize a pre-defined set of values defined in ARIB TR-B14, + // Here we utilize pre-defined sets of values defined in ARIB TR-B14, // Fascicle 2, 4.2.8.5 for PMT usage, with the reserved bits in the middle // set to 1 (as that is what every broadcaster seems to be doing in // production). - *q++ = 0x3D; // DMF('0011'), Reserved('11'), Timing('01') + if (st->disposition & AV_DISPOSITION_URGENT) { + // ARIB superimpose + *q++ = 0x3C; // DMF('0011'), Reserved('11'), Timing('00') + } else { + // ARIB caption + *q++ = 0x3D; // DMF('0011'), Reserved('11'), Timing('01') + } *q_ptr = q; @@ -772,7 +789,7 @@ static int mpegts_write_pmt(AVFormatContext *s, MpegTSService *service) *len_ptr = q - len_ptr - 1; } else if (codec_id == AV_CODEC_ID_ARIB_CAPTION) { - if (put_arib_caption_descriptor(s, &q, st->codecpar) < 0) + if (put_arib_descriptor(s, st, &q) < 0) break; } break; @@ -1444,6 +1461,11 @@ static int get_pes_stream_id(AVFormatContext *s, AVStream *st, int stream_id, in if (stream_id == STREAM_ID_PRIVATE_STREAM_1) /* asynchronous KLV */ *async = 1; return stream_id != -1 ? stream_id : STREAM_ID_METADATA_STREAM; + } else if (st->codecpar->codec_type == AVMEDIA_TYPE_SUBTITLE && + st->codecpar->codec_id == AV_CODEC_ID_ARIB_CAPTION && + st->disposition & AV_DISPOSITION_URGENT) { // ARIB superimpose + // ARIB TR-B14, Fascicle 1 (2/2), Vol.3, 4.2.3 + return STREAM_ID_PRIVATE_STREAM_2; } else { return STREAM_ID_PRIVATE_STREAM_1; } From patchwork Sat Jul 17 02:38:29 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: zheng qian X-Patchwork-Id: 28952 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a5d:965a:0:0:0:0:0 with SMTP id d26csp2360906ios; Fri, 16 Jul 2021 20:02:42 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxxshVeUU2kmVGT8rr7JLe1uWnSRXg8lUmA1LDnDUNB7UoykVkkfPYR7wSLlMXmDR3BarN/ X-Received: by 2002:a17:906:63ca:: with SMTP id u10mr5656533ejk.411.1626490962093; Fri, 16 Jul 2021 20:02:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1626490962; cv=none; d=google.com; s=arc-20160816; b=pyckzaUWv/GxjZYMIAf/lg30T5E5x2P0nrtmV/HI8wyNnsEg6A7MlOjiYk8qEUKLBC KPiw2pz9QkyTJjSadHEgSVu063cyfN+wFarI8r57zw6iQR1oMu34fWLY3M6p0EPQcpe1 LHeTE0UIo6Dxh5xw2gaDYb8xxgL4dNvB3agxRc4T8EJa0t4hPwie3qikFGTT2SWFeJn2 8Tiu/W9pJCl0/UhiaVXPEqoXB3AGSJgQiF1Pd/y+MjW0gFqLAHh7N4gURiSzRKnBz7qx kBiO6NuYH/Ciea0eeZsVhNVLyKjAfXYWMm/KeNl4tGfOL25cRnE4sJaqsg3kmtqYy2Nk 5+4A== 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=99IYxwHRGiPtFX9/92L4nda8qjObryip+47kFhteuKs=; b=kf7g7+PJMMWsPkIIFP54F3gxzRIMS3ud97On/4IpeXL2POYs8efyIsckUt5EaKn2xY cVEvixJojp7gmYVYFxVXK3hlomiDO/oQZVQSbevBugaWr7oRq+IoEFDUhQotRzO3Co6l w97LB70TtxICvMkm/E9Ty79RTF2pG0TrvryLX5c31wNKG4OfzHrG35a2xCgi6LGnoScr uyUpA0cW4Q8Vja/LjenS4uCp7DZ4MgdoYBH0k+Y/gm72Ua8of1HkK0CFBWxjwaQXTpPK PklHsWSp4wApO3lmxMlMxC9kNTBNYGzZWPTA7vSdWSR5hc1PLqgrZ/SOkTqvLWWI+Mng 47IQ== 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=y1gpLp31; 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 w5si12650596edc.581.2021.07.16.20.02.41; Fri, 16 Jul 2021 20:02:42 -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=y1gpLp31; 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 0D9F368A834; Sat, 17 Jul 2021 06:02:38 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-oi1-f176.google.com (mail-oi1-f176.google.com [209.85.167.176]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E1FCF68A544 for ; Sat, 17 Jul 2021 06:02:31 +0300 (EEST) Received: by mail-oi1-f176.google.com with SMTP id u15so13339585oiw.3 for ; Fri, 16 Jul 2021 20:02:31 -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=XE/qCrtSq0DUzLo3/MNQ7aCAz3ZxwRmMFpkU7/YPGUU=; b=y1gpLp31EKuUNev/P/gkeVKwaifQVfC08T189u1tCzDwPE1DdhQLFYxf7re1fLWewS xIriIxzgzrqzKwVKAWxuSI3PysIgMzepPvA36TN6VwO5etHE9ib4Om59XrPPmQJpz/yM iKpDm+wVaV0puM2MmDGLnyHlu4fn7lCB+62Z81pEzydyiUWsJqgaM9uQ9E9VpqThHZZO zexu0sdKRhhBjsw1CE19MXh4arpkPYRt9HsV4ud0kAJEVt2jrJJQTlaZ9P+0okPz4WLt B65nkieSZrBLb8sr5WxPfOiYQ6snGij3VdUlcpJ0qhVPhYapYejGa/178l5EN33SWQ1o yftw== 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=XE/qCrtSq0DUzLo3/MNQ7aCAz3ZxwRmMFpkU7/YPGUU=; b=fUKFo6LA1A/amV95NNoO1Cpfl3p90X8HQDCrMsf63QZ64g/oXFKApZGG7SDMMYumqZ SIpOQ4NHRvQUeBcUXVu+twZcjThcvBQAgHpqDQxPXLMGWRxKk1PSRnFwlQ+Kn5e9MUKe rVTXzW4JilWqGdU1C7ZNCuIy5wnePMBa9xE+Rg6QUd/eIbPoftmSfxR1QQeSeRxsmUlo TZY73bqQUN1+PyYCaDTM8+vxYWdEEftNVBagkOgsq5KIk8HJI8PwHc7C2zFcMVl5vImi 7uzWTAteqm0XwUIxelZlfHrcF7kfgOoEq0bClhpS3ktRFo6FDyfO7xl76akt3Cu/54Wx 7Uyw== X-Gm-Message-State: AOAM5339SZYudz9hTtuEHAQGo6QzsdVFHxSh3QV7S6NOmf+I2ZuSo8q1 mANJgomjNpaW8mV81AXuBV5Py1yoPPs1eg== X-Received: by 2002:a17:90a:c89:: with SMTP id v9mr12932293pja.175.1626489539467; Fri, 16 Jul 2021 19:38:59 -0700 (PDT) Received: from zhengqian-xps.lan (ngn-nat1.v4.open.ad.jp. [202.222.12.138]) by smtp.gmail.com with ESMTPSA id q18sm12909263pgj.8.2021.07.16.19.38.58 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 16 Jul 2021 19:38:59 -0700 (PDT) From: zheng qian To: ffmpeg-devel@ffmpeg.org Date: Sat, 17 Jul 2021 11:38:29 +0900 Message-Id: <20210717023829.84846-4-xqq@xqq.im> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210717023829.84846-1-xqq@xqq.im> References: <20210717023829.84846-1-xqq@xqq.im> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v3 4/4] fftools/ffmpeg: Ignore dts checking for AV_DISPOSITION_URGENT 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: QtXb/plATEP/ Stream with AV_DISPOSITION_URGENT disposition flag could be NOPTS. Signed-off-by: zheng qian --- fftools/ffmpeg.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/fftools/ffmpeg.c b/fftools/ffmpeg.c index 1ac2e48600..a3b720748b 100644 --- a/fftools/ffmpeg.c +++ b/fftools/ffmpeg.c @@ -824,7 +824,8 @@ static void write_packet(OutputFile *of, AVPacket *pkt, OutputStream *ost, int u if ((st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO || st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO || st->codecpar->codec_type == AVMEDIA_TYPE_SUBTITLE) && pkt->dts != AV_NOPTS_VALUE && !(st->codecpar->codec_id == AV_CODEC_ID_VP9 && ost->stream_copy) && - ost->last_mux_dts != AV_NOPTS_VALUE) { + ost->last_mux_dts != AV_NOPTS_VALUE && + !(st->disposition & AV_DISPOSITION_URGENT)) { int64_t max = ost->last_mux_dts + !(s->oformat->flags & AVFMT_TS_NONSTRICT); if (pkt->dts < max) { int loglevel = max - pkt->dts > 2 || st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO ? AV_LOG_WARNING : AV_LOG_DEBUG;