From patchwork Sat Feb 20 16:37:18 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paul B Mahol X-Patchwork-Id: 25842 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id EE7D144B169 for ; Sat, 20 Feb 2021 18:37:37 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id C434468A46B; Sat, 20 Feb 2021 18:37:37 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ej1-f49.google.com (mail-ej1-f49.google.com [209.85.218.49]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id DA070687F71 for ; Sat, 20 Feb 2021 18:37:30 +0200 (EET) Received: by mail-ej1-f49.google.com with SMTP id w1so21606958ejf.11 for ; Sat, 20 Feb 2021 08:37:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id; bh=GILu03tCfa0i9xGlqAz6EpOLQqbHnYgnQWgLRX9FAb4=; b=deJ9htlJJEvYOmNFchi8wca4DrAeLqRgevPzfITiePLNtOklZTf+IgiZCIaqqjKbCS AavUyQlaX2bW98efIVwoC1i+tgVxWKsR8ErseCrNX3YzyA2s3PF7imh2MQYwIcFprbtC nQOv5N3HblCcRb/aA6t23LiLQMeO4r1dCmBiR8dZdGizylt3nISUUL9pNLJXnXMYtSSX WCnxs0Zyb2s9b4TXLISWKwTOWxBRVzXhBgzs8OhRJ5utWEh8zJNJ6Vgz6qLL1jQDOlI0 eveFh90VFzHU6VtQzjnV6FijprcMDaO0tKDgvYPUTZTo7xpuHBx2Qbdpv3dBIz6LN1YY //Qw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id; bh=GILu03tCfa0i9xGlqAz6EpOLQqbHnYgnQWgLRX9FAb4=; b=ZSx/+AXwmegv6uH+ohTslZtsY9KkfKfSOqCP2LPmNo0qCm44owaXJ3ChP+gFdm1iGx vGmcW+jyVOki+Erk5Mg7xUZFwjFpxLTiwGOAxldsemUWAu++VKuECUQZf6x0fnfZKDUA RlB8hvyqpdDck8NacD8o2jk4LNLEvxbq/vx8UV2PSPxUulnySzjjO0jNMGo+kbPzl7ME ZkPMfDMkYGYAOVcXA8dCz41mKf4znTpUxhoLx3+2ElT3fRXfPJ2N6/BUd8St5Svg/zaN xX4Vab51xfQ7qHgWMgfsqlwnBY6dW4kCbv11it4GQTkT54VUTHcsY/3Ei4CDp5I5KRU5 e8RA== X-Gm-Message-State: AOAM530LiZswdvxoPGs/r6b/TX6RxZp4S93sJrfnTfGlOKLuZNTDRhlm t2yD5gkAsbF+fSUWC5//KDQxnBQRofusbg== X-Google-Smtp-Source: ABdhPJwb0dZtA436kpH7oh7i9iDu0IwArtnDXQQNfNdLBA3KAXwR4a1+V5OlAoP7FZaoZSwAgJeV6Q== X-Received: by 2002:a17:906:2e91:: with SMTP id o17mr10737177eji.488.1613839050356; Sat, 20 Feb 2021 08:37:30 -0800 (PST) Received: from localhost.localdomain ([94.250.162.225]) by smtp.gmail.com with ESMTPSA id y8sm7325300edd.97.2021.02.20.08.37.29 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 20 Feb 2021 08:37:29 -0800 (PST) From: Paul B Mahol To: ffmpeg-devel@ffmpeg.org Date: Sat, 20 Feb 2021 17:37:18 +0100 Message-Id: <20210220163719.20482-1-onemda@gmail.com> X-Mailer: git-send-email 2.17.1 Subject: [FFmpeg-devel] [PATCH 1/2] avcodec/dpxenc: write framerate to header X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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 MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Signed-off-by: Paul B Mahol --- libavcodec/dpxenc.c | 21 ++++++++++++++++++--- tests/ref/lavf/gbrp10le.dpx | 4 ++-- tests/ref/lavf/gbrp12le.dpx | 4 ++-- tests/ref/lavf/rgb48le.dpx | 4 ++-- tests/ref/lavf/rgb48le_10.dpx | 4 ++-- tests/ref/lavf/rgba64le.dpx | 4 ++-- 6 files changed, 28 insertions(+), 13 deletions(-) diff --git a/libavcodec/dpxenc.c b/libavcodec/dpxenc.c index a5960334d5..b296f9f22e 100644 --- a/libavcodec/dpxenc.c +++ b/libavcodec/dpxenc.c @@ -173,14 +173,25 @@ static void encode_gbrp12(AVCodecContext *avctx, const AVFrame *pic, uint16_t *d } } +#define FILE_HEADER_SIZE 768 +#define IMAGE_HEADER_SIZE 640 +#define ORIENTATION_HEADER_SIZE 256 +#define FILM_INFO_HEADER_SIZE 256 +#define TV_INFO_HEADER_SIZE 128 +#define HEADER_SIZE (FILE_HEADER_SIZE + \ + IMAGE_HEADER_SIZE + \ + ORIENTATION_HEADER_SIZE + \ + FILM_INFO_HEADER_SIZE + \ + TV_INFO_HEADER_SIZE) + static int encode_frame(AVCodecContext *avctx, AVPacket *pkt, const AVFrame *frame, int *got_packet) { DPXContext *s = avctx->priv_data; - int size, ret, need_align, len; + int ret, need_align, len; + int64_t size; uint8_t *buf; -#define HEADER_SIZE 1664 /* DPX Generic header */ if (s->bits_per_component == 10) size = avctx->height * avctx->width * 4; else if (s->bits_per_component == 12) { @@ -196,7 +207,7 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt, need_align = size - len; size *= avctx->height; } - if ((ret = ff_alloc_packet2(avctx, pkt, size + HEADER_SIZE, 0)) < 0) + if ((ret = ff_alloc_packet2(avctx, pkt, HEADER_SIZE + size, 0)) < 0) return ret; buf = pkt->data; @@ -229,6 +240,10 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt, write32(buf + 1628, avctx->sample_aspect_ratio.num); write32(buf + 1632, avctx->sample_aspect_ratio.den); + /* Film information header */ + if (avctx->framerate.num && avctx->framerate.den) + write32(buf + 1724, av_float2int(av_q2d(avctx->framerate))); + switch(s->bits_per_component) { case 8: case 16: diff --git a/tests/ref/lavf/gbrp10le.dpx b/tests/ref/lavf/gbrp10le.dpx index b33da34e20..7c03dc0779 100644 --- a/tests/ref/lavf/gbrp10le.dpx +++ b/tests/ref/lavf/gbrp10le.dpx @@ -1,3 +1,3 @@ -7ca935d5d5e00c54acbc85565d3039b6 *tests/data/images/gbrp10le.dpx/02.gbrp10le.dpx +c7c8ecd9d8c8a2c4dce6d92bfb9877d7 *tests/data/images/gbrp10le.dpx/02.gbrp10le.dpx tests/data/images/gbrp10le.dpx/%02d.gbrp10le.dpx CRC=0xe6663fba -407168 tests/data/images/gbrp10le.dpx/02.gbrp10le.dpx +407552 tests/data/images/gbrp10le.dpx/02.gbrp10le.dpx diff --git a/tests/ref/lavf/gbrp12le.dpx b/tests/ref/lavf/gbrp12le.dpx index e2e794ecc6..5ca855b004 100644 --- a/tests/ref/lavf/gbrp12le.dpx +++ b/tests/ref/lavf/gbrp12le.dpx @@ -1,3 +1,3 @@ -a4cfea1797c928f2eff73573e559675d *tests/data/images/gbrp12le.dpx/02.gbrp12le.dpx +79dcf3b32ed8e627a68bba19bf625ca5 *tests/data/images/gbrp12le.dpx/02.gbrp12le.dpx tests/data/images/gbrp12le.dpx/%02d.gbrp12le.dpx CRC=0x1c755633 -609920 tests/data/images/gbrp12le.dpx/02.gbrp12le.dpx +610304 tests/data/images/gbrp12le.dpx/02.gbrp12le.dpx diff --git a/tests/ref/lavf/rgb48le.dpx b/tests/ref/lavf/rgb48le.dpx index 073153898a..33817d95a9 100644 --- a/tests/ref/lavf/rgb48le.dpx +++ b/tests/ref/lavf/rgb48le.dpx @@ -1,3 +1,3 @@ -075963c3c08978b6a20555ba09161434 *tests/data/images/rgb48le.dpx/02.rgb48le.dpx +51c703863c9df1db5ef78a77dd5fbd0f *tests/data/images/rgb48le.dpx/02.rgb48le.dpx tests/data/images/rgb48le.dpx/%02d.rgb48le.dpx CRC=0xe5b9c023 -609920 tests/data/images/rgb48le.dpx/02.rgb48le.dpx +610304 tests/data/images/rgb48le.dpx/02.rgb48le.dpx diff --git a/tests/ref/lavf/rgb48le_10.dpx b/tests/ref/lavf/rgb48le_10.dpx index ce36e5079f..3c934168b7 100644 --- a/tests/ref/lavf/rgb48le_10.dpx +++ b/tests/ref/lavf/rgb48le_10.dpx @@ -1,3 +1,3 @@ -b9f22728f8ff393bf30cf6cbd624fa95 *tests/data/images/rgb48le_10.dpx/02.rgb48le_10.dpx +a0ca7132c33a5c0eb25dd4a2b6117743 *tests/data/images/rgb48le_10.dpx/02.rgb48le_10.dpx tests/data/images/rgb48le_10.dpx/%02d.rgb48le_10.dpx CRC=0xf38d5830 -407168 tests/data/images/rgb48le_10.dpx/02.rgb48le_10.dpx +407552 tests/data/images/rgb48le_10.dpx/02.rgb48le_10.dpx diff --git a/tests/ref/lavf/rgba64le.dpx b/tests/ref/lavf/rgba64le.dpx index b4092c9fd8..85974bbc98 100644 --- a/tests/ref/lavf/rgba64le.dpx +++ b/tests/ref/lavf/rgba64le.dpx @@ -1,3 +1,3 @@ -545603630f30dec2768c8ae8d12eb8ea *tests/data/images/rgba64le.dpx/02.rgba64le.dpx +cb5fe2ad9c1119a33916a838cb586c45 *tests/data/images/rgba64le.dpx/02.rgba64le.dpx tests/data/images/rgba64le.dpx/%02d.rgba64le.dpx CRC=0xe72ce131 -812672 tests/data/images/rgba64le.dpx/02.rgba64le.dpx +813056 tests/data/images/rgba64le.dpx/02.rgba64le.dpx