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 AC20E46643 for ; Mon, 29 May 2023 13:07:23 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 34B1768C1FD; Mon, 29 May 2023 16:07:21 +0300 (EEST) Received: from mail-ot1-f42.google.com (mail-ot1-f42.google.com [209.85.210.42]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 1AC8968C1E6 for ; Mon, 29 May 2023 16:07:15 +0300 (EEST) Received: by mail-ot1-f42.google.com with SMTP id 46e09a7af769-6af74ca9f4aso3233912a34.3 for ; Mon, 29 May 2023 06:07:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1685365633; x=1687957633; h=content-transfer-encoding:in-reply-to:from:references:to :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=xCSbgE6wO1DUbCRXQtBI6MabquI4JWRn4FlnCHVW4eg=; b=Suexrt2nQNsCjSeJQzUb3dh+n7zO/6x/Yq8YdtIS2Js1LLV9+SJ2diivIiWXpkd2+r 4EsvxDnajYwbhk3Y2bWM57WSOePtewA5/jl9HTf0C0Lx6k5AwBCwdf5h2Zt/+9QyX7LK IT3iYmBghs2SQt8a3qFL2EXmCE4cq3vq8+aDigY/UDNvs7MAy0Mpvy6ZJz8TnPY5dWQ7 tRmHAUQHLYRybIbOMslUWKjzl65u9fllWWGfGSqor2eNrNz0Ozc4CPlig2GzcGV3kBix 7XzFyawPBtPbiErjcHw6cFp/FgnJWvPMxSDMYwJ/459JgSM2BomM0Qz5qATug5K+VSVz vBhQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1685365633; x=1687957633; h=content-transfer-encoding:in-reply-to:from:references:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=xCSbgE6wO1DUbCRXQtBI6MabquI4JWRn4FlnCHVW4eg=; b=Z/zG+uyRxkNsosemKIOB/lX+uMvLOGokQS8t/+Ki1qMCYsEFiFdIGbmFDgSePBqfrT zLQdSovybV18/mxtNXB0ktTlkQgxyiqUcsbzpj5L6VxAQa1NrIc74+I+iCBiepVv4J8t gr/t4/oFhpgshXkLd/DELOIs+jYLhkZ8EDpxzinrTc3LwBZMyNn/izniAL1G/lMuMERp tdnUFCm1KhMKu3+5w7dK35mUBk4Hne4auXnjyejYsjFkDWyt5TCatGcJlzT6EWG6JgZi +5c28t9wf1lJJwIF51EbLxxcl27qGelrGKheCZvoYC7QxMQbRa6sHhvl9nTEot6MiKyI kpeg== X-Gm-Message-State: AC+VfDxOI9fEZ1IYwoNv+usOBmfVQDDq2eh3jzY/4rNRLQ5SgNRK/fmb 1+l9QOBsbhrNeRKcff/XifNAacwoGPg= X-Google-Smtp-Source: ACHHUZ6v10xFzzfSCQIJpxDxP2g3lPIwPaFr1NFfHudpWepEOtM8c/P27qiUpDMdn5yNB28W2sYiZA== X-Received: by 2002:a9d:6199:0:b0:6a6:f06:48eb with SMTP id g25-20020a9d6199000000b006a60f0648ebmr5463213otk.30.1685365632833; Mon, 29 May 2023 06:07:12 -0700 (PDT) Received: from [192.168.0.12] (host197.190-225-105.telecom.net.ar. [190.225.105.197]) by smtp.gmail.com with ESMTPSA id k19-20020a056830169300b006af8399084bsm4442191otr.72.2023.05.29.06.07.11 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 29 May 2023 06:07:12 -0700 (PDT) Message-ID: <60cedee7-fe0e-8764-42d5-241875adaab5@gmail.com> Date: Mon, 29 May 2023 10:07:47 -0300 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.11.1 Content-Language: en-US To: ffmpeg-devel@ffmpeg.org References: <20230526103145.1277-1-d.kozinski@samsung.com> From: James Almer In-Reply-To: <20230526103145.1277-1-d.kozinski@samsung.com> Subject: Re: [FFmpeg-devel] [PATCH v23 04/10] avformat/evc_demuxer: Added demuxer to handle reading EVC video files 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 5/26/2023 7:31 AM, Dawid Kozinski wrote: > +static int get_temporal_id(const uint8_t *bits, int bits_size) > +{ > + int temporal_id = 0; > + short t = 0; > + > + if (bits_size >= EVC_NALU_HEADER_SIZE) { > + unsigned char *p = (unsigned char *)bits; > + // forbidden_zero_bit > + if ((p[0] & 0x80) != 0) > + return -1; > + > + for (int i = 0; i < EVC_NALU_HEADER_SIZE; i++) > + t = (t << 8) | p[i]; I think this can be replaced with AV_RB16. > + > + temporal_id = (t >> 6) & 0x0007; > + } > + > + return temporal_id; > +} [...] > +static uint32_t read_nal_unit_length(const uint8_t *bits, int bits_size) > +{ > + uint32_t nalu_len = 0; > + > + if (bits_size >= EVC_NALU_LENGTH_PREFIX_SIZE) { > + > + int t = 0; > + unsigned char *p = (unsigned char *)bits; > + > + for (int i = 0; i < EVC_NALU_LENGTH_PREFIX_SIZE; i++) > + t = (t << 8) | p[i]; AV_RB32. > + > + nalu_len = t; > + if (nalu_len == 0) // Invalid bitstream size > + return 0; > + } > + > + return nalu_len; > +} [...] > +static int evc_frame_merge_filter(AVBSFContext *bsf, AVPacket *out) > +{ > + EVCMergeContext *ctx = bsf->priv_data; > + AVPacket *in = ctx->in; > + > + int free_space = 0; > + size_t nalu_size = 0; > + uint8_t *nalu = NULL; > + int au_end_found = 0; > + int err; > + > + err = ff_bsf_get_packet_ref(bsf, in); > + if (err < 0) > + return err; > + > + nalu_size = read_nal_unit_length(in->data, EVC_NALU_LENGTH_PREFIX_SIZE); > + if(nalu_size <= 0) { > + av_packet_unref(in); > + return AVERROR_INVALIDDATA; > + } > + > + nalu = in->data + EVC_NALU_LENGTH_PREFIX_SIZE; > + nalu_size = in->size - EVC_NALU_LENGTH_PREFIX_SIZE; > + > + // NAL unit parsing needed to determine if end of AU was found > + err = parse_nal_unit(nalu, nalu_size, bsf); > + if (err < 0) { > + av_log(bsf, AV_LOG_ERROR, "NAL Unit parsing error\n"); > + av_packet_unref(in); > + > + return err; > + } > + > + au_end_found = end_of_access_unit_found(bsf); > + > + free_space = ctx->au_buffer.capacity - ctx->au_buffer.data_size; > + while( free_space < in->size ) { > + ctx->au_buffer.capacity *= 2; > + free_space = ctx->au_buffer.capacity - ctx->au_buffer.data_size; > + > + if(free_space >= in->size) { > + ctx->au_buffer.data = av_realloc(ctx->au_buffer.data, ctx->au_buffer.capacity); > + } > + } > + > + memcpy(ctx->au_buffer.data + ctx->au_buffer.data_size, in->data, in->size); This is including the Annex-B's nal_unit_lenght value into the assembled packet. I assume libxevd expects this? Also, is it defined as part of the ISOBMFF encapsulation? Patch 07/10 does not seem to strip it. _______________________________________________ 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".