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 E92D245AF2 for ; Sun, 16 Apr 2023 22:16:42 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id B9E2268BDF8; Mon, 17 Apr 2023 01:16:39 +0300 (EEST) Received: from mail-oa1-f41.google.com (mail-oa1-f41.google.com [209.85.160.41]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 1D07F6802C4 for ; Mon, 17 Apr 2023 01:16:33 +0300 (EEST) Received: by mail-oa1-f41.google.com with SMTP id 586e51a60fabf-187bee46f9dso6977026fac.11 for ; Sun, 16 Apr 2023 15:16:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1681683391; x=1684275391; 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=xNTgNhXCMCQX79qdVOQ343EcmrpTbY9fxAGponV8XHE=; b=HvuogxHckCho9/V6PX588bRKJoRsPTwhJ9G0c9yCXtOmDI1ij1mgIUN/3C6fC9tmDP jSBpEpY+nX9+2E7hE/9mGAL/V/y6H9ohHmeMWCeWyIpgplW/r4GFETJdIzcqE7+Ypvle DuYqEAsJGwiRDVHfZJNZAFSOJLeLpberEENrj/GWTUB8SuJTG5tyc18mi3/1jKB41suB SF4M0Y4bcPHwYMlkqJ5RtmwCPHhj3U03kEUBlRAXRxiyuNQ4OF9Qy5lFygmwwcKsBoMq lqguR+CwDgKVIZ8dbKSpY4+SibVrxBVaJUyGcD9SkOumyVPprOapEn4hwtKsnihLusfy InVA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1681683391; x=1684275391; 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=xNTgNhXCMCQX79qdVOQ343EcmrpTbY9fxAGponV8XHE=; b=B2BaWia11iP9DFPZc7PefNuIvheKVLgGK1PVFV/YXZJU5iAEWujJ9S9xPiHVFuFs9p S+FXkbcbGelcc+V455GBCcvWtsMvjgq03ApxUj3Xsb3spIf2miZFVgmjCWfPc99b4+Xv +l7nvAAuFwAOzfNKQux5gw9msqnFWxqO7uf42Gh8AJM95um73okp2q79skYCwNcsXu0a Z1ehdVRkpJXZmqDcr9X1ymrl64jLR/sHe1HJGxTMBACGMg90WLFl5X55akHOTcCqYePk 7f8B3ZmWRaDT+S5liMqhWnw/qsDGNMG5lFyI13IQTi7JntnepA1Cpvo3WuEicu0avIps WXNw== X-Gm-Message-State: AAQBX9cGwlstRYUZwpOXOxaS1uHpbhq+sQeHscbZ/W1YChM/KF4YFGgc wsttGjYDOsip5YD9WaYqmA8h8F4AkOw= X-Google-Smtp-Source: AKy350a/P6cLGLorwTnuvi87MihSTRzkTC47EHCSGQWHL9HigaGmNWoLV7gZy1IdhRAHXneZsPcahw== X-Received: by 2002:a05:6870:d152:b0:187:d86e:6e07 with SMTP id f18-20020a056870d15200b00187d86e6e07mr2410566oac.42.1681683390972; Sun, 16 Apr 2023 15:16:30 -0700 (PDT) Received: from [192.168.0.15] (host197.190-225-105.telecom.net.ar. [190.225.105.197]) by smtp.gmail.com with ESMTPSA id bf48-20020a0568700a3000b00187e500e7b3sm620281oac.49.2023.04.16.15.16.29 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 16 Apr 2023 15:16:30 -0700 (PDT) Message-ID: <8fba3b03-e9ef-cd89-ed7e-a43639a2b945@gmail.com> Date: Sun, 16 Apr 2023 19:16:33 -0300 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.10.0 To: ffmpeg-devel@ffmpeg.org References: <20230405070109.1665-1-d.kozinski@samsung.com> Content-Language: en-US From: James Almer In-Reply-To: <20230405070109.1665-1-d.kozinski@samsung.com> Subject: Re: [FFmpeg-devel] [PATCH v19 02/10] avcodec/evc_parser: Added parser implementation for EVC format 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 4/5/2023 4:01 AM, Dawid Kozinski wrote: > +static int parse_nal_unit(AVCodecParserContext *s, const uint8_t *buf, > + int buf_size, AVCodecContext *avctx) > +{ > + EVCParserContext *ev = s->priv_data; > + int nalu_type, nalu_size; > + int tid; > + const uint8_t *data = buf; > + int data_size = buf_size; > + > + s->picture_structure = AV_PICTURE_STRUCTURE_FRAME; > + s->key_frame = -1; > + > + nalu_size = buf_size; > + if (nalu_size <= 0) { > + av_log(avctx, AV_LOG_ERROR, "Invalid NAL unit size: (%d)\n", nalu_size); > + return AVERROR_INVALIDDATA; > + } > + > + // @see ISO_IEC_23094-1_2020, 7.4.2.2 NAL unit header semantic (Table 4 - NAL unit type codes and NAL unit type classes) > + // @see enum EVCNALUnitType in evc.h > + nalu_type = get_nalu_type(data, data_size, avctx); > + if (nalu_type < EVC_NOIDR_NUT || nalu_type > EVC_UNSPEC_NUT62) { > + av_log(avctx, AV_LOG_ERROR, "Invalid NAL unit type: (%d)\n", nalu_type); > + return AVERROR_INVALIDDATA; > + } > + ev->nalu_type = nalu_type; > + > + tid = get_temporal_id(data, data_size, avctx); > + if (tid < 0) { > + av_log(avctx, AV_LOG_ERROR, "Invalid temporial id: (%d)\n", tid); > + return AVERROR_INVALIDDATA; > + } > + ev->nuh_temporal_id = tid; > + > + if (data_size < nalu_size) { > + av_log(avctx, AV_LOG_ERROR, "NAL unit does not fit in the data buffer\n"); > + return AVERROR_INVALIDDATA; > + } > + > + data += EVC_NALU_HEADER_SIZE; > + data_size -= EVC_NALU_HEADER_SIZE; > + > + switch(nalu_type) { > + case EVC_SPS_NUT: { > + EVCParserSPS *sps; > + int SubGopLength; > + > + sps = parse_sps(data, nalu_size, ev); > + if (!sps) { > + av_log(avctx, AV_LOG_ERROR, "SPS parsing error\n"); > + return AVERROR_INVALIDDATA; > + } > + > + s->coded_width = sps->pic_width_in_luma_samples; > + s->coded_height = sps->pic_height_in_luma_samples; > + s->width = sps->pic_width_in_luma_samples - sps->picture_crop_left_offset - sps->picture_crop_right_offset; > + s->height = sps->pic_height_in_luma_samples - sps->picture_crop_top_offset - sps->picture_crop_bottom_offset; > + > + SubGopLength = (int)pow(2.0, sps->log2_sub_gop_length); > + avctx->gop_size = SubGopLength; > + > + avctx->delay = (sps->sps_max_dec_pic_buffering_minus1) ? sps->sps_max_dec_pic_buffering_minus1 - 1 : SubGopLength + sps->max_num_tid0_ref_pics - 1; > + > + if (sps->profile_idc == 1) avctx->profile = FF_PROFILE_EVC_MAIN; > + else avctx->profile = FF_PROFILE_EVC_BASELINE; > + > + if (sps->vui_parameters_present_flag) { > + if (sps->vui_parameters.timing_info_present_flag) { > + int64_t num = sps->vui_parameters.num_units_in_tick; > + int64_t den = sps->vui_parameters.time_scale; > + if (num != 0 && den != 0) > + av_reduce(&avctx->framerate.den, &avctx->framerate.num, num, den, 1 << 30); > + } > + } > + > + switch (sps->chroma_format_idc) { > + case 0: /* YCBCR400_10LE */ > + av_log(avctx, AV_LOG_ERROR, "YCBCR400_10LE: Not supported chroma format\n"); > + s->format = AV_PIX_FMT_GRAY10LE; > + return -1; This is a parser, and it's independent from any given decoder implementation. You should set it to all supported values and not abort on any. > + case 1: /* YCBCR420_10LE */ > + s->format = AV_PIX_FMT_YUV420P10LE; > + break; > + case 2: /* YCBCR422_10LE */ > + av_log(avctx, AV_LOG_ERROR, "YCBCR422_10LE: Not supported chroma format\n"); > + s->format = AV_PIX_FMT_YUV422P10LE; > + return -1; > + case 3: /* YCBCR444_10LE */ > + av_log(avctx, AV_LOG_ERROR, "YCBCR444_10LE: Not supported chroma format\n"); > + s->format = AV_PIX_FMT_YUV444P10LE; > + return -1; > + default: > + s->format = AV_PIX_FMT_NONE; > + av_log(avctx, AV_LOG_ERROR, "Unknown supported chroma format\n"); > + return -1; > + } > + break; > + } _______________________________________________ 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".