From patchwork Mon Nov 23 19:10:44 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Jan_Ekstr=C3=B6m?= X-Patchwork-Id: 23976 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 5491E449287 for ; Mon, 23 Nov 2020 21:16:31 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 379B168BB17; Mon, 23 Nov 2020 21:16:31 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lf1-f68.google.com (mail-lf1-f68.google.com [209.85.167.68]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id D2F3268B922 for ; Mon, 23 Nov 2020 21:16:24 +0200 (EET) Received: by mail-lf1-f68.google.com with SMTP id j205so25325492lfj.6 for ; Mon, 23 Nov 2020 11:16:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=BOxElckCt/97+Ln4BeEmL33sqT0bAW6SbDFpuoe9Ja4=; b=Mz5qpj0Z3++ERDarTQSzAvpN2yLB4UdMbLBI6P0lcdloWl4L8AVrVAkIzZA8WmUphk gFfn+ZTfRp3auAujTaHHcHt07lvs95cc5EHjv9r3SM1fFPHE+EBoorMM7UrsviJjtWsc fu7HnTaWxDOb4wK8H3/o12I+PIRjymYOtq6M9TVK8FSk/NI7/G1HCHV1OsLDVu1UZft2 CdnatxhvJLzefLynxzltPZ0wNckXV5+mySdnqbB0ia5dZRMOoFnZI1QSNHWUS9YlON3j GUdrw38xPTmO3k11HaWKYCyUKrLfZwOrVos08tmP2bKoHnOPPzc2cdVWiCM5W7FjbeRT J/rQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=BOxElckCt/97+Ln4BeEmL33sqT0bAW6SbDFpuoe9Ja4=; b=loI4oRODHnxMCAry8tK5GYdwCdaejaKdM+vLM0O4Ur9PfSTbCVjOkGG69uoUmK9We1 pAeHEkHkgrIsb1JfslXxqhg3opxGwH67vXhHz9tb8q4j1S/Poa6e5sF9kbE/i/0OppSo qZbvnz8h7qu1QREhxTEwhs2dlmEB2b6L7/X4sXIaZv4rwNdoBD6YHXiFbo7HRbQHavMV cfCSOQ41pKz6z5+Zf40ksSQSDv9pCadvMLb78uTom+QCUhUWGrH1rna48wAxzFgOIkj8 nsObdClkLiHfcpmeZqBr0Yk///UsjPHlqvrxpQIjo7zwaGQHY1NcONxc1pC/pWuKqefZ fDKQ== X-Gm-Message-State: AOAM532eRoL0qTi43g+lSq4IWtyI4oPNEuDqKsjOHz34BWFW2x2YHjkK XNFW5Z1/1s1j8Ddm8aICQNG5JpSCNCw5Rg== X-Google-Smtp-Source: ABdhPJxXp8pqDCtxNLxm4AkHx7FnXVgVEvmKa/uwt4y2snrMZIJPiljWtPC6Lrl0HWfiukuypwuQPQ== X-Received: by 2002:a19:c897:: with SMTP id y145mr269820lff.214.1606158657014; Mon, 23 Nov 2020 11:10:57 -0800 (PST) Received: from localhost.localdomain (91-159-194-103.elisa-laajakaista.fi. [91.159.194.103]) by smtp.gmail.com with ESMTPSA id j19sm1469995lfb.29.2020.11.23.11.10.55 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Nov 2020 11:10:55 -0800 (PST) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Mon, 23 Nov 2020 21:10:44 +0200 Message-Id: <20201123191046.28887-5-jeebjp@gmail.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201123191046.28887-1-jeebjp@gmail.com> References: <20201123191046.28887-1-jeebjp@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 4/6] avformat/av1: add support for passing through MP4/Matroska av1c X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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" --- libavformat/av1.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/libavformat/av1.c b/libavformat/av1.c index 0cbffb1fd8..5512c4e0f7 100644 --- a/libavformat/av1.c +++ b/libavformat/av1.c @@ -375,6 +375,20 @@ int ff_isom_write_av1c(AVIOContext *pb, const uint8_t *buf, int size) if (size <= 0) return AVERROR_INVALIDDATA; + if (buf[0] & 0x80) { + // first bit is nonzero, the passed data does not consist purely of + // OBUs. Expect that the data is already in AV1CodecConfigurationRecord + // format. + int config_record_version = buf[0] & 0x7f; + if (config_record_version != 1 || size < 4) { + return AVERROR_INVALIDDATA; + } + + avio_write(pb, buf, size); + + return 0; + } + ret = avio_open_dyn_buf(&meta_pb); if (ret < 0) return ret;