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 ESMTPS id 67FA44E0FC for ; Sun, 27 Apr 2025 21:16:39 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id A1BC868B53E; Mon, 28 Apr 2025 00:16:30 +0300 (EEST) Received: from mail-pj1-f47.google.com (mail-pj1-f47.google.com [209.85.216.47]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C290A687CA5 for ; Mon, 28 Apr 2025 00:16:16 +0300 (EEST) Received: by mail-pj1-f47.google.com with SMTP id 98e67ed59e1d1-301c4850194so3302681a91.2 for ; Sun, 27 Apr 2025 14:16:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1745788574; x=1746393374; darn=ffmpeg.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=Yoih2fpcG41YioTG5BcdadzHxQE2WLHKLvLLSo12iac=; b=G0SluotulbSwR0rRBePQPMwmQvB/4lNLNbk9iYto57q8qFk4+k+MO2WhYWtalHhS4S pa6m7w5SvpxX55W0PdbwrGI+1iKiddNeBTFHuRFkCqRC2J1Mh5hwlq4TIb7Rt/KTC2W2 EPKRhEjKeE/UKiocXeRzuEImfo4mNqEj59cfqmdV0kH3bGT0kdWKSymDC6YhMQ5dCetd +Nah+/w3W9kxDd+r4u3SIhRJ3iB2c+i21j3YzsBeIMWKHkEJC9fDtjmQBdOmg2k3HpsH 3M5nyrqeNi+FBhw/IyF3zFuAgJh+hJNlHYYBZaG5/aSBx6qxG4ZjBcqPhn+dGEDAXiba vKNw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745788574; x=1746393374; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Yoih2fpcG41YioTG5BcdadzHxQE2WLHKLvLLSo12iac=; b=HmSlppy3OzIQyGxiBH+/U0pM5dBr6WYb7oayq4mtz1GCD/iAYvqliRVYqKA1Dp29k3 AKWrAx71UDsgj4WQYr0WFKH4zSYGO04Gn5GRB02cFyqeXciQIOOR61Ny/OK28kVOXfNW hG+Gy14VEEw5/uZbo0tLO4eR9Y57qKCiZ+GrZbK75/AkQlKjriVaq2xleehPFpsVLBfg 1c1pKhKbtkdPx2yP6+16E0Q1HZQfoq07GDyi+haEtZGvVdfb7EH7KZZY6dF7LPDewPIb HfU6BuqqUbiKQfsO+XZaHt4oMbZWojzeN5NxU4r5h/PpXcDii74Ai0vTArOz2VusQWlZ fk2A== X-Gm-Message-State: AOJu0Yyg6pEVx5pgxRFUUuxQlBSYxNEIVqp6tGdXK4vQOGhs5V16KXX/ cUgCs6x7sd6fQOUDFHtSSPZv3yc1tznqMj0MlVecQ91fmQIxoc1RVhaxqQ== X-Gm-Gg: ASbGncuuiR7Xn6W60SDYWjCUoI41jwHnjZ4Pe+w7uu3czoqXmu3TRItOAPwPxwVlIHp 9H5YDzWSsBu7S1nISP0zaVOA9WvB5DFM1eH7zF9FjvhbMT7hiS5Cr+AAIB1EJqMsObg5LH6v+Yd GVcXP9EfDLrmk7/nvy0DOxK53BAis6TjDsI8a8p6iOo7p085a+wQl1JWn46MVVCTZZkngOBh+qW SHzjdvOrXDM6p55BA8czZxK2Zlaf8OmWpY0WmCRXSyaT98SESu6HoiDLJo5UV6FfR+KZ6BFKxM0 cf3JFE419Fn0YGIEQpULB2a6tO1QfL2VPFwayuK4+wwliperGkUatmEXkwhexN5NpkPpxg== X-Google-Smtp-Source: AGHT+IFENm5TulBpuErpi3BgyOlRdaW0QqIyHyfcLhvxg7J5dB9B58U94+8X58/yjDchK/uGpYxjSw== X-Received: by 2002:a17:90b:4a43:b0:2ff:6fc3:79c4 with SMTP id 98e67ed59e1d1-30a013995camr10088414a91.27.1745788574240; Sun, 27 Apr 2025 14:16:14 -0700 (PDT) Received: from localhost.localdomain ([2800:2121:b000:82e:c1aa:b2fa:e6cb:56a1]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-309ef124699sm7426940a91.38.2025.04.27.14.16.12 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Apr 2025 14:16:13 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Sun, 27 Apr 2025 18:15:41 -0300 Message-ID: <20250427211541.10631-2-jamrial@gmail.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250427211541.10631-1-jamrial@gmail.com> References: <20250427211541.10631-1-jamrial@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 2/2] avformat/apvdec: don't fill container level fields with codec level info 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-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: This is a raw demuxer, it should not read codec level information and export it as container level information. The generic demux code will use the recently introduced parser to take care of that. Signed-off-by: James Almer --- configure | 1 + libavformat/apvdec.c | 46 ++++++-------------------------------------- 2 files changed, 7 insertions(+), 40 deletions(-) diff --git a/configure b/configure index ee270b770c..39e65870a3 100755 --- a/configure +++ b/configure @@ -3648,6 +3648,7 @@ act_demuxer_select="riffdec" adts_muxer_select="mpeg4audio" aiff_muxer_select="iso_media" amv_muxer_select="riffenc" +apv_demuxer_select="apv_parser" asf_demuxer_select="riffdec" asf_o_demuxer_select="riffdec" asf_muxer_select="riffenc" diff --git a/libavformat/apvdec.c b/libavformat/apvdec.c index e1ac34b003..4597199970 100644 --- a/libavformat/apvdec.c +++ b/libavformat/apvdec.c @@ -36,24 +36,13 @@ typedef struct APVHeaderInfo { int frame_width; int frame_height; - uint8_t chroma_format_idc; uint8_t bit_depth_minus8; - - enum AVPixelFormat pixel_format; } APVHeaderInfo; -static const enum AVPixelFormat apv_format_table[5][5] = { - { AV_PIX_FMT_GRAY8, AV_PIX_FMT_GRAY10, AV_PIX_FMT_GRAY12, AV_PIX_FMT_GRAY14, AV_PIX_FMT_GRAY16 }, - { 0 }, // 4:2:0 is not valid. - { AV_PIX_FMT_YUV422P, AV_PIX_FMT_YUV422P10, AV_PIX_FMT_YUV422P12, AV_PIX_FMT_GRAY14, AV_PIX_FMT_YUV422P16 }, - { AV_PIX_FMT_YUV444P, AV_PIX_FMT_YUV444P10, AV_PIX_FMT_YUV444P12, AV_PIX_FMT_GRAY14, AV_PIX_FMT_YUV444P16 }, - { AV_PIX_FMT_YUVA444P, AV_PIX_FMT_YUVA444P10, AV_PIX_FMT_YUVA444P12, AV_PIX_FMT_GRAY14, AV_PIX_FMT_YUVA444P16 }, -}; - -static int apv_extract_header_info(APVHeaderInfo *info, - GetByteContext *gbc) +static int apv_extract_header_info(GetByteContext *gbc) { - int zero, byte, bit_depth_index; + APVHeaderInfo header, *info = &header; + int zero, byte; info->pbu_type = bytestream2_get_byte(gbc); info->group_id = bytestream2_get_be16(gbc); @@ -81,7 +70,6 @@ static int apv_extract_header_info(APVHeaderInfo *info, return AVERROR_INVALIDDATA; byte = bytestream2_get_byte(gbc); - info->chroma_format_idc = byte >> 4; info->bit_depth_minus8 = byte & 0xf; if (info->bit_depth_minus8 > 8) { @@ -91,18 +79,6 @@ static int apv_extract_header_info(APVHeaderInfo *info, // Odd bit depths are technically valid but not useful here. return AVERROR_INVALIDDATA; } - bit_depth_index = info->bit_depth_minus8 / 2; - - switch (info->chroma_format_idc) { - case APV_CHROMA_FORMAT_400: - case APV_CHROMA_FORMAT_422: - case APV_CHROMA_FORMAT_444: - case APV_CHROMA_FORMAT_4444: - info->pixel_format = apv_format_table[info->chroma_format_idc][bit_depth_index]; - break; - default: - return AVERROR_INVALIDDATA; - } // Ignore capture_time_distance. bytestream2_skip(gbc, 1); @@ -117,7 +93,6 @@ static int apv_extract_header_info(APVHeaderInfo *info, static int apv_probe(const AVProbeData *p) { GetByteContext gbc; - APVHeaderInfo header; uint32_t au_size, signature, pbu_size; int err; @@ -144,7 +119,7 @@ static int apv_probe(const AVProbeData *p) return 0; } - err = apv_extract_header_info(&header, &gbc); + err = apv_extract_header_info(&gbc); if (err < 0) { // Header does not look like APV. return 0; @@ -156,8 +131,7 @@ static int apv_read_header(AVFormatContext *s) { AVStream *st; GetByteContext gbc; - APVHeaderInfo header; - uint8_t buffer[28]; + uint8_t buffer[12]; uint32_t au_size, signature, pbu_size; int err, size; @@ -186,22 +160,14 @@ static int apv_read_header(AVFormatContext *s) return AVERROR_INVALIDDATA; } - err = apv_extract_header_info(&header, &gbc); - if (err < 0) - return err; - st = avformat_new_stream(s, NULL); if (!st) return AVERROR(ENOMEM); st->codecpar->codec_type = AVMEDIA_TYPE_VIDEO; st->codecpar->codec_id = AV_CODEC_ID_APV; - st->codecpar->format = header.pixel_format; - st->codecpar->profile = header.profile_idc; - st->codecpar->level = header.level_idc; - st->codecpar->width = header.frame_width; - st->codecpar->height = header.frame_height; + ffstream(st)->need_parsing = AVSTREAM_PARSE_HEADERS; st->avg_frame_rate = (AVRational){ 30, 1 }; avpriv_set_pts_info(st, 64, 1, 30); -- 2.49.0 _______________________________________________ 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".