From patchwork Tue Aug 23 09:03:24 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: erkki.seppala.ext@nokia.com X-Patchwork-Id: 251 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.140.134 with SMTP id o128csp2180300vsd; Tue, 23 Aug 2016 02:05:51 -0700 (PDT) X-Received: by 10.194.62.70 with SMTP id w6mr20885580wjr.130.1471943151437; Tue, 23 Aug 2016 02:05:51 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id g2si2109662wjh.266.2016.08.23.02.05.49; Tue, 23 Aug 2016 02:05:51 -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; dkim=neutral (body hash did not verify) header.i=@nokia.onmicrosoft.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; dmarc=fail (p=NONE dis=NONE) header.from=nokia.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 6E8D2689CC4; Tue, 23 Aug 2016 12:04:54 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-ve1eur01on0097.outbound.protection.outlook.com [104.47.1.97]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id CEAD3689BF3 for ; Tue, 23 Aug 2016 12:04:08 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nokia.onmicrosoft.com; s=selector1-nokia-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=Pl3dMxPdcLEjTMDPMgRx67ja+LWxTMo1osB6RkJx5II=; b=mWxD43S9UJw2jBV/RkhJXHWFk10/vWNd9HcDVZklBZJ2eSm73gAvAV3cBK024Y68yHw8frwbIK0NRE0ZiG5sa50nRykyuTl4fWLqW3/07cKfENlPa0970m+fUEZRAuS4fkYybxE4FBoMja3xbfEpURxDqWC2aPBriCTaglv73Fk= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=erkki.seppala.ext@nokia.com; Received: from erkkise-laptop.vincit.intranet (131.228.2.4) by VI1PR0701MB2544.eurprd07.prod.outlook.com (10.168.139.145) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384) id 15.1.587.9; Tue, 23 Aug 2016 09:04:08 +0000 Received: by erkkise-laptop.vincit.intranet (Postfix, from userid 1000) id 4E9864449E8; Tue, 23 Aug 2016 12:04:04 +0300 (EEST) From: To: Date: Tue, 23 Aug 2016 12:03:24 +0300 Message-ID: <1471943019-14136-7-git-send-email-erkki.seppala.ext@nokia.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1471943019-14136-1-git-send-email-erkki.seppala.ext@nokia.com> References: <1471943019-14136-1-git-send-email-erkki.seppala.ext@nokia.com> MIME-Version: 1.0 X-Originating-IP: [131.228.2.4] X-ClientProxiedBy: VI1PR07CA0061.eurprd07.prod.outlook.com (10.164.94.157) To VI1PR0701MB2544.eurprd07.prod.outlook.com (10.168.139.145) X-MS-Office365-Filtering-Correlation-Id: 296d6386-31e7-45a8-5f9d-08d3cb347166 X-Microsoft-Exchange-Diagnostics: 1; VI1PR0701MB2544; 2:y5XUBZwgaObZNoBfjb535fR4L6xy/ymmjjdQx29tbzxRBEomVtNsqeHavqslU32JQDP48AiJc4QJ7uuGkDq3AVN3lsgyukyf371Jqzv1rABcZ7u7GdKdS9WTllLX1Pr5P7p0S1l7xJb7ofA9u8jjqrCXRoba36+IxAAWAMfE6DQrgre8n0rakfJTRegYsOBf; 3:GHC8Z6Pzd+j86ae7r1LVocQU9nR6FZ1pXOEZhVIhdSIuurthnth0XT/2kNcDT2vYUXhQz4YmO2w+Ue9Hg3AVGjP6/Mopbrii4NOpJZH0ZPQz0483YOUv8DgGF19vTlK6 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:VI1PR0701MB2544; X-Microsoft-Exchange-Diagnostics: 1; VI1PR0701MB2544; 25:4u/xkdqTSBLgKVNUAQ26qBKm2MwRe1L5JpZoNslKI6PdBlD5mFCGzU8Tlu5QTInpodI0BR3dM2aTGN3vZ14+okxtNAbVnSOJjzKJIeEQtWPHo326ggvJykYBHkDgX5jsCj7meaU6krK5/zEV2VzaQuxvCKVLgf7EhtcuGkkHksy/KR62BHQeiNXLXg4YD/BSpw82hTwv7IZFtJ7X7Pu8GYOQS7G6/ktDHDyFqMYP610MQTR+2p8/JmLSPTtqgicBM7vtxEwhYUF9sCyNG2nbFOShg+JTXlp/PmwVHcEJCd0qexxkSiLnqNLGJW4SBEWnGKhKGjF3kYw4md/bzNOBbrBphaZUa5MxhxL1sxP2Jfy2/yn8elgQXSW6cD7oFxcjZCsi+zPcA3WL1YJI041HNMRsMiOjxoUhwrwHe6qDwFjlABFhS8bXnoAnFNC5vyeZs37QavjGtq8mIo/txHcfKAM/UhAEo7o4b1SBtHfyDQ2Hu1/e+uRdm9PZHTZeuen+JRv8bTwqcf8FQQwJquMNY/szmPg8tbICCR5kZ5ayyjkrSryBlUfteiSyVMW8pcmBLuLRiWAxkWOZqD92/H6AvDQeyjDIU0WurToFS8gqkhp0Ra+IzOmxmA0Pk+1tj9CIdlBp4BN3lC7Y3GCmuTYjjPSv78exOEHr02LdCpawI5U=; 31:galRZxMpOt90ZyQdUfTIv9slcILu9hMmS2cj1cfSP6/XlmW9Wbo7rU+HI5oy8LAJib7Q4hIq9LBTLvYF13LRk42qIrF2RhwWi8zsPp5QXDf3+1haUssbuKDPL0EMFtLl8Pu+VQYKAi3i2sa5AUZuY4bwQIcCcyX2KjSj/jhqGtJMu3QgRpi/oqNxemtSKBitD9+7ZVyKKSwth3/nqRTX5uPgdmcAFMkbmdj3H0kaHxM= X-Microsoft-Exchange-Diagnostics: 1; VI1PR0701MB2544; 20:0K4Gt4P5IL7lFqc7IX9P75G0orFNmnh/ojH8RLle4QYjns5VTy7MuNJbiBTYdYu70ibSesNHqqzHCZuCe4z0vZKgbvJHiyWikh9/eizetwr23CUxK0vMGNmNwjs4K/SgA9GHjtTMaKHdDFbULyOLrC483cC3aBL30KhQPZ9jf/COcWSxqvC55oSTiScoQR7ksfHSIhOnRuHpv71mRxFvQvddodb78INZ3MhcJmfoa9/3pLhH3cwv4Hqvro2CRFnJUWjCdu+KoRv3A/x6Ji2fwrKCJKF4ukL2dcD46KifFDFaQ4XpxifMKg+6UkqIfu4CPlU0oYA0va98ydW29quGZVRxkgWevKRKBEJWpdHwc57PfiW29DZuHfLlrQR0GR1hBop57rWC8j8Vf0LeGnDRku8NYIavlhxCETcSLMTqRR6orCbt7gH4F0/XGiZ9Oq1N8HtxQdIi6snfvOL+o1soskLDupooHHCY3RPdFCF01SEHone7mxoTVz/PQmSH0081 X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(82608151540597); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040176)(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046)(6055026); SRVR:VI1PR0701MB2544; BCL:0; PCL:0; RULEID:; SRVR:VI1PR0701MB2544; X-Microsoft-Exchange-Diagnostics: 1; VI1PR0701MB2544; 4:HruFmenfUzDAItRuND1FhKvjejm8O+RJWVnGlsptqaS7eiYfOGgGjkJPhdlTC8RkUPwrU5btBIgd9z05AMXoTvp6ewQPt0G8Q9L1I2IJ84/GSnT6hB4dRdfpQX0XBcLWMS+m9H2abP8zI2ntF8xWSLwvNKLyGYAYar5rptwTsIT8zUHQNJXCNhnzaWNmqjD3FYOS007k7hskeAYLEVh6i4HlFCMs21GnD8zsHHX64wpSYLLECQWHlH3LBNs1/1Yt92pmnt/U4IQCfJI2vxFlUv+cY1H44xkUGL6PlxukxTcyffvnVqHMnSQifDdU6uJ+Q/MJw2LpfZ1Va4Vax4yH49wxuTauXxOdqGq7MRme20KIYT1UAH1a3vvgvwxEbu63C/FdZTvQPmCgP+UCA9ugZGsUAenCtPAbbF9iK3ZRGVzgV/g0nTgizktdc+7vgIAU3akW0p00ZEBujk0yaA9kjw== X-Forefront-PRVS: 004395A01C X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(4630300001)(6009001)(7916002)(199003)(189002)(106356001)(7736002)(450100001)(305945005)(3846002)(6116002)(586003)(4001430100002)(7846002)(5820100001)(42186005)(45336002)(19580405001)(189998001)(81166006)(107886002)(81156014)(5660300001)(23676002)(50466002)(36756003)(8676002)(110136002)(46386002)(86362001)(575784001)(86152002)(52956003)(97736004)(19580395003)(50986999)(76176999)(2950100001)(47776003)(50226002)(66066001)(92566002)(68736007)(2906002)(2876002)(105586002)(101416001)(33646002)(229853001)(122856001)(2870700001)(4326007)(90966002)(2351001)(2004002); DIR:OUT; SFP:1102; SCL:1; SRVR:VI1PR0701MB2544; H:erkkise-laptop.vincit.intranet; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; Received-SPF: None (protection.outlook.com: nokia.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtWSTFQUjA3MDFNQjI1NDQ7MjM6empZYkp0cHBBUUJOOWxqbEEra0RydmtH?= =?utf-8?B?UzloYnZNTGxYWDg0NHdPUjV1MDdHZksyaFpCT2hHQS9uYlV5LzhkVUJoVG5G?= =?utf-8?B?Qkk2dEx0UVlnUjRvaCt4TFFmZnpuN0N5bHdneUZxWm5YMVF5cWN2dEM5STZn?= =?utf-8?B?c1BDanExenlVYUtmVFUzN1B5V3BqQUt5R2VrTkVZUVBDa01CVk5FQnFRQ2Rt?= =?utf-8?B?SzI1UzE4SkNQRXdEaDhXeWhBeXNpVEFsNWtZWFBRY2x4QmJrY25TOHhiTDFK?= =?utf-8?B?TVJ2bkxTSk5RTjF5Ym1EY1Zvb1A1MGtodXozZUpGODRSQ2dmU0VQV3FoMXBE?= =?utf-8?B?SVpxbHRoZWpFbVJxZHpndDlZVlNNZUVIdUdrODdHUWYvREVPLzk3bmFJUXJG?= =?utf-8?B?dUJKOThhUzkyTEtrbEQvWmtvV0FOWThaUzRFMC9vRWRJbVFBbXg5WHNTUXVh?= =?utf-8?B?UXNXcHhra1F3VnZDN3U0TGdaa1FNVS9QZmUySWhhaG5ST2hGZ3FGZlRJeVFu?= =?utf-8?B?akVoVFVXbUhVdGlGVUF4SlpCZ1pCSmhvTENRTlg4clN4a2txUXRaUldYbnVJ?= =?utf-8?B?aEswdFNuQ3BwT0dCODA1VDdvZ2dZT1V0NUNzUE9iRWM2Y1owWHAyNW1xTElh?= =?utf-8?B?YzNjZVMyKzhKK3Q4UCtMRkMvTzVDL25USU9udzVXVVA2Zjd6Z0V5K3BFdkFC?= =?utf-8?B?Tko1R3dDOUxaWVZaenRKdlh6OGIyQWtBZGxqQUFFWlBNWnhvVjJXSDBKNlhn?= =?utf-8?B?aTI5L1JLKy9ZNDdheEpORXY4RjRJamY2eUN4dVo4eTZHZWRZeS9odUx2SElI?= =?utf-8?B?Zk1RbW50N3JlM3RMaGRFWkwvSlFZVTRTbTc4R0ZjV2ZIMlBlOWhkeUZkWjlq?= =?utf-8?B?MFozdy92WjIyS20zclFBUFBWN3lWSGJqTkdSY3pOVVQrVlhJWFJKYXJDWXVZ?= =?utf-8?B?eXJ0MURTQkJxNm5IQjQyLzlITzVwQjhVMWV3U2k0aTVjN3h4ZVNRREFkZUtp?= =?utf-8?B?N3dkZlg1YVR3RnZ0b0RsM25Tdk1aejA0OXJPbDVDcGhTanRuU05BYTlxYjNk?= =?utf-8?B?M0dVRm4ycFMza0hWVitERjVrazhpQW41RnE0eFgwd0s3RWdoMTJmQlhkNjd2?= =?utf-8?B?VC9MV0kvdmJWNTh4SXEyWXJCenJlQk9HaktxVWN3UHhTZDZKQ0FhV1d2YmpC?= =?utf-8?B?VTRES0xWR0JhK1daV3NDMUt6VzFkM0x4bkJGUmxmbk1EbUY4alZ0dmE0VHM2?= =?utf-8?B?bUVLdnpibHBNTUpOV2NBdHhiL1haQVlBWXgycE93OXhnZVdlL3Y3bTdhT09s?= =?utf-8?B?MkQ0Ym1yZThPVmwrSmxSUitSdjNRMGhqV1dUeTM5b3JkaHpJRnNCZjA5UDE1?= =?utf-8?B?NjJwSUdmckRMU1A1dzRTWTNzUlFNR2ZFd1cvOWpaNjE0b0ltNmxrWVkrMTFK?= =?utf-8?B?RGt4bmdZemxPTTgya0lBT25pN3JwOWJPUWtaY3JzMVcvZHIrampYeUFRZmw4?= =?utf-8?B?SFE2MURLNDNQN3F2R3o5emxMeE14MVJPK21PQ1ZwS1VGWS91cmxpVGdLL1RK?= =?utf-8?B?TSszSGNkc21YVmFIbnQxMVZPSVRZZFJrYVl2Q2E5QnRxdTVHTnFzQ3A4cFlN?= =?utf-8?B?RVNwaFY0RjRUZms3SVdSMmplR0xEZlA5c1VGL2ZRbjJiTXdtMHVvdEtVNEdB?= =?utf-8?B?dytuK3diUzJaSG1YTmRGeU9vVmRsYWVRZDVmQTZiU20vOFk4M3JuR29Hckov?= =?utf-8?B?NXk1bWJGbllDQkx0bGc3NHRPOU9kVHl5aVhUbURpcjVHdUJ1Q1E3N1FyRWNk?= =?utf-8?B?V0FFRmlUcldyV0JkdEo3UWo4dzFHU200VE0zTk9vSmgrQW5OZz09?= X-Microsoft-Exchange-Diagnostics: 1; VI1PR0701MB2544; 6:o6DxrEbjETzq8xrhwJAG+DEawbFTS2UByaimzjpzniVQ+hwjOW3rrk3R79OjzuIcKfqSJY0EPdp166FC/NvOvYa5khdgYMJMZEGk3cYxG8HuReUfIRpbyhOCbKktZGzTF+YvmzMEdaIzFaIxGXtSGGg7tkO0QtbBBC67Xn8LJGhW53ZEWwkmcsN+0x0bhTU8m/5E3AnLn5kHOHnYmhdCRTWDdYZFe0qaIWuCnKn8bl+3Iln3zeiQvD+6L8+pH8DE6xcR9DfRwIVbAygGS+YkLiyx5sfoWsUlYGV3pjGmEZRCqnY7SvOs9DE1w50YaktiVbyB0CZ3j2kAPiIIyoZgkg==; 5:TLXTHdxPcReEI/LPlmafnB1IHm3xURufv/oYqT5XKXM9JJlmbHbU+Co6cZ/sId9G9ZUhNm2tmypa45pYj5iG+VeIrG1R4Rghv/tZ8ZvmK82uGPJjdlC5IRQvtcXZW+L+q8qF5D7IF3LmO7WWCJYftQ==; 24:lA83jvMuhxOlxTpYy4BPnnOHSii/a07i90W7JMj/uwwfRovNXLm9IZLn/6zT27WPWzoRIYOCJzeNzVKY/qtqLytXv1Vs5L0T5BQGotm51z4=; 7:ET1k/8BFEQ8ZQhQHetCp4FxyF3lJIrSGe3Wf+R1ivo8vXEZ0kHG1veZfPWy3V4OWz1YgWg2+ar3lv+IghODd718JOxHXbuh638/7D9mivswCiuiyC3YGeCmKGG/aCkRvapQcmA9mgG3qXBT/PD+in2/BaztI30EI8X87Yqr55vJCETxcHRUlNSKr/vH2GOaU2EQzkyv29XquVt3N7YDHBXGqGudBr0vFQfnysmMGG6hRk91UzsBlvR1KT9lfremo SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: nokia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Aug 2016 09:04:08.9803 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0701MB2544 Subject: [FFmpeg-devel] [PATCH 06/21] libavcodec/avcodec.h: AV_CODEC_ID_META added for timed meta data 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 Cc: =?UTF-8?q?Erkki=20Sepp=C3=A4l=C3=A4?= , OZOPlayer Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From: Erkki Seppälä This basically passes the data forward and is used for referring timed meta data tracks by a codec. Signed-off-by: Erkki Seppälä Signed-off-by: OZOPlayer --- libavcodec/avcodec.h | 2 +- libavcodec/metacodec.c | 94 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 95 insertions(+), 1 deletion(-) create mode 100644 libavcodec/metacodec.c diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h index fb8f363..756eda5 100644 --- a/libavcodec/avcodec.h +++ b/libavcodec/avcodec.h @@ -639,7 +639,7 @@ enum AVCodecID { AV_CODEC_ID_DVD_NAV, AV_CODEC_ID_TIMED_ID3, AV_CODEC_ID_BIN_DATA, - + AV_CODEC_ID_META, AV_CODEC_ID_PROBE = 0x19000, ///< codec_id is not known (like AV_CODEC_ID_NONE) but lavf should attempt to identify it diff --git a/libavcodec/metacodec.c b/libavcodec/metacodec.c new file mode 100644 index 0000000..f26a0d0 --- /dev/null +++ b/libavcodec/metacodec.c @@ -0,0 +1,94 @@ +/* + * Copyright (c) 2015 Erkki Seppälä + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "libavutil/intreadwrite.h" +#include "internal.h" +#include "libavutil/opt.h" +#include "libavformat/avio.h" + +static av_cold int meta_init(AVCodecContext *avctx) +{ + return 0; +} + +static av_cold int meta_encode(AVCodecContext *avctx, AVPacket *avpkt, const AVFrame *frame, + int *got_packet_ptr) +{ + int ret; + + *got_packet_ptr = 0; + + if ((ret = ff_alloc_packet2(avctx, avpkt, frame->nb_samples, 0)) < 0) + return ret; + memcpy(avpkt->data, frame->data[0], frame->nb_samples); + avpkt->size = frame->nb_samples; + avpkt->pts = frame->pts; + avpkt->dts = frame->pts; + *got_packet_ptr = 1; + + return 0; +} + +static int meta_decode(AVCodecContext *avctx, void *data, int *got_packet_ptr, AVPacket *avpkt) +{ + AVData *metadata = data; + + *got_packet_ptr = 0; + + av_buffer_unref(&metadata->data); + metadata->data = av_buffer_alloc(avpkt->size); + if (!metadata->data) + return AVERROR(ENOMEM); + + metadata->dts = avpkt->dts; + metadata->pts = avpkt->pts; + memcpy(((char*) metadata->data->data), avpkt->data, avpkt->size); + *got_packet_ptr = 1; + + return 0; +} + +static const AVClass metacodec_class = { + .class_name = "Meta data codec", + .item_name = av_default_item_name, + .version = LIBAVUTIL_VERSION_INT, +}; + +AVCodec ff_meta_encoder = { + .name = "meta", + .long_name = NULL_IF_CONFIG_SMALL("Meta Data Encoder"), + .type = AVMEDIA_TYPE_DATA, + .id = AV_CODEC_ID_META, + .init = meta_init, + .encode2 = meta_encode, + .priv_class = &metacodec_class, + .priv_data_size = 0, +}; + +AVCodec ff_meta_decoder = { + .name = "meta", + .long_name = NULL_IF_CONFIG_SMALL("Meta Data Decoder"), + .type = AVMEDIA_TYPE_DATA, + .id = AV_CODEC_ID_META, + .init = meta_init, + .decode = meta_decode, + .priv_class = &metacodec_class, + .priv_data_size = 0, +};