From patchwork Mon Jan 18 17:39:07 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nachiket Tarate X-Patchwork-Id: 25015 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 D71C8448B8B for ; Mon, 18 Jan 2021 20:32:15 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id B90E4688162; Mon, 18 Jan 2021 20:32:15 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-io1-f41.google.com (mail-io1-f41.google.com [209.85.166.41]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2A59A688162 for ; Mon, 18 Jan 2021 20:32:09 +0200 (EET) Received: by mail-io1-f41.google.com with SMTP id x21so16435156iog.10 for ; Mon, 18 Jan 2021 10:32:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id; bh=/9R97hlzuORN4NaJqo8Vv/P8wnlPdnFTO0zL+Fv/HvU=; b=BulLn1PcU3pMa3wqemcH76Tq0D+QiSPxcpDGicU9Q6NPekR3YLVygDA19qZD33VPp+ fHJH0fWAHwdPCPDg4mzhLV31b4NrR0jKvBcslDDGbzldGJe21Ac5s9PpQVsk0+uU1KRP iJaljA01+sxwBebjf5Nxn1rn2Npk57097HE6GH2tsDLRNhJWGs2F/Dd2Iqzwjjm2eU5n fqwzyKUZp27KEMsdL6+AGqAvFeoCsbY2HzS3iLUhSDJ2XINrq3mGQezapEFCE23p6n8R 7NYdGcW5ZdE4Se7BYyYzN6ZUXoFUA1gTpVYrG6MHpdBByA9hj1NkRpNyPkG0oJWz0gcj d2QA== 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; bh=/9R97hlzuORN4NaJqo8Vv/P8wnlPdnFTO0zL+Fv/HvU=; b=pafJL7/sm0A1MgwI+VhO/pl6+EpbclzB6D/JKkrwrOJ0ZToU50hVC5ntxop4r1G+1X cdkuHiunV6xp9Ul0oxDKAdbLn0cHHQhJ7kHhK9p9IfmvWyeh9gHypwnSziCe4gzi8H6+ f6A6iynub/32vJD366+puPPmtUB1zROGwFb1FhyS/j0Pd4ZJPATKN96HE6ADP5ax3EfS Z1docPDwUUwAtxHUY+HB4PHjRo7MdW/+TT1uJALvOWKVc7nP88Wi5uxKwAdi18ws03Fz nd0eckne6D6nLO/GPr7b8LaphC6QgWl875qIpFtWfgSSZuqwirV6EesgUtdphsm36B34 J/Nw== X-Gm-Message-State: AOAM530btk2/X8loFQ7AVnj+iTRCG5F8zcYEVmMxEGzl97jInJq/oXQh SRzvg7lhtfgkr0mmcznQenrnDXwXL0vg8V2a X-Google-Smtp-Source: ABdhPJwzlqb1aL/x+YQO73ZrkevGLBt3/HB5YMcD7SlXdSTOPXVu9Gkvt21DydoJVX7fZ7vTudP+Tw== X-Received: by 2002:a63:5d7:: with SMTP id 206mr727374pgf.384.1610991564340; Mon, 18 Jan 2021 09:39:24 -0800 (PST) Received: from localhost.localdomain ([2401:4900:30cf:cfd2:698e:6e9e:f776:f3d4]) by smtp.gmail.com with ESMTPSA id u68sm15676445pfb.70.2021.01.18.09.39.22 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 18 Jan 2021 09:39:23 -0800 (PST) From: Nachiket Tarate To: ffmpeg-devel@ffmpeg.org Date: Mon, 18 Jan 2021 23:09:07 +0530 Message-Id: <20210118173907.12389-1-nachiket.programmer@gmail.com> X-Mailer: git-send-email 2.17.1 Subject: [FFmpeg-devel] [PATCH 1/3] libavcodec/adts_header: add frame_length field and avpriv function to parse AAC ADTS header 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 MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" These will be used by HLS demuxer in case of SAMPLE-AES encryption/decryption. Signed-off-by: Nachiket Tarate --- libavcodec/adts_header.c | 1 + libavcodec/adts_header.h | 1 + libavcodec/adts_parser.c | 29 ++++++++++++++++++++++++++++- libavcodec/adts_parser.h | 4 ++++ 4 files changed, 34 insertions(+), 1 deletion(-) diff --git a/libavcodec/adts_header.c b/libavcodec/adts_header.c index 0889820f8a..c6680b0fc8 100644 --- a/libavcodec/adts_header.c +++ b/libavcodec/adts_header.c @@ -66,6 +66,7 @@ int ff_adts_header_parse(GetBitContext *gbc, AACADTSHeaderInfo *hdr) hdr->sample_rate = avpriv_mpeg4audio_sample_rates[sr]; hdr->samples = (rdb + 1) * 1024; hdr->bit_rate = size * 8 * hdr->sample_rate / hdr->samples; + hdr->frame_length = size; return size; } diff --git a/libavcodec/adts_header.h b/libavcodec/adts_header.h index f615f6a9f9..c362ce46a5 100644 --- a/libavcodec/adts_header.h +++ b/libavcodec/adts_header.h @@ -34,6 +34,7 @@ typedef struct AACADTSHeaderInfo { uint8_t sampling_index; uint8_t chan_config; uint8_t num_aac_frames; + uint32_t frame_length; } AACADTSHeaderInfo; /** diff --git a/libavcodec/adts_parser.c b/libavcodec/adts_parser.c index 5c9f8ff6f2..3421d9fee8 100644 --- a/libavcodec/adts_parser.c +++ b/libavcodec/adts_parser.c @@ -21,7 +21,6 @@ #include #include -#include "adts_header.h" #include "adts_parser.h" int av_adts_header_parse(const uint8_t *buf, uint32_t *samples, uint8_t *frames) @@ -42,3 +41,31 @@ int av_adts_header_parse(const uint8_t *buf, uint32_t *samples, uint8_t *frames) return AVERROR(ENOSYS); #endif } + +int avpriv_adts_header_parse (AACADTSHeaderInfo **phdr, const uint8_t *buf, size_t size) +{ +#if CONFIG_ADTS_HEADER + int ret = 0; + GetBitContext gb; + + if (size < AV_AAC_ADTS_HEADER_SIZE) + return AVERROR_INVALIDDATA; + + if (!*phdr) + *phdr = av_mallocz(sizeof(AACADTSHeaderInfo)); + if (!*phdr) + return AVERROR(ENOMEM); + + ret = init_get_bits8(&gb, buf, AV_AAC_ADTS_HEADER_SIZE); + if (ret < 0) + return ret; + + ret = ff_adts_header_parse(&gb, *phdr); + if (ret < 0) + return ret; + + return 0; +#else + return AVERROR(ENOSYS); +#endif +} diff --git a/libavcodec/adts_parser.h b/libavcodec/adts_parser.h index f85becd131..faa6e47426 100644 --- a/libavcodec/adts_parser.h +++ b/libavcodec/adts_parser.h @@ -22,6 +22,8 @@ #include #include +#include "adts_header.h" + #define AV_AAC_ADTS_HEADER_SIZE 7 /** @@ -34,4 +36,6 @@ int av_adts_header_parse(const uint8_t *buf, uint32_t *samples, uint8_t *frames); +int avpriv_adts_header_parse (AACADTSHeaderInfo **phdr, const uint8_t *buf, size_t size); + #endif /* AVCODEC_ADTS_PARSER_H */