From patchwork Thu Jun 8 02:45:56 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhao Zhili X-Patchwork-Id: 42003 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:c526:b0:117:ac03:c9de with SMTP id gm38csp55644pzb; Wed, 7 Jun 2023 19:47:14 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ5k7S7ubX8zABUQkrVlbFASnegAs9JLTlZffVil3sCOPsFRO94V8YD9JozyXIJT+D4Gm4yk X-Received: by 2002:a17:907:7e84:b0:958:4c75:705e with SMTP id qb4-20020a1709077e8400b009584c75705emr7985094ejc.17.1686192434299; Wed, 07 Jun 2023 19:47:14 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1686192434; cv=none; d=google.com; s=arc-20160816; b=i85xcKkx5+icdV281ePJ3Sbmfe5ySA2NSOs7XJs7AgpJZzXs2m2aroexQF5UNsjDa7 PLVFeBafiP8iez27+8hO0btMDCIU0lSOW9uHr8SvSYi+QUqmn9D6eQ+RiC14QPUOaA3/ PdCWN5rNnmlqTRlwFKuEfJpJqOfnxHoUybpd1XTLE89dQCIOElzJ9eLb/hDLpU/dwj2W BRT3BnRSd9yKcYq+fBYxx3hyx7PKh4Ji2+wDlpcRnD415np/mMCLpFQ8zO0awiKUh2RK SUwh1Y1Z54TZLYlvSxu4+JD4+iMmOzHmn/eBgq1G6ZHMha2gxLr3fL18289oirg60c1N vgZQ== 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:date :to:from:message-id:dkim-signature:delivered-to; bh=8w5RHpDzQzRZaqzS9iefMe5bwpOP3jt+787B3DozGVM=; b=I2tcUNfIClZKWRAhWvuyFEuCVs76wx06csdGn61W8KCem0h5DQSBZw64WtBuiFE/lU lFkfrtnZ01Uwg4mWGlREudaPzZ/dQl687aApzwF4hDd+L4crZANeoqH/SnE51AgHRqis M/itRa4OIvSuITbxfUd88ULLiUAXjH+YZIk18jVtLNW6QwaANlXqVDQfGOW9T4f1ESpY PrABqU2EHMB/5alLD4zSD7mBDhn2qPFBywzPdFW2ml/V92AYHbDmN7++qzTewRrYJhvo +HPtB7tr95rgT7E5kDzOLs11eWXOUiURdwrfc47TMAJyF1RVnhwkHnzVg7kRb0Dsenew zUnQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@foxmail.com header.s=s201512 header.b=ar0iITcE; 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=NONE dis=NONE) header.from=foxmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id a19-20020a17090680d300b00977cccbbaaesi79217ejx.966.2023.06.07.19.47.13; Wed, 07 Jun 2023 19:47:14 -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=@foxmail.com header.s=s201512 header.b=ar0iITcE; 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=NONE dis=NONE) header.from=foxmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id D0D4C68C18D; Thu, 8 Jun 2023 05:47:08 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from out203-205-221-239.mail.qq.com (out203-205-221-239.mail.qq.com [203.205.221.239]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2F38468BF7E for ; Thu, 8 Jun 2023 05:47:01 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1686192407; bh=i1m3e9vpx669uefMLomT+nPZGzXdq/9DjPt5sXn4PgA=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=ar0iITcEIX4wt2KMnssAvmcI7VTniSKXhi+8RHkcJPWdb3ccFXLX/ohUvaD9PhsPB LPztKG8d0VxUYEnKM2+SyM+TisobftdPwS5bXKSS/iCXbn6rYA+QaWAEe8ovQKzi34 lsgmahf1d2suCYJ/c+6+eOW3mtGrfWaYgBl0uILU= Received: from localhost.localdomain ([119.147.10.201]) by newxmesmtplogicsvrsza10-0.qq.com (NewEsmtp) with SMTP id B782BCD1; Thu, 08 Jun 2023 10:45:56 +0800 X-QQ-mid: xmsmtpt1686192356t56g54fh8 Message-ID: X-QQ-XMAILINFO: MFWpArBVhhGT9xqVW8FUzZU+MZdyLhPnraE7QhwtOnvG/GtGCMLJXAtZARwcb3 WIU5CSoLl5vQ8+Jf+58C/m4gI+HYJWAUcmmnousyVeeEoJFAwKcX5cemb9AQNzrnasPC4x2MG1AZ JFxrWDpCGjWuAHYqeCfqn+E/Z+zmdira+EcesB6iudyhJLPkB+lh2sYSATWUjXo2kShUqzD63ubF KMhLeLADh/vwBxNpjwv3vjkgiLy0W2/vxtRNevVyIwX4QQjma3uhhC5WGh5My9WJJ+hGBbaACiIj fuzzcXyQZCw6OIzcUAI1S1atC4SdGXnN3EdkrBFGJeK6pPcvLMSraIjuVK8XblNFsf3661nI/p0k D2q88hY1lyY7HJ4opsKTLF6mRUZYpS8Q0xoeDi7SK/Yu+YhpXEoaHCLawZlodnPKUJC0+RwWqjBE QNozz1DB8OdO933PHNshPGpyuYRHNJXei+HkiY6LKH3LfR6PBPasEF+Qi94nzH1rKkkoXwla0wHH 1NCcWoKBHTWdG/PP9+dF/fhF9+B7sI3/+A6wjKEXSjpdvNKMHiQ53D1nN1TCAGUWHCyWNakKSgAZ r5ur6lvcgcgOmICucaa2ekZgndQMq1KXPuyfh9yB2Gnrd+iMKSCtMARuaIwkazvNTnLK9T3BftXn FmSQZrBuBpe/ZgdY/7+5V0WUR3N9j5VoSWyXkaomzYeD8/P4TVN61T6lLl7bKbgZkCqi/2oErLmf J0hmlSGmChh8G1vbLMV3j2idSpnl+OupVU3RRuQkuP61VCKjM2gTk1u1uUQuI21pgq1VUmrnyy4D T2YY9xrpUzmLnfoP8uF44+RaOQdjnjNL+FglRcyBua0UFFygkXTLwYXgDtlfG35Zy5iuvDzHMTG0 Nx9INhpr0Ibmwuu9Ykrgnk4Tvi1RGLprI43iPD+6UjcIqoz72UW/NkKKbk00gHs8LqHOyrmRh+jG pAnegy5B/vKr+1KjJ0cXQCZPIxP2+D From: Zhao Zhili To: ffmpeg-devel@ffmpeg.org Date: Thu, 8 Jun 2023 10:45:56 +0800 X-OQ-MSGID: <20230608024556.1463501-1-quinkblack@foxmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <168537340353.3843.1827807266927340280@lain.khirnov.net> References: <168537340353.3843.1827807266927340280@lain.khirnov.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2] avformat/hlsenc: fix CODECS attribute of H.264 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: Zhao Zhili Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: +KfHG6I3Jb0K From: Zhao Zhili 1. Add avcc extradata support. 2. Add non-standard annexb support with 0 0 1 as prefix for SPS. Signed-off-by: Zhao Zhili --- v2: Describe what the patch does. libavformat/hlsenc.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c index 871afb571b..1e0848ce3d 100644 --- a/libavformat/hlsenc.c +++ b/libavformat/hlsenc.c @@ -355,9 +355,19 @@ static void write_codec_attr(AVStream *st, VariantStream *vs) if (st->codecpar->codec_id == AV_CODEC_ID_H264) { uint8_t *data = st->codecpar->extradata; - if (data && (data[0] | data[1] | data[2]) == 0 && data[3] == 1 && (data[4] & 0x1F) == 7) { + if (data) { + const uint8_t *p; + + if (AV_RB32(data) == 0x01 && (data[4] & 0x1F) == 7) + p = &data[5]; + else if (AV_RB24(data) == 0x01 && (data[3] & 0x1F) == 7) + p = &data[4]; + else if (data[0] == 0x01) /* avcC */ + p = &data[1]; + else + goto fail; snprintf(attr, sizeof(attr), - "avc1.%02x%02x%02x", data[5], data[6], data[7]); + "avc1.%02x%02x%02x", p[0], p[1], p[2]); } else { goto fail; }