From patchwork Tue Aug 23 09:03:35 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: 255 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.140.134 with SMTP id o128csp2180728vsd; Tue, 23 Aug 2016 02:06:56 -0700 (PDT) X-Received: by 10.28.17.138 with SMTP id 132mr18014297wmr.81.1471943216368; Tue, 23 Aug 2016 02:06:56 -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 f13si2149126wjz.114.2016.08.23.02.06.54; Tue, 23 Aug 2016 02:06:56 -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 01146689CFA; Tue, 23 Aug 2016 12:05:01 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR01-DB5-obe.outbound.protection.outlook.com (mail-db5eur01on0128.outbound.protection.outlook.com [104.47.2.128]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 76D17689B0B for ; Tue, 23 Aug 2016 12:04:17 +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=BRbFQxUV4/lraCFbEezKq9cG9m4UDtiu6nlpV/P3Vag=; b=ZRWZOW/UGq4JnY8drEQ+B+JbcSk9WZ0I74r0WTAZQ/WDaVBQJKaHEF9Slfy22W2598GhB2sR7mGY7/IsXlRk3Tlp9mCqgfrTXBBsBYbwzdS/2NwuLIx9vR5WCM1RN1z8hfKAukuXjqllM67OZBvzwHvTSP3zAGyfj+fgHd/t2Qg= 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 DB6PR0701MB2535.eurprd07.prod.outlook.com (10.168.76.23) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384) id 15.1.557.21; Tue, 23 Aug 2016 09:04:17 +0000 Received: by erkkise-laptop.vincit.intranet (Postfix, from userid 1000) id 7D7E74449FE; Tue, 23 Aug 2016 12:04:04 +0300 (EEST) From: To: Date: Tue, 23 Aug 2016 12:03:35 +0300 Message-ID: <1471943019-14136-18-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: AM5PR0101CA0006.eurprd01.prod.exchangelabs.com (10.169.240.16) To DB6PR0701MB2535.eurprd07.prod.outlook.com (10.168.76.23) X-MS-Office365-Filtering-Correlation-Id: 2a0b2a6c-f203-4b2a-7e43-08d3cb347640 X-Microsoft-Exchange-Diagnostics: 1; DB6PR0701MB2535; 2:xqLMtOCDqpcWsV3diBluZwjwMpG1HmZVr/l1podgPeZu3yRReS64Y6XGucKrt95FSGlImu0x1UGKe09CAkyP36sYRoDNwms7d86d/fFi9+/C+cZcWXJSfYMKQk9Guh99krieUQcuZLwc6fV7LIhRzHyC3l+P1FlAv8ajqyPgcxxHkX6A2ZNbDu3Srwlvlj5A; 3:QMWPL86Qjq81cPeDgwEFgLIlqtfeDrufyEcjukM3vUB0hpSkimGyoC5uVDdBSFp055ASYNQSs/2pYVe/pHnI+CkcriOPw/z0woIT6kbU0NIZl4ps7lIjQp4l0dO4t3NB; 25:vJv7wz8PxRWkrxI74IKQPXS+uaGOieMLwBBPF/BcDT1PWUPTiFdupRxwgwybLBSCaC1pZg5NTLWoRWlCO6Q8nsEO3B0B1zW07OUaV9bsj34PDchbBqRdn9YIPgLX8anv/W9twh128R8wobrJEosM4XsGqQjvX2edd1m7cvvfX8COhkRUAAxvbiFOLIgqs6axYZUWzdz3BLi1lfNtddwIsQlQelFd9QJjnCkINazXYt26T+h7zLu/4FPdUFDbmRHRTuyLHkLpjN4c0Gn9FFAUKrGj3T9oXDx0DrunjlZLuGFTbAjUT7ZQVgiSEOQykyyzCuXE4SZkqY55JOEvfL+aChXaCOO4j1BtsHYhpE0ktxW84NRLq1Oi/V+ItaZVhysSqXRd+abXjjoKIvykx3/vMj9pCfQnqJkOphTYlWvGaT0= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:DB6PR0701MB2535; X-Microsoft-Exchange-Diagnostics: 1; DB6PR0701MB2535; 31:k6P0+5nkd69AM+NOeDIMexeYP9sqEPEELrhG3QHCS8kXuRPvJkD6/19fN5ZzIXq0K3gO9I1MtcPWJqiRo++nZfqq2IcwMbwPbtBCmW5YJEBCai1qwT1XgEdixtVrppyYe2hSqzakajghyPBIECzZvq6ChQtEyTqaeWKyfzfUt0kkULQ2GsKUeFWYZd9DRr06dVKG6kLoco1icfODzGss6vCV17WRJYG9IQa8NITM1nQ=; 20:3miGJVLorFkZ0SVneH8jMpYy/iwTrDRItv5VrWBRh1Hr3+XgM3e526Bb0Fpy+bpxPyzoUxRhPZnAAZhD2cq8SkCuVVZKHK9Pv3+bWEqC3XB0JKteqYe4dNwQi4fYJxIfTfCp25HOwZLySzyu11Le2WhNAtPb6Xyvbgg+tRKdEM97t+Rr4K/5iOGurP1RCZBP59SplrWt/c8L8OUU+QWYflCsWStvFrvmlcLkiFxWpZfr8yP2j+jwJbTeqWsA8hAbrUZ/l83ge/21OFfx+Y5p2j5ABJDJGSaB/Uvnn6ksexdVXbWSmuiDS8TO6keJkaRK/gVYtqHDIQT0gfwqnRL3Ar0HV02L/peV7Sjj6cuqJ9SzxcG21KR8jnVC9HSMGxBolSDhcFuKkG0FaOcv0+RWESp1yZ6m6ZFtLPvtjZVlfs7WOG1zIGouTL0+rOmhGKpEoWpAMCUzczFb+PFVNXwxOHqEh76+cvAdj6koDxR02UhzkRGhkSH3r82v2X1fvR92 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:DB6PR0701MB2535; BCL:0; PCL:0; RULEID:; SRVR:DB6PR0701MB2535; X-Microsoft-Exchange-Diagnostics: 1; DB6PR0701MB2535; 4:wSzIvh1TlLExe3NruOFT52OMtH/bzEgfTidweOed8zJKoZsrDmYFbdNCWVErhrW3LBO7nLnXTBWViZBkjPXpzZWpXAe/daikJjXL1srAp6U/waNsL/FqJEgXWRZbTaulWx9Y45WsGQQKZK7535sMwIwWM1yUb0b2f+ZLlZDSqkP8WsGXqjUyPADHE7bZagtAU5Q6X8dc6vBRePZJ6yukClfN+KJ1vsn+3ky0uD5oGQzbSjvlmJVOaLWfltzkxnsmN2g/613O7DdI7WKoOEA02/2OWpKWwQgE9IwCy+kSGVPDcH0cfd14dXA1YqIG+NZFX9DDzs5l/k+OcDZ4D/+7Nz5Q2EMFpGB/JiNb7HFqhjYHnffEjIK0BUe8zEirVdHsAola41EAUg+ypu7TiALYKpc/kzSEXm/JwboaMkWskn5GcXWBzM2zp7oFEtccX1IuRAvar9e8xWJB2kmfOFwPRw== X-Forefront-PRVS: 004395A01C X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(4630300001)(6009001)(7916002)(199003)(189002)(66066001)(19580405001)(92566002)(33646002)(81166006)(8676002)(81156014)(19580395003)(450100001)(36756003)(50466002)(4001430100002)(229853001)(42186005)(86152002)(50986999)(105586002)(86362001)(2351001)(5660300001)(6116002)(586003)(101416001)(76176999)(68736007)(50226002)(23676002)(52956003)(46386002)(106356001)(4326007)(3846002)(47776003)(110136002)(90966002)(107886002)(2950100001)(2906002)(7846002)(189998001)(7736002)(2870700001)(305945005)(122856001)(5820100001)(45336002)(97736004)(2876002); DIR:OUT; SFP:1102; SCL:1; SRVR:DB6PR0701MB2535; 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?MTtEQjZQUjA3MDFNQjI1MzU7MjM6VWlUczRTTWxBdjhvdmc0Y1JTc0I1eUdF?= =?utf-8?B?RnlIdE5EMm41eitjaENJbFJVQkFWSVZ3UENSaGtZQnVJWm9QbVNrWE92bkhv?= =?utf-8?B?UHQ4ekNDb1dHRDdSOVF6R04vUlYzSGVmckQ1dk5TcENUWG1VdDUvdWlqaFhB?= =?utf-8?B?UVF6N1FDL1pSb0YzSjR5bzJjeVZhaXZsQjQ2eDIyTVg0cjhzU3dtY0dUUDlW?= =?utf-8?B?UzExY21uSTlkaWNoTXRlNTQ4RDlSY0xtUG1ZUWg2QnpJME5TMjRyRlV3WThm?= =?utf-8?B?RFV1WGVOVE1rTDduUWthV0ljZ3ZuQmpVdGpaTGhuN05yMSt0YXYrcE9UNVVk?= =?utf-8?B?VEZVZEk0V2gvVGZ5SldFRHZ3UTUvNmpLMWFJSmRyMjd2VUx6SGxWNk9jYXRy?= =?utf-8?B?WHJTVnlqemthSkZ4RHFrWWlTSnlvOGw4aWNkQzN2K1ZHdU1VamM0d2xYaVpa?= =?utf-8?B?VGI3OW1FRjB3bjFaVnNKdXJFZ0pMLzZ6OVI4b0FmeXhVL1owNUk5Q0hidVE0?= =?utf-8?B?WDFqZGJENHF3VVIwY0RPYVpGQVZIKzFHcEJTWERIUkxGamU4Zk1WT200dytX?= =?utf-8?B?akRVQldEdGcwQzNRQ0cwRDBMbk9xaHYyR1hETUMwdHpvVkx0QXMycGdHMU55?= =?utf-8?B?RVVHb0JsSXFnZTllZlZSSU5qMlhGSFlyRmlFbkd1cjN5SmxPZGc4NjlvYysv?= =?utf-8?B?a2x3bHAxNUJlQ25lTjN6WlZQeWtlNE0xTFZEZW9XaStBRU1SZyt5UzM4VFdG?= =?utf-8?B?WC84QTR5VGkwK2lPR2ZxTGZ0VUxHbS9GVGZrQ2tGTUVoNGRsWksrNG5TK2po?= =?utf-8?B?WWdaeVNHcktOUVU2dkNleHZkM21IYjBhZDlCOThzbEthaGtiNHBSYXNwaSsy?= =?utf-8?B?S0ZmelNQYThiQXI0cnNWbXVkSG5aYzB3d2FWWlN1NmU1NUxkUkNzM2orbmFW?= =?utf-8?B?ZVZMS1h1Q3piL1NOOTBWNWJsdFFTYTFRbzFGQWFSYXJyTHYxbkJmZit6MXda?= =?utf-8?B?QVgzaXNHclVQQzJ4NHAzYmF6UnZQTHE2ZzRMdldpV0tlRGI3SGdKS2g4dGFn?= =?utf-8?B?cHBzeGtCVzRHYkE2eUphWXcyaUlvODJEUWZKSjhPZTBkY0xHT2FNVnhVQ3VX?= =?utf-8?B?NnRQYjMzL085S3JLN1hNRXUva2l6LzZkNG8wSEJtVWdHNngzQjBoTDFlUTB3?= =?utf-8?B?MzlEK3YybDltWXpWQlNjVVdlTEtDNXlqUmMvWlllQTdhcS9iWWFKRWhNZ0Jj?= =?utf-8?B?bERrVDRsZHNwU2kvaXZYYTJjK1JBSHVxYWx0MnRqNHFDUVdCNXZ2VU4zMlZh?= =?utf-8?B?Njg1YlV2UG5XeHNqTjZHVmYrM0JkaTJiNExFY2RYRjBPOHhHNHJOUFF0K21M?= =?utf-8?B?c0ZFR29JQmZubE9vdjBabFFHSEdvY1pRM1NYVnc0RVJuVS9tNXExN094L05K?= =?utf-8?B?QlJobVdQTU9oMFFNQjRjMGZZTkZwMGxpSFR1WDZOOE00azJPcWdWNC9OUWZ1?= =?utf-8?B?bG5OVkhSemdKOWZGWnR4Ymc5MUNKMUMwTzR3V0daN2NjK2F6RTUyOUxiTE1H?= =?utf-8?B?eDFzZDE4bnJXb3EzU1AxKy9yVkd1Tmorc2NBQ0s0Y1I5RnZPRTd5aUoxRXRx?= =?utf-8?B?K1dPZmJpak5EUzA0bVpaeElMYXYzSVlVaHJvRnVMeXFyTGgzd1BUdmpRQ1Jy?= =?utf-8?B?QWtwSmVkVzZaRHlWektxTGxQVzJ5L1RzalFJSTBIa0tXOHNrZ0hGU1RkbStl?= =?utf-8?Q?rXxHEzwOno52C3Wlji2VA1YFMhnS2F3IW11sOy4=3D?= X-Microsoft-Exchange-Diagnostics: 1; DB6PR0701MB2535; 6:h128yVYFrJ2879+8tUvYCxtfTVJTVQZNACdGHnNiGD6QN4gevpPfpxL9TPeXJ+U7Ur4NnoP8/Z+V63CIEAyEMH5+B1FYUmFzeAWYgpo1htXOa2aEIAzWqdRD61NCTiOpcRNwsDg8aO4pdEN6N9KhNmO7oetOZAlo9j+zs69lScBF1u85Sa24UeAXvir5qYwcQcCZE3rm9Wc4aC4fvN9VKn2bj8yFYCclhXmlU/N/6LehZGqYdWjvIMXIKzfsEM+wkbttep64bxLIRPbwxCYAUPBiSLoZNPlyLx3rfG5nBhdAQJSXvHOoiYF3WVcBDXHe9Unvvaj5fy1SJpKrswxcXg==; 5:bgY+hZuUelrxGp8lzHfU+hbLEjWIRwVIhYUIlWTt3CQqfcKVcaPS9boxUuQc/xn0qV3vNEWDUt9TuWGJ8k6pWrPat1kXRt711gBLKBTv7cFVnJMlDJH4R5C2QJhisoPNh04PVVtcuKItFRfv741fdQ==; 24:Neor+pIuoEBswSE4YV9Ub2dlO4Sg2msfX0GLAk7qt2KyUYUkljf9aoVQ8rcC03A8DKfFwrqYK2CJ2PsLxh5gchnUAG/xA0GBnn9qUYx3gvo=; 7:tEJ74QliJ9PH/P4J7Y921Ok5tuZN4ZQh/5AJlKVcqO89MANJD44hIG0kuzHUhE+1dmopGTfFx4DycfDLV+MW/V5g49r37A9EUMUJvZgWr14ki782fECxNSd1v+V8I3yu97nfHo2ciitiXKO5/JEqTPQ72NIFXX8cPaxX7R4DyMK6c/oZixNJTfDuZu4JeY7JSvBaeuBWgygv1cI5aITY1mgEaqq/vahgTf8kWPFjENUIxGz37K1fuqcW7qzmc3bb SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: nokia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Aug 2016 09:04:17.1447 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0701MB2535 Subject: [FFmpeg-devel] [PATCH 17/21] libavcodec/avcodec, libavformat/movenc: introduced AV_PKT_DATA_TRACK_ALTERNATE_GROUP side data for expressing alternate groups 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ä Alternate groups previously always generated for ISO media files. With this addition client code can define track groups arbitrarily. Signed-off-by: Erkki Seppälä Signed-off-by: OZOPlayer --- libavcodec/avcodec.h | 13 ++++++++++++- libavformat/movenc.c | 9 +++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h index 6c64e6a..9d69911 100644 --- a/libavcodec/avcodec.h +++ b/libavcodec/avcodec.h @@ -1605,7 +1605,18 @@ enum AVPacketSideDataType { * The channel layout is object structured with the number of objects in * AVAudioTrackChannelLayoutObjectStructured */ - AV_PKT_DATA_AUDIO_CHANNEL_LAYOUT_OBJECT_STRUCTURED + AV_PKT_DATA_AUDIO_CHANNEL_LAYOUT_OBJECT_STRUCTURED, + + /** + * Assign alternate groups for tracks. An example of alternate + * groups would be audio tracks (or video tracks) that are + * alternative to each other. Each alternative track shares the + * same non-zero alternate group. + * + * The content is: + * uint: The alternate group of this track + */ + AV_PKT_DATA_TRACK_ALTERNATE_GROUP }; #define AV_PKT_DATA_QUALITY_FACTOR AV_PKT_DATA_QUALITY_STATS //DEPRECATED diff --git a/libavformat/movenc.c b/libavformat/movenc.c index 9606918..94d978b 100644 --- a/libavformat/movenc.c +++ b/libavformat/movenc.c @@ -2567,6 +2567,8 @@ static int mov_write_tkhd_tag(AVIOContext *pb, MOVMuxContext *mov, int flags = MOV_TKHD_FLAG_IN_MOVIE; int rotation = 0; int group = 0; + int *alternate_group = NULL; + int alternate_group_size; uint32_t *display_matrix = NULL; int display_matrix_size, i; @@ -2583,6 +2585,13 @@ static int mov_write_tkhd_tag(AVIOContext *pb, MOVMuxContext *mov, display_matrix = NULL; } + if (st) { + alternate_group = (int*) av_stream_get_side_data(st, AV_PKT_DATA_TRACK_ALTERNATE_GROUP, + &alternate_group_size); + if (alternate_group && alternate_group_size >= sizeof(int)) + group = *alternate_group; + } + if (track->flags & MOV_TRACK_ENABLED) flags |= MOV_TKHD_FLAG_ENABLED;