From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 5B06A4930B for ; Sun, 7 Jul 2024 16:19:08 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 6514E68CC21; Sun, 7 Jul 2024 19:19:06 +0300 (EEST) Received: from mail-pg1-f176.google.com (mail-pg1-f176.google.com [209.85.215.176]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E000668D8C8 for ; Sun, 7 Jul 2024 19:18:59 +0300 (EEST) Received: by mail-pg1-f176.google.com with SMTP id 41be03b00d2f7-707040e3017so2097671a12.3 for ; Sun, 07 Jul 2024 09:18:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1720369137; x=1720973937; darn=ffmpeg.org; h=content-transfer-encoding:in-reply-to:from:content-language :references:to:subject:user-agent:mime-version:date:message-id:from :to:cc:subject:date:message-id:reply-to; bh=NxMLLGQv/neT3AVR7n/Qf8XYOrRAPpEVuI2RFKoDfK0=; b=fcpCBh2T0I3OKlvbjnVeW/GCx8kadTBGTqst56BDyrkSz/KkFn43X2oUNHVco77gZk R9sGM+neXt8NypaogyBw8CXPR2yvjghY1TNc/fccFEEfbQ6bRmRY6GKg71ncezk5AuRf 7hOoK/6LqxX29nXm1N9ybyzajIdxcVkoZ5BAGf5v13FAGs4gF+HyolHXeGfxETKLOGdp O7CUzt0oLNqx4IkJo/oIz3u5aYLMjELRtGNvIKsAtG8wVhoAlx15d1i0ykUaKVzh4DVh /unAvWapfsfgjmbUudZcxj2Cm3FAiWhuCxCoPiDg5QIW9k9rUCakIJMHblk//D2COj5D QPBg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1720369137; x=1720973937; h=content-transfer-encoding:in-reply-to:from:content-language :references:to:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=NxMLLGQv/neT3AVR7n/Qf8XYOrRAPpEVuI2RFKoDfK0=; b=vBe3ROBgEeC6KQsa4jOECSHManwG5usg7aRAJ+v3etntvEsNRSgN5FLhOGMULaSUeq Wx8A62VKqb/xkzQ4+WI+Q6TSYU5972bxq47YBpMu/QoSiZ6vx5H2SBMWM7HRTkEgSWXi 9j4bdYZz3uXrHLs9vvM55idsezFMTVNfK/tOrlhV7+evYVLhGoo+5BAJDZeBV8N1FlUe 3YCwIBczGQoosTmf1I7ZH9yp/TdY3Zg/+caSPjoa8ufybKlXpcKtrEovlZ2IvzWsmNSy n4amsJ1wO1nBGNPHfh9pAOm8T0siil6KGCo+ZRwtEYMcfZwT9SnXkMAkcyTZYE31pUf4 m9cw== X-Gm-Message-State: AOJu0YxZaMYiK+IYU4VcSO5N5qJvLAlYCd63QOP+3fsEX9a7Q/Yz4MLr 6bhZPqNUOrKOaQ6cs2XDgLkdIkm5ywDPfB28P/TfUB3NeYxGDCH4gHUNkg== X-Google-Smtp-Source: AGHT+IHlL43jPyecR/l4qL42eWkp3F5u2YHjYacIw2xjBuz4gbM6u82QBLd3RlKtf8RWT+oFZ74ujA== X-Received: by 2002:a05:6a20:3d89:b0:1be:c2df:3ecf with SMTP id adf61e73a8af0-1c0cc90bdcdmr13156243637.48.1720369136326; Sun, 07 Jul 2024 09:18:56 -0700 (PDT) Received: from [192.168.0.16] ([190.194.167.233]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2c99aa1a24fsm6583515a91.53.2024.07.07.09.18.55 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 07 Jul 2024 09:18:55 -0700 (PDT) Message-ID: Date: Sun, 7 Jul 2024 13:18:54 -0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird To: ffmpeg-devel@ffmpeg.org References: <20240703212648.48483-1-jamrial@gmail.com> Content-Language: en-US From: James Almer In-Reply-To: Subject: Re: [FFmpeg-devel] [PATCH 01/11] avformat/mov: add support for lhvC box parsing 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 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="us-ascii"; Format="flowed" Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: On 7/7/2024 12:43 PM, Andreas Rheinhardt wrote: > James Almer: >> Signed-off-by: James Almer >> --- >> libavformat/mov.c | 48 +++++++++++++++++++++++++++++++++++++++++++++++ >> 1 file changed, 48 insertions(+) >> >> diff --git a/libavformat/mov.c b/libavformat/mov.c >> index a3951a6942..30e8086855 100644 >> --- a/libavformat/mov.c >> +++ b/libavformat/mov.c >> @@ -8157,6 +8157,53 @@ static int mov_read_dvcc_dvvc(MOVContext *c, AVIOContext *pb, MOVAtom atom) >> return ff_isom_parse_dvcc_dvvc(c->fc, st, buf, read_size); >> } >> >> +static int mov_read_lhvc(MOVContext *c, AVIOContext *pb, MOVAtom atom) >> +{ >> + AVStream *st; >> + uint8_t *buf; >> + int ret, old_size, num_arrays; >> + >> + if (c->fc->nb_streams < 1) >> + return 0; >> + st = c->fc->streams[c->fc->nb_streams-1]; >> + >> + if (!st->codecpar->extradata_size) >> + // TODO: handle lhvC when present before hvcC >> + return 0; >> + >> + if (atom.size < 6 || st->codecpar->extradata_size < 23) >> + return AVERROR_INVALIDDATA; >> + >> + buf = av_malloc(atom.size + AV_INPUT_BUFFER_PADDING_SIZE); >> + if (!buf) >> + return AVERROR(ENOMEM); >> + memset(buf + atom.size, 0, AV_INPUT_BUFFER_PADDING_SIZE); >> + >> + ret = ffio_read_size(pb, buf, atom.size); >> + if (ret < 0) { >> + av_free(buf); >> + av_log(c->fc, AV_LOG_WARNING, "lhvC atom truncated\n"); >> + return 0; >> + } >> + >> + num_arrays = buf[5]; >> + old_size = st->codecpar->extradata_size; >> + atom.size -= 8 /* account for mov_realloc_extradata offseting */ >> + + 6 /* lhvC bytes before the arrays*/; >> + >> + ret = mov_realloc_extradata(st->codecpar, atom); >> + if (ret < 0) { >> + av_free(buf); >> + return ret; >> + } >> + >> + st->codecpar->extradata[22] += num_arrays; >> + memcpy(st->codecpar->extradata + old_size, buf + 6, atom.size + 8); >> + >> + av_free(buf); >> + return 0; >> +} >> + >> static int mov_read_kind(MOVContext *c, AVIOContext *pb, MOVAtom atom) >> { >> AVFormatContext *ctx = c->fc; >> @@ -8943,6 +8990,7 @@ static const MOVParseTableEntry mov_default_parse_table[] = { >> { MKTAG('i','p','r','p'), mov_read_iprp }, >> { MKTAG('i','i','n','f'), mov_read_iinf }, >> { MKTAG('a','m','v','e'), mov_read_amve }, /* ambient viewing environment box */ >> +{ MKTAG('l','h','v','C'), mov_read_lhvc }, >> #if CONFIG_IAMFDEC >> { MKTAG('i','a','c','b'), mov_read_iacb }, >> #endif > > Could this also explain what this box is supposed to be good for? It contains the global nuh_layer_id > 0 PS NALUs to handle L-HEVC (layered) streams. It's described in ISO 14496-15 section 9.4.3. _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".