From patchwork Thu Aug 25 07:31:57 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: 290 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.140.134 with SMTP id o128csp763888vsd; Thu, 25 Aug 2016 00:32:21 -0700 (PDT) X-Received: by 10.28.141.6 with SMTP id p6mr6876502wmd.110.1472110340960; Thu, 25 Aug 2016 00:32:20 -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 131si30409909wma.114.2016.08.25.00.32.18; Thu, 25 Aug 2016 00:32:20 -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 83DCA689AD2; Thu, 25 Aug 2016 10:32:10 +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-ve1eur01on0116.outbound.protection.outlook.com [104.47.1.116]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 59734689997 for ; Thu, 25 Aug 2016 10:32:02 +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=ETR5rbdgxTEx/Ygt5Sg+ArSdTC/PlZWUg6Fu1GyTxn4=; b=kHKrAWA/up1AuMB2SL8+hmPw2ssKCMnliQQWHQK1+3f3gvl3iyQHhE9VRkJHchMV3HiTLpeVlol7WUEE+SC4dSHBlIMpVg8crCpIUTOf4lKFtDZ/IupHRe0Z+RRZRTFB3BgRB0PR5DRzJCRijXpsayYBiaA3A9rQ8Hwt36hwmkI= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=erkki.seppala.ext@nokia.com; Received: from [10.144.113.68] (131.228.2.4) by HE1PR0701MB2538.eurprd07.prod.outlook.com (10.168.129.16) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384) id 15.1.587.9; Thu, 25 Aug 2016 07:32:02 +0000 To: FFmpeg development discussions and patches References: <1471943019-14136-1-git-send-email-erkki.seppala.ext@nokia.com> <1471943019-14136-20-git-send-email-erkki.seppala.ext@nokia.com> <20160823142913.GC5460@nb4> From: =?UTF-8?B?RXJra2kgU2VwcMOkbMOk?= Message-ID: <1e6d7651-616b-ea41-b50c-0c918c6d140c@nokia.com> Date: Thu, 25 Aug 2016 10:31:57 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.2.0 MIME-Version: 1.0 In-Reply-To: <20160823142913.GC5460@nb4> X-Originating-IP: [131.228.2.4] X-ClientProxiedBy: AM5PR0601CA0028.eurprd06.prod.outlook.com (10.173.86.142) To HE1PR0701MB2538.eurprd07.prod.outlook.com (10.168.129.16) X-MS-Office365-Filtering-Correlation-Id: 37ace572-b699-4dfb-8afa-08d3ccb9e836 X-Microsoft-Exchange-Diagnostics: 1; HE1PR0701MB2538; 2:AYX97XzITG8n5LphezTHZVtGEF09hcvxVdzBOoP67CaxNewMf0CL5axE0Ph/YFd3JpIMScUwtbNBA+sxcQfyrCGblCfQ3NFpX4nQLUd+m9GSCnATeZTkS39u0hNM2dWVo9qlE+thKZ90EL5Io4UqEndO/14qbAIfCXg1aTWqux5rRBEdigrbULWVf/sjZjo0; 3:8lq8FEWIMQ1wU5YToGlQcfd+NfGH1iUxNOd3pHXh1w/Lvye1vhvEDeaT5fbmLVhD5NxFN76yPQsedzAGLvBCU0HddOhq6MWo/oAZWM7Ls5fLo1sgaZACeE9dOU5LtN7I X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:HE1PR0701MB2538; X-Microsoft-Exchange-Diagnostics: 1; HE1PR0701MB2538; 25:IUczZ/PmVOup8zarFyJvKaGbsDHttpuJ9nSzf+QRmXzImE6wp/Zdf9oqxgWySv4P7369bl8XA6PAYpR4iMzt2uojw67Tq75M2qWUW//5GrEisselPNaKqEg4wIglSgO/DylaGdESeDKo4qYHFyC3eiCRb8d2mk/wOGQ9gvsuXWoWokryN6TAn/OQWefwkODVulwxw0J4oVNNoPuPO9zuJCGm8YqZYnwngJBGX81zAdezKfJv476wTd4NTms/6Y1f7gjfjjHsTAq7hRbXJh9YRrBmIrM727dakMPY9T1sBJv8/GqjTOD1HnrqspbQQAdQBVosmtad8+r+/VoDGYSD+Ix0PmQ4vbsYawh68ccyeWQPGR3Gvp62kjPAr98KpMUeRQhAb/Ts7k+4+LOsqjqcYfRMx1NqqOE1Cqzg4Whfq6nf/hAFxiJ84h+vPpaPMjKHCzTm22mw6PUfySxZYEESrWyWuRqUG4HUTI0IhExXlruWJw6E3efeCGA/rAtcyw7necOcsTTUOzCvBiHQ9pOxsEkw6BpKUzeOlsAPjdTEBd5OJsyRxTQVWc9g7qHotz6ZPAyTkWtF5zeKLNP4k9gFQuTnzqZBGGXrr/IPXPV8MN3kvrIRLyHBVdWul87GfcummxRLBN8BXs1RtlPPwSyiy68tq80w/0iAnRW4Yhr2i836H6ghfzPZSvdYU412eDfJ; 31:l+ZdlHqvm76xo6R32MJdKDG4/zXrdYI7FP1BOro+Lrzo4I56uYJ6Vv8vuiVIEtjjBKhuuDt8W0WodpN1NQtZsEI7ezNdohQa8KDoxwT27sSKVZY2wpsKFmaEuddS1Y4nfCONwoEqkQ/cE6+7W4rYF26Mw+5ebdNeq8SR67T/X4NC11k0DzrfV4xk6N7H4Q1pNXak2xcUKyD/YmrxlVy37QZuVNzi25/ptddK+dlMLpg= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0701MB2538; 20:IkMl81vdqKxCyz2EvRRjqmRkZAnaJ9XeY7gTa/pQVqWSyym5q03bpa3kcU3wdy0/EJmneH45UTvN5jHd7c0jj6GiFjH44Dyu1/dN7fKz1sszij4rB5+2hGM2PSPv9tIvegxY7LghPZWgo1+i2vkwPLv2vqP82d01/onu3NsjbH4ZItiN+lGbgnYAYd165ED/VTAW7ajzPvptTWxixkybm6SxDdFilrpGfI2EEsf7n9sbapBimAVWRBuSUhWZyg5gTSgQQ9gfUYgZP7WYkOAAwPeqxWttEdbxOfJo2dbF3NKC1eTPBdYqm4O+WyOkPg1YDHmjj/R1zMInUjKo+CztNKr2bDAs2oPZhjWcf5XVoCAEbqJzVxNgnbdN8gAzsY45hmWt93kISMYQQzI8qpI8s5xlyXBBXmGGsTJA5i+tD/eD+PrDah5j265m3/U4i+YSrRv7HpFLaZJtavGQfCiG+uBg5QTnnp2ZD1gCW6kdBunChrLBXLqQhMa3eRQDqlw8; 4:9oKJLjR6MoxtRq9rHICQYrPI2va0raL7l+1Wcb5cPN7X8ioBcXSI2UJZaD9GyuQ8Z3dFHLWevIuDQngTOquxtaMlcpE1WDahzSzoy6DRcNnGzQH2br+C3gbbntXoVzxYatDCXLrlCAl6PiN5AkkgdxqUqaQZtnHEYMhf8PTh+URVcEz07pRPv7NIixKnwU9zWp63jTctBT3Ti6GKaEkMuEOrwHl+65pMHfo5/3gpu9SIwKHB46wf8uAJdlQHewPefmzVlZ6l59pkA7NEyFQPytTctPheHNmaX3Lm2+WadUVk/TCn/dEjdk8FGk25l8h9ISN3ZOUiCgfaUOSKFGERoKWaQl9O0MVaD4GEoslMY/g5U8yLuJc1A2nQzWrjP0nkxOyJdhwtR7dsRX+CjYGuOrLcoGxwIGHCzuGAVZT0wkjc37zsDHXPUHUOWX06jddJ 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)(8121501046)(5005006)(10201501046)(3002001)(6055026); SRVR:HE1PR0701MB2538; BCL:0; PCL:0; RULEID:; SRVR:HE1PR0701MB2538; X-Forefront-PRVS: 0045236D47 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(4630300001)(6049001)(6009001)(7916002)(189002)(199003)(85202003)(54356999)(50986999)(36756003)(8676002)(2950100001)(81156014)(19580405001)(19580395003)(2906002)(81166006)(66066001)(101416001)(23676002)(575784001)(47776003)(65956001)(6116002)(3846002)(85182001)(2870700001)(105586002)(107886002)(77096005)(586003)(65806001)(68736007)(5660300001)(31696002)(50466002)(450100001)(76176999)(106356001)(4001350100001)(97736004)(189998001)(86362001)(31686004)(110136002)(64126003)(7846002)(83506001)(7736002)(92566002)(305945005)(33646002)(42186005)(65826006); DIR:OUT; SFP:1102; SCL:1; SRVR:HE1PR0701MB2538; H:[10.144.113.68]; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: nokia.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtIRTFQUjA3MDFNQjI1Mzg7MjM6Yno0OVNVam85ejZCN2FZZGdZK0U3TGZs?= =?utf-8?B?TExCYmoxNWZVTThQNmtRMDBRYTZpeWJOeXhmTmppWmZGNE8ySmhYcDdXSmUx?= =?utf-8?B?dloyc0RWQlI1TmJxbXUwQWp0MlhSa1YwZVNkZkluUlUxei9NOUdpdnpjdjJY?= =?utf-8?B?K2IwY1JOZXNjdHZmZ3JnMnhyc2lUNnRIYWhUMnhHb1JUaWNmeFZaczdDQWhQ?= =?utf-8?B?Q21oZVdhTEY3ZDNmR3lURU5uQTlWTUtzdzNVdXRPZDErQjdabmF4dkhwd2Zl?= =?utf-8?B?WjN5Tlp3RmhLUi94Mi9wYk1ZTUh1MVRnbTNzZ2dlUy9Vd0Q1RGFpMEpzVDVk?= =?utf-8?B?VnNENGlVNHFLelQ4azhvMUFhVU5hQkdHN21CNDZOTFdzeDVFN1orYjVjOHJS?= =?utf-8?B?OUdaUTRjcjJLb3UzaVN1R08xRWNiaFB6ZW9NZTFSTWRUNXQxUXhHTlRzbG0v?= =?utf-8?B?RWR4UW9oeERqNEJwdjJVUnEwSG1pNHMzZ1JXR0lnNWx4RHhUbzB4NmRXdkl6?= =?utf-8?B?eDBDOFJ3bnNOSVJ4cUFuOTJWaWlGY1FoZWY3VFpiQzBFMWhVTXRvUTlBM3My?= =?utf-8?B?N0FZbnhQempvYVJNMWxKcXpkV05lTW9iaDIxNys0MUsyRzR4Q3RTN1BIUVVT?= =?utf-8?B?L1N1bXRPaHJjbTVIc3J6Rnpoa3E3U1ZkaVR5TDE5dExVWktVbFBOMjl1VXpk?= =?utf-8?B?alQ5QXcxQUNPTHV3Mm9ZODZQSHRlVTVJTUsyQ0lrOWdJUGpwMkhSWU1UaUJT?= =?utf-8?B?VENWMnRNbXZ0UTltUktUVTJENGpXNzNvRktHZVBncUlhN0pSMUhBV3JHbDJn?= =?utf-8?B?YW0weGg1dDZCRTVwNFErcy9ycVlkcWZMVHZjcmxPNXAyTUVmNU5MbkZjUmJW?= =?utf-8?B?UDgya1M5bnhzQ3VXOC9zVmpGTTB1cy9veEowRDBUSUN4ZGNqanRwbjZET0g1?= =?utf-8?B?RzcwVm1SaGx1anpRZG9VZXZJWjZUVXJENFRITmVQa2k2WG9SN2FHS2lMUUh1?= =?utf-8?B?UDBEZlo5TDRKV0JkT3JTbnNFSUpuYkxGWW5jUmJIQ0QwUXdLaGNTVDJIOVF5?= =?utf-8?B?bmFmZENOU3hxdkhjMnJ1bFhISlRVNlA1V2ZhWm9hcVRGR29MYjdMNkJia1do?= =?utf-8?B?NmowQWdIc3NaanZHcnlHNlJTM01SY3ZnZVI0LzhoNVRsc1pOM3hsTTJGS2Y3?= =?utf-8?B?MjIzSjZrVzkvWldWQjFXZTRteFUxYmoxalhJVU4vajBmb2tkNU9aZk54Z0c1?= =?utf-8?B?am1sNmI1WG51T1UvTzJaYklWakhuUjJGbDBEVE90Q05NNE1xVi9OVWU2ZGxk?= =?utf-8?B?YVdqR1FjRFdReGQ1QkE3SkJ6VlE1b2kvYU1yRnkwSWRVU1NITWVSUU5Ma1Fp?= =?utf-8?B?eTVKeGNzcFZ6YXFYUHh2cXpwWGwzK0F0VUVaSkhENVVpbFE1dGZXT0RBOVRZ?= =?utf-8?B?L3UxNlJIL3lRVHBvNnlJb0JSYzFnUGZ3bU92MldXZGorQm5VWDBva1dsY3cz?= =?utf-8?B?cldSeDJzR01CNjNOdk93anhJaFlpcm56SDFhNkZqNEU0RGRwSFd0MzB0N3Bm?= =?utf-8?B?NXFxUmxKOXk4K3dvYzQ1ZEVtNTQ0aCtMbGdoTS8rK1pCUHlXdjh2M1ZRbVBv?= =?utf-8?B?K1gweFd4dUQzdWo0dHVjTVFzNTVoNmNMNVlMbnVodGxPSVdneTh3c3pLZzJS?= =?utf-8?B?OHBRaGVzQ3pINEdNcVZ6Ym10ZmdUc2V2N2ovWnlSbzNrbTllN29acy9hVE1q?= =?utf-8?B?ZnRHWWFseGNvUGZveXdmcUVNRmZjdnZZcjNZbm90enlYckRzVEwrTnBteGNE?= =?utf-8?Q?sNQC76qdbvVpEJ7?= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0701MB2538; 6:bC+I9tm2+7cRFWsoi5+tfIzp9lSMkVE2Mvpo8tbIloJ/zJlPstPbqMydbnI5lo64dzSeH3ult+CT2qxP71u2dJIs3Fw/93rfLNrt6dOEHALvqmS/ViNZ/RsThP/DlfXYnpz5mRDDRHLIkbzi3a1RDRM3JL8+QDyviyZzKVyp/eUUdtotDybrvuOtD6KYdZhc3A0jUUJLwLIw6uKRMH58GIhsMJtVfm6eNSXYM4nH+0qqBd0Ry6UCRbDTLeNE+feTkmX3VEj6x+3Otna0XXBytaTWXRZSBmUBtR9+YfdKEo7iQeyZJWvQqHMEawS9l2F63GxcB/7Uu8Oyakp5X5UJ8Q==; 5:xNGWBgmhm3KTNST7DdWmDY3JWSovBlpVo+rn0fjkXCfui8y489FE/m4FzmWmhTVNGmyyzWy3/ajrudiao8qVj5586XjWyiQvlWeOpb98FyTQgxBcc5Ol6zzwBPe/EFm8Az1iMxsnDInPseHML0sJuA==; 24:GcAAsa7oNo6eArouP+f3MJmTsJUw3KN0PVCNdHRRTXbt8igOS7dliAJomok+RxR1nIjTsIXNGyFkFkpYOgc2zITkqUJenz8p4DANqPK2nNc=; 7:sdrNVHu/44SFSM0946hcJoICuA2WvwDyfrmI+OGzSH6Jf8mR2TteOli3u3uzCgKWCjKVbQELLhpObjEQ2nm0yJTzwISoUYbfATa2mDbVzrfXOrAR2J5jXJLmrm9gQiKiY7BM0I+suPe9Pzsi+ZIXyrSqN9LLGTdvryIXketd4tEa0sOdKyb7gaKZrSiX1Sz2npiQs9Qwm3Mpg3+cvvMrERoXJqEmrwfZH94X7KCpSKXbrMuutn0KLV17DjeQ4z66 SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: nokia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Aug 2016 07:32:02.4134 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0701MB2538 Subject: Re: [FFmpeg-devel] [PATCH 19/21] doc/examples/extract_timed_metadata: added a bare-bones metadata extractor; find only the frames 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" Thanks for pointing out the use of private API. It seemed that this would have needed to add a new function for the API for decoding timed metadata frames, but probably a better solution is to use the avcodec_receive_packet framework for this as the old API is deprecated anyway? Below is a patch to introduce the functionality (example edited for brevity). If this seems like the way to, I'll add this to v2 of the patches. (I may squash the first patch with one of the other patches if it fits in.) commit ddfb745109768a169e93c221092161d39c8f8208 Author: Erkki Seppälä Date: Thu Aug 25 10:21:15 2016 +0300 libavcodec/utils: do_decode now supports AVMEDIA_TYPE_DATA This allows using avcodec_send_packet with data frames (ie. timed metadata) int c; printf("track #%d at %" PRId64 " %d, ", packet.stream_index + 1, diff --git a/libavcodec/utils.c b/libavcodec/utils.c index 138125a..8b55464 100644 --- a/libavcodec/utils.c +++ b/libavcodec/utils.c @@ -2737,6 +2737,10 @@ static int do_decode(AVCodecContext *avctx, AVPacket *pkt) } else if (avctx->codec_type == AVMEDIA_TYPE_AUDIO) { ret = avcodec_decode_audio4(avctx, avctx->internal->buffer_frame, &got_frame, pkt); + } else if (avctx->codec_type == AVMEDIA_TYPE_DATA) { + ret = avctx->codec->decode(avctx, avctx->internal->buffer_frame, &got_frame, pkt); + if (ret == 0 && got_frame) + ret = pkt->size; } else { ret = AVERROR(EINVAL); } commit ebfceb706d8c8d0dbfe64ebe06d218aaa8807e43 Author: Erkki Seppälä Date: Thu Aug 25 10:22:19 2016 +0300 fixup! doc/examples/extract_timed_metadata: added a bare-bones metadata extractor; find only the frames diff --git a/doc/examples/extract_timed_metadata.c b/doc/examples/extract_timed_metadata.c index 48fb877..03da2b7 100644 --- a/doc/examples/extract_timed_metadata.c +++ b/doc/examples/extract_timed_metadata.c @@ -184,16 +183,15 @@ int main(int argc, char **argv) for (i = 0; metadata_stream_indices[i] >= 0; i++) { if (packet.stream_index == metadata_stream_indices[i]) { - got_frame = 0; - - ret = dec_ctx[i]->codec->decode(dec_ctx[i], metadata, &got_frame, &packet); + ret = avcodec_send_packet(dec_ctx[i], &packet); + // We always empty decoded frames so we don't handle AVERROR(EAGAIN) here if (ret < 0) { av_log(NULL, AV_LOG_ERROR, "Error decoding meta data\n"); break; } - if (got_frame) { + while (avcodec_receive_frame(dec_ctx[i], metadata) == 0) {