From patchwork Wed Nov 15 00:56:53 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vittorio Giovara X-Patchwork-Id: 6072 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.161.94 with SMTP id m30csp3976792jah; Tue, 14 Nov 2017 16:57:05 -0800 (PST) X-Google-Smtp-Source: AGs4zMZGTNsZYCYRX97d0YTeXyGNYHFl9GPST1pJfNEIojxmOCe/nJlF2SFtY8gp2Dsf/yRaNHhn X-Received: by 10.28.88.21 with SMTP id m21mr9926522wmb.111.1510707425107; Tue, 14 Nov 2017 16:57:05 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1510707425; cv=none; d=google.com; s=arc-20160816; b=aySdKWT2kZaDON/wKA23Og2liSU010+V8riklHgZ2RWRIAyewzeMF6yVDcjaMTl+FN kPvj1gSGwUktN/5nv9d1cFC42udvbEcKhFioxIlLZvsibVi4xnnEM517x3rUN7UsrJon ULR8HPdyHU9ePCxvkaC0yXXzw5nBfuR7/uya6Ck8BmK3BONRxeyTSW4Uji5m3IgICKJh fhSRWFkS6g0hdDGVvYzd9YsuKAPRFxOfjlqgYeKr0FvYTQEtW+YeVbLyCmYUOkb/nQyc eOP1zAZu9AX7jNt3xPD5+ftNoTmm21QXa3N2WdA75S6uOQsd1k7JhLGeUws4dqJFYNjd q4Cg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:message-id:date:to:from:dkim-signature :delivered-to:arc-authentication-results; bh=tuy9xSxhIqxutmdrWkTCBSiYLXUaCzx6Dduoo4VTI1o=; b=t6nkDKxKL8nY007RFF5sirXBntDrRNqpBbtP5mtPrWgjt7nz1ZiDD442Al5JGo70Kc +pkXP7f7AH+OumS/O+UjUj9CeihbniuIAyv6Bq13jBAfBbvZRCzltUTQ+8v6HcCPqDTg w8esykrsrGhF/sQH+ICanWQd9f59lWH+OA2UkUTkElwJWL23uMXZgWWXt8KiZIPCCcO4 JPwL00OkU+lg1jUswUnCmribKUwPD0UtVGH4tRLTa7WP5nxunhsLEuSP7/bfYteTGXHU 2EUFT1fK3wsdYn8cqSu+/wQZNt1ojhiplkLZjWcqo/v5nxG1CSD+gR25nE0FGXFMi0oz BAaQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=d4LUciAZ; 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id k4si8111486wme.105.2017.11.14.16.57.04; Tue, 14 Nov 2017 16:57:05 -0800 (PST) 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; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=d4LUciAZ; 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id BF747689EAE; Wed, 15 Nov 2017 02:56:47 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qt0-f193.google.com (mail-qt0-f193.google.com [209.85.216.193]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 82552689CFD for ; Wed, 15 Nov 2017 02:56:41 +0200 (EET) Received: by mail-qt0-f193.google.com with SMTP id n61so30776698qte.10 for ; Tue, 14 Nov 2017 16:56:56 -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=LL9hT3gww9ibVlotqBTfImHtHDt9cPaEoyMkpYqPa/E=; b=d4LUciAZg9b6afXu/6chJQRhZcwZNmaweyPjD1pXgLYodLwJ1qzhqZL0hGY5xv61h5 JeHO8iyqU4O9S5fvmAM5E31T8iVfnGXlEdtHUrrh4QAQKsZ6yAm963xd9Lut5BzfD/mj KhrPBia9DNBl02saTHjXTgXawm/xBRW/aFMwYC2lKJip0thA++XyHuecJApBH8jdRkFB V0bBXkcRVD1vG6JiH9Bd3DM3k73zoRUFlc0cTjXrwmis184NmVYNvNBcxbqIKYCKNH4A 0NacKNhalUwzUmhqHU+Cb+Zg4LOXp3izi4+Sts5PrfSC1m01OWJ8OO1ljeecEq77IgnM MjMw== 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=LL9hT3gww9ibVlotqBTfImHtHDt9cPaEoyMkpYqPa/E=; b=QAps0o6smK7yxOw/nm2PudXxLZaV02HEaKTRy9yrXlx4a7wY2rzwe3s6X20lfgpQTD XV0qrHGyw0jjENXgZuWwdoC0PGsi2MVgm7ZBMOFRlEHRt1QaWG2+JkwvloJJWtqT5aM7 I2J+2zx/cCLLotex7vU3OS2aZ8nuCOczXibYs3PBVZNChExxPYKgSGRyTSanvWqX/T+y srAWrfEdm2+PWlWAo1jnuGEE6jkBotMVeFbbzn2ALBFMP8c9voLPoWr1WRwSLTAGUvR6 pEzqYzG54O2ApU4S8Wk85B0kJr8RttkZik4rlhQwiIDpfXYyLAoZ8VMZY1Dq0aWMCnKC G8jw== X-Gm-Message-State: AJaThX5nP7jZ61tJuqAn5WgCmdppeihRRtPbRCw4cqQkYeNZOHGEmnlG 6VCwN27RJshsuSZBsNO+n34KEQ== X-Received: by 10.200.44.243 with SMTP id 48mr8413097qtx.99.1510707415201; Tue, 14 Nov 2017 16:56:55 -0800 (PST) Received: from vimacbookpro.vimeows.com ([8.40.92.161]) by smtp.gmail.com with ESMTPSA id y10sm13120772qkl.14.2017.11.14.16.56.54 for (version=TLS1 cipher=AES128-SHA bits=128/128); Tue, 14 Nov 2017 16:56:54 -0800 (PST) From: Vittorio Giovara To: ffmpeg-devel@ffmpeg.org Date: Tue, 14 Nov 2017 19:56:53 -0500 Message-Id: <20171115005653.30411-1-vittorio.giovara@gmail.com> X-Mailer: git-send-email 2.14.2 Subject: [FFmpeg-devel] [PATCH] vf_zscale: Add more supported input properties 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" --- libavfilter/vf_zscale.c | 26 ++++++++++++++++++++++++-- libavformat/mxfdec.c | 20 ++++++++++++++++++++ 2 files changed, 44 insertions(+), 2 deletions(-) diff --git a/libavfilter/vf_zscale.c b/libavfilter/vf_zscale.c index 09fd842fe5..7d048da1ef 100644 --- a/libavfilter/vf_zscale.c +++ b/libavfilter/vf_zscale.c @@ -353,10 +353,10 @@ static int convert_matrix(enum AVColorSpace colorspace) return ZIMG_MATRIX_709; case AVCOL_SPC_UNSPECIFIED: return ZIMG_MATRIX_UNSPECIFIED; - case AVCOL_SPC_BT470BG: - return ZIMG_MATRIX_470BG; case AVCOL_SPC_SMPTE170M: return ZIMG_MATRIX_170M; + case AVCOL_SPC_SMPTE240M: + return ZIMG_MATRIX_240M; case AVCOL_SPC_YCGCO: return ZIMG_MATRIX_YCGCO; case AVCOL_SPC_BT2020_NCL: @@ -374,10 +374,22 @@ static int convert_trc(enum AVColorTransferCharacteristic color_trc) return ZIMG_TRANSFER_UNSPECIFIED; case AVCOL_TRC_BT709: return ZIMG_TRANSFER_709; + case AVCOL_TRC_GAMMA22: + return ZIMG_TRANSFER_470_M; + case AVCOL_TRC_GAMMA28: + return ZIMG_TRANSFER_470_BG; case AVCOL_TRC_SMPTE170M: return ZIMG_TRANSFER_601; + case AVCOL_TRC_SMPTE240M: + return ZIMG_TRANSFER_240M; case AVCOL_TRC_LINEAR: return ZIMG_TRANSFER_LINEAR; + case AVCOL_TRC_LOG: + return ZIMG_TRANSFER_LOG_100; + case AVCOL_TRC_LOG_SQRT: + return ZIMG_TRANSFER_LOG_316; + case AVCOL_TRC_IEC61966_2_4: + return ZIMG_TRANSFER_IEC_61966_2_4; case AVCOL_TRC_BT2020_10: return ZIMG_TRANSFER_2020_10; case AVCOL_TRC_BT2020_12: @@ -399,6 +411,10 @@ static int convert_primaries(enum AVColorPrimaries color_primaries) return ZIMG_PRIMARIES_UNSPECIFIED; case AVCOL_PRI_BT709: return ZIMG_PRIMARIES_709; + case AVCOL_PRI_BT470M: + return ZIMG_PRIMARIES_470_M; + case AVCOL_PRI_BT470BG: + return ZIMG_PRIMARIES_470_BG; case AVCOL_PRI_SMPTE170M: return ZIMG_PRIMARIES_170M; case AVCOL_PRI_SMPTE240M: @@ -745,6 +761,8 @@ static const AVOption zscale_options[] = { { "2020", 0, 0, AV_OPT_TYPE_CONST, {.i64 = ZIMG_PRIMARIES_2020}, 0, 0, FLAGS, "primaries" }, { "unknown", 0, 0, AV_OPT_TYPE_CONST, {.i64 = ZIMG_PRIMARIES_UNSPECIFIED}, 0, 0, FLAGS, "primaries" }, { "bt709", 0, 0, AV_OPT_TYPE_CONST, {.i64 = ZIMG_PRIMARIES_709}, 0, 0, FLAGS, "primaries" }, + { "bt470m", 0, 0, AV_OPT_TYPE_CONST, {.i64 = ZIMG_PRIMARIES_470_M}, 0, 0, FLAGS, "primaries" }, + { "bt470bg", 0, 0, AV_OPT_TYPE_CONST, {.i64 = ZIMG_PRIMARIES_470_BG}, 0, 0, FLAGS, "primaries" }, { "smpte170m", 0, 0, AV_OPT_TYPE_CONST, {.i64 = ZIMG_PRIMARIES_170M}, 0, 0, FLAGS, "primaries" }, { "smpte240m", 0, 0, AV_OPT_TYPE_CONST, {.i64 = ZIMG_PRIMARIES_240M}, 0, 0, FLAGS, "primaries" }, { "bt2020", 0, 0, AV_OPT_TYPE_CONST, {.i64 = ZIMG_PRIMARIES_2020}, 0, 0, FLAGS, "primaries" }, @@ -756,9 +774,13 @@ static const AVOption zscale_options[] = { { "unspecified", 0, 0, AV_OPT_TYPE_CONST, {.i64 = ZIMG_TRANSFER_UNSPECIFIED}, 0, 0, FLAGS, "transfer" }, { "601", 0, 0, AV_OPT_TYPE_CONST, {.i64 = ZIMG_TRANSFER_601}, 0, 0, FLAGS, "transfer" }, { "linear", 0, 0, AV_OPT_TYPE_CONST, {.i64 = ZIMG_TRANSFER_LINEAR}, 0, 0, FLAGS, "transfer" }, + { "log100", 0, 0, AV_OPT_TYPE_CONST, {.i64 = ZIMG_TRANSFER_LOG_100}, 0, 0, FLAGS, "transfer" }, + { "log316", 0, 0, AV_OPT_TYPE_CONST, {.i64 = ZIMG_TRANSFER_LOG_316}, 0, 0, FLAGS, "transfer" }, { "2020_10", 0, 0, AV_OPT_TYPE_CONST, {.i64 = ZIMG_TRANSFER_2020_10}, 0, 0, FLAGS, "transfer" }, { "2020_12", 0, 0, AV_OPT_TYPE_CONST, {.i64 = ZIMG_TRANSFER_2020_12}, 0, 0, FLAGS, "transfer" }, { "unknown", 0, 0, AV_OPT_TYPE_CONST, {.i64 = ZIMG_TRANSFER_UNSPECIFIED}, 0, 0, FLAGS, "transfer" }, + { "bt470m", 0, 0, AV_OPT_TYPE_CONST, {.i64 = ZIMG_TRANSFER_470_M}, 0, 0, FLAGS, "transfer" }, + { "bt470bg", 0, 0, AV_OPT_TYPE_CONST, {.i64 = ZIMG_TRANSFER_470_BG}, 0, 0, FLAGS, "transfer" }, { "smpte170m", 0, 0, AV_OPT_TYPE_CONST, {.i64 = ZIMG_TRANSFER_601}, 0, 0, FLAGS, "transfer" }, { "bt709", 0, 0, AV_OPT_TYPE_CONST, {.i64 = ZIMG_TRANSFER_709}, 0, 0, FLAGS, "transfer" }, { "linear", 0, 0, AV_OPT_TYPE_CONST, {.i64 = ZIMG_TRANSFER_LINEAR}, 0, 0, FLAGS, "transfer" }, diff --git a/libavformat/mxfdec.c b/libavformat/mxfdec.c index 118e3e40b4..90a7d2ab27 100644 --- a/libavformat/mxfdec.c +++ b/libavformat/mxfdec.c @@ -192,6 +192,10 @@ typedef struct MXFDescriptor { uint8_t *extradata; int extradata_size; enum AVPixelFormat pix_fmt; + int coeffcients; + int primaries; + int transfer; + int range; } MXFDescriptor; typedef struct MXFIndexTableSegment { @@ -1008,6 +1012,15 @@ static int mxf_read_generic_descriptor(void *arg, AVIOContext *pb, int tag, int break; case 0x3202: descriptor->height = avio_rb32(pb); + break; + case 0x3210: + avio_read(pb, descriptor->essence_codec_ul, 16); + + for (int i = 0; i < 16; i++) { + fprintf(stderr, "0x%02X ", descriptor->essence_codec_ul[i]); + } + fprintf(stderr, "\n"); + break; case 0x320C: descriptor->frame_layout = avio_r8(pb); @@ -2111,6 +2124,12 @@ static int mxf_parse_structural_metadata(MXFContext *mxf) st->codecpar->codec_id = container_ul->id; st->codecpar->width = descriptor->width; st->codecpar->height = descriptor->height; /* Field height, not frame height */ + +/* int coeffcients; + int primaries; + int transfer; + int range; +*/ switch (descriptor->frame_layout) { case FullFrame: st->codecpar->field_order = AV_FIELD_PROGRESSIVE; @@ -2395,6 +2414,7 @@ static const MXFMetadataReadTableEntry mxf_metadata_read_table[] = { { { 0x06,0x0e,0x2b,0x34,0x02,0x53,0x01,0x01,0x0d,0x01,0x01,0x01,0x01,0x01,0x51,0x00 }, mxf_read_generic_descriptor, sizeof(MXFDescriptor), Descriptor }, /* MPEG2VideoDescriptor */ { { 0x06,0x0e,0x2b,0x34,0x02,0x53,0x01,0x01,0x0d,0x01,0x01,0x01,0x01,0x01,0x5c,0x00 }, mxf_read_generic_descriptor, sizeof(MXFDescriptor), Descriptor }, /* VANC/VBI - SMPTE 436M */ { { 0x06,0x0e,0x2b,0x34,0x02,0x53,0x01,0x01,0x0d,0x01,0x01,0x01,0x01,0x01,0x5e,0x00 }, mxf_read_generic_descriptor, sizeof(MXFDescriptor), Descriptor }, /* MPEG2AudioDescriptor */ + { { 0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x0E,0x0E,0x20,0x04,0x01,0x05,0x03,0x01,0x01 }, mxf_read_generic_descriptor, sizeof(MXFDescriptor), Descriptor }, /* */ { { 0x06,0x0e,0x2b,0x34,0x02,0x53,0x01,0x01,0x0d,0x01,0x01,0x01,0x01,0x01,0x3A,0x00 }, mxf_read_track, sizeof(MXFTrack), Track }, /* Static Track */ { { 0x06,0x0e,0x2b,0x34,0x02,0x53,0x01,0x01,0x0d,0x01,0x01,0x01,0x01,0x01,0x3B,0x00 }, mxf_read_track, sizeof(MXFTrack), Track }, /* Generic Track */ { { 0x06,0x0e,0x2b,0x34,0x02,0x53,0x01,0x01,0x0d,0x01,0x01,0x01,0x01,0x01,0x14,0x00 }, mxf_read_timecode_component, sizeof(MXFTimecodeComponent), TimecodeComponent },