From patchwork Mon Sep 20 15:00:43 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Jan_Ekstr=C3=B6m?= X-Patchwork-Id: 30383 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a6b:6506:0:0:0:0:0 with SMTP id z6csp1533160iob; Mon, 20 Sep 2021 08:03:21 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxBwX1JCuoj2qUuShwIE0jf4EZwvtqdH9kyBrbFzw1ryVG7xHkKuZMe59v8RagWExgMiMGO X-Received: by 2002:aa7:da41:: with SMTP id w1mr30766021eds.344.1632150201625; Mon, 20 Sep 2021 08:03:21 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1632150201; cv=none; d=google.com; s=arc-20160816; b=kULgyTU3avHUaxKl/L5H7cnpmbVwZgQMDo4ydVLKBeKsc8SwYLE4uiPb7/hve9DzOa lfnmb/sNi1dGVWk2rDwKoE5rYdQ6IaNJyEPdU9jTX2iTVnJFLGr+iwtDQAqKCZ8msSW+ /QlM3P7aPAQV1bW+3SPfpAUHBlID64JGmoLCUELYj2EXHjxLFVQQDhm82pIyWjbVmph5 dboZgcCkVYAwcOhCQdH9VbPdP0ot5sP4bMMMGtKh7TnYNWx5LWUN5fayT6LVa/FGMsh7 hUqbRxV/kKSQ6UQ2K6w+Wt3GpK52bwEeDAjBC1i2M+ZZoFqBFej1qLKgKyVOEANsOTdY aksg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding: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=Cjn5rd2IahPRf9UaB/VDsKfSByhAbpY9PS8u90RGswg=; b=E0r9v9kmt9zTVOunS5XAY0JDucj6WpHaIwc3cq7rgBOQbOjBROxPtAU8KSu93Wig1R 0MvhhzDBwklhmK6x3qHPCVK+sx8G5/Ww4Eu/U+Mvau/qJlfE4kAncz/rmtv4r79aGKLu PNrXg2hwKb+/8ITJ2CnlVocf74i0iaphhJZ30QJkWrdl9qmu3HwgqjbhdIQQOtZ3sCDz sbRtgDMPrc+zCVOmfXE0nI6zgEnrzl76jHCn4U6RHVyQFC7eCJRXWmjen0mZUvmGuVv6 kHtuBv4kJOnot/HnObJGhbQuet6nwKIo31BrAokF3RTdS0VcjZSYw/EYXHaLC14dT0kX +DGQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=YYnFZIfO; 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 d13si16030082ejz.741.2021.09.20.08.03.21; Mon, 20 Sep 2021 08:03:21 -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=@gmail.com header.s=20210112 header.b=YYnFZIfO; 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 3E80C68AF6F; Mon, 20 Sep 2021 18:02:58 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lf1-f54.google.com (mail-lf1-f54.google.com [209.85.167.54]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 755EB68AF5B for ; Mon, 20 Sep 2021 18:02:56 +0300 (EEST) Received: by mail-lf1-f54.google.com with SMTP id x27so69079417lfu.5 for ; Mon, 20 Sep 2021 08:02:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=WvCb/2o1GygYyAYsIfg9tRPVaVbJqgtvtgIXq7hLYsI=; b=YYnFZIfO2cucRD+gLicYZZIK5sVN1RY3er5GGkOVYhdb3lcews+R6W85pXGdaJyi9q y6dLpm1slm3uuqnMgtbBCpa6A+Fg5rBYHLlV9AQMs5VKtd1G0gMUUwDlgZQuIrQKQox0 h6zG7UVaHVki95YEjZcaq8GHLy1nv47NqchGNTeTnRilK6w+Kz2zKdvYl9tJnOr1EMg1 82PXIsTwN3D5O8t39F0/oIb+JIH2dhpGuFbBlKH/zikIH+P4xPDxqirMO10tGhX01v4d af94CrX0Me28iPH1Iizij99oa6N9bMmkQ8X9Vrol9HE1mYUcCUGqE2zHr76cxbuM1oro P6cQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=WvCb/2o1GygYyAYsIfg9tRPVaVbJqgtvtgIXq7hLYsI=; b=oma/7c6D1SdNj2OWh7jekPUYqAmybt7MeT7S/vtfGvq+CPGQHf/8mNMRM+JpVEu3Rd oTUFNT9gT0W3uMzS7394Lln/TYlAgLblufdMm/nh/eh0zVtYx0Tw2UwbD3Fiyq0k72Ze u47V+bj4oUkXRCspg0G/GBjw/WWumKzAwrJFYiEv15QKofm6BIwkshWZmANtjSx/BY7g 3gcKWWZ/tJutkxvD2F9aFuD0jnO0KKSLM7N0AVCHZJYL+dtcEIZPGnUtHTYIFrh+FByy CRbkZiOiZU4Nm1WMM0dhdYsCGognv2VbuIx2IvjQJaFDAAFz+CqEh5Oe5xpfU3/N1yQh wVAA== X-Gm-Message-State: AOAM530KcPQd0PCOg56ytAmO4jRpVClDMBBbGGgTrZAaxuev1PINpaNf riNj7U829USeWOsPWNW+rWUhCrdpu24= X-Received: by 2002:a2e:a225:: with SMTP id i5mr23532572ljm.64.1632150054869; Mon, 20 Sep 2021 08:00:54 -0700 (PDT) Received: from localhost.localdomain (91-159-194-103.elisa-laajakaista.fi. [91.159.194.103]) by smtp.gmail.com with ESMTPSA id v26sm1318300ljv.77.2021.09.20.08.00.53 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Sep 2021 08:00:54 -0700 (PDT) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Mon, 20 Sep 2021 18:00:43 +0300 Message-Id: <20210920150048.8790-1-jeebjp@gmail.com> X-Mailer: git-send-email 2.31.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v3 0/5] Support for stream dispositions in MP4 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: O6CyvGrE7pbh Compared to v2: * aviobuf changes to make a function useful in MP4 null-delimited string parsing into AVBPrint. ** Extended read_line_to_bprint to be a more generic read_string_to_bprint. ** Added a maximum length argument to read_string_to_bprint. ** Added a new function ff_read_string_to_bprint_overwrite. * Switched from buffers with hard-coded sizes in avformat/mov to AVBPrint based parsing with ff_read_string_to_bprint_overwrite. * Minor changes to the actual primary changes of the patch set: ** avformat/isom: "KindWritingModeCMAF | KindWritingModeUnifiedOrigin" now has spaces between the bitmasks for better readability. ** avformat/{isom,movenc}: add and utilize KindWritingModeNB for the maximum value limit in the AVOption definition. First patch implements the CMAF specified way of flagging what in FFmpeg are are called stream dispositions. Other identifiers such as HTML media track kinds are allowed, but if there is a DASH identifier for something, it should be utilized in stead. Second patch is a compatibility patch for one of the vendors that supports this feature. If this is considered a too bad of a hack, we can drop it from being upstreamed, but at least I wanted to bring it up :) . The compatibility mode is not the default, so it should also not proliferate such behavior. Best regards, Jan Jan Ekström (5): avformat/aviobuf: add a full string reading mode to read_line_to_bprint avformat/{aviobuf,avio_internal}: add ff_read_string_to_bprint_overwrite avformat/{aviobuf,avio_internal}: add max_len argument to ff_read_string_to_bprint_overwrite avformat/{isom,mov,movenc}: add support for CMAF DASH roles avformat/{isom,movenc}: add kind box compatibility mode for Unified Origin libavformat/avio_internal.h | 19 ++++ libavformat/aviobuf.c | 40 ++++++-- libavformat/isom.c | 32 +++++++ libavformat/isom.h | 19 ++++ libavformat/mov.c | 91 +++++++++++++++++++ libavformat/movenc.c | 57 ++++++++++++ libavformat/movenc.h | 2 + tests/fate/mov.mak | 17 ++++ .../ref/fate/mov-mp4-disposition-mpegts-remux | 81 +++++++++++++++++ ...p4-disposition-unified-origin-mpegts-remux | 81 +++++++++++++++++ 10 files changed, 432 insertions(+), 7 deletions(-) create mode 100644 tests/ref/fate/mov-mp4-disposition-mpegts-remux create mode 100644 tests/ref/fate/mov-mp4-disposition-unified-origin-mpegts-remux