From patchwork Sun Jul 18 18:07:43 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Pierre-Anthony Lemieux X-Patchwork-Id: 28968 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a5d:965a:0:0:0:0:0 with SMTP id d26csp3721591ios; Sun, 18 Jul 2021 11:08:23 -0700 (PDT) X-Google-Smtp-Source: ABdhPJziUkXHRrUQo4c6z1BQigHFgOtjQd4xYfQqAjtaM7y+xVYfV/po5hESYnLupHcx5fSyB+7P X-Received: by 2002:a17:906:46db:: with SMTP id k27mr23623590ejs.391.1626631703651; Sun, 18 Jul 2021 11:08:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1626631703; cv=none; d=google.com; s=arc-20160816; b=EtQJKXegqM/L6KIhD4EHQeHUBeJLDNT+M0m8pGbLvKFeZlWotEYX+4gjVbIasfKKw9 ooNIjCmzpKJ6ICllavYw1gDKVjMXt5xHQVuj7Rh+5uGN5BoO18w5iPmTjsIE47NfJVwD W4RDuqzUBcFKQtazQ3L8b/dB9TxLnIpugHH7Re3pVvjOpdIZ1DS3ws0qJyZlibsPQktm LC3xM8qrwyZ2DSnoJLmUd108wBRn+gGJvjHB3ORRKqarqVMH53H0qqNHvPMsIHreqN0E y3Fx4qA39vAJ2/ISfeyFg3Lv82kGmVKwdY1odRkRz2CD4QxuxrH3A/7ZeVeFrKrwNL6R Fohw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:message-id:date:to:from :delivered-to; bh=chb3R2FebPXHsmM+ZhN1ZlMfDhDL3w86VtTz7rh7WOU=; b=bCOLx9vPU17ZhfSRbl1Zusa1tCmzeoTwDir+QqecQzGOTgrN1oJo4sgySFw2FNk1GD U18Q9Ikwx3CdTfB6EeMndeneQOHPw1NgWc7Qe0MjfNCDDg+hNVC6vMqmYEsyzp30LAIi yEHY043+RefbOeDD0OYRyzL/2W0Nm1MHLXYu0ooJrfq/Ae8wQiZXjHAce8ya0dl/XV0p bsaBXN2Z/zjDUFlK00psSju3TZkAC00Ma/WOCAN70hwyEYgfKfZBpd9KpfbeNdbLL/M4 v2s9pGkrATx9Sv+3yxPAMmua+voReuKXFDinOk0cPpmnoTTmZ1ojXqAzPDvPha9T45e2 1W+w== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id e12si19216765ejj.48.2021.07.18.11.08.23; Sun, 18 Jul 2021 11:08:23 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 7B93268AA16; Sun, 18 Jul 2021 21:08:20 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pg1-f174.google.com (mail-pg1-f174.google.com [209.85.215.174]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6EF4668A2DC for ; Sun, 18 Jul 2021 21:08:14 +0300 (EEST) Received: by mail-pg1-f174.google.com with SMTP id w15so16390358pgk.13 for ; Sun, 18 Jul 2021 11:08:14 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=/rW7uy8s45G3X99+zR4wuhyNQva3DOtzerd8mWKW+cM=; b=MqbxvXFIGLxrZN6ojt/8nervCWo2InCI6e0CLL/rLSM297HHsGSpVRMOwR9XJ2nYst OyktwAyy4C3UrT1lm22oxcHw/LTgBCnup+zRe1UEQTbG0/Eicph3yQxlrhwB6+hSDi9F noetmUoQtcptTGssfLSFcEYYgvrFEceoMDBOiTbSlGW9kr59Qi1pnRYPLk274Y8fHj4r jfl3lDFcKZxV3SDrqKFaX7WEVu9AbRKj8hdo8K78eVkr0IBvdkwHACZWJP0jULMN+aGn 6uglVJJHsfgNxVIejTttiys+CPnKD9htSTZCKqfU8VuVJVAN0wW4aQpUSIRSzWU3FOFL cr8Q== X-Gm-Message-State: AOAM5337uTVciDYbWMIwHjSwecnHL4Ke/SuW0QV6JyQHXFutf+NZtrRu NS9ngNfP0/wPeNUjDBlhyL98HMiCviE= X-Received: by 2002:aa7:854a:0:b029:332:330e:1387 with SMTP id y10-20020aa7854a0000b0290332330e1387mr21377587pfn.67.1626631692583; Sun, 18 Jul 2021 11:08:12 -0700 (PDT) Received: from localhost (76-14-89-2.sf-cable.astound.net. [76.14.89.2]) by smtp.gmail.com with ESMTPSA id l65sm7060844pgl.32.2021.07.18.11.08.10 (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 18 Jul 2021 11:08:12 -0700 (PDT) Received: by localhost (sSMTP sendmail emulation); Sun, 18 Jul 2021 11:08:06 -0700 From: pal@sandflow.com To: ffmpeg-devel@ffmpeg.org Date: Sun, 18 Jul 2021 11:07:43 -0700 Message-Id: <20210718180742.2718-1-pal@sandflow.com> X-Mailer: git-send-email 2.32.0.windows.2 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH V2] avformat/mxf: fixed frame wrapping detection for J2K essence container 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 Cc: Pierre-Anthony Lemieux Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: P3/IXj5Vj2uo From: Pierre-Anthony Lemieux Signed-off-by: Pierre-Anthony Lemieux --- Notes: For JPEG 2000 essence, the MXF input format module currently uses the value of byte 14 of the essence container UL to determine whether the J2K essence is clip- (byte 14 is 0x02) or frame-wrapped (byte 14 is 0x01). This approach does not work when byte 14 is larger than 0x02, e.g. when the essence container is MXFGCP1FrameWrappedPicture, in which case the essence is always frame-wrapped. libavformat/mxf.h | 3 ++- libavformat/mxfdec.c | 6 +++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/libavformat/mxf.h b/libavformat/mxf.h index b1b1fedac7..b9fe7fe7ef 100644 --- a/libavformat/mxf.h +++ b/libavformat/mxf.h @@ -75,7 +75,8 @@ typedef enum { NormalWrap = 0, D10D11Wrap, RawAWrap, - RawVWrap + RawVWrap, + J2KWrap } MXFWrappingIndicatorType; typedef struct MXFLocalTagPair { diff --git a/libavformat/mxfdec.c b/libavformat/mxfdec.c index f813408b3d..88ff8001ff 100644 --- a/libavformat/mxfdec.c +++ b/libavformat/mxfdec.c @@ -1411,7 +1411,7 @@ static void *mxf_resolve_strong_ref(MXFContext *mxf, UID *strong_ref, enum MXFMe static const MXFCodecUL mxf_picture_essence_container_uls[] = { // video essence container uls - { { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x07,0x0d,0x01,0x03,0x01,0x02,0x0c,0x01,0x00 }, 14, AV_CODEC_ID_JPEG2000, NULL, 14 }, + { { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x07,0x0d,0x01,0x03,0x01,0x02,0x0c,0x01,0x00 }, 14, AV_CODEC_ID_JPEG2000, NULL, 14, J2KWrap }, { { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x02,0x0d,0x01,0x03,0x01,0x02,0x10,0x60,0x01 }, 14, AV_CODEC_ID_H264, NULL, 15 }, /* H.264 */ { { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x02,0x0d,0x01,0x03,0x01,0x02,0x11,0x01,0x00 }, 14, AV_CODEC_ID_DNXHD, NULL, 14 }, /* VC-3 */ { { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x02,0x0d,0x01,0x03,0x01,0x02,0x12,0x01,0x00 }, 14, AV_CODEC_ID_VC1, NULL, 14 }, /* VC-1 */ @@ -1495,6 +1495,10 @@ static MXFWrappingScheme mxf_get_wrapping_kind(UID *essence_container_ul) if (val == 0x02) val = 0x01; break; + case J2KWrap: + if (val != 0x02) + val = 0x01; + break; } if (val == 0x01) return FrameWrapped;