From patchwork Wed Jun 24 13:43:14 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lance Wang X-Patchwork-Id: 20586 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 372EF44A994 for ; Wed, 24 Jun 2020 17:09:30 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 1F64B68B607; Wed, 24 Jun 2020 17:09:30 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qv1-f67.google.com (mail-qv1-f67.google.com [209.85.219.67]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id EC1CF68B4DF for ; Wed, 24 Jun 2020 17:09:22 +0300 (EEST) Received: by mail-qv1-f67.google.com with SMTP id e2so1073333qvw.7 for ; Wed, 24 Jun 2020 07:09:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=g+ltDoCNVr3mYe8UyFPpgaBRaBM4vyormBCXXZ5kL9c=; b=AnqdF6WAWUTYvllNyEXQEOvW+mxss5Q8wTbX7/v4jAL3D9j7ODxq3QB9DByu8U8lj4 7rUoo6/oiOueMoTbc1RpcIK599IkMvvsxXbuMeuKvHab4DNus3Jv7018Sc63SnlaX62g bWHE7mZmRhAJBYnzOpKC0oodwgNRCZOPc7VDjNPJHshYq67nXvZ4Eg6TEFjTpAswOYsM JB/OmTtL6l7shAwPBUy0c8+sJImLSSjlOdAVboNn9pUd9jiSvgm6KAQ/cHOC3XjBQI26 dhH/oJFwbRLen4fX/WpqUq32MJY/EmChbavN5ElIEn4ASBBzZz9XNhC009c4m3aVyIoW VTOw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=g+ltDoCNVr3mYe8UyFPpgaBRaBM4vyormBCXXZ5kL9c=; b=jy420bgWB4kkNTNQa8+BVcyclO3H/6OZpJtIgpKk72XvKSEpGBYQ6N12OCuKw/mTcX ZXWvUGLSXM2WBrluYTZBdDBA3DorKUOmqKs8NUhlm7f9f8yatlxXJlCUWfemP9CpJ6Rj tJEVaB4Ir8hedwyeCOcuVu3F+gKcVh3JmCmhkj0jWs7oRvmcADzbxPslMJXcp9zy5omI /CnSQwnyRS1vb/t1ZgEU9N+J/mxZ7QlsG4v5Sf9rerAbrM5PHGxd43d2p/YYH2QZwdr8 UHaio2tx3jWmGf+0DpBhhcWQZL88gCrKXPrGxUtsFdobtxesYI2ltfhcvEWODkGxwAPg nGHQ== X-Gm-Message-State: AOAM533WZvjvSdE5Exa4xUWUHTXvRIm/inKS0bPxG16Br6Wsm0iraLSx bg7dSfDgnsdXD26qWpVgKg+Wfrm+ X-Google-Smtp-Source: ABdhPJwwyHEdRm5qPPg0fiUspjWCAxPfQsvE70GijWSKJHHhICby+zWsJXn4XH9ReJcfVVDrZhO7vA== X-Received: by 2002:a17:902:6b86:: with SMTP id p6mr28619757plk.47.1593006242513; Wed, 24 Jun 2020 06:44:02 -0700 (PDT) Received: from vpn2.localdomain ([161.117.202.209]) by smtp.gmail.com with ESMTPSA id z144sm21622329pfc.195.2020.06.24.06.44.00 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 24 Jun 2020 06:44:01 -0700 (PDT) From: lance.lmwang@gmail.com To: ffmpeg-devel@ffmpeg.org Date: Wed, 24 Jun 2020 21:43:14 +0800 Message-Id: <1593006200-23911-1-git-send-email-lance.lmwang@gmail.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1592410030-6553-1-git-send-email-lance.lmwang@gmail.com> References: <1592410030-6553-1-git-send-email-lance.lmwang@gmail.com> Subject: [FFmpeg-devel] [PATCH v4 1/7] FATE: add h264 timecode side data test 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: Limin Wang MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From: Limin Wang The old fate test is for framecrc and haven't testing timecode info. so it's better to change to ffprobe and dump them. Signed-off-by: Limin Wang --- tests/fate/h264.mak | 4 +- tests/ref/fate/h264-timecode | 3608 ++++++++++++++++++++++++++++++++++++++---- 2 files changed, 3305 insertions(+), 307 deletions(-) diff --git a/tests/fate/h264.mak b/tests/fate/h264.mak index 13a596e..0bf6800 100644 --- a/tests/fate/h264.mak +++ b/tests/fate/h264.mak @@ -196,7 +196,6 @@ FATE_H264 := $(FATE_H264:%=fate-h264-conformance-%) \ fate-h264-3386 \ fate-h264-missing-frame \ fate-h264-ref-pic-mod-overflow \ - fate-h264-timecode \ fate-h264-encparams FATE_H264-$(call DEMDEC, H264, H264) += $(FATE_H264) @@ -228,6 +227,7 @@ FATE_H264-$(call DEMDEC, MXF, H264) += fate-h264-xavc-4389 FATE_H264-$(call DEMDEC, MOV, H264) += fate-h264-attachment-631 FATE_H264-$(call DEMDEC, MPEGTS, H264) += fate-h264-skip-nokey fate-h264-skip-nointra FATE_H264_FFPROBE-$(call DEMDEC, MATROSKA, H264) += fate-h264-dts_5frames +FATE_H264_FFPROBE-$(call DEMDEC, H264, H264) += fate-h264-timecode FATE_SAMPLES_AVCONV += $(FATE_H264-yes) FATE_SAMPLES_FFPROBE += $(FATE_H264_FFPROBE-yes) @@ -442,7 +442,7 @@ fate-h264-twofields-packet: CMD = framecrc -i $(TARGET_SAM fate-h264-unescaped-extradata: CMD = framecrc -i $(TARGET_SAMPLES)/h264/unescaped_extradata.mp4 -an -frames 10 fate-h264-3386: CMD = framecrc -i $(TARGET_SAMPLES)/h264/bbc2.sample.h264 fate-h264-missing-frame: CMD = framecrc -i $(TARGET_SAMPLES)/h264/nondeterministic_cut.h264 -fate-h264-timecode: CMD = framecrc -i $(TARGET_SAMPLES)/h264/crew_cif_timecode-2.h264 +fate-h264-timecode: CMD = probeframes -show_entries frame=side_data -select_streams v -i $(TARGET_SAMPLES)/h264/crew_cif_timecode-2.h264 fate-h264-reinit-%: CMD = framecrc -i $(TARGET_SAMPLES)/h264/$(@:fate-h264-%=%).h264 -vf format=yuv444p10le,scale=w=352:h=288 diff --git a/tests/ref/fate/h264-timecode b/tests/ref/fate/h264-timecode index b78f700..de97ed5 100644 --- a/tests/ref/fate/h264-timecode +++ b/tests/ref/fate/h264-timecode @@ -1,305 +1,3303 @@ -#tb 0: 1/30 -#media_type 0: video -#codec_id 0: rawvideo -#dimensions 0: 352x288 -#sar 0: 128/117 -0, 0, 0, 1, 152064, 0x70684c80 -0, 1, 1, 1, 152064, 0xb5c8b300 -0, 2, 2, 1, 152064, 0x5777ac60 -0, 3, 3, 1, 152064, 0xb27646a5 -0, 4, 4, 1, 152064, 0x20bd98ec -0, 5, 5, 1, 152064, 0xcf5ac1b0 -0, 6, 6, 1, 152064, 0x85a42952 -0, 7, 7, 1, 152064, 0xc25aa530 -0, 8, 8, 1, 152064, 0x97b14be9 -0, 9, 9, 1, 152064, 0xf67ec91a -0, 10, 10, 1, 152064, 0x3890d6a3 -0, 11, 11, 1, 152064, 0xc52c8467 -0, 12, 12, 1, 152064, 0x30a7af36 -0, 13, 13, 1, 152064, 0x27528a98 -0, 14, 14, 1, 152064, 0x245c08c5 -0, 15, 15, 1, 152064, 0x7e0220f3 -0, 16, 16, 1, 152064, 0x4b254c89 -0, 17, 17, 1, 152064, 0x1586e3e5 -0, 18, 18, 1, 152064, 0x594dfc58 -0, 19, 19, 1, 152064, 0x85ba9c8e -0, 20, 20, 1, 152064, 0x1e235100 -0, 21, 21, 1, 152064, 0xa02c6a72 -0, 22, 22, 1, 152064, 0xd1166fb6 -0, 23, 23, 1, 152064, 0xcc9b1546 -0, 24, 24, 1, 152064, 0x55e35a35 -0, 25, 25, 1, 152064, 0xea63e2ae -0, 26, 26, 1, 152064, 0x936a1802 -0, 27, 27, 1, 152064, 0x354a749c -0, 28, 28, 1, 152064, 0x5cd0f246 -0, 29, 29, 1, 152064, 0x0376e69b -0, 30, 30, 1, 152064, 0x5af5fb61 -0, 31, 31, 1, 152064, 0x9a053ab8 -0, 32, 32, 1, 152064, 0x57cbbfcc -0, 33, 33, 1, 152064, 0x81f19e93 -0, 34, 34, 1, 152064, 0x0812953d -0, 35, 35, 1, 152064, 0x0ae2a166 -0, 36, 36, 1, 152064, 0x193125b8 -0, 37, 37, 1, 152064, 0xab7eca7b -0, 38, 38, 1, 152064, 0x91ff1870 -0, 39, 39, 1, 152064, 0x8f522dde -0, 40, 40, 1, 152064, 0x98faab46 -0, 41, 41, 1, 152064, 0xa2119231 -0, 42, 42, 1, 152064, 0xfe591321 -0, 43, 43, 1, 152064, 0x6c8a1bf5 -0, 44, 44, 1, 152064, 0x857c925c -0, 45, 45, 1, 152064, 0xe81a77f2 -0, 46, 46, 1, 152064, 0x08234e83 -0, 47, 47, 1, 152064, 0x76cb39f6 -0, 48, 48, 1, 152064, 0x26168d25 -0, 49, 49, 1, 152064, 0x4dd3b273 -0, 50, 50, 1, 152064, 0xd6e8398e -0, 51, 51, 1, 152064, 0x55986a57 -0, 52, 52, 1, 152064, 0x9c2768fb -0, 53, 53, 1, 152064, 0x03517efe -0, 54, 54, 1, 152064, 0x3a48451f -0, 55, 55, 1, 152064, 0x1f6d6b87 -0, 56, 56, 1, 152064, 0x0917fb2a -0, 57, 57, 1, 152064, 0x0f49e7a9 -0, 58, 58, 1, 152064, 0x3c56d4e1 -0, 59, 59, 1, 152064, 0x487cca35 -0, 60, 60, 1, 152064, 0x5c6b8b1c -0, 61, 61, 1, 152064, 0x767d8a34 -0, 62, 62, 1, 152064, 0xcd8d692a -0, 63, 63, 1, 152064, 0x788b3ebf -0, 64, 64, 1, 152064, 0x4cae3852 -0, 65, 65, 1, 152064, 0x1150f0aa -0, 66, 66, 1, 152064, 0x9d4b3366 -0, 67, 67, 1, 152064, 0xedcb8863 -0, 68, 68, 1, 152064, 0x2c09ca8c -0, 69, 69, 1, 152064, 0x20930842 -0, 70, 70, 1, 152064, 0xd653b16f -0, 71, 71, 1, 152064, 0x41f38d77 -0, 72, 72, 1, 152064, 0xa5f69360 -0, 73, 73, 1, 152064, 0xf0f5ce27 -0, 74, 74, 1, 152064, 0xf2a6246c -0, 75, 75, 1, 152064, 0x7e76fabc -0, 76, 76, 1, 152064, 0xf76e1982 -0, 77, 77, 1, 152064, 0x40c1be5a -0, 78, 78, 1, 152064, 0x132ca50e -0, 79, 79, 1, 152064, 0xae0c69ed -0, 80, 80, 1, 152064, 0x5f775778 -0, 81, 81, 1, 152064, 0x62bb9790 -0, 82, 82, 1, 152064, 0x8b448e83 -0, 83, 83, 1, 152064, 0xcc35d9fe -0, 84, 84, 1, 152064, 0x51560127 -0, 85, 85, 1, 152064, 0xb915829b -0, 86, 86, 1, 152064, 0x3a3f2b0c -0, 87, 87, 1, 152064, 0x4e2d2260 -0, 88, 88, 1, 152064, 0x9fdb7567 -0, 89, 89, 1, 152064, 0xe34b2f4e -0, 90, 90, 1, 152064, 0x8650ec13 -0, 91, 91, 1, 152064, 0xdff3e299 -0, 92, 92, 1, 152064, 0x100f8f0c -0, 93, 93, 1, 152064, 0xa9aff101 -0, 94, 94, 1, 152064, 0xa80add4c -0, 95, 95, 1, 152064, 0xa7994880 -0, 96, 96, 1, 152064, 0xc74ecb79 -0, 97, 97, 1, 152064, 0xbada663d -0, 98, 98, 1, 152064, 0xff7f0592 -0, 99, 99, 1, 152064, 0x44731be5 -0, 100, 100, 1, 152064, 0x1a61f9ac -0, 101, 101, 1, 152064, 0x848ace19 -0, 102, 102, 1, 152064, 0x22858567 -0, 103, 103, 1, 152064, 0x2b3a9ba7 -0, 104, 104, 1, 152064, 0x02889774 -0, 105, 105, 1, 152064, 0x29a54516 -0, 106, 106, 1, 152064, 0x737f2833 -0, 107, 107, 1, 152064, 0x28b5a183 -0, 108, 108, 1, 152064, 0xaff9112a -0, 109, 109, 1, 152064, 0x0a7652b5 -0, 110, 110, 1, 152064, 0x03fa3e91 -0, 111, 111, 1, 152064, 0x9deade68 -0, 112, 112, 1, 152064, 0xb9af1a27 -0, 113, 113, 1, 152064, 0xe9f07f00 -0, 114, 114, 1, 152064, 0x1b03894a -0, 115, 115, 1, 152064, 0xf89e26c5 -0, 116, 116, 1, 152064, 0x6d6b5508 -0, 117, 117, 1, 152064, 0x735ce75d -0, 118, 118, 1, 152064, 0x30017005 -0, 119, 119, 1, 152064, 0x606ad5ab -0, 120, 120, 1, 152064, 0xb442ac30 -0, 121, 121, 1, 152064, 0xac321998 -0, 122, 122, 1, 152064, 0x4507990b -0, 123, 123, 1, 152064, 0xe40f986d -0, 124, 124, 1, 152064, 0xc9840540 -0, 125, 125, 1, 152064, 0x74cfbc82 -0, 126, 126, 1, 152064, 0x1ac9744b -0, 127, 127, 1, 152064, 0x8ac2a889 -0, 128, 128, 1, 152064, 0x3074a1bc -0, 129, 129, 1, 152064, 0x389ae633 -0, 130, 130, 1, 152064, 0xaadb4325 -0, 131, 131, 1, 152064, 0x7d1a91b5 -0, 132, 132, 1, 152064, 0xaa047ddc -0, 133, 133, 1, 152064, 0xe5cafebc -0, 134, 134, 1, 152064, 0x24314a0c -0, 135, 135, 1, 152064, 0x530cfa1c -0, 136, 136, 1, 152064, 0x3f973f68 -0, 137, 137, 1, 152064, 0xf51d3e20 -0, 138, 138, 1, 152064, 0x24aca84c -0, 139, 139, 1, 152064, 0x96b411e9 -0, 140, 140, 1, 152064, 0x6d046ea3 -0, 141, 141, 1, 152064, 0x9237974f -0, 142, 142, 1, 152064, 0x0a808964 -0, 143, 143, 1, 152064, 0x9d6ad957 -0, 144, 144, 1, 152064, 0x9d6381ea -0, 145, 145, 1, 152064, 0xfeceab64 -0, 146, 146, 1, 152064, 0x7fa00e6f -0, 147, 147, 1, 152064, 0x635ac444 -0, 148, 148, 1, 152064, 0xf0db3036 -0, 149, 149, 1, 152064, 0xc5ddef73 -0, 150, 150, 1, 152064, 0x7fea7516 -0, 151, 151, 1, 152064, 0x7f3f7460 -0, 152, 152, 1, 152064, 0x446dfa20 -0, 153, 153, 1, 152064, 0x5d7167c4 -0, 154, 154, 1, 152064, 0xf9da05b7 -0, 155, 155, 1, 152064, 0xc007383d -0, 156, 156, 1, 152064, 0xbf461f08 -0, 157, 157, 1, 152064, 0xf722508f -0, 158, 158, 1, 152064, 0x2699fa56 -0, 159, 159, 1, 152064, 0xa49ca6d8 -0, 160, 160, 1, 152064, 0x58f70dfd -0, 161, 161, 1, 152064, 0x391383db -0, 162, 162, 1, 152064, 0xb859f2fd -0, 163, 163, 1, 152064, 0xbb77d0a7 -0, 164, 164, 1, 152064, 0xd4c9881d -0, 165, 165, 1, 152064, 0xb46d7272 -0, 166, 166, 1, 152064, 0x78237e5e -0, 167, 167, 1, 152064, 0xbcd9f633 -0, 168, 168, 1, 152064, 0x17e09080 -0, 169, 169, 1, 152064, 0x4a9bdacf -0, 170, 170, 1, 152064, 0x600c972f -0, 171, 171, 1, 152064, 0x858e399a -0, 172, 172, 1, 152064, 0xf9ef200d -0, 173, 173, 1, 152064, 0x6aec0fda -0, 174, 174, 1, 152064, 0x4d7ba9a8 -0, 175, 175, 1, 152064, 0x0df5dbdb -0, 176, 176, 1, 152064, 0x77d598f8 -0, 177, 177, 1, 152064, 0x7d78c129 -0, 178, 178, 1, 152064, 0xf6b79ad2 -0, 179, 179, 1, 152064, 0x2b458750 -0, 180, 180, 1, 152064, 0xdbec9727 -0, 181, 181, 1, 152064, 0xcb073a1a -0, 182, 182, 1, 152064, 0xa95e913a -0, 183, 183, 1, 152064, 0x5ca9da6e -0, 184, 184, 1, 152064, 0x82e09caf -0, 185, 185, 1, 152064, 0x319f59c5 -0, 186, 186, 1, 152064, 0x11003b19 -0, 187, 187, 1, 152064, 0xcdfc5077 -0, 188, 188, 1, 152064, 0xa56fc40d -0, 189, 189, 1, 152064, 0x3d2425dc -0, 190, 190, 1, 152064, 0x907f51d3 -0, 191, 191, 1, 152064, 0xc52dc2dc -0, 192, 192, 1, 152064, 0xea800778 -0, 193, 193, 1, 152064, 0xc0b022f9 -0, 194, 194, 1, 152064, 0x106b4ea2 -0, 195, 195, 1, 152064, 0x50c6cbf2 -0, 196, 196, 1, 152064, 0x480711b5 -0, 197, 197, 1, 152064, 0x1954bca7 -0, 198, 198, 1, 152064, 0x7894a1c1 -0, 199, 199, 1, 152064, 0xaa39601a -0, 200, 200, 1, 152064, 0x07652fa2 -0, 201, 201, 1, 152064, 0x84ac1bce -0, 202, 202, 1, 152064, 0x89104737 -0, 203, 203, 1, 152064, 0x832bf2b0 -0, 204, 204, 1, 152064, 0x45fa87f4 -0, 205, 205, 1, 152064, 0xde5b6e82 -0, 206, 206, 1, 152064, 0x8d88f89b -0, 207, 207, 1, 152064, 0xba6488c8 -0, 208, 208, 1, 152064, 0xd9bc3312 -0, 209, 209, 1, 152064, 0xdba30d10 -0, 210, 210, 1, 152064, 0xd208cb34 -0, 211, 211, 1, 152064, 0x0642aadc -0, 212, 212, 1, 152064, 0xf392e67a -0, 213, 213, 1, 152064, 0xec6041d0 -0, 214, 214, 1, 152064, 0x52463e92 -0, 215, 215, 1, 152064, 0x218174a8 -0, 216, 216, 1, 152064, 0x9408f728 -0, 217, 217, 1, 152064, 0xabd31db7 -0, 218, 218, 1, 152064, 0x3e72f003 -0, 219, 219, 1, 152064, 0x638e603b -0, 220, 220, 1, 152064, 0xf1f896c7 -0, 221, 221, 1, 152064, 0x786554ff -0, 222, 222, 1, 152064, 0x9bb909f5 -0, 223, 223, 1, 152064, 0x726cf59e -0, 224, 224, 1, 152064, 0xc18c15a1 -0, 225, 225, 1, 152064, 0x45ea8f83 -0, 226, 226, 1, 152064, 0xcb88e67a -0, 227, 227, 1, 152064, 0x18d09432 -0, 228, 228, 1, 152064, 0x99d02a0a -0, 229, 229, 1, 152064, 0x7ddc3691 -0, 230, 230, 1, 152064, 0x47710c00 -0, 231, 231, 1, 152064, 0xe28646c7 -0, 232, 232, 1, 152064, 0xe8a2a4e5 -0, 233, 233, 1, 152064, 0xed19f345 -0, 234, 234, 1, 152064, 0xceffaf7f -0, 235, 235, 1, 152064, 0x8d116def -0, 236, 236, 1, 152064, 0xccb68ae8 -0, 237, 237, 1, 152064, 0x3529b3db -0, 238, 238, 1, 152064, 0x529911b8 -0, 239, 239, 1, 152064, 0x3a676438 -0, 240, 240, 1, 152064, 0x18508f5d -0, 241, 241, 1, 152064, 0x4577d18b -0, 242, 242, 1, 152064, 0x420f5881 -0, 243, 243, 1, 152064, 0x60341b86 -0, 244, 244, 1, 152064, 0x2f51de6a -0, 245, 245, 1, 152064, 0xc70bbf8d -0, 246, 246, 1, 152064, 0xc1ff63f7 -0, 247, 247, 1, 152064, 0x2dc1662b -0, 248, 248, 1, 152064, 0x1bbb3b70 -0, 249, 249, 1, 152064, 0x74f44ec2 -0, 250, 250, 1, 152064, 0x9b93084e -0, 251, 251, 1, 152064, 0x1493f82d -0, 252, 252, 1, 152064, 0x069d9869 -0, 253, 253, 1, 152064, 0xc9a4f706 -0, 254, 254, 1, 152064, 0xf80092ed -0, 255, 255, 1, 152064, 0xdc347577 -0, 256, 256, 1, 152064, 0x1df12299 -0, 257, 257, 1, 152064, 0x40d19951 -0, 258, 258, 1, 152064, 0xfb63dbf1 -0, 259, 259, 1, 152064, 0x9153714c -0, 260, 260, 1, 152064, 0x6cfd514c -0, 261, 261, 1, 152064, 0xc0ef7bf3 -0, 262, 262, 1, 152064, 0x5fce6828 -0, 263, 263, 1, 152064, 0xe7d0074d -0, 264, 264, 1, 152064, 0x9e3f7351 -0, 265, 265, 1, 152064, 0x3a0c5d56 -0, 266, 266, 1, 152064, 0xd5581f3c -0, 267, 267, 1, 152064, 0x9a4ec0d1 -0, 268, 268, 1, 152064, 0x150b9a54 -0, 269, 269, 1, 152064, 0x950eb994 -0, 270, 270, 1, 152064, 0xda31e3bf -0, 271, 271, 1, 152064, 0x14ff5d3c -0, 272, 272, 1, 152064, 0xd593bafc -0, 273, 273, 1, 152064, 0xd4cf7c58 -0, 274, 274, 1, 152064, 0x2be70997 -0, 275, 275, 1, 152064, 0xe551703b -0, 276, 276, 1, 152064, 0x7adaf447 -0, 277, 277, 1, 152064, 0x0435ea0f -0, 278, 278, 1, 152064, 0x87e5bba1 -0, 279, 279, 1, 152064, 0xea1fdf88 -0, 280, 280, 1, 152064, 0xaea5b4c4 -0, 281, 281, 1, 152064, 0x32f79e89 -0, 282, 282, 1, 152064, 0xcd5694bc -0, 283, 283, 1, 152064, 0x6b12830f -0, 284, 284, 1, 152064, 0xaf681652 -0, 285, 285, 1, 152064, 0x3b26e20b -0, 286, 286, 1, 152064, 0x2a9eee33 -0, 287, 287, 1, 152064, 0x8d5fe982 -0, 288, 288, 1, 152064, 0xa4cb5d02 -0, 289, 289, 1, 152064, 0x867dd0b0 -0, 290, 290, 1, 152064, 0x23c885e9 -0, 291, 291, 1, 152064, 0x99fd7b2b -0, 292, 292, 1, 152064, 0xa710e871 -0, 293, 293, 1, 152064, 0x3ecbaaeb -0, 294, 294, 1, 152064, 0x3d1c7de2 -0, 295, 295, 1, 152064, 0x378935f3 -0, 296, 296, 1, 152064, 0xce893553 -0, 297, 297, 1, 152064, 0xa834374c -0, 298, 298, 1, 152064, 0x665094f4 -0, 299, 299, 1, 152064, 0x3fee89c6 +[FRAME] +[SIDE_DATA] +side_data_type=H.26[45] User Data Unregistered SEI message +[/SIDE_DATA] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:00:00 +[/TIMECODE] +[TIMECODE] +value=00:00:00:00 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:00:01 +[/TIMECODE] +[TIMECODE] +value=00:00:00:01 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:00:02 +[/TIMECODE] +[TIMECODE] +value=00:00:00:02 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:00:03 +[/TIMECODE] +[TIMECODE] +value=00:00:00:03 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:00:04 +[/TIMECODE] +[TIMECODE] +value=00:00:00:04 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:00:05 +[/TIMECODE] +[TIMECODE] +value=00:00:00:05 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:00:06 +[/TIMECODE] +[TIMECODE] +value=00:00:00:06 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:00:07 +[/TIMECODE] +[TIMECODE] +value=00:00:00:07 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:00:08 +[/TIMECODE] +[TIMECODE] +value=00:00:00:08 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:00:09 +[/TIMECODE] +[TIMECODE] +value=00:00:00:09 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:00:10 +[/TIMECODE] +[TIMECODE] +value=00:00:00:10 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:00:11 +[/TIMECODE] +[TIMECODE] +value=00:00:00:11 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:00:12 +[/TIMECODE] +[TIMECODE] +value=00:00:00:12 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:00:13 +[/TIMECODE] +[TIMECODE] +value=00:00:00:13 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:00:14 +[/TIMECODE] +[TIMECODE] +value=00:00:00:14 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:00:15 +[/TIMECODE] +[TIMECODE] +value=00:00:00:15 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:00:16 +[/TIMECODE] +[TIMECODE] +value=00:00:00:16 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:00:17 +[/TIMECODE] +[TIMECODE] +value=00:00:00:17 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:00:18 +[/TIMECODE] +[TIMECODE] +value=00:00:00:18 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:00:19 +[/TIMECODE] +[TIMECODE] +value=00:00:00:19 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:00:20 +[/TIMECODE] +[TIMECODE] +value=00:00:00:20 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:00:21 +[/TIMECODE] +[TIMECODE] +value=00:00:00:21 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:00:22 +[/TIMECODE] +[TIMECODE] +value=00:00:00:22 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:00:23 +[/TIMECODE] +[TIMECODE] +value=00:00:00:23 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:00:24 +[/TIMECODE] +[TIMECODE] +value=00:00:00:24 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:00:25 +[/TIMECODE] +[TIMECODE] +value=00:00:00:25 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:00:26 +[/TIMECODE] +[TIMECODE] +value=00:00:00:26 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:00:27 +[/TIMECODE] +[TIMECODE] +value=00:00:00:27 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:00:28 +[/TIMECODE] +[TIMECODE] +value=00:00:00:28 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:00:29 +[/TIMECODE] +[TIMECODE] +value=00:00:00:29 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:01:00 +[/TIMECODE] +[TIMECODE] +value=00:00:01:00 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:01:01 +[/TIMECODE] +[TIMECODE] +value=00:00:01:01 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:01:02 +[/TIMECODE] +[TIMECODE] +value=00:00:01:02 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:01:03 +[/TIMECODE] +[TIMECODE] +value=00:00:01:03 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:01:04 +[/TIMECODE] +[TIMECODE] +value=00:00:01:04 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:01:05 +[/TIMECODE] +[TIMECODE] +value=00:00:01:05 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:01:06 +[/TIMECODE] +[TIMECODE] +value=00:00:01:06 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:01:07 +[/TIMECODE] +[TIMECODE] +value=00:00:01:07 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:01:08 +[/TIMECODE] +[TIMECODE] +value=00:00:01:08 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:01:09 +[/TIMECODE] +[TIMECODE] +value=00:00:01:09 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:01:10 +[/TIMECODE] +[TIMECODE] +value=00:00:01:10 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:01:11 +[/TIMECODE] +[TIMECODE] +value=00:00:01:11 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:01:12 +[/TIMECODE] +[TIMECODE] +value=00:00:01:12 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:01:13 +[/TIMECODE] +[TIMECODE] +value=00:00:01:13 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:01:14 +[/TIMECODE] +[TIMECODE] +value=00:00:01:14 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:01:15 +[/TIMECODE] +[TIMECODE] +value=00:00:01:15 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:01:16 +[/TIMECODE] +[TIMECODE] +value=00:00:01:16 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:01:17 +[/TIMECODE] +[TIMECODE] +value=00:00:01:17 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:01:18 +[/TIMECODE] +[TIMECODE] +value=00:00:01:18 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:01:19 +[/TIMECODE] +[TIMECODE] +value=00:00:01:19 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:01:20 +[/TIMECODE] +[TIMECODE] +value=00:00:01:20 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:01:21 +[/TIMECODE] +[TIMECODE] +value=00:00:01:21 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:01:22 +[/TIMECODE] +[TIMECODE] +value=00:00:01:22 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:01:23 +[/TIMECODE] +[TIMECODE] +value=00:00:01:23 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:01:24 +[/TIMECODE] +[TIMECODE] +value=00:00:01:24 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:01:25 +[/TIMECODE] +[TIMECODE] +value=00:00:01:25 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:01:26 +[/TIMECODE] +[TIMECODE] +value=00:00:01:26 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:01:27 +[/TIMECODE] +[TIMECODE] +value=00:00:01:27 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:01:28 +[/TIMECODE] +[TIMECODE] +value=00:00:01:28 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:01:29 +[/TIMECODE] +[TIMECODE] +value=00:00:01:29 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:02:00 +[/TIMECODE] +[TIMECODE] +value=00:00:02:00 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:02:01 +[/TIMECODE] +[TIMECODE] +value=00:00:02:01 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:02:02 +[/TIMECODE] +[TIMECODE] +value=00:00:02:02 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:02:03 +[/TIMECODE] +[TIMECODE] +value=00:00:02:03 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:02:04 +[/TIMECODE] +[TIMECODE] +value=00:00:02:04 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:02:05 +[/TIMECODE] +[TIMECODE] +value=00:00:02:05 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:02:06 +[/TIMECODE] +[TIMECODE] +value=00:00:02:06 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:02:07 +[/TIMECODE] +[TIMECODE] +value=00:00:02:07 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:02:08 +[/TIMECODE] +[TIMECODE] +value=00:00:02:08 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:02:09 +[/TIMECODE] +[TIMECODE] +value=00:00:02:09 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:02:10 +[/TIMECODE] +[TIMECODE] +value=00:00:02:10 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:02:11 +[/TIMECODE] +[TIMECODE] +value=00:00:02:11 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:02:12 +[/TIMECODE] +[TIMECODE] +value=00:00:02:12 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:02:13 +[/TIMECODE] +[TIMECODE] +value=00:00:02:13 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:02:14 +[/TIMECODE] +[TIMECODE] +value=00:00:02:14 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:02:15 +[/TIMECODE] +[TIMECODE] +value=00:00:02:15 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:02:16 +[/TIMECODE] +[TIMECODE] +value=00:00:02:16 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:02:17 +[/TIMECODE] +[TIMECODE] +value=00:00:02:17 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:02:18 +[/TIMECODE] +[TIMECODE] +value=00:00:02:18 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:02:19 +[/TIMECODE] +[TIMECODE] +value=00:00:02:19 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:02:20 +[/TIMECODE] +[TIMECODE] +value=00:00:02:20 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:02:21 +[/TIMECODE] +[TIMECODE] +value=00:00:02:21 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:02:22 +[/TIMECODE] +[TIMECODE] +value=00:00:02:22 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:02:23 +[/TIMECODE] +[TIMECODE] +value=00:00:02:23 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:02:24 +[/TIMECODE] +[TIMECODE] +value=00:00:02:24 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:02:25 +[/TIMECODE] +[TIMECODE] +value=00:00:02:25 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:02:26 +[/TIMECODE] +[TIMECODE] +value=00:00:02:26 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:02:27 +[/TIMECODE] +[TIMECODE] +value=00:00:02:27 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:02:28 +[/TIMECODE] +[TIMECODE] +value=00:00:02:28 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:02:29 +[/TIMECODE] +[TIMECODE] +value=00:00:02:29 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:03:00 +[/TIMECODE] +[TIMECODE] +value=00:00:03:00 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:03:01 +[/TIMECODE] +[TIMECODE] +value=00:00:03:01 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:03:02 +[/TIMECODE] +[TIMECODE] +value=00:00:03:02 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:03:03 +[/TIMECODE] +[TIMECODE] +value=00:00:03:03 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:03:04 +[/TIMECODE] +[TIMECODE] +value=00:00:03:04 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:03:05 +[/TIMECODE] +[TIMECODE] +value=00:00:03:05 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:03:06 +[/TIMECODE] +[TIMECODE] +value=00:00:03:06 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:03:07 +[/TIMECODE] +[TIMECODE] +value=00:00:03:07 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:03:08 +[/TIMECODE] +[TIMECODE] +value=00:00:03:08 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:03:09 +[/TIMECODE] +[TIMECODE] +value=00:00:03:09 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:03:10 +[/TIMECODE] +[TIMECODE] +value=00:00:03:10 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:03:11 +[/TIMECODE] +[TIMECODE] +value=00:00:03:11 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:03:12 +[/TIMECODE] +[TIMECODE] +value=00:00:03:12 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:03:13 +[/TIMECODE] +[TIMECODE] +value=00:00:03:13 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:03:14 +[/TIMECODE] +[TIMECODE] +value=00:00:03:14 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:03:15 +[/TIMECODE] +[TIMECODE] +value=00:00:03:15 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:03:16 +[/TIMECODE] +[TIMECODE] +value=00:00:03:16 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:03:17 +[/TIMECODE] +[TIMECODE] +value=00:00:03:17 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:03:18 +[/TIMECODE] +[TIMECODE] +value=00:00:03:18 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:03:19 +[/TIMECODE] +[TIMECODE] +value=00:00:03:19 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:03:20 +[/TIMECODE] +[TIMECODE] +value=00:00:03:20 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:03:21 +[/TIMECODE] +[TIMECODE] +value=00:00:03:21 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:03:22 +[/TIMECODE] +[TIMECODE] +value=00:00:03:22 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:03:23 +[/TIMECODE] +[TIMECODE] +value=00:00:03:23 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:03:24 +[/TIMECODE] +[TIMECODE] +value=00:00:03:24 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:03:25 +[/TIMECODE] +[TIMECODE] +value=00:00:03:25 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:03:26 +[/TIMECODE] +[TIMECODE] +value=00:00:03:26 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:03:27 +[/TIMECODE] +[TIMECODE] +value=00:00:03:27 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:03:28 +[/TIMECODE] +[TIMECODE] +value=00:00:03:28 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:03:29 +[/TIMECODE] +[TIMECODE] +value=00:00:03:29 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:04:00 +[/TIMECODE] +[TIMECODE] +value=00:00:04:00 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:04:01 +[/TIMECODE] +[TIMECODE] +value=00:00:04:01 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:04:02 +[/TIMECODE] +[TIMECODE] +value=00:00:04:02 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:04:03 +[/TIMECODE] +[TIMECODE] +value=00:00:04:03 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:04:04 +[/TIMECODE] +[TIMECODE] +value=00:00:04:04 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:04:05 +[/TIMECODE] +[TIMECODE] +value=00:00:04:05 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:04:06 +[/TIMECODE] +[TIMECODE] +value=00:00:04:06 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:04:07 +[/TIMECODE] +[TIMECODE] +value=00:00:04:07 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:04:08 +[/TIMECODE] +[TIMECODE] +value=00:00:04:08 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:04:09 +[/TIMECODE] +[TIMECODE] +value=00:00:04:09 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:04:10 +[/TIMECODE] +[TIMECODE] +value=00:00:04:10 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:04:11 +[/TIMECODE] +[TIMECODE] +value=00:00:04:11 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:04:12 +[/TIMECODE] +[TIMECODE] +value=00:00:04:12 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:04:13 +[/TIMECODE] +[TIMECODE] +value=00:00:04:13 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:04:14 +[/TIMECODE] +[TIMECODE] +value=00:00:04:14 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:04:15 +[/TIMECODE] +[TIMECODE] +value=00:00:04:15 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:04:16 +[/TIMECODE] +[TIMECODE] +value=00:00:04:16 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:04:17 +[/TIMECODE] +[TIMECODE] +value=00:00:04:17 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:04:18 +[/TIMECODE] +[TIMECODE] +value=00:00:04:18 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:04:19 +[/TIMECODE] +[TIMECODE] +value=00:00:04:19 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:04:20 +[/TIMECODE] +[TIMECODE] +value=00:00:04:20 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:04:21 +[/TIMECODE] +[TIMECODE] +value=00:00:04:21 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:04:22 +[/TIMECODE] +[TIMECODE] +value=00:00:04:22 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:04:23 +[/TIMECODE] +[TIMECODE] +value=00:00:04:23 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:04:24 +[/TIMECODE] +[TIMECODE] +value=00:00:04:24 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:04:25 +[/TIMECODE] +[TIMECODE] +value=00:00:04:25 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:04:26 +[/TIMECODE] +[TIMECODE] +value=00:00:04:26 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:04:27 +[/TIMECODE] +[TIMECODE] +value=00:00:04:27 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:04:28 +[/TIMECODE] +[TIMECODE] +value=00:00:04:28 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:04:29 +[/TIMECODE] +[TIMECODE] +value=00:00:04:29 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:05:00 +[/TIMECODE] +[TIMECODE] +value=00:00:05:00 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:05:01 +[/TIMECODE] +[TIMECODE] +value=00:00:05:01 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:05:02 +[/TIMECODE] +[TIMECODE] +value=00:00:05:02 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:05:03 +[/TIMECODE] +[TIMECODE] +value=00:00:05:03 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:05:04 +[/TIMECODE] +[TIMECODE] +value=00:00:05:04 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:05:05 +[/TIMECODE] +[TIMECODE] +value=00:00:05:05 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:05:06 +[/TIMECODE] +[TIMECODE] +value=00:00:05:06 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:05:07 +[/TIMECODE] +[TIMECODE] +value=00:00:05:07 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:05:08 +[/TIMECODE] +[TIMECODE] +value=00:00:05:08 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:05:09 +[/TIMECODE] +[TIMECODE] +value=00:00:05:09 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:05:10 +[/TIMECODE] +[TIMECODE] +value=00:00:05:10 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:05:11 +[/TIMECODE] +[TIMECODE] +value=00:00:05:11 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:05:12 +[/TIMECODE] +[TIMECODE] +value=00:00:05:12 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:05:13 +[/TIMECODE] +[TIMECODE] +value=00:00:05:13 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:05:14 +[/TIMECODE] +[TIMECODE] +value=00:00:05:14 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:05:15 +[/TIMECODE] +[TIMECODE] +value=00:00:05:15 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:05:16 +[/TIMECODE] +[TIMECODE] +value=00:00:05:16 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:05:17 +[/TIMECODE] +[TIMECODE] +value=00:00:05:17 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:05:18 +[/TIMECODE] +[TIMECODE] +value=00:00:05:18 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:05:19 +[/TIMECODE] +[TIMECODE] +value=00:00:05:19 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:05:20 +[/TIMECODE] +[TIMECODE] +value=00:00:05:20 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:05:21 +[/TIMECODE] +[TIMECODE] +value=00:00:05:21 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:05:22 +[/TIMECODE] +[TIMECODE] +value=00:00:05:22 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:05:23 +[/TIMECODE] +[TIMECODE] +value=00:00:05:23 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:05:24 +[/TIMECODE] +[TIMECODE] +value=00:00:05:24 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:05:25 +[/TIMECODE] +[TIMECODE] +value=00:00:05:25 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:05:26 +[/TIMECODE] +[TIMECODE] +value=00:00:05:26 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:05:27 +[/TIMECODE] +[TIMECODE] +value=00:00:05:27 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:05:28 +[/TIMECODE] +[TIMECODE] +value=00:00:05:28 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:05:29 +[/TIMECODE] +[TIMECODE] +value=00:00:05:29 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:06:00 +[/TIMECODE] +[TIMECODE] +value=00:00:06:00 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:06:01 +[/TIMECODE] +[TIMECODE] +value=00:00:06:01 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:06:02 +[/TIMECODE] +[TIMECODE] +value=00:00:06:02 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:06:03 +[/TIMECODE] +[TIMECODE] +value=00:00:06:03 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:06:04 +[/TIMECODE] +[TIMECODE] +value=00:00:06:04 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:06:05 +[/TIMECODE] +[TIMECODE] +value=00:00:06:05 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:06:06 +[/TIMECODE] +[TIMECODE] +value=00:00:06:06 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:06:07 +[/TIMECODE] +[TIMECODE] +value=00:00:06:07 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:06:08 +[/TIMECODE] +[TIMECODE] +value=00:00:06:08 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:06:09 +[/TIMECODE] +[TIMECODE] +value=00:00:06:09 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:06:10 +[/TIMECODE] +[TIMECODE] +value=00:00:06:10 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:06:11 +[/TIMECODE] +[TIMECODE] +value=00:00:06:11 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:06:12 +[/TIMECODE] +[TIMECODE] +value=00:00:06:12 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:06:13 +[/TIMECODE] +[TIMECODE] +value=00:00:06:13 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:06:14 +[/TIMECODE] +[TIMECODE] +value=00:00:06:14 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:06:15 +[/TIMECODE] +[TIMECODE] +value=00:00:06:15 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:06:16 +[/TIMECODE] +[TIMECODE] +value=00:00:06:16 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:06:17 +[/TIMECODE] +[TIMECODE] +value=00:00:06:17 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:06:18 +[/TIMECODE] +[TIMECODE] +value=00:00:06:18 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:06:19 +[/TIMECODE] +[TIMECODE] +value=00:00:06:19 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:06:20 +[/TIMECODE] +[TIMECODE] +value=00:00:06:20 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:06:21 +[/TIMECODE] +[TIMECODE] +value=00:00:06:21 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:06:22 +[/TIMECODE] +[TIMECODE] +value=00:00:06:22 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:06:23 +[/TIMECODE] +[TIMECODE] +value=00:00:06:23 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:06:24 +[/TIMECODE] +[TIMECODE] +value=00:00:06:24 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:06:25 +[/TIMECODE] +[TIMECODE] +value=00:00:06:25 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:06:26 +[/TIMECODE] +[TIMECODE] +value=00:00:06:26 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:06:27 +[/TIMECODE] +[TIMECODE] +value=00:00:06:27 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:06:28 +[/TIMECODE] +[TIMECODE] +value=00:00:06:28 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:06:29 +[/TIMECODE] +[TIMECODE] +value=00:00:06:29 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:07:00 +[/TIMECODE] +[TIMECODE] +value=00:00:07:00 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:07:01 +[/TIMECODE] +[TIMECODE] +value=00:00:07:01 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:07:02 +[/TIMECODE] +[TIMECODE] +value=00:00:07:02 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:07:03 +[/TIMECODE] +[TIMECODE] +value=00:00:07:03 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:07:04 +[/TIMECODE] +[TIMECODE] +value=00:00:07:04 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:07:05 +[/TIMECODE] +[TIMECODE] +value=00:00:07:05 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:07:06 +[/TIMECODE] +[TIMECODE] +value=00:00:07:06 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:07:07 +[/TIMECODE] +[TIMECODE] +value=00:00:07:07 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:07:08 +[/TIMECODE] +[TIMECODE] +value=00:00:07:08 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:07:09 +[/TIMECODE] +[TIMECODE] +value=00:00:07:09 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:07:10 +[/TIMECODE] +[TIMECODE] +value=00:00:07:10 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:07:11 +[/TIMECODE] +[TIMECODE] +value=00:00:07:11 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:07:12 +[/TIMECODE] +[TIMECODE] +value=00:00:07:12 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:07:13 +[/TIMECODE] +[TIMECODE] +value=00:00:07:13 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:07:14 +[/TIMECODE] +[TIMECODE] +value=00:00:07:14 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:07:15 +[/TIMECODE] +[TIMECODE] +value=00:00:07:15 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:07:16 +[/TIMECODE] +[TIMECODE] +value=00:00:07:16 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:07:17 +[/TIMECODE] +[TIMECODE] +value=00:00:07:17 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:07:18 +[/TIMECODE] +[TIMECODE] +value=00:00:07:18 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:07:19 +[/TIMECODE] +[TIMECODE] +value=00:00:07:19 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:07:20 +[/TIMECODE] +[TIMECODE] +value=00:00:07:20 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:07:21 +[/TIMECODE] +[TIMECODE] +value=00:00:07:21 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:07:22 +[/TIMECODE] +[TIMECODE] +value=00:00:07:22 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:07:23 +[/TIMECODE] +[TIMECODE] +value=00:00:07:23 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:07:24 +[/TIMECODE] +[TIMECODE] +value=00:00:07:24 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:07:25 +[/TIMECODE] +[TIMECODE] +value=00:00:07:25 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:07:26 +[/TIMECODE] +[TIMECODE] +value=00:00:07:26 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:07:27 +[/TIMECODE] +[TIMECODE] +value=00:00:07:27 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:07:28 +[/TIMECODE] +[TIMECODE] +value=00:00:07:28 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:07:29 +[/TIMECODE] +[TIMECODE] +value=00:00:07:29 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:08:00 +[/TIMECODE] +[TIMECODE] +value=00:00:08:00 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:08:01 +[/TIMECODE] +[TIMECODE] +value=00:00:08:01 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:08:02 +[/TIMECODE] +[TIMECODE] +value=00:00:08:02 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:08:03 +[/TIMECODE] +[TIMECODE] +value=00:00:08:03 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:08:04 +[/TIMECODE] +[TIMECODE] +value=00:00:08:04 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:08:05 +[/TIMECODE] +[TIMECODE] +value=00:00:08:05 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:08:06 +[/TIMECODE] +[TIMECODE] +value=00:00:08:06 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:08:07 +[/TIMECODE] +[TIMECODE] +value=00:00:08:07 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:08:08 +[/TIMECODE] +[TIMECODE] +value=00:00:08:08 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:08:09 +[/TIMECODE] +[TIMECODE] +value=00:00:08:09 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:08:10 +[/TIMECODE] +[TIMECODE] +value=00:00:08:10 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:08:11 +[/TIMECODE] +[TIMECODE] +value=00:00:08:11 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:08:12 +[/TIMECODE] +[TIMECODE] +value=00:00:08:12 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:08:13 +[/TIMECODE] +[TIMECODE] +value=00:00:08:13 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:08:14 +[/TIMECODE] +[TIMECODE] +value=00:00:08:14 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:08:15 +[/TIMECODE] +[TIMECODE] +value=00:00:08:15 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:08:16 +[/TIMECODE] +[TIMECODE] +value=00:00:08:16 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:08:17 +[/TIMECODE] +[TIMECODE] +value=00:00:08:17 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:08:18 +[/TIMECODE] +[TIMECODE] +value=00:00:08:18 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:08:19 +[/TIMECODE] +[TIMECODE] +value=00:00:08:19 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:08:20 +[/TIMECODE] +[TIMECODE] +value=00:00:08:20 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:08:21 +[/TIMECODE] +[TIMECODE] +value=00:00:08:21 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:08:22 +[/TIMECODE] +[TIMECODE] +value=00:00:08:22 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:08:23 +[/TIMECODE] +[TIMECODE] +value=00:00:08:23 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:08:24 +[/TIMECODE] +[TIMECODE] +value=00:00:08:24 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:08:25 +[/TIMECODE] +[TIMECODE] +value=00:00:08:25 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:08:26 +[/TIMECODE] +[TIMECODE] +value=00:00:08:26 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:08:27 +[/TIMECODE] +[TIMECODE] +value=00:00:08:27 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:08:28 +[/TIMECODE] +[TIMECODE] +value=00:00:08:28 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:08:29 +[/TIMECODE] +[TIMECODE] +value=00:00:08:29 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:09:00 +[/TIMECODE] +[TIMECODE] +value=00:00:09:00 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:09:01 +[/TIMECODE] +[TIMECODE] +value=00:00:09:01 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:09:02 +[/TIMECODE] +[TIMECODE] +value=00:00:09:02 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:09:03 +[/TIMECODE] +[TIMECODE] +value=00:00:09:03 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:09:04 +[/TIMECODE] +[TIMECODE] +value=00:00:09:04 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:09:05 +[/TIMECODE] +[TIMECODE] +value=00:00:09:05 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:09:06 +[/TIMECODE] +[TIMECODE] +value=00:00:09:06 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:09:07 +[/TIMECODE] +[TIMECODE] +value=00:00:09:07 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:09:08 +[/TIMECODE] +[TIMECODE] +value=00:00:09:08 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:09:09 +[/TIMECODE] +[TIMECODE] +value=00:00:09:09 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:09:10 +[/TIMECODE] +[TIMECODE] +value=00:00:09:10 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:09:11 +[/TIMECODE] +[TIMECODE] +value=00:00:09:11 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:09:12 +[/TIMECODE] +[TIMECODE] +value=00:00:09:12 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:09:13 +[/TIMECODE] +[TIMECODE] +value=00:00:09:13 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:09:14 +[/TIMECODE] +[TIMECODE] +value=00:00:09:14 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:09:15 +[/TIMECODE] +[TIMECODE] +value=00:00:09:15 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:09:16 +[/TIMECODE] +[TIMECODE] +value=00:00:09:16 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:09:17 +[/TIMECODE] +[TIMECODE] +value=00:00:09:17 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:09:18 +[/TIMECODE] +[TIMECODE] +value=00:00:09:18 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:09:19 +[/TIMECODE] +[TIMECODE] +value=00:00:09:19 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:09:20 +[/TIMECODE] +[TIMECODE] +value=00:00:09:20 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:09:21 +[/TIMECODE] +[TIMECODE] +value=00:00:09:21 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:09:22 +[/TIMECODE] +[TIMECODE] +value=00:00:09:22 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:09:23 +[/TIMECODE] +[TIMECODE] +value=00:00:09:23 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:09:24 +[/TIMECODE] +[TIMECODE] +value=00:00:09:24 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:09:25 +[/TIMECODE] +[TIMECODE] +value=00:00:09:25 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:09:26 +[/TIMECODE] +[TIMECODE] +value=00:00:09:26 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:09:27 +[/TIMECODE] +[TIMECODE] +value=00:00:09:27 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:09:28 +[/TIMECODE] +[TIMECODE] +value=00:00:09:28 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:09:29 +[/TIMECODE] +[TIMECODE] +value=00:00:09:29 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] From patchwork Wed Jun 24 13:43:15 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lance Wang X-Patchwork-Id: 20570 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 5E1A144AEEF for ; Wed, 24 Jun 2020 16:44:13 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 3778168B56C; Wed, 24 Jun 2020 16:44:13 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pg1-f194.google.com (mail-pg1-f194.google.com [209.85.215.194]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 824BB68B1CA for ; Wed, 24 Jun 2020 16:44:06 +0300 (EEST) Received: by mail-pg1-f194.google.com with SMTP id e9so1436214pgo.9 for ; Wed, 24 Jun 2020 06:44:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=kFRVctbPGxuslcqso34xQlMPvKNhvWIzq6Y+lcQm03M=; b=V97841jOFBPH8c1wY1jyJeZSiYdgrXbVF3V1+CL/QLauf3922z18p6R+EnmUbKn0Rt QvRD6dURr5ArHKX00M4w0+ZtWUGn0MFutHRhO5nIMEDlJ0eQoBUodDGa9wbfKW/FUb9M uBEirz5yBVEgqNLJAip7yuvGZNvMmMVU3jCCWlMMqIzypCJB5gOcpQKUeFIpkukjOF4x 4w+A23g6jFtZ7lfvODN11pr8Bz+zMv/FE+4klUNvSaLD9qOP7PcNDHcOSierV328o8Yi +xnMUKlik5wdQHu4Ptq54l4ecDJDlW9bXs+DQlDlY33ZoWOUh+ZMvTZwcoU4D5dm2keV S2jg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=kFRVctbPGxuslcqso34xQlMPvKNhvWIzq6Y+lcQm03M=; b=bP+m9O7xrY2v8v3GfsvPs362FVHq3S6CRnxe0uXjCGowr4H35apOxDZE76lMRUbDpX ZS3yQBbDHd4dPYzRGRj1BOxXwuR4ErjWAWRGI/4edSChotFdH6K9Fv7jeUH1LOR7dYAx I7nClnWemodnOAe/g6BzR6R+do6MwY/h6wu36j8AMEsPT655FtmsfAtju0R077Nftuma MYBlsBq/7Qju+uhM7Gs59V/QbHb3Yqk+F9LBDh9kn5qzhEgn7l8EjJPwKfxfwn6ZXB5O uYbEw1mhKMJ4LTiJrCIUIqe1Le+4hAII/OOkOg5oYg1T7lkC1x48ocuSRvgPWAYCrL9y +c4Q== X-Gm-Message-State: AOAM5303RECH+wXKeMIJxe87bD7jib2752Vovn2ktSVBD0LmvndTrOxc JENFvP/2AlBM0BK84dzZK/N5lrcW X-Google-Smtp-Source: ABdhPJxzfqsP1AtHta2uB3GYLXDuSTwoYfcMKdQsKLjGHDeM96cDFmFYbzjW+AgBauE0BqncRB4XXg== X-Received: by 2002:a62:140f:: with SMTP id 15mr2470488pfu.50.1593006244167; Wed, 24 Jun 2020 06:44:04 -0700 (PDT) Received: from vpn2.localdomain ([161.117.202.209]) by smtp.gmail.com with ESMTPSA id z144sm21622329pfc.195.2020.06.24.06.44.02 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 24 Jun 2020 06:44:03 -0700 (PDT) From: lance.lmwang@gmail.com To: ffmpeg-devel@ffmpeg.org Date: Wed, 24 Jun 2020 21:43:15 +0800 Message-Id: <1593006200-23911-2-git-send-email-lance.lmwang@gmail.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1593006200-23911-1-git-send-email-lance.lmwang@gmail.com> References: <1592410030-6553-1-git-send-email-lance.lmwang@gmail.com> <1593006200-23911-1-git-send-email-lance.lmwang@gmail.com> Subject: [FFmpeg-devel] [PATCH v4 2/7] avutil/timecode: add function av_timecode_get_smpte() 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: Limin Wang MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From: Limin Wang Signed-off-by: Limin Wang --- libavutil/timecode.c | 32 ++++++++++++++++++++++++++++++++ libavutil/timecode.h | 13 +++++++++++++ 2 files changed, 45 insertions(+) diff --git a/libavutil/timecode.c b/libavutil/timecode.c index 60077ba..cca53d7 100644 --- a/libavutil/timecode.c +++ b/libavutil/timecode.c @@ -81,6 +81,38 @@ uint32_t av_timecode_get_smpte_from_framenum(const AVTimecode *tc, int framenum) (hh % 10); // units of hours } +uint32_t av_timecode_get_smpte(AVRational rate, int drop, int hh, int mm, int ss, int ff) +{ + uint32_t tc = 0; + uint32_t frames; + + /* For SMPTE 12-M timecodes, frame count is a special case if > 30 FPS. + See SMPTE ST 12-1:2014 Sec 12.1 for more info. */ + if (av_cmp_q(rate, (AVRational) {30, 1}) == 1) { + frames = ff / 2; + if (ff % 2 == 1) { + if (av_cmp_q(rate, (AVRational) {50, 1}) == 0) + tc |= (1 << 7); + else + tc |= (1 << 23); + } + } else { + frames = ff; + } + + tc |= drop << 30; + tc |= (frames / 10) << 28; + tc |= (frames % 10) << 24; + tc |= (ss / 10) << 20; + tc |= (ss % 10) << 16; + tc |= (mm / 10) << 12; + tc |= (mm % 10) << 8; + tc |= (hh / 10) << 4; + tc |= (hh % 10); + + return tc; +} + char *av_timecode_make_string(const AVTimecode *tc, char *buf, int framenum) { int fps = tc->fps; diff --git a/libavutil/timecode.h b/libavutil/timecode.h index 37c1361..ab38e66 100644 --- a/libavutil/timecode.h +++ b/libavutil/timecode.h @@ -71,6 +71,19 @@ int av_timecode_adjust_ntsc_framenum2(int framenum, int fps); uint32_t av_timecode_get_smpte_from_framenum(const AVTimecode *tc, int framenum); /** + * Convert sei info to SMPTE 12M binary representation. + * + * @param rate frame rate in rational form + * @param drop drop flag + * @param hh hour + * @param mm minute + * @param ss second + * @param ff frame number + * @return the SMPTE binary representation + */ +uint32_t av_timecode_get_smpte(AVRational rate, int drop, int hh, int mm, int ss, int ff); + +/** * Load timecode string in buf. * * @param buf destination buffer, must be at least AV_TIMECODE_STR_SIZE long From patchwork Wed Jun 24 13:43:16 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lance Wang X-Patchwork-Id: 20571 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 5EAF944AEEF for ; Wed, 24 Jun 2020 16:44:15 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 4CBDE68B56F; Wed, 24 Jun 2020 16:44:15 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pg1-f195.google.com (mail-pg1-f195.google.com [209.85.215.195]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 9926468B566 for ; Wed, 24 Jun 2020 16:44:07 +0300 (EEST) Received: by mail-pg1-f195.google.com with SMTP id r18so1431403pgk.11 for ; Wed, 24 Jun 2020 06:44:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=elOKEXZ8l1d+mFaz4lCUc+XmND73gLhF9DoWHIIIP4E=; b=ms8dV7/LvdZdqZIn+Vxr6HGuLhUqbpNUz/sAWDM5/JKJ5qTR0POHfeYIBtbnbMJD68 UPpU4HHlZk3nAvp3s9vmnozdZ5oDSvw0+/vkbBX9Yqoc3t8/a+RUXzM9FL+wsDYtc859 vJQ6zhh2Fbefz6XRvgyCe9UbplLccT4h7CPEGgrQVxUWk2fPaR61/2mEnnXN3EC8/ra/ o2d9AgSOzLc+Uvsl0YWB1ejNVSKpVDjKxzUcSoTScA2CqIT+OK8pDRmI8RiE5tjEPtBx Ia6w7MoO6IZg2Q9vH0vqaXlXfU5TTkCNwWYuoCcZ/sACH9WhObLZnluT9U6BT745LUEx x8JA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=elOKEXZ8l1d+mFaz4lCUc+XmND73gLhF9DoWHIIIP4E=; b=kZ36+8R4+XjPE11oKJW8Nw3LoYi5nqrt57/ptY66Wvc/rfRmN9TmGiB5Qdy7NGyvXl T+7+NYtxLZDLgqQGPrukxihqJx3CKjXonM3vBzt6ngDpSlS2228xDuHucNZ7A3WaO3jo UcTepjtw6SDGJ17BNIoXIxC1y8euiCb3W0s0nPML+hAf+jP3X5J2+vGEUbYDaQd82nJu Rw0FjQ4bdeq2d/lxOf0jHkGiMij3Ecto0T5Lc9ZP2We/rbmp46151Z7TSspSSHpymEJm BDkyjyxYuC1qkMl/XUzm6DTwLXAuvrZPsx9BTq9dOaPwcvz/pUC5BvJHVIX7QKzZFG2L 4+pw== X-Gm-Message-State: AOAM5309Ko4rS4PxxHzOUsQ7M9/0R9qJTvAVPwfOBxmA4+xiAY0OT4Ah iexZtb0t1d+5B+TQjPw5wSnoPuGO X-Google-Smtp-Source: ABdhPJxfTipkZd6SZZJHz7vX6z036+lQd86HqSNpocXdlxzdfLPSWccy3JtgJs2OKMebUCrjUJt36Q== X-Received: by 2002:a63:bf04:: with SMTP id v4mr16628495pgf.212.1593006245657; Wed, 24 Jun 2020 06:44:05 -0700 (PDT) Received: from vpn2.localdomain ([161.117.202.209]) by smtp.gmail.com with ESMTPSA id z144sm21622329pfc.195.2020.06.24.06.44.04 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 24 Jun 2020 06:44:05 -0700 (PDT) From: lance.lmwang@gmail.com To: ffmpeg-devel@ffmpeg.org Date: Wed, 24 Jun 2020 21:43:16 +0800 Message-Id: <1593006200-23911-3-git-send-email-lance.lmwang@gmail.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1593006200-23911-1-git-send-email-lance.lmwang@gmail.com> References: <1592410030-6553-1-git-send-email-lance.lmwang@gmail.com> <1593006200-23911-1-git-send-email-lance.lmwang@gmail.com> Subject: [FFmpeg-devel] [PATCH v4 3/7] avcodec/h264_slice: use av_timecode_get_smpte() 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: Limin Wang MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From: Limin Wang Signed-off-by: Limin Wang --- libavcodec/h264_slice.c | 33 ++++++--------------------------- 1 file changed, 6 insertions(+), 27 deletions(-) diff --git a/libavcodec/h264_slice.c b/libavcodec/h264_slice.c index 47f3917..2a41de2 100644 --- a/libavcodec/h264_slice.c +++ b/libavcodec/h264_slice.c @@ -1304,7 +1304,6 @@ static int h264_export_frame_props(H264Context *h) h->sei.unregistered.nb_buf_ref = 0; if (h->sei.picture_timing.timecode_cnt > 0) { - uint32_t tc = 0; uint32_t *tc_sd; AVFrameSideData *tcside = av_frame_new_side_data(cur->f, @@ -1317,33 +1316,13 @@ static int h264_export_frame_props(H264Context *h) tc_sd[0] = h->sei.picture_timing.timecode_cnt; for (int i = 0; i < tc_sd[0]; i++) { - uint32_t frames; - - /* For SMPTE 12-M timecodes, frame count is a special case if > 30 FPS. - See SMPTE ST 12-1:2014 Sec 12.1 for more info. */ - if (av_cmp_q(h->avctx->framerate, (AVRational) {30, 1}) == 1) { - frames = h->sei.picture_timing.timecode[i].frame / 2; - if (h->sei.picture_timing.timecode[i].frame % 2 == 1) { - if (av_cmp_q(h->avctx->framerate, (AVRational) {50, 1}) == 0) - tc |= (1 << 7); - else - tc |= (1 << 23); - } - } else { - frames = h->sei.picture_timing.timecode[i].frame; - } + int drop = h->sei.picture_timing.timecode[i].dropframe; + int hh = h->sei.picture_timing.timecode[i].hours; + int mm = h->sei.picture_timing.timecode[i].minutes; + int ss = h->sei.picture_timing.timecode[i].seconds; + int ff = h->sei.picture_timing.timecode[i].frame; - tc |= h->sei.picture_timing.timecode[i].dropframe << 30; - tc |= (frames / 10) << 28; - tc |= (frames % 10) << 24; - tc |= (h->sei.picture_timing.timecode[i].seconds / 10) << 20; - tc |= (h->sei.picture_timing.timecode[i].seconds % 10) << 16; - tc |= (h->sei.picture_timing.timecode[i].minutes / 10) << 12; - tc |= (h->sei.picture_timing.timecode[i].minutes % 10) << 8; - tc |= (h->sei.picture_timing.timecode[i].hours / 10) << 4; - tc |= (h->sei.picture_timing.timecode[i].hours % 10); - - tc_sd[i + 1] = tc; + tc_sd[i + 1] = av_timecode_get_smpte(h->avctx->framerate, drop, hh, mm, ss, ff); } h->sei.picture_timing.timecode_cnt = 0; } From patchwork Wed Jun 24 13:43:17 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lance Wang X-Patchwork-Id: 20572 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 2477644AEEF for ; Wed, 24 Jun 2020 16:44:18 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 0D62768B5AF; Wed, 24 Jun 2020 16:44:18 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pg1-f169.google.com (mail-pg1-f169.google.com [209.85.215.169]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B34C568B1CA for ; Wed, 24 Jun 2020 16:44:09 +0300 (EEST) Received: by mail-pg1-f169.google.com with SMTP id g67so554178pgc.8 for ; Wed, 24 Jun 2020 06:44:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=yFCvza4AFxtBlUL1HZM5mAlbSTvjgAiIOlbuhSZJtgs=; b=rbilgchha8H1Qsrkmle96GZ1A0Nm4zE83UKpJHXc1TEbNK4RLZWqJ8TSjIULHaNYvS mdyvMDm5nJd7r5PVKQwf/AzPSUvgilVAWt+pXiY0froNx8/iOxo8SWGtjsNSb8tMkEOu qP4nAZO/oZmzFYXWstii3+ao9i94jsf+Sew+LfVrRUiOdROY9et1p4ZG4MpNo5ormk0a 8a9MhciT8dzM4XHDDd3Zif4Y3fNWsxMWTfR2YMe8dQPLWgcmVUqgZpQzRXJp72YTVfaT KnxLSjaqYb9AYsLqdvpgf+PCJM+wsgjxLCCnrxplDqoIzpna/uIByfbGbOP7jHTa62j4 9c0A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=yFCvza4AFxtBlUL1HZM5mAlbSTvjgAiIOlbuhSZJtgs=; b=axYmx/cKAt0JtJRhX9mujIWfxVFgw5ESu28peYNlACHwxk3Ryho2L70Xk6y1ogyDNZ ajpyuQgpaSuOOhyiNp7F7UmeBGWREE7m9dXsFFvWHDTxTmwg1xiRBYbczl0yMQmBZvL3 0s9REDmisP6bfETibgmeAEWrqm2N610/7wtylkOIw4dgTRZr9byJJ+VUPylWUwdVKtjr cy9h+VDZDDDTEGRHvBKqOXJlyLjXJ2TEA2iihUQoFyb8F8/Q/25uvKJcW0RdNfrllZU0 D0wysO8ArrR6iZ2VwMtlC/s+Ibyu6o9YppacDbT1BWjfdsvKWDjyMEwmYGiRBRyjQNYD iMpg== X-Gm-Message-State: AOAM531Pyp4G6vARJoq8r0WQnZuXcIsBAEz2B7IuXomfC/Uv6L8Wp8sY 067QfPI3qjbM4rjk4t+55RRwhQ9P X-Google-Smtp-Source: ABdhPJwaJyrD/ILRiMfuazZ1Pjnt8f4lroJpniDgAv+k88ztuPVoeqNjBaJj+mifyjLAfDh1Wamrdw== X-Received: by 2002:a63:fe0a:: with SMTP id p10mr16273669pgh.255.1593006247633; Wed, 24 Jun 2020 06:44:07 -0700 (PDT) Received: from vpn2.localdomain ([161.117.202.209]) by smtp.gmail.com with ESMTPSA id z144sm21622329pfc.195.2020.06.24.06.44.05 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 24 Jun 2020 06:44:06 -0700 (PDT) From: lance.lmwang@gmail.com To: ffmpeg-devel@ffmpeg.org Date: Wed, 24 Jun 2020 21:43:17 +0800 Message-Id: <1593006200-23911-4-git-send-email-lance.lmwang@gmail.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1593006200-23911-1-git-send-email-lance.lmwang@gmail.com> References: <1592410030-6553-1-git-send-email-lance.lmwang@gmail.com> <1593006200-23911-1-git-send-email-lance.lmwang@gmail.com> Subject: [FFmpeg-devel] [PATCH v4 4/7] avcodec/hevc_sei: support HEVC timecode decode 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: Limin Wang MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From: Limin Wang Signed-off-by: Limin Wang --- libavcodec/hevc_sei.c | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ libavcodec/hevc_sei.h | 21 +++++++++++++++++++++ 2 files changed, 70 insertions(+) diff --git a/libavcodec/hevc_sei.c b/libavcodec/hevc_sei.c index 1736891..bf92de6 100644 --- a/libavcodec/hevc_sei.c +++ b/libavcodec/hevc_sei.c @@ -306,6 +306,53 @@ static int decode_nal_sei_alternative_transfer(HEVCSEIAlternativeTransfer *s, Ge return 0; } +static int decode_nal_sei_timecode(HEVCSEITimeCode *s, GetBitContext *gb) +{ + s->num_clock_ts = get_bits(gb, 2); + + for (int i = 0; i < s->num_clock_ts; i++) { + s->clock_timestamp_flag[i] = get_bits(gb, 1); + + if (s->clock_timestamp_flag[i]) { + s->units_field_based_flag[i] = get_bits(gb, 1); + s->counting_type[i] = get_bits(gb, 5); + s->full_timestamp_flag[i] = get_bits(gb, 1); + s->discontinuity_flag[i] = get_bits(gb, 1); + s->cnt_dropped_flag[i] = get_bits(gb, 1); + + s->n_frames[i] = get_bits(gb, 9); + + if (s->full_timestamp_flag[i]) { + s->seconds_value[i] = av_clip(get_bits(gb, 6), 0, 59); + s->minutes_value[i] = av_clip(get_bits(gb, 6), 0, 59); + s->hours_value[i] = av_clip(get_bits(gb, 5), 0, 23); + } else { + s->seconds_flag[i] = get_bits(gb, 1); + if (s->seconds_flag[i]) { + s->seconds_value[i] = av_clip(get_bits(gb, 6), 0, 59); + s->minutes_flag[i] = get_bits(gb, 1); + if (s->minutes_flag[i]) { + s->minutes_value[i] = av_clip(get_bits(gb, 6), 0, 59); + s->hours_flag[i] = get_bits(gb, 1); + if (s->hours_flag[i]) { + s->hours_value[i] = av_clip(get_bits(gb, 5), 0, 23); + } + } + } + } + + s->time_offset_length[i] = get_bits(gb, 5); + if (s->time_offset_length[i] > 0) { + s->time_offset_value[i] = get_bits(gb, s->time_offset_length[i]); + } + } + } + + s->present = 1; + return 0; +} + + static int decode_nal_sei_prefix(GetBitContext *gb, void *logctx, HEVCSEI *s, const HEVCParamSets *ps, int type, int size) { @@ -330,6 +377,8 @@ static int decode_nal_sei_prefix(GetBitContext *gb, void *logctx, HEVCSEI *s, return decode_nal_sei_user_data_unregistered(&s->unregistered, gb, size); case HEVC_SEI_TYPE_ALTERNATIVE_TRANSFER_CHARACTERISTICS: return decode_nal_sei_alternative_transfer(&s->alternative_transfer, gb); + case HEVC_SEI_TYPE_TIME_CODE: + return decode_nal_sei_timecode(&s->timecode, gb); default: av_log(logctx, AV_LOG_DEBUG, "Skipped PREFIX SEI %d\n", type); skip_bits_long(gb, 8 * size); diff --git a/libavcodec/hevc_sei.h b/libavcodec/hevc_sei.h index 3618d16..5ee7a47 100644 --- a/libavcodec/hevc_sei.h +++ b/libavcodec/hevc_sei.h @@ -115,6 +115,26 @@ typedef struct HEVCSEIAlternativeTransfer { int preferred_transfer_characteristics; } HEVCSEIAlternativeTransfer; +typedef struct HEVCSEITimeCode { + int present; + uint8_t num_clock_ts; + uint8_t clock_timestamp_flag[3]; + uint8_t units_field_based_flag[3]; + uint8_t counting_type[3]; + uint8_t full_timestamp_flag[3]; + uint8_t discontinuity_flag[3]; + uint8_t cnt_dropped_flag[3]; + uint16_t n_frames[3]; + uint8_t seconds_value[3]; + uint8_t minutes_value[3]; + uint8_t hours_value[3]; + uint8_t seconds_flag[3]; + uint8_t minutes_flag[3]; + uint8_t hours_flag[3]; + uint8_t time_offset_length[3]; + int32_t time_offset_value[3]; +} HEVCSEITimeCode; + typedef struct HEVCSEI { HEVCSEIPictureHash picture_hash; HEVCSEIFramePacking frame_packing; @@ -126,6 +146,7 @@ typedef struct HEVCSEI { HEVCSEIContentLight content_light; int active_seq_parameter_set_id; HEVCSEIAlternativeTransfer alternative_transfer; + HEVCSEITimeCode timecode; } HEVCSEI; struct HEVCParamSets; From patchwork Wed Jun 24 13:43:18 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lance Wang X-Patchwork-Id: 20573 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 E5E5C44AEEF for ; Wed, 24 Jun 2020 16:44:18 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id D1C0968B5C0; Wed, 24 Jun 2020 16:44:18 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pg1-f194.google.com (mail-pg1-f194.google.com [209.85.215.194]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6CC0668B585 for ; Wed, 24 Jun 2020 16:44:11 +0300 (EEST) Received: by mail-pg1-f194.google.com with SMTP id e8so1447038pgc.5 for ; Wed, 24 Jun 2020 06:44:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=t1gXD1GHZVzBANhqUOgqbF2yJ0r55ZzAwqSvQg070q8=; b=M1zqiLUyZ9maqb2Z5IdyMQeRc1A0HnuTtBhMgS0PiYUwXI/zisqVjfIRHfBrL/lK26 3Y1iToDgGAhalGG8E1P+BPSTd+VYIYqOTYO0XAXcFb5BlYmajKw6iouJKMWxaBIilsV4 VSrViwGeBXVj+CCQGoLgvj/zoNCo28X8hoHeETL2Xsr4XEaQOENJju4EM+VHa27iFlDO EEnBinwzqUufuC57TJ4IrqrVaiOjxStnKlpwdntuP1jLBUHS6DhCtBnPPbki723R+lRT 2zUCq1uPgYb89DuhPoNrSYWBDKIGXjqhHx5gID3PT1KLdqQb3spPgg8YH7wCs/klzOv0 kVeA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=t1gXD1GHZVzBANhqUOgqbF2yJ0r55ZzAwqSvQg070q8=; b=ZKvZHmSbTbVZcJKN8d7xYCbqw292ubx5pPwhGi2o+nmrGf1oNkTzIsOk+UHHHJQc/u R+73XciJWde4JIlQ9L2O13Q7y6k55NQljPz1ABGweIePmk3fNKyFkdJ2C/4vUbnM3OQx Br2sqcAUOnheuThf3ukw/C6cuvtoy73/7NZH66b1Y3+N+wElSXwFxg6wGqOdZvv3WY46 dnJE3XHkoe3JRH89LsiHQEXmKfd/S1z8Q3h14AvUn9FvUqxyyaALzrteh3Zu09gKTzz/ E05X3YJihdHwWio6AKAkzg5Cj3Jv5Keg3bfOL/zvq7GDfyP/RgT24pcQ6McgE3803Rf5 X0eg== X-Gm-Message-State: AOAM533+xoFsGXAHhaVCQaj95ET6SNf4qyRdB19okDnFFxbr3aFNJsDc 3Sf6zmBGH3AVM/+zdY/Wboz4599y X-Google-Smtp-Source: ABdhPJzkCodph9NfTe8Wznz5Dq/EHWgH5TzMGj8Cl269TvxwVdc9TUNyVMhMhe55+9oSQTBT+TAGVw== X-Received: by 2002:a65:6916:: with SMTP id s22mr22454834pgq.128.1593006249543; Wed, 24 Jun 2020 06:44:09 -0700 (PDT) Received: from vpn2.localdomain ([161.117.202.209]) by smtp.gmail.com with ESMTPSA id z144sm21622329pfc.195.2020.06.24.06.44.07 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 24 Jun 2020 06:44:08 -0700 (PDT) From: lance.lmwang@gmail.com To: ffmpeg-devel@ffmpeg.org Date: Wed, 24 Jun 2020 21:43:18 +0800 Message-Id: <1593006200-23911-5-git-send-email-lance.lmwang@gmail.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1593006200-23911-1-git-send-email-lance.lmwang@gmail.com> References: <1592410030-6553-1-git-send-email-lance.lmwang@gmail.com> <1593006200-23911-1-git-send-email-lance.lmwang@gmail.com> Subject: [FFmpeg-devel] [PATCH v4 5/7] avcodec/hevcdec: create AVFrame side data from HEVC timecodes like H.264 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: Limin Wang MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From: Limin Wang Signed-off-by: Limin Wang --- libavcodec/hevcdec.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/libavcodec/hevcdec.c b/libavcodec/hevcdec.c index c9e28f5..3bdec12 100644 --- a/libavcodec/hevcdec.c +++ b/libavcodec/hevcdec.c @@ -32,6 +32,7 @@ #include "libavutil/opt.h" #include "libavutil/pixdesc.h" #include "libavutil/stereo3d.h" +#include "libavutil/timecode.h" #include "bswapdsp.h" #include "bytestream.h" @@ -2808,6 +2809,29 @@ static int set_side_data(HEVCContext *s) } s->sei.unregistered.nb_buf_ref = 0; + if (s->sei.timecode.present) { + uint32_t *tc_sd; + AVFrameSideData *tcside = av_frame_new_side_data(out, AV_FRAME_DATA_S12M_TIMECODE, + sizeof(uint32_t) * 4); + if (!tcside) + return AVERROR(ENOMEM); + + tc_sd = (uint32_t*)tcside->data; + tc_sd[0] = s->sei.timecode.num_clock_ts; + + for (int i = 0; i < tc_sd[0]; i++) { + int drop = s->sei.timecode.cnt_dropped_flag[i]; + int hh = s->sei.timecode.hours_value[i]; + int mm = s->sei.timecode.minutes_value[i]; + int ss = s->sei.timecode.seconds_value[i]; + int ff = s->sei.timecode.n_frames[i]; + + tc_sd[i + 1] = av_timecode_get_smpte(s->avctx->framerate, drop, hh, mm, ss, ff); + } + + s->sei.timecode.num_clock_ts = 0; + } + return 0; } From patchwork Wed Jun 24 13:43:19 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lance Wang X-Patchwork-Id: 20574 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 BFA2C44AEEF for ; Wed, 24 Jun 2020 16:44:21 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id A31D868B58A; Wed, 24 Jun 2020 16:44:21 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pf1-f173.google.com (mail-pf1-f173.google.com [209.85.210.173]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 3152D68B100 for ; Wed, 24 Jun 2020 16:44:13 +0300 (EEST) Received: by mail-pf1-f173.google.com with SMTP id a127so1171736pfa.12 for ; Wed, 24 Jun 2020 06:44:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=3juGMTKDkFYDeDXHLr7vLpsD+CR+W4qJD3qoCTSK/Fg=; b=PlUsLUiuWfoRLCYJfmaZ7X8sQ/uvlXNOOKiKUJ7Wv/kCvy7iPHdJGxMwyXPZbeaMiV UmrNLUusV94KJBmpb+5Ll1YDH691CGEOiYXt9MwE3iUmEl17b4eRuhl9wckLeSnLbOKi 9lDVn8OCv8Dg/2Xh0eNri6sY7uL4fnpICpSilOMmi611KFHw9AXHJUeSuX97PEUWaQCs UNZkzAS1XOdn9AEc/N3seqmD+AGW6MD2hD6ZefT/iKSLlZKxRhTO6fKsV2XDfpa3QnmT TZMx68VIm565bk5TtlXTEW+PRndk2kWyOzdpt8V1hxIrEkxPKwfX2L+GNh2RjS+buAlc LSlg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=3juGMTKDkFYDeDXHLr7vLpsD+CR+W4qJD3qoCTSK/Fg=; b=o8l6O8e2qx+VJBmbkqHBZLgaPsTCEojU2rZb6BKa8U0NXVcS9NP+KpxLMz6U5WPVAT OmFNy7gCayZt+k9pTnZD/2uLAzkFBSj+MWvFzDCCTvyfBBDcV9Pjut9RmnbgH2sjK6Gd 3NzUYKpfgYOs2lHWsxlhHd1ZCjJbf/MwISmrZlwlpImWScWsgys41e9l8DhRGaSAGUnP kXSzGv8hBFw/t9ST7FPj1fXoUipOWi3odRHiP3IzduQh2gTTHwG1pMwWc6sAYvGxATdb t/C9weNZGVyLqXHSSOVOW9KD7HoE85IZvRK0bWzIYEM0foAivWKxReX8yG8fpsFwLbt+ v8MA== X-Gm-Message-State: AOAM533kfr9enflk8S9qUgWvvHUDo+hG4EjHBFgGkA8Bff+aUQhUqEUf 51pntSBO6lUPIcOA5BC6YlsXKoG3 X-Google-Smtp-Source: ABdhPJywJfriiJ0xy/zPbj4HRj4/WOJtKv6gpLA1TMZdonmBOFpIqWPEf0zXOmeM8b72URLC+5+DIA== X-Received: by 2002:a63:5509:: with SMTP id j9mr15020376pgb.195.1593006251069; Wed, 24 Jun 2020 06:44:11 -0700 (PDT) Received: from vpn2.localdomain ([161.117.202.209]) by smtp.gmail.com with ESMTPSA id z144sm21622329pfc.195.2020.06.24.06.44.09 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 24 Jun 2020 06:44:10 -0700 (PDT) From: lance.lmwang@gmail.com To: ffmpeg-devel@ffmpeg.org Date: Wed, 24 Jun 2020 21:43:19 +0800 Message-Id: <1593006200-23911-6-git-send-email-lance.lmwang@gmail.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1593006200-23911-1-git-send-email-lance.lmwang@gmail.com> References: <1592410030-6553-1-git-send-email-lance.lmwang@gmail.com> <1593006200-23911-1-git-send-email-lance.lmwang@gmail.com> Subject: [FFmpeg-devel] [PATCH v4 6/7] avcodec/utils: add ff_alloc_timecode_sei() for hevc timecode sei 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: Limin Wang MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From: Limin Wang Signed-off-by: Limin Wang --- libavcodec/internal.h | 15 ++++++++++++ libavcodec/utils.c | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 78 insertions(+) diff --git a/libavcodec/internal.h b/libavcodec/internal.h index 21708df..8771078 100644 --- a/libavcodec/internal.h +++ b/libavcodec/internal.h @@ -380,6 +380,21 @@ int ff_alloc_a53_sei(const AVFrame *frame, size_t prefix_len, void **data, size_t *sei_size); /** + * Check AVFrame for S12M timecode side data and allocate and fill TC SEI message with timecode info + * + * @param frame Raw frame to get S12M timecode side data from + * @param prefix_len Number of bytes to allocate before SEI message + * @param data Pointer to a variable to store allocated memory + * Upon return the variable will hold NULL on error or if frame has no S12M timecode info. + * Otherwise it will point to prefix_len uninitialized bytes followed by + * *sei_size SEI message + * @param sei_size Pointer to a variable to store generated SEI message length + * @return Zero on success, negative error code on failure + */ +int ff_alloc_timecode_sei(const AVFrame *frame, size_t prefix_len, + void **data, size_t *sei_size); + +/** * Get an estimated video bitrate based on frame size, frame rate and coded * bits per pixel. */ diff --git a/libavcodec/utils.c b/libavcodec/utils.c index b61f274..2ece34f 100644 --- a/libavcodec/utils.c +++ b/libavcodec/utils.c @@ -50,6 +50,7 @@ #include "thread.h" #include "frame_thread_encoder.h" #include "internal.h" +#include "put_bits.h" #include "raw.h" #include "bytestream.h" #include "version.h" @@ -2244,6 +2245,68 @@ int ff_alloc_a53_sei(const AVFrame *frame, size_t prefix_len, return 0; } +static unsigned bcd2uint(uint8_t bcd) +{ + unsigned low = bcd & 0xf; + unsigned high = bcd >> 4; + if (low > 9 || high > 9) + return 0; + return low + 10*high; +} + +int ff_alloc_timecode_sei(const AVFrame *frame, size_t prefix_len, + void **data, size_t *sei_size) +{ + AVFrameSideData *sd = NULL; + uint8_t *sei_data; + PutBitContext pb; + uint32_t *tc; + int m; + + if (frame) + sd = av_frame_get_side_data(frame, AV_FRAME_DATA_S12M_TIMECODE); + + if (!sd) { + *data = NULL; + return 0; + } + tc = (uint32_t*)sd->data; + m = tc[0] & 3; + + *sei_size = sizeof(uint32_t) * 4; + *data = av_mallocz(*sei_size + prefix_len); + if (!*data) + return AVERROR(ENOMEM); + sei_data = (uint8_t*)*data + prefix_len; + + init_put_bits(&pb, sei_data, *sei_size); + put_bits(&pb, 2, m); // num_clock_ts + + for (int j = 1; j <= m; j++) { + uint32_t tcsmpte = tc[j]; + unsigned hh = bcd2uint(tcsmpte & 0x3f); // 6-bit hours + unsigned mm = bcd2uint(tcsmpte>>8 & 0x7f); // 7-bit minutes + unsigned ss = bcd2uint(tcsmpte>>16 & 0x7f); // 7-bit seconds + unsigned ff = bcd2uint(tcsmpte>>24 & 0x3f); // 6-bit frames + unsigned drop = tcsmpte & 1<<30 && !0; // 1-bit drop if not arbitrary bit + + put_bits(&pb, 1, 1); // clock_timestamp_flag + put_bits(&pb, 1, 1); // units_field_based_flag + put_bits(&pb, 5, 0); // counting_type + put_bits(&pb, 1, 1); // full_timestamp_flag + put_bits(&pb, 1, 0); // discontinuity_flag + put_bits(&pb, 1, drop); + put_bits(&pb, 9, ff); + put_bits(&pb, 6, ss); + put_bits(&pb, 6, mm); + put_bits(&pb, 5, hh); + put_bits(&pb, 5, 0); + } + flush_put_bits(&pb); + + return 0; +} + int64_t ff_guess_coded_bitrate(AVCodecContext *avctx) { AVRational framerate = avctx->framerate; From patchwork Wed Jun 24 13:43:20 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lance Wang X-Patchwork-Id: 20575 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 BF71B44AEEF for ; Wed, 24 Jun 2020 16:44:22 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id A858868B5E8; Wed, 24 Jun 2020 16:44:22 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pf1-f193.google.com (mail-pf1-f193.google.com [209.85.210.193]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 0232D68B566 for ; Wed, 24 Jun 2020 16:44:14 +0300 (EEST) Received: by mail-pf1-f193.google.com with SMTP id x207so1192451pfc.5 for ; Wed, 24 Jun 2020 06:44:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=45Bijbx07SMbyLA1p5pBtS8XpfEu2kuXZsy2jvMIjSc=; b=KFujjjzaWTQIto+TO5CtUVqwKSdIMELGz1fnjS84FSbnFWHL0h0O2ivbYbWFn/2nhk 1JCgw58jbJekos4oNld6JGQaamRoINndvEt7mQVmPbeeB35nkCeqXBWdMma2huFdXoIX /Ps6mJX8LSXtKjTkDnWX4IDRy71lsxbhItRMDTAlymZJWTYCgyiQolomqlLFhwOFUJGH 3i6Qg5kjb/ej8plPXq8lFfFRIXheYYubKxo+qY3mCo1JtT/BKVgG71CLcTXaaCQxv5HL Zw8Ep4rU/dtQoybP7xx6MRVAszsDWUHK/QBQKANjdSkIWKrVkIrVUbaErDdTd20HMWDp Aa6Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=45Bijbx07SMbyLA1p5pBtS8XpfEu2kuXZsy2jvMIjSc=; b=VqhrG5IeQS4Lan+JqTLWkdn9431hAIh8C/DHY+VH60ktVi0iy6k/uo7SDhhyBq/u9f 80I7ntAdn2pc5ROGNgxc64JoFiS740gwXruplJY2KaPprZh/zdcAETS6rLRavWtEczWP n+gRrMnnh3KuOg/jbhBdxWUUSIrDIZKBrdcvfiCWpM2gs++YLtImuVoziiOpIXUrY0tw og32Nh/PcS0VwOegGiaDEljc8hZBxsEpH0m8COGzUH83/QlfXGONjqyPo2hFIkQmixau oi/YN3NUOX8yq2lBKKwsftGpv39IsRzMiSeif7HYzUaa77h/aRUMhQ4igdJPSqijn2kY fbcA== X-Gm-Message-State: AOAM5327hIXMRqEe3sPTd9b+/WpeSP5Jhth7VBnzxC5C9vhO8PwP6Ohw Um/f/8LXcq7YQb5elxKYyuRP9CEH X-Google-Smtp-Source: ABdhPJxiasWKY0mVNdEY2kSWqgFChKO3+90jfIG/P3ZR6qOfx5NR4GqH7gcRuq8nbGIU/3RB/nzcDw== X-Received: by 2002:a63:eb55:: with SMTP id b21mr21739173pgk.433.1593006253118; Wed, 24 Jun 2020 06:44:13 -0700 (PDT) Received: from vpn2.localdomain ([161.117.202.209]) by smtp.gmail.com with ESMTPSA id z144sm21622329pfc.195.2020.06.24.06.44.11 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 24 Jun 2020 06:44:12 -0700 (PDT) From: lance.lmwang@gmail.com To: ffmpeg-devel@ffmpeg.org Date: Wed, 24 Jun 2020 21:43:20 +0800 Message-Id: <1593006200-23911-7-git-send-email-lance.lmwang@gmail.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1593006200-23911-1-git-send-email-lance.lmwang@gmail.com> References: <1592410030-6553-1-git-send-email-lance.lmwang@gmail.com> <1593006200-23911-1-git-send-email-lance.lmwang@gmail.com> Subject: [FFmpeg-devel] [PATCH v4 7/7] avcodec/nvenc: support for HEVC timecode passthrough 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: Limin Wang MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From: Limin Wang Reviewed-by: Timo Rothenpieler Signed-off-by: Limin Wang --- libavcodec/nvenc.c | 17 +++++++++++++++++ libavcodec/nvenc.h | 1 + libavcodec/nvenc_hevc.c | 1 + 3 files changed, 19 insertions(+) diff --git a/libavcodec/nvenc.c b/libavcodec/nvenc.c index 22c19f3..4efd532 100644 --- a/libavcodec/nvenc.c +++ b/libavcodec/nvenc.c @@ -22,6 +22,7 @@ #include "config.h" #include "nvenc.h" +#include "hevc_sei.h" #include "libavutil/hwcontext_cuda.h" #include "libavutil/hwcontext.h" @@ -2147,6 +2148,22 @@ static int nvenc_send_frame(AVCodecContext *avctx, const AVFrame *frame) } } + if (ctx->tc && av_frame_get_side_data(frame, AV_FRAME_DATA_S12M_TIMECODE)) { + void *tc_data = NULL; + size_t tc_size = 0; + + if (ff_alloc_timecode_sei(frame, 0, (void**)&tc_data, &tc_size) < 0) { + av_log(ctx, AV_LOG_ERROR, "Not enough memory for timecode sei, skipping\n"); + } + + if (tc_data) { + sei_data[sei_count].payloadSize = (uint32_t)tc_size; + sei_data[sei_count].payloadType = HEVC_SEI_TYPE_TIME_CODE; + sei_data[sei_count].payload = (uint8_t*)tc_data; + sei_count ++; + } + } + nvenc_codec_specific_pic_params(avctx, &pic_params, sei_data); } else { pic_params.encodePicFlags = NV_ENC_PIC_FLAG_EOS; diff --git a/libavcodec/nvenc.h b/libavcodec/nvenc.h index 007721a..b67abca 100644 --- a/libavcodec/nvenc.h +++ b/libavcodec/nvenc.h @@ -196,6 +196,7 @@ typedef struct NvencContext int coder; int b_ref_mode; int a53_cc; + int tc; int dpb_size; } NvencContext; diff --git a/libavcodec/nvenc_hevc.c b/libavcodec/nvenc_hevc.c index 434dc66..45dda3d 100644 --- a/libavcodec/nvenc_hevc.c +++ b/libavcodec/nvenc_hevc.c @@ -129,6 +129,7 @@ static const AVOption options[] = { { "each", "", 0, AV_OPT_TYPE_CONST, { .i64 = 1 }, 0, 0, VE, "b_ref_mode" }, { "middle", "", 0, AV_OPT_TYPE_CONST, { .i64 = 2 }, 0, 0, VE, "b_ref_mode" }, #endif + { "tc", "Use timecode (if available)", OFFSET(tc), AV_OPT_TYPE_BOOL, { .i64 = 1 }, 0, 1, VE }, { "dpb_size", "Specifies the DPB size used for encoding (0 means automatic)", OFFSET(dpb_size), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, INT_MAX, VE }, { NULL }