From patchwork Thu Oct 18 12:39:42 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Dmitrij.Gresserman@loewe.de X-Patchwork-Id: 10708 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 E5367446E7E for ; Thu, 18 Oct 2018 15:39:44 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 3FA9B68A687; Thu, 18 Oct 2018 15:39:26 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from krocs002.loewe.de (krocs002.loewe.de [195.243.0.124]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2DE0468A685 for ; Thu, 18 Oct 2018 15:39:20 +0300 (EEST) Received: from localhost (localhost [127.0.0.1]) by krocs002.loewe.de (Postfix) with ESMTP id 42bTC52rBFz834n for ; Thu, 18 Oct 2018 14:39:45 +0200 (CEST) X-Virus-Scanned: amavisd-new at loewe.de Received: from krocs002.loewe.de ([127.0.0.1]) by localhost (krocs002.loewe.de [127.0.0.1]) (amavisd-new, port 2025) with ESMTP id XcCwXDFmLS1w for ; Thu, 18 Oct 2018 14:39:43 +0200 (CEST) Received: from vmex10a.loewe.de (vmex10a.loewe.de [10.12.3.11]) (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by krocs002.loewe.de (Postfix) with ESMTPS id 42bTC34Rfhz7x4p for ; Thu, 18 Oct 2018 14:39:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=loewe.de; s=krocs002; t=1539866383; bh=6XiHzhcUpHtqCNlKg1Jwf3ZBYn2pPbdZlyTU2SQnDuM=; h=From:To:Subject:Date:References:In-Reply-To; b=Tsy6YhkzJYulPV7nsOi7X91Ky7N2Gm12ek+dwyTwEo8qHhKz5SQgfJkVdEHhzjqFY vsGe8M9nwmSfLz62dyDgFanmyvPV9t7QrkWUeFtMjlvMl/QSlpWDHWkYe23iHjQZnr KpocHEUDjWz9UFLkIIj3t9Y0eBRP++Dn8UzHYrEI= Received: from CQEX10.loewe.de ([::1]) by VMEX10a.loewe.de ([::1]) with mapi id 14.03.0389.001; Thu, 18 Oct 2018 14:39:43 +0200 From: To: Thread-Topic: [FFmpeg-devel] #7496: Access to the reference track (dolby vision) of a stream Thread-Index: AQHUZXS7cWGeWqZruESLHJ5u4NvFUqUiDdmAgABABgCAAqQfyg== Date: Thu, 18 Oct 2018 12:39:42 +0000 Message-ID: References: <9253fd89-8ce3-c4a2-fe89-48219e3cdf51@rothenpieler.org>, In-Reply-To: Accept-Language: de-DE, en-US Content-Language: de-DE X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-originating-ip: [192.168.14.27] MIME-Version: 1.0 Subject: Re: [FFmpeg-devel] #7496: Access to the reference track (dolby vision) of a stream 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Here is my new approach with side data. ________________________________ Visit our website: https://www.loewe.tv/int [Facebook] [Instagram] [Pinterest] [YouTube] Loewe Technologies GmbH, Industriestraße 11, 96317 Kronach Tel. +49 9261 99-500 • Fax +49 9261 99-515 ccc@loewe.de • www.loewe.tv Executive Management: Mark Hüsges, Hans-Henning Doerr, Peter Nortmann, Dr. Ralf Vogt • Registered Office: Kronach • Commercial Register: Amtsgericht Coburg HRB 5443 From ec14915807d79a9e2c4bbf082d07080fdc86a37b Mon Sep 17 00:00:00 2001 From: gressermdm Date: Thu, 18 Oct 2018 14:19:53 +0200 Subject: [PATCH] Access to the reference track (dolby vision) of a stream --- libavcodec/avcodec.h | 6 ++++++ libavformat/dump.c | 22 ++++++++++++++++++++++ libavformat/mov.c | 23 +++++++++++++++++++++++ 3 files changed, 51 insertions(+) diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h index 705a3ce..81b30dc 100644 --- a/libavcodec/avcodec.h +++ b/libavcodec/avcodec.h @@ -1372,6 +1372,12 @@ enum AVPacketSideDataType { AV_PKT_DATA_AFD, /** + * This side data contains an integer value representing the + * reference to another dolby track. + */ + AV_PKT_DATA_REFERENCE_TRACK, + + /** * The number of side data types. * This is not part of the public API/ABI in the sense that it may * change when new side data types are added. diff --git a/libavformat/dump.c b/libavformat/dump.c index bc0f401..ef20070 100644 --- a/libavformat/dump.c +++ b/libavformat/dump.c @@ -380,6 +380,24 @@ static void dump_spherical(void *ctx, AVCodecParameters *par, AVPacketSideData * } } +static void dump_reference_track(void *ctx, AVPacketSideData *sd) +{ + uint32_t *track_id; + + if (sd->size < sizeof(uint32_t)) { + av_log(ctx, AV_LOG_INFO, "invalid data"); + return; + } + + track_id = (uint32_t *)sd->data; + + if (!track_id) { + av_log(ctx, AV_LOG_INFO, "invalid data"); + return; + } + av_log(ctx, AV_LOG_INFO, "%"PRIu32"", *track_id); +} + static void dump_sidedata(void *ctx, AVStream *st, const char *indent) { int i; @@ -439,6 +457,10 @@ static void dump_sidedata(void *ctx, AVStream *st, const char *indent) case AV_PKT_DATA_CONTENT_LIGHT_LEVEL: dump_content_light_metadata(ctx, &sd); break; + case AV_PKT_DATA_REFERENCE_TRACK: + av_log(ctx, AV_LOG_INFO, "reference track: "); + dump_reference_track(ctx, &sd); + break; default: av_log(ctx, AV_LOG_INFO, "unknown side data type %d (%d bytes)", sd.type, sd.size); diff --git a/libavformat/mov.c b/libavformat/mov.c index ec57a05..922776e 100644 --- a/libavformat/mov.c +++ b/libavformat/mov.c @@ -6658,6 +6658,28 @@ static int mov_read_dops(MOVContext *c, AVIOContext *pb, MOVAtom atom) return 0; } +static int mov_read_vdep(MOVContext *c, AVIOContext *pb, MOVAtom atom) +{ + uint32_t *track_id; + AVStream *st; + int ret; + + track_id = av_mallocz(sizeof(uint32_t)); + if (!track_id) + return AVERROR(ENOMEM); + *track_id = (uint32_t)avio_rb32(pb); + + st = c->fc->streams[c->fc->nb_streams-1]; + ret = av_stream_add_side_data(st, AV_PKT_DATA_REFERENCE_TRACK, + (uint8_t *)track_id, sizeof(uint32_t)); + if (ret < 0) { + av_freep(&track_id); + return ret; + } + + return 0; +} + static const MOVParseTableEntry mov_default_parse_table[] = { { MKTAG('A','C','L','R'), mov_read_aclr }, { MKTAG('A','P','R','G'), mov_read_avid }, @@ -6751,6 +6773,7 @@ static const MOVParseTableEntry mov_default_parse_table[] = { { MKTAG('v','p','c','C'), mov_read_vpcc }, { MKTAG('m','d','c','v'), mov_read_mdcv }, { MKTAG('c','l','l','i'), mov_read_clli }, +{ MKTAG('v','d','e','p'), mov_read_vdep }, { 0, NULL } }; -- 2.7.4