From patchwork Sat Jul 2 22:21:53 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 36607 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:8b27:b0:88:1bbf:7fd2 with SMTP id l39csp1884156pzh; Sat, 2 Jul 2022 15:23:59 -0700 (PDT) X-Google-Smtp-Source: AGRyM1su34Vp1Q9thanBNb4n60xPjnBwsy+uQgTigwMzcYZ2CZVV2S0vOi8+SDRNODnuQG5yvE/Q X-Received: by 2002:a05:6402:84f:b0:437:6293:d264 with SMTP id b15-20020a056402084f00b004376293d264mr27487458edz.317.1656800638847; Sat, 02 Jul 2022 15:23:58 -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 nb13-20020a1709071c8d00b006f3dae85820si34862003ejc.472.2022.07.02.15.23.58; Sat, 02 Jul 2022 15:23:58 -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=@outlook.com header.s=selector1 header.b=YOEBSsNg; arc=fail (body hash mismatch); 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=QUARANTINE dis=NONE) header.from=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 8B02468B97C; Sun, 3 Jul 2022 01:22:45 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-oln040092073040.outbound.protection.outlook.com [40.92.73.40]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 951AD68B971 for ; Sun, 3 Jul 2022 01:22:38 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bMk+pSUBp3J38FybN9mAUDcTEI6yWJ/MPu19p8I5HryTGBg67NXPIGBkq1oKRG8fOMogagAIUJdk/2OoBF5PIRj27VrFjUI17wI4rfBmjWbZ57eFGX+UIQL+OOU5yZ7jjZlI9HeM0qaSTDrqBMkVT88IqS5OY4NISTvOh161PHYVvnhvUcyMUdz+v2YHgb5TbYxRzpG/VjxcKzj9hACyKGKWzZaHrTQ7l3iIFE0oKuRT5xLDHnds/0IZzxMC+gNQM2fuTIblepysiqFZ8GfXQ5TR5KPcnh9bVJGBNRdCacpj2jKpg0yIaVfwZSCns6TZNghTEmcvQsi4G/nKJEFXHw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=LQQhFunQtLthr+GwMb1ls60JcYBUya6BnsWRuSDMiZc=; b=L3rQkonMbuq29RgmXk7+B0a/iJNDRW+NH//pqkLmNxUepUqKGoxx4BLJeyDkWhxBp5TTobYFedbtu1QzdRBdbej7Y9LZDMMxricXmVVazsP9XczScbCL5NieZDkqb46WEqw9q/bbgv3qVhH8ol/TGS0WJFBXCvxRiE8BO4XEggcXMyjvXi/w/qvM90LDb3wZ9ZMxEnyV4+aKoE+VWr3ntTSr3UL4J2MQuGFFQSIXJhQ4ULclAKTQLiNUKCPy1++/mSzWRPtYt09zWdunjIcXAg4T8IbJOXusqAsVd1d+pWp+f2JjyGytboQ+6eEllFY24DVgCW8IQIqnbcYvGEkEOw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=LQQhFunQtLthr+GwMb1ls60JcYBUya6BnsWRuSDMiZc=; b=YOEBSsNgHF3XN6aZa5TB+heyQ1voF1oRHskpY3fefRQ854yS4OSAcTLw9a4NgN/U1Ph+nB00BAyY5zP/fIigAMG+iaXMwYSYyMlEVW8pn8f5Olol60BP4mLpeupXbOPh7LB4JdjfpccQil8tIzUvueKfO9DYevdQ3BuiDTklhptw8vDBTEvhdQVkUM3HnNLZM82yGxflLBaZJEHiY0ZaQn8RStl02/3WiiV8nr0ljlN+pcESqCfWygoAMQREmhp7DzOTcyV4E5JJe5HBVLiTCTBEiNVQO6miinkjNeOSTcCTevzuknvI37jNaAN2B/yphZDoI6+p3jDn0l2AsKK/oQ== Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) by VI1PR01MB4240.eurprd01.prod.exchangelabs.com (2603:10a6:803:6e::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5395.14; Sat, 2 Jul 2022 22:22:33 +0000 Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c]) by DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c%10]) with mapi id 15.20.5395.018; Sat, 2 Jul 2022 22:22:33 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sun, 3 Jul 2022 00:21:53 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [qhVIRXMnWOdtASAeih8IXxbCD0WhGuvf] X-ClientProxiedBy: FR3P281CA0089.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1f::18) To DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) X-Microsoft-Original-Message-ID: <20220702222200.169681-12-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 684f4472-1db3-4eef-d50d-08da5c795c0f X-MS-Exchange-SLBlob-MailProps: +LiGfBxqLEtZ2Se9LXW8/h2t+qO8GfncOOIeAidmvZPsqeXICZQhh3cl7wfdFUQ6WZkpD40dfw1FUTzFf9/WVWFK2fxheAmnYJ5l9XtoDblY2ydPW08yTPU5wIBIhVAllXP/dTiyiX68gQOMhoKqWY4/LIfDmReGsKnPuymXmKZHi1jj8CUm3rV8ytjBq7M8vWmb5/yFHnMqx/jnmJJMgqvAlSfiR71Htl4ZEjDju+PphjPyCnjGm+4iYGKPSEiCFMWaW8C1SKXvYFG4o9ilcAtg0/qOES1t8p+cqXjpniNIbGJHYQFgC8OSNuxQmodn4v0Uf8dX0Cjr6fL9lyeLJRkeno8GRbsu04qrrPbM9Fuzsk7OXvWiK0okYv41FhVpJ57lkPiwzcmB15NKX2G19TmGdHZ+dPh4A7VuwC3CbuDTDaIc6MWnB0MJhuwEd/zUNdkN9uct3t4jNyUxpHsFpjxh492G4cXYcxidobYk7xVjHzKurz2Rjt5zJxsepHrOEWV5ay2e4n9PCYv+WRuz/deSaF5ynRbbvuLcjrt0Xw63bjXM6nT/EzXc3TP41SsymSlqmesocJYvdrbDJ3DwomqeePrp4YZa7Vi9ktKSFI9MG+eAmDtqRU6MD6olW2pAJD8TbYAcJuWL6qSTYHmjj6UI5luEi9zJK/TV/+wJdTSRu17TafoK0McoNS/Qz93SztL7n0GrCzrEaorEImXFkGkOhBNR7kwnqL2wGlr+mFoPzlNWerBvJOgFcaQEUuxvuTFjZj1qMQoZShQcx7biTj9R6Zg+DLMs X-MS-TrafficTypeDiagnostic: VI1PR01MB4240:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: wdhqn1bXb0hV08Omk6LlYoLcudOkTCmMpByWr7p5a8EBBoGAeF46BEupv5wjYEPE1W94z5Kj477EfXoTJFgYKkcteIlGVuXMaFHdlmgxy244fgkJgcodGWiGYEDI8aT+h+UU9/Dq14d9PW0AsOqt415Tb0HsxfoYubOKb7a2xWjsOXbllLh1liyYmNk+RG6dLjFMO/6EOlJjfrKDGDm9nJmT4Km3Qf72Zz7XDWNdqHnEO99CbiC1rLBkwenAQv2SHZfUT5wNSmFIo+i5LQoUSZLUgstbJfnAgSVt5DibhWME/JLQTrzeVFhArVH/zE04378j5YAcXpqalXSYU9PSFWaJhDTTVH2WuclHgWIwurycBEJQs9PZ8CNK1DlYv8LqkrLiWCQID4VoL4Wp2gSwsUa7kIsH7Ba8WOoFYspxtsxjJWhe1A+RvW6NEySAbikwtnojJ9counFKoqYLABUfLfBO64qijm+GvqtqDHMp5HJsromKIIbu1Jx+uKDyc76l5joN9iKb6HJcvf9H4nfXf453+eRXurlKx8M9qN++OGGk6iPRr16hWkZ76sMobq0bKWmvIctEv/oUruzkEs9ivvFodLzbcWopVDN8Wojyc67yw1xJb5WqcqJv7YwouTFpBRPyRiHuodP4rsbpv4YdVA== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 2VhBdMQSQHNGND1BByAA5pkOgBin1XSyKfozGFLHhB7uFcBqWk4iFXKs3dKDWf+r8dNTY8+NRcUlIAokQb92XQi3TbA2FA6HvKIpzCQdLOg7v4FnQfRgryV/Y7trhA57CNm6dDgoomHTFDDKv64LfS1KB5f9RfUlQyAqeIPjZK15YfQLhPCgqFbiUjH8YgtkmTzEew0y/gJQVZiDin3Pzrpw4rJLr58hU1FU0VyxAM4Q3IVImzboly8pIsiffzOdmG78dnIuX5gfcLpzSFa9gwYsH/StklrlHPUenvD+yOPuUr7iXTOv1FaUMJ5YvD1EHFR6urxWm7+7eMz612JyMh/PefTdUGYQZQ68Gw+T+LgYDtG1VhBJSWGcKX6SdnhzuPn/r5mtADEntn5tHoXkmR/WQKm1txf3V26vpS2PfglsDK+5oOdQV3K/Kw4y1If+gljhQYdKXqZ0F6hT2WbnleaA205bKBHk1k19UoFoisYli6/90whsxhvVkdViQ3oO0/NoEXxy3EZdv4ovSFjWC/jAR/ZEG3Je5+BpI/Ua9+PqYvXMe3QkO5FvTfRdfqYtWxQHjF5VpXu6tDRKAKM1e62rWCvXnta/SjrBeggpxGk7v0vacAYqVP/H6c1TXdIuY68LIMZaoInlCDwMDJffZqlfaCkGpAu877wiySBf4aGCSzCF072f41gFTob4fuQbjf45GxqxFUQcsm1nAXIymICr3r2xwy7pLw0oVfQrdFRa26hG3R4pOv/qrI6RhbXaXNIYvSZPu4GCEywNuiBXUElFDR99MPghvgWiiKFGLWV2CV2NmYh6XK5fwPU/nO2+CRBnsRS7g+TlLMSVmci2f15WdnyvnxsZJ10VKuYQAWFn+i/DAlXrzlqDlMQDBa2HBZACzXnl6qJckoOUoE/32OOkZAGKTYvykci0CKTTMq3gFu3jcV01MC15YAZihhlKhbwrXMAlmH9DXHFcjV/Z0buzWIALHunfkKDe4s8mG5Qz2SscAMGVQ2r92WFRxz19jRxLDG5PJmagQsAyAQetn08iIpVo0AKVLEmdvkYWPyWVmhVn5d+L2HFVvC4qZ43F9Ja2DgEJl89qslxUY22O3PvRyV91YJyXuonW4hKH122F6FN/nSKcoGzCdll1rSIBk3RNxIGA9qQlkd9hPuJCiY5vYwwHMqigNhdAdIsTgLf1gcHM0h2Gksr6eOmFQbAa5xyvH5cOjKgPLss6aIk+An9bJwCDJla0JKyJlQNMeXsR9u27Q6VUuIWMakV+VUQz5bYDh4DelVlctJN5v2Kvemq2J1ixKz1gFcVMcQolo1U= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 684f4472-1db3-4eef-d50d-08da5c795c0f X-MS-Exchange-CrossTenant-AuthSource: DB6PR0101MB2214.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Jul 2022 22:22:33.4464 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR01MB4240 Subject: [FFmpeg-devel] [PATCH 13/20] avcodec/h2645_sei: Also support Active Format Descriptor for HEVC X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: ki8Ingn3ciyD It is valid for HEVC; in fact, the ATSC-HEVC spec [1] simply refers to the relevant H.264 spec. It is also trivial to implement now: Just move applying AFD to ff_h2645_sei_to_frame() and stop ignoring AFD when parsing a HEVC SEI containing it. A FATE-test for this has been added. [1]: https://www.atsc.org/atsc-documents/a3412017-video-hevc/ Signed-off-by: Andreas Rheinhardt --- libavcodec/h2645_sei.c | 15 ++- libavcodec/h2645_sei.h | 6 +- libavcodec/h264_slice.c | 10 -- tests/fate/hevc.mak | 3 + tests/ref/fate/hevc-afd-tc-sei | 204 +++++++++++++++++++++++++++++++++ 5 files changed, 221 insertions(+), 17 deletions(-) create mode 100644 tests/ref/fate/hevc-afd-tc-sei diff --git a/libavcodec/h2645_sei.c b/libavcodec/h2645_sei.c index 3575846f9a..1793c07285 100644 --- a/libavcodec/h2645_sei.c +++ b/libavcodec/h2645_sei.c @@ -95,7 +95,7 @@ static int decode_registered_user_data_dynamic_hdr_vivid(HEVCSEIDynamicHDRVivid } #endif -static int decode_registered_user_data_afd(H264SEIAFD *h, GetByteContext *gb) +static int decode_registered_user_data_afd(H2645SEIAFD *h, GetByteContext *gb) { int flag; @@ -157,13 +157,10 @@ static int decode_registered_user_data(H2645SEI *h, GetByteContext *gb, user_identifier = bytestream2_get_be32u(gb); switch (user_identifier) { case MKBETAG('D', 'T', 'G', '1'): // afd_data - if (!IS_H264(codec_id)) - goto unsupported; return decode_registered_user_data_afd(&h->afd, gb); case MKBETAG('G', 'A', '9', '4'): // closed captions return decode_registered_user_data_closed_caption(&h->a53_caption, gb); default: - unsupported: av_log(logctx, AV_LOG_VERBOSE, "Unsupported User Data Registered ITU-T T35 SEI message (atsc user_identifier = 0x%04x)\n", user_identifier); @@ -537,6 +534,16 @@ int ff_h2645_sei_to_frame(AVFrame *frame, H2645SEI *sei, } sei->unregistered.nb_buf_ref = 0; + if (sei->afd.present) { + AVFrameSideData *sd = av_frame_new_side_data(frame, AV_FRAME_DATA_AFD, + sizeof(uint8_t)); + + if (sd) { + *sd->data = sei->afd.active_format_description; + sei->afd.present = 0; + } + } + return 0; } diff --git a/libavcodec/h2645_sei.h b/libavcodec/h2645_sei.h index 4713b89e1f..eb00107abb 100644 --- a/libavcodec/h2645_sei.h +++ b/libavcodec/h2645_sei.h @@ -34,10 +34,10 @@ typedef struct H2645SEIA53Caption { AVBufferRef *buf_ref; } H2645SEIA53Caption; -typedef struct H264SEIAFD { +typedef struct H2645SEIAFD { int present; uint8_t active_format_description; -} H264SEIAFD; +} H2645SEIAFD; typedef struct HEVCSEIDynamicHDRPlus { AVBufferRef *info; @@ -99,7 +99,7 @@ typedef struct H2645SEIFilmGrainCharacteristics { typedef struct H2645SEI { H2645SEIA53Caption a53_caption; - H264SEIAFD afd; //< H.264 only + H2645SEIAFD afd; HEVCSEIDynamicHDRPlus dynamic_hdr_plus; //< HEVC only HEVCSEIDynamicHDRVivid dynamic_hdr_vivid; //< HEVC only H2645SEIUnregistered unregistered; diff --git a/libavcodec/h264_slice.c b/libavcodec/h264_slice.c index cc8bec8d9b..205ad5f97b 100644 --- a/libavcodec/h264_slice.c +++ b/libavcodec/h264_slice.c @@ -1225,16 +1225,6 @@ static int h264_export_frame_props(H264Context *h) } } - if (h->sei.common.afd.present) { - AVFrameSideData *sd = av_frame_new_side_data(out, AV_FRAME_DATA_AFD, - sizeof(uint8_t)); - - if (sd) { - *sd->data = h->sei.common.afd.active_format_description; - h->sei.common.afd.present = 0; - } - } - ret = ff_h2645_sei_to_frame(out, &h->sei.common, AV_CODEC_ID_H264, h->avctx); if (ret < 0) return ret; diff --git a/tests/fate/hevc.mak b/tests/fate/hevc.mak index 2f16e3a29f..41180dd7b3 100644 --- a/tests/fate/hevc.mak +++ b/tests/fate/hevc.mak @@ -236,6 +236,9 @@ FATE_HEVC_FFPROBE-$(call DEMDEC, HEVC, HEVC) += fate-hevc-paired-fields fate-hevc-monochrome-crop: CMD = probeframes -show_entries frame=width,height:stream=width,height $(TARGET_SAMPLES)/hevc/hevc-monochrome.hevc FATE_HEVC_FFPROBE-$(call PARSERDEMDEC, HEVC, HEVC, HEVC) += fate-hevc-monochrome-crop +fate-hevc-afd-tc-sei: CMD = run ffprobe$(PROGSSUF)$(EXESUF) -bitexact -show_entries frame_side_data_list -select_streams v $(TARGET_SAMPLES)/mpegts/loewe.ts +FATE_HEVC_FFPROBE-$(call PARSERDEMDEC, HEVC, HEVC, HEVC) += fate-hevc-afd-tc-sei + fate-hevc-hdr10-plus-metadata: CMD = probeframes -show_entries frame=side_data_list $(TARGET_SAMPLES)/hevc/hdr10_plus_h265_sample.hevc FATE_HEVC_FFPROBE-$(call DEMDEC, HEVC, HEVC) += fate-hevc-hdr10-plus-metadata diff --git a/tests/ref/fate/hevc-afd-tc-sei b/tests/ref/fate/hevc-afd-tc-sei new file mode 100644 index 0000000000..27eb3fc8d7 --- /dev/null +++ b/tests/ref/fate/hevc-afd-tc-sei @@ -0,0 +1,204 @@ +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=8 +[/SIDE_DATA] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:00:00 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=8 +[/SIDE_DATA] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:00:00 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=8 +[/SIDE_DATA] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:00:00 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=8 +[/SIDE_DATA] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:00:00 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=8 +[/SIDE_DATA] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:00:00 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=8 +[/SIDE_DATA] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:00:00 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=8 +[/SIDE_DATA] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:00:00 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=8 +[/SIDE_DATA] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:00:00 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=8 +[/SIDE_DATA] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:00:00 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=8 +[/SIDE_DATA] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:00:00 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=8 +[/SIDE_DATA] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:00:00 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=8 +[/SIDE_DATA] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:00:00 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=8 +[/SIDE_DATA] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:00:00 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=8 +[/SIDE_DATA] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:00:00 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=8 +[/SIDE_DATA] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:00:00 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=8 +[/SIDE_DATA] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:00:00 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=8 +[/SIDE_DATA] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:00:00 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME]